WP ULike - Version 3.5.0

Version Description

  • Added: New statistics system powered by vueJS.
  • Added: Ajax loading for likers box with better optimization.
  • Added: Huge optimization on admin core functionalities with reducing resource consumption.
  • Upgraded: The log pages templates.
  • Fixed: Some issues in button styles.
  • Fixed: Some issues in ulike js functionality.
  • Fixed: An issue with supporting ulike in ultimatememeber.
  • Fixed: Colorpicker issue in admin settings by replacing the wpColorPicker with spectrum plugin.
Download this release

Release Info

Developer alimir
Plugin Icon 128x128 WP ULike
Version 3.5.0
Comparing to
See all releases

Code changes from version 3.4 to 3.5.0

admin/admin-ajax.php CHANGED
@@ -7,10 +7,50 @@
7
  * @link https://wpulike.com
8
  */
9
 
 
 
 
 
 
10
  /*******************************************************
11
  Start AJAX From Here
12
  *******************************************************/
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /**
15
  * AJAX handler to store the state of dismissible notices.
16
  *
@@ -21,7 +61,7 @@
21
  function wp_ulike_ajax_notice_handler() {
22
  // Store it in the options table
23
  if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'wp-ulike-notice-dismissed' ) ) {
24
- wp_send_json_error( $_POST['nonce'] );
25
  } else {
26
  update_option( 'wp-ulike-notice-dismissed', TRUE );
27
  wp_send_json_success( __( 'It\'s OK.', WP_ULIKE_SLUG ) );
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'WPINC' ) ) {
12
+ die('No Naughty Business Please !');
13
+ }
14
+
15
  /*******************************************************
16
  Start AJAX From Here
17
  *******************************************************/
18
 
19
+ /**
20
+ * AJAX handler to get statistics data
21
+ *
22
+ * @author Alimir
23
+ * @since 3.4
24
+ * @return Void
25
+ */
26
+ function wp_ulike_ajax_stats() {
27
+
28
+ $nonce = $_POST['nonce'];
29
+ $method = $_POST['method'];
30
+
31
+ $value = json_decode( json_encode( $_POST['value'] ), true );
32
+
33
+ // If is not json then keep it as a variable
34
+ if( !is_array( $value ) ) {
35
+ $value = $_POST['value'];
36
+ }
37
+
38
+ if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'wp-ulike-ajax-nonce' ) ) {
39
+ wp_send_json_error( __( 'Error: Something Wrong Happened!', WP_ULIKE_SLUG ) );
40
+ }
41
+
42
+ $wp_ulike_stats = wp_ulike_stats::get_instance();
43
+
44
+ if( method_exists( $wp_ulike_stats, $method ) ) {
45
+ $output = empty( $value ) ? $wp_ulike_stats->$method() : $wp_ulike_stats->$method( $value );
46
+ wp_send_json_success( json_encode( $output ) );
47
+ }
48
+
49
+ wp_send_json_error( __( 'Error: Something Wrong Happened!', WP_ULIKE_SLUG ) );
50
+
51
+ }
52
+ add_action( 'wp_ajax_wp_ulike_ajax_stats', 'wp_ulike_ajax_stats' );
53
+
54
  /**
55
  * AJAX handler to store the state of dismissible notices.
56
  *
61
  function wp_ulike_ajax_notice_handler() {
62
  // Store it in the options table
63
  if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'wp-ulike-notice-dismissed' ) ) {
64
+ wp_send_json_error( __( 'Error: Something Wrong Happened!', WP_ULIKE_SLUG ) );
65
  } else {
66
  update_option( 'wp-ulike-notice-dismissed', TRUE );
67
  wp_send_json_success( __( 'It\'s OK.', WP_ULIKE_SLUG ) );
admin/admin-functions.php CHANGED
@@ -7,205 +7,11 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- /*******************************************************
11
- About Page
12
- *******************************************************/
13
-
14
- /**
15
- * Create WP ULike About page
16
- *
17
- * @author Alimir
18
- * @since 1.7
19
- * @return String
20
- */
21
- function wp_ulike_about_page() {
22
- ?>
23
- <div class="wrap about-wrap wp-ulike-about-page">
24
-
25
- <h1><?php echo _e( 'Welcome to WP ULike', WP_ULIKE_SLUG ) . ' ' . WP_ULIKE_VERSION; ?></h1>
26
- <div class="about-text"><?php echo _e('Thank you for choosing WP ULike! This version is our leanest and most powerful version yet.', WP_ULIKE_SLUG) ; ?><br />
27
-
28
- <?php add_thickbox(); ?>
29
- <a target="_blank" href="<?php echo WP_ULIKE_PLUGIN_URI . '?TB_iframe=true&amp;width=800&amp;height=600'; ?>" class="thickbox"> <?php _e('Visit our homepage',WP_ULIKE_SLUG); ?></a>
30
- </div>
31
- <div class="ulike-badge"><?php echo _e('Version',WP_ULIKE_SLUG) . ' ' . WP_ULIKE_VERSION; ?></div>
32
- <h2 class="nav-tab-wrapper">
33
- <a class="nav-tab <?php if(!isset($_GET["credit"])) echo 'nav-tab-active'; ?>" href="admin.php?page=wp-ulike-about"><?php echo _e('Getting Started',WP_ULIKE_SLUG); ?></a>
34
- <a class="nav-tab <?php if(isset($_GET["credit"])) echo 'nav-tab-active'; ?>" href="admin.php?page=wp-ulike-about&credit=true"><?php echo _e('Credits',WP_ULIKE_SLUG); ?></a>
35
- <a target="_blank" class="nav-tab" href="https://wordpress.org/support/plugin/wp-ulike"><?php echo _e('Support',WP_ULIKE_SLUG); ?></a>
36
- <a target="_blank" class="nav-tab" href="https://wordpress.org/plugins/wp-ulike/faq/"><?php echo _e('FAQ',WP_ULIKE_SLUG); ?></a>
37
- <a target="_blank" class="nav-tab" href="https://wordpress.org/support/view/plugin-reviews/wp-ulike"><?php echo _e('Reviews',WP_ULIKE_SLUG); ?></a>
38
- </h2>
39
-
40
- <?php if(!isset($_GET["credit"])): ?>
41
-
42
- <div class="changelog headline-feature">
43
- <h2><?php echo _e('Introducing WP ULike',WP_ULIKE_SLUG); ?> <img draggable="false" class="emoji" alt="emoji" src="https://s.w.org/images/core/emoji/2.2.1/svg/1f60a.svg"></h2>
44
- <div class="featured-image">
45
- <img alt="wp ulike intro" src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/wp-ulike-intro.png">
46
- </div>
47
-
48
- <div class="feature-section">
49
- <div class="col">
50
- <h2><?php echo _e('About WP ULike',WP_ULIKE_SLUG); ?></h2>
51
- <div style="text-align:center">
52
- <?php $args = array(
53
- 'rating' => 5,
54
- 'type' => 'rating',
55
- 'number' => 43,
56
- );
57
- wp_star_rating( $args ); ?>
58
- </div>
59
- <p class="lead-description"><?php echo _e('WP ULike plugin allows to integrate a beautiful Ajax Like Button into your wordPress website to allow your visitors to like and unlike pages, posts, comments AND buddypress activities. Its very simple to use and supports many options.',WP_ULIKE_SLUG); ?></p>
60
- </div>
61
- </div>
62
-
63
- <div class="clear"></div>
64
- </div>
65
- <hr>
66
- <div class="changelog feature-section three-col">
67
- <div class="col">
68
- <div class="icon-container">
69
- <i class="wp-ulike-icons-hotairballoon"></i>
70
- </div>
71
- <h3><?php echo _e('WP Ulike Extension',WP_ULIKE_SLUG); ?></h3>
72
- <p><?php echo _e('Right now, WP ULike support wordpress posts / comments, BuddyPress activities & bbPress Topics.',WP_ULIKE_SLUG); ?></p>
73
- </div>
74
- <div class="col">
75
- <div class="icon-container">
76
- <i class="wp-ulike-icons-globe"></i>
77
- </div>
78
- <h3><?php echo _e('Added More Than 20 Language Files',WP_ULIKE_SLUG); ?></h3>
79
- <p><?php echo _e('WP ULike is already translated into +20 languages, with more always in progress.',WP_ULIKE_SLUG); ?></p>
80
- </div>
81
- <div class="col">
82
- <div class="icon-container">
83
- <i class="wp-ulike-icons-profile-male"></i>
84
- </div>
85
- <h3><?php echo _e('User Profile Links',WP_ULIKE_SLUG); ?></h3>
86
- <p><?php echo _e('Since WP ULike 2.3, We have synced the likers profile with BuddyPress & UltimateMember plugins.',WP_ULIKE_SLUG); ?></p>
87
- </div>
88
- <div class="col">
89
- <div class="icon-container">
90
- <i class="wp-ulike-icons-paintbrush"></i>
91
- </div>
92
- <h3><?php echo _e('New Themes And Styles',WP_ULIKE_SLUG); ?></h3>
93
- <p><?php echo _e('Since WP ULike 2.3, We have made some new styles and themes and you can customize them by your taste.',WP_ULIKE_SLUG); ?></p>
94
- </div>
95
- <div class="col">
96
- <div class="icon-container">
97
- <i class="wp-ulike-icons-trophy"></i>
98
- </div>
99
- <h3><?php echo _e('myCRED Points Support',WP_ULIKE_SLUG); ?></h3>
100
- <p><?php echo _e('myCRED is an adaptive points management system that lets you award / charge your users for interacting with your WordPress.',WP_ULIKE_SLUG); ?></p>
101
- </div>
102
- <div class="col">
103
- <div class="icon-container">
104
- <i class="wp-ulike-icons-map"></i>
105
- </div>
106
- <h3><?php echo _e('Likers World Map',WP_ULIKE_SLUG); ?></h3>
107
- <p><?php echo _e('Since WP ULike 2.3, We have made a new ability that you can track your likers by their country in the world map & Top Liker widget.',WP_ULIKE_SLUG); ?></p>
108
- </div>
109
- </div>
110
-
111
- <div class="changelog feature-list">
112
- <div class="return-to-dashboard">
113
- <a href="admin.php?page=wp-ulike-statistics"><?php echo _e('WP ULike Statistics',WP_ULIKE_SLUG); ?> &rarr; <?php echo _e('Home',WP_ULIKE_SLUG); ?></a> <?php echo _e('OR',WP_ULIKE_SLUG); ?> <a href="admin.php?page=wp-ulike-settings"><?php echo _e('WP ULike Settings',WP_ULIKE_SLUG); ?></a>
114
- </div>
115
- </div>
116
-
117
- <?php else: ?>
118
-
119
- <p class="about-description"><?php echo _e('WP ULike is created by many love and time. Enjoy it :)',WP_ULIKE_SLUG); ?></p>
120
- <h3 class="wp-people-group"><?php echo _e('Project Leaders',WP_ULIKE_SLUG); ?></h3>
121
- <ul id="wp-people-group-project-leaders" class="wp-people-group">
122
- <li class="wp-person" id="wp-person-alimir">
123
- <a href="https://profiles.wordpress.org/alimir/"><?php echo get_avatar( 'info@alimir.ir', 64 ); ?></a>
124
- <a class="web" target="_blank" href="https://ir.linkedin.com/in/alimirir/">Ali Mirzaei</a>
125
- <span class="title"><?php echo _e('Project Lead & Developer',WP_ULIKE_SLUG); ?></span>
126
- </li>
127
- </ul>
128
-
129
- <h3 class="wp-people-group"><?php _e('Translations',WP_ULIKE_SLUG); ?></h3>
130
- <ul>
131
- <li>English (United States)</li>
132
- <li>Persian (Iran)</li>
133
- <li>French (France)</li>
134
- <li>Chinese (China)</li>
135
- <li>Chinese (Taiwan)</li>
136
- <li>Dutch (Netherlands) </li>
137
- <li>Arabic</li>
138
- <li>Portuguese (Brazil)</li>
139
- <li>Turkish (Turkey)</li>
140
- <li>Greek</li>
141
- <li>Russian (Russia)</li>
142
- <li>Spanish (Spain)</li>
143
- <li>German (Germany)</li>
144
- <li>Japanese</li>
145
- <li>Romanian (Romania)</li>
146
- <li>Slovak (Slovakia)</li>
147
- <li>Czech (Czech Republic)</li>
148
- <li>Hebrew (Israel)</li>
149
- <li>Italian (Italy)</li>
150
- <li>Polish (Poland)</li>
151
- <li>Finnish</li>
152
- <li>Hungarian (Hungary)</li>
153
- <li>Lithuanian (Lithuania)</li>
154
- <li>Indonesian (Indonesia)</li>
155
- <li>Khmer</li>
156
- <li>Norwegian Bokmal (Norway)</li>
157
- <li>Portuguese (Portugal)</li>
158
- <li>Swedish (Sweden)</li>
159
- <li>Danish (Denmark)</li>
160
- <li>Estonian</li>
161
- <li>Korean (Korea)</li>
162
- <li>Vietnamese</li>
163
- <li>Basque</li>
164
- <li>Bosnian (Bosnia and Herzegovina)</li>
165
- <li>English (United Kingdom)</li>
166
- </ul>
167
-
168
- <p class="about-description"><?php _e('Would you like to help translate the plugin into more languages?',WP_ULIKE_SLUG); ?> <a target="_blank" href="https://www.transifex.com/projects/p/wp-ulike/" title"WP-Translations">[<?php _e('Join our WP-Translations Community',WP_ULIKE_SLUG); ?>]</a></p>
169
-
170
- <h3 class="wp-people-group"><?php echo _e('Other Plugins',WP_ULIKE_SLUG); ?></h3>
171
- <ul class="wp-people-group">
172
- <li class="wp-person" id="wp-person-alimirzaei">
173
- <a target="_blank" href="https://wordpress.org/plugins/blue-login-style"><img class="gravatar" src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/blue-login-themes.jpg" alt="Blue Login Themes" /></a>
174
- <a class="web" href="https://profiles.wordpress.org/alimir/">Ali Mirzaei</a>
175
- <span class="title">Blue Login Themes</span>
176
- </li>
177
- <li class="wp-person" id="wp-person-alimirzaei">
178
- <a target="_blank" href="https://wordpress.org/plugins/custom-fields-notifications/"><img class="gravatar" src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/custom-fileds-notifications.png" alt="Custom Fields Notifications" /></a>
179
- <a class="web" href="https://profiles.wordpress.org/alimir/">Ali Mirzaei</a>
180
- <span class="title">Custom Fields Notifications</span>
181
- </li>
182
- <li class="wp-person" id="wp-person-alimirzaei">
183
- <a target="_blank" href="http://wordpress.org/plugins/ajax-bootmodal-login/"><img class="gravatar" src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/ajax-bootmodal-login.jpg" alt="Ajax BootModal Login" /></a>
184
- <a class="web" href="https://profiles.wordpress.org/alimir/">Ali Mirzaei</a>
185
- <span class="title">Ajax BootModal Login</span>
186
- </li>
187
- </ul>
188
-
189
- <h3 class="wp-people-group"><?php _e('Like this plugin?',WP_ULIKE_SLUG); ?></h3>
190
- <div class="wp-ulike-notice">
191
- <img src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/wp-ulike-badge.png" alt="WP ULike Plugin">
192
- <div class="wp-ulike-notice-text">
193
- <p><?php echo _e( "It's great to see that you've been using the WP ULike plugin for a while now. Hopefully you're happy with it!&nbsp; If so, would you consider leaving a positive review? It really helps to support the plugin and helps others to discover it too!" , WP_ULIKE_SLUG ); ?> </p>
194
- <p class="links">
195
- <a href="https://wordpress.org/support/plugin/wp-ulike/reviews/?filter=5" target="_blank"><?php echo _e( "Sure, I'd love to!", WP_ULIKE_SLUG ); ?></a>
196
- </p>
197
- </div>
198
- </div>
199
-
200
- <?php endif; ?>
201
-
202
- </div>
203
- <?php
204
  }
205
 
206
- /*******************************************************
207
- Logs Page
208
- *******************************************************/
209
  /**
210
  * Return per_page option value
211
  *
@@ -214,932 +20,69 @@ function wp_ulike_about_page() {
214
  * @return Integer
215
  */
216
  function wp_ulike_logs_return_per_page(){
217
- $user = get_current_user_id();
218
- $screen = get_current_screen();
219
- $option = $screen->get_option('per_page', 'option');
220
- $per_page = get_user_meta($user, $option, true);
221
 
222
- if ( empty ( $per_page) || $per_page < 1 ) {
223
- return 20;
224
- }
225
- else
226
- return $per_page;
227
  }
228
 
229
  /**
230
- * Add screen option for per_page value
231
  *
232
  * @author Alimir
233
- * @since 2.1
234
- * @return String
235
- */
236
- function wp_ulike_logs_per_page() {
237
- $option = 'per_page';
238
- $args = array(
239
- 'label' => __('Logs',WP_ULIKE_SLUG),
240
- 'default' => 20,
241
- 'option' => 'wp_ulike_logs_per_page'
242
- );
243
- add_screen_option( $option, $args );
244
- }
245
-
246
- /**
247
- * Create WP ULike Post Logs page with separate pagination
248
- *
249
- * @author Alimir
250
- * @since 1.7
251
- * @return String
252
  */
253
- function wp_ulike_post_likes_logs(){
254
  global $wpdb;
255
- $alternate = true;
256
- $items = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."ulike");
257
- if($items > 0) {
258
- $p = new wp_ulike_pagination;
259
- $p->items($items);
260
- $p->limit(wp_ulike_logs_return_per_page()); // Limit entries per page
261
- $p->target("admin.php?page=wp-ulike-post-logs");
262
- $p->calculate(); // Calculates what to show
263
- $p->parameterName('page_number');
264
- $p->adjacents(1); //No. of page away from the current page
265
 
266
- if(!isset($_GET['page_number'])) {
267
- $p->page = 1;
268
- } else {
269
- $p->page = $_GET['page_number'];
270
- }
271
-
272
- //Query for limit page_number
273
- $limit = "LIMIT " . ($p->page - 1) * $p->limit . ", " . $p->limit;
274
-
275
- $get_ulike_logs = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."ulike ORDER BY id DESC ".$limit."");
276
-
277
- ?>
278
- <div class="wrap">
279
- <h2><?php _e('WP ULike Logs', WP_ULIKE_SLUG); ?></h2>
280
- <h3><?php _e('Post Likes Logs', WP_ULIKE_SLUG); ?></h3>
281
- <div class="tablenav">
282
- <div class='tablenav-pages'>
283
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
284
- <?php echo $p->show(); // Echo out the list of paging. ?>
285
- </div>
286
- </div>
287
- <table class="widefat">
288
- <thead>
289
- <tr>
290
- <th width="2%"><?php _e('ID', WP_ULIKE_SLUG); ?></th>
291
- <th width="10%"><?php _e('Username', WP_ULIKE_SLUG); ?></th>
292
- <th><?php _e('Status', WP_ULIKE_SLUG); ?></th>
293
- <th width="6%"><?php _e('Post ID', WP_ULIKE_SLUG); ?></th>
294
- <th><?php _e('Post Title', WP_ULIKE_SLUG); ?></th>
295
- <th width="20%"><?php _e('Date / Time', WP_ULIKE_SLUG); ?></th>
296
- <th><?php _e('IP', WP_ULIKE_SLUG); ?></th>
297
- <th><?php _e('Actions', WP_ULIKE_SLUG); ?></th>
298
- </tr>
299
- </thead>
300
- <tbody class="wp_ulike_logs">
301
- <?php
302
- foreach ( $get_ulike_logs as $get_ulike_log )
303
- {
304
- ?>
305
- <tr <?php if ($alternate == true) echo 'class="alternate"';?>>
306
- <td>
307
- <?php echo $get_ulike_log->id; ?>
308
- </td>
309
- <td>
310
- <?php
311
- $user_info = get_userdata($get_ulike_log->user_id);
312
- if($user_info)
313
- echo get_avatar( $user_info->user_email, 16, '' , 'avatar') . '<em> @' . $user_info->user_login . '</em>';
314
- else
315
- echo '<em> #'. __('Guest User',WP_ULIKE_SLUG) .'</em>';
316
- ?>
317
- </td>
318
- <td>
319
- <?php
320
- $get_the_status = $get_ulike_log->status;
321
- if($get_the_status == 'like')
322
- echo '<i class="wp-ulike-icons-thumb_up"></i>';
323
- else
324
- echo '<i class="wp-ulike-icons-thumb_down"></i>';
325
- ?>
326
- </td>
327
- <td>
328
- <?php echo $get_ulike_log->post_id; ?>
329
- </td>
330
- <td>
331
- <?php echo '<a href="'.get_permalink($get_ulike_log->post_id).'" title="'.get_the_title($get_ulike_log->post_id).'">'.get_the_title($get_ulike_log->post_id).'</a>'; ?>
332
- </td>
333
- <td>
334
- <?php
335
- echo wp_ulike_date_i18n($get_ulike_log->date_time);
336
- ?>
337
- </td>
338
- <td>
339
- <?php echo $get_ulike_log->ip; ?>
340
- </td>
341
- <td>
342
- <button class="wp_ulike_delete button" type="button" data-nonce="<?php echo wp_create_nonce( 'ulike' . $get_ulike_log->id ); ?>" data-id="<?php echo $get_ulike_log->id;?>" data-table="ulike"><i class="dashicons dashicons-trash"></i></button>
343
- </td>
344
- <?php
345
- $alternate = !$alternate;
346
- }
347
- ?>
348
- </tr>
349
- </tbody>
350
- </table>
351
- <div class="tablenav">
352
- <div class='tablenav-pages'>
353
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
354
- <?php echo $p->show(); // Echo out the list of paging. ?>
355
- </div>
356
- </div>
357
- </div>
358
- <?php
359
- } else {
360
- echo "<div class='error'><p>" . __('<strong>ERROR:</strong> No Record Found. (This problem is created because you don\'t have any data on this table)',WP_ULIKE_SLUG) . "</p></div>";
361
- }
362
- }
363
-
364
- /**
365
- * Create WP ULike Comment Logs page with separate pagination
366
- *
367
- * @author Alimir
368
- * @since 1.7
369
- * @return String
370
- */
371
- function wp_ulike_comment_likes_logs(){
372
- global $wpdb;
373
- $alternate = true;
374
- $items = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_comments");
375
- if($items > 0) {
376
- $p = new wp_ulike_pagination;
377
- $p->items($items);
378
- $p->limit(wp_ulike_logs_return_per_page()); // Limit entries per page
379
- $p->target("admin.php?page=wp-ulike-comment-logs");
380
- $p->calculate(); // Calculates what to show
381
- $p->parameterName('page_number');
382
- $p->adjacents(1); //No. of page away from the current page
383
-
384
- if(!isset($_GET['page_number'])) {
385
- $p->page = 1;
386
- } else {
387
- $p->page = $_GET['page_number'];
388
- }
389
-
390
- //Query for limit page_number
391
- $limit = "LIMIT " . ($p->page - 1) * $p->limit . ", " . $p->limit;
392
-
393
- $get_ulike_logs = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."ulike_comments ORDER BY id DESC ".$limit."");
394
- ?>
395
- <div class="wrap">
396
- <h2><?php _e('WP ULike Logs', WP_ULIKE_SLUG); ?></h2>
397
- <h3><?php _e('Comment Likes Logs', WP_ULIKE_SLUG); ?></h3>
398
- <div class="tablenav">
399
- <div class='tablenav-pages'>
400
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
401
- <?php echo $p->show(); // Echo out the list of paging. ?>
402
- </div>
403
- </div>
404
- <table class="widefat">
405
- <thead>
406
- <tr>
407
- <th width="2%"><?php _e('ID', WP_ULIKE_SLUG); ?></th>
408
- <th width="10%"><?php _e('Username', WP_ULIKE_SLUG); ?></th>
409
- <th width="5%"><?php _e('Status', WP_ULIKE_SLUG); ?></th>
410
- <th width="6%"><?php _e('Comment ID', WP_ULIKE_SLUG); ?></th>
411
- <th><?php _e('Comment Author', WP_ULIKE_SLUG); ?></th>
412
- <th><?php _e('Comment Text', WP_ULIKE_SLUG); ?></th>
413
- <th width="20%"><?php _e('Date / Time', WP_ULIKE_SLUG); ?></th>
414
- <th><?php _e('IP', WP_ULIKE_SLUG); ?></th>
415
- <th><?php _e('Actions', WP_ULIKE_SLUG); ?></th>
416
- </tr>
417
- </thead>
418
- <tbody class="wp_ulike_logs">
419
- <?php
420
- foreach ( $get_ulike_logs as $get_ulike_log )
421
- {
422
- ?>
423
- <tr <?php if ($alternate == true) echo 'class="alternate"';?>>
424
- <td>
425
- <?php echo $get_ulike_log->id; ?>
426
- </td>
427
- <td>
428
- <?php
429
- $user_info = get_userdata($get_ulike_log->user_id);
430
- if($user_info)
431
- echo get_avatar( $user_info->user_email, 16, '' , 'avatar') . '<em> @' . $user_info->user_login . '</em>';
432
- else
433
- echo '<em> #'. __('Guest User',WP_ULIKE_SLUG) .'</em>';
434
- ?>
435
- </td>
436
- <td>
437
- <?php
438
- $get_the_status = $get_ulike_log->status;
439
- if($get_the_status == 'like')
440
- echo '<i class="wp-ulike-icons-thumb_up"></i>';
441
- else
442
- echo '<i class="wp-ulike-icons-thumb_down"></i>';
443
- ?>
444
- </td>
445
- <td>
446
- <?php echo $get_ulike_log->comment_id; ?>
447
- </td>
448
- <td>
449
- <?php echo get_comment_author($get_ulike_log->comment_id) ?>
450
- </td>
451
- <td>
452
- <?php echo get_comment_text($get_ulike_log->comment_id) ?>
453
- </td>
454
- <td>
455
- <?php
456
- echo wp_ulike_date_i18n($get_ulike_log->date_time);
457
- ?>
458
- </td>
459
- <td>
460
- <?php echo $get_ulike_log->ip; ?>
461
- </td>
462
- <td>
463
- <button class="wp_ulike_delete button" type="button" data-nonce="<?php echo wp_create_nonce( 'ulike_comments' . $get_ulike_log->id ); ?>" data-id="<?php echo $get_ulike_log->id;?>" data-table="ulike_comments"><i class="dashicons dashicons-trash"></i></button>
464
- </td>
465
- <?php
466
- $alternate = !$alternate;
467
- }
468
- ?>
469
- </tr>
470
- </tbody>
471
- </table>
472
- <div class="tablenav">
473
- <div class='tablenav-pages'>
474
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
475
- <?php echo $p->show(); // Echo out the list of paging. ?>
476
- </div>
477
- </div>
478
- </div>
479
-
480
- <?php
481
- } else {
482
- echo "<div class='error'><p>" . __('<strong>ERROR:</strong> No Record Found. (This problem is created because you don\'t have any data on this table)',WP_ULIKE_SLUG) . "</p></div>";
483
- }
484
- }
485
-
486
- /**
487
- * Create WP ULike BuddyPress Logs page with separate pagination
488
- *
489
- * @author Alimir
490
- * @since 1.7
491
- * @return String
492
- */
493
- function wp_ulike_buddypress_likes_logs(){
494
-
495
- if( ! defined( 'BP_VERSION' ) ) {
496
- echo sprintf( '<div class="wrap">' . __( '%s is Not Activated!', WP_ULIKE_SLUG ) . '</div>' ,__( 'BuddyPress', WP_ULIKE_SLUG ) );
497
- return;
498
- }
499
-
500
- global $wpdb;
501
- $alternate = true;
502
- $items = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_activities");
503
- if($items > 0) {
504
- $p = new wp_ulike_pagination;
505
- $p->items($items);
506
- $p->limit(wp_ulike_logs_return_per_page()); // Limit entries per page
507
- $p->target("admin.php?page=wp-ulike-bp-logs");
508
- $p->calculate(); // Calculates what to show
509
- $p->parameterName('page_number');
510
- $p->adjacents(1); //No. of page away from the current page
511
-
512
- if(!isset($_GET['page_number'])) {
513
- $p->page = 1;
514
- } else {
515
- $p->page = $_GET['page_number'];
516
- }
517
-
518
- //Query for limit page_number
519
- $limit = "LIMIT " . ($p->page - 1) * $p->limit . ", " . $p->limit;
520
-
521
- $get_ulike_logs = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."ulike_activities ORDER BY id DESC ".$limit."");
522
-
523
- ?>
524
- <div class="wrap">
525
- <h2><?php _e('WP ULike Logs', WP_ULIKE_SLUG); ?></h2>
526
- <h3><?php _e('Activity Likes Logs', WP_ULIKE_SLUG); ?></h3>
527
- <div class="tablenav">
528
- <div class='tablenav-pages'>
529
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
530
- <?php echo $p->show(); // Echo out the list of paging. ?>
531
- </div>
532
- </div>
533
- <table class="widefat">
534
- <thead>
535
- <tr>
536
- <th width="3%"><?php _e('ID', WP_ULIKE_SLUG); ?></th>
537
- <th width="13%"><?php _e('Username', WP_ULIKE_SLUG); ?></th>
538
- <th><?php _e('Status', WP_ULIKE_SLUG); ?></th>
539
- <th width="6%"><?php _e('Activity ID', WP_ULIKE_SLUG); ?></th>
540
- <th><?php _e('Permalink', WP_ULIKE_SLUG); ?></th>
541
- <th><?php _e('Date / Time', WP_ULIKE_SLUG); ?></th>
542
- <th><?php _e('IP', WP_ULIKE_SLUG); ?></th>
543
- <th><?php _e('Actions', WP_ULIKE_SLUG); ?></th>
544
- </tr>
545
- </thead>
546
- <tbody class="wp_ulike_logs">
547
- <?php
548
- foreach ( $get_ulike_logs as $get_ulike_log )
549
- {
550
- ?>
551
- <tr <?php if ($alternate == true) echo 'class="alternate"';?>>
552
- <td>
553
- <?php echo $get_ulike_log->id; ?>
554
- </td>
555
- <td>
556
- <?php
557
- $user_info = get_userdata($get_ulike_log->user_id);
558
- if($user_info)
559
- echo get_avatar( $user_info->user_email, 16, '' , 'avatar') . '<em> @' . $user_info->user_login . '</em>';
560
- else
561
- echo '<em> #'. __('Guest User',WP_ULIKE_SLUG) .'</em>';
562
- ?>
563
- </td>
564
- <td>
565
- <?php
566
- $get_the_status = $get_ulike_log->status;
567
- if($get_the_status == 'like')
568
- echo '<i class="wp-ulike-icons-thumb_up"></i>';
569
- else
570
- echo '<i class="wp-ulike-icons-thumb_down"></i>';
571
- ?>
572
- </td>
573
- <td>
574
- <?php echo $get_ulike_log->activity_id; ?>
575
- </td>
576
- <td>
577
- <?php printf( __( '<a href="%1$s">Activity Permalink</a>', WP_ULIKE_SLUG ), bp_activity_get_permalink( $get_ulike_log->activity_id ) ); ?>
578
- </td>
579
- <td>
580
- <?php
581
- echo wp_ulike_date_i18n($get_ulike_log->date_time);
582
- ?>
583
- </td>
584
- <td>
585
- <?php echo $get_ulike_log->ip; ?>
586
- </td>
587
- <td>
588
- <button class="wp_ulike_delete button" type="button" data-nonce="<?php echo wp_create_nonce( 'ulike_activities' . $get_ulike_log->id ); ?>" data-id="<?php echo $get_ulike_log->id;?>" data-table="ulike_activities"><i class="dashicons dashicons-trash"></i></button>
589
- </td>
590
- <?php
591
- $alternate = !$alternate;
592
- }
593
- ?>
594
- </tr>
595
- </tbody>
596
- </table>
597
- <div class="tablenav">
598
- <div class='tablenav-pages'>
599
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
600
- <?php echo $p->show(); // Echo out the list of paging. ?>
601
- </div>
602
- </div>
603
- </div>
604
-
605
- <?php
606
- } else {
607
- echo "<div class='error'><p>" . __('<strong>ERROR:</strong> No Record Found. (This problem is created because you don\'t have any data on this table)',WP_ULIKE_SLUG) . "</p></div>";
608
- }
609
- }
610
 
611
- /**
612
- * Create WP ULike bbPress Logs page with separate pagination
613
- *
614
- * @author Alimir
615
- * @since 2.2
616
- * @updated 2.4.2
617
- * @return String
618
- */
619
- function wp_ulike_bbpress_likes_logs(){
620
 
621
- if( ! function_exists( 'is_bbpress' ) ) {
622
- echo sprintf( '<div class="wrap">' . __( '%s is Not Activated!', WP_ULIKE_SLUG ) . '</div>' ,__( 'bbPress', WP_ULIKE_SLUG ) );
623
  return;
624
  }
625
 
626
- global $wpdb;
627
- $alternate = true;
628
- $items = $wpdb->get_var("SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_forums");
629
- if($items > 0) {
630
- $p = new wp_ulike_pagination;
631
- $p->items($items);
632
- $p->limit(wp_ulike_logs_return_per_page()); // Limit entries per page
633
- $p->target("admin.php?page=wp-ulike-bbpress-logs");
634
- $p->calculate(); // Calculates what to show
635
- $p->parameterName('page_number');
636
- $p->adjacents(1); //No. of page away from the current page
637
-
638
- if(!isset($_GET['page_number'])) {
639
- $p->page = 1;
640
- } else {
641
- $p->page = $_GET['page_number'];
642
- }
643
-
644
- //Query for limit page_number
645
- $limit = "LIMIT " . ($p->page - 1) * $p->limit . ", " . $p->limit;
646
-
647
- $get_ulike_logs = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."ulike_forums ORDER BY id DESC ".$limit."");
648
 
649
- ?>
650
- <div class="wrap">
651
- <h2><?php _e('WP ULike Logs', WP_ULIKE_SLUG); ?></h2>
652
- <h3><?php _e('Topics Likes Logs', WP_ULIKE_SLUG); ?></h3>
653
- <div class="tablenav">
654
- <div class='tablenav-pages'>
655
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
656
- <?php echo $p->show(); // Echo out the list of paging. ?>
657
- </div>
658
- </div>
659
- <table class="widefat">
660
- <thead>
661
- <tr>
662
- <th width="2%"><?php _e('ID', WP_ULIKE_SLUG); ?></th>
663
- <th width="10%"><?php _e('Username', WP_ULIKE_SLUG); ?></th>
664
- <th><?php _e('Status', WP_ULIKE_SLUG); ?></th>
665
- <th width="6%"><?php _e('Topic ID', WP_ULIKE_SLUG); ?></th>
666
- <th><?php _e('Topic Title', WP_ULIKE_SLUG); ?></th>
667
- <th width="20%"><?php _e('Date / Time', WP_ULIKE_SLUG); ?></th>
668
- <th><?php _e('IP', WP_ULIKE_SLUG); ?></th>
669
- <th><?php _e('Actions', WP_ULIKE_SLUG); ?></th>
670
- </tr>
671
- </thead>
672
- <tbody class="wp_ulike_logs">
673
- <?php
674
- foreach ( $get_ulike_logs as $get_ulike_log )
675
- {
676
- ?>
677
- <tr <?php if ($alternate == true) echo 'class="alternate"';?>>
678
- <td>
679
- <?php echo $get_ulike_log->id; ?>
680
- </td>
681
- <td>
682
- <?php
683
- $user_info = get_userdata($get_ulike_log->user_id);
684
- if($user_info)
685
- echo get_avatar( $user_info->user_email, 16, '' , 'avatar') . '<em> @' . $user_info->user_login . '</em>';
686
- else
687
- echo '<em> #'. __('Guest User',WP_ULIKE_SLUG) .'</em>';
688
- ?>
689
- </td>
690
- <td>
691
- <?php
692
- $get_the_status = $get_ulike_log->status;
693
- if($get_the_status == 'like')
694
- echo '<i class="wp-ulike-icons-thumb_up"></i>';
695
- else
696
- echo '<i class="wp-ulike-icons-thumb_down"></i>';
697
- ?>
698
- </td>
699
- <td>
700
- <?php echo $get_ulike_log->topic_id; ?>
701
- </td>
702
- <td>
703
- <?php echo '<a href="'.get_permalink($get_ulike_log->topic_id).'" title="'.get_the_title($get_ulike_log->topic_id).'">'.get_the_title($get_ulike_log->topic_id).'</a>'; ?>
704
- </td>
705
- <td>
706
- <?php
707
- echo wp_ulike_date_i18n($get_ulike_log->date_time);
708
- ?>
709
- </td>
710
- <td>
711
- <?php echo $get_ulike_log->ip; ?>
712
- </td>
713
- <td>
714
- <button class="wp_ulike_delete button" type="button" data-nonce="<?php echo wp_create_nonce( 'ulike_forums' . $get_ulike_log->id ); ?>" data-id="<?php echo $get_ulike_log->id;?>" data-table="ulike_forums"><i class="dashicons dashicons-trash"></i></button>
715
- </td>
716
- <?php
717
- $alternate = !$alternate;
718
- }
719
- ?>
720
- </tr>
721
- </tbody>
722
- </table>
723
- <div class="tablenav">
724
- <div class='tablenav-pages'>
725
- <span class="displaying-num"><?php echo $items . ' ' . __('Logs',WP_ULIKE_SLUG); ?></span>
726
- <?php echo $p->show(); // Echo out the list of paging. ?>
727
- </div>
728
- </div>
729
- </div>
730
 
731
- <?php
 
732
  } else {
733
- echo "<div class='error'><p>" . __('<strong>ERROR:</strong> No Record Found. (This problem is created because you don\'t have any data on this table)',WP_ULIKE_SLUG) . "</p></div>";
734
- }
735
- }
736
-
737
- /*******************************************************
738
- Statistics Page
739
- *******************************************************/
740
-
741
- /**
742
- * Register Screen Options
743
- *
744
- * @author Alimir
745
- * @since 2.1
746
- * @return Void
747
- */
748
- function wp_ulike_statistics_register_option(){
749
- $screen = get_current_screen();
750
- add_filter('screen_layout_columns', 'wp_ulike_statistics_display_option');
751
- $screen->add_option('wp_ulike_statistics_screen');
752
- }
753
-
754
- /**
755
- * Create WP ULike statistics with wp_ulike_stats class
756
- *
757
- * @author Alimir
758
- * @since 2.0
759
- * @return String
760
- */
761
- function wp_ulike_statistics(){
762
-
763
- global $wp_ulike_stats;
764
- $get_option = get_option( 'wp_ulike_statistics_screen' );
765
-
766
- echo '<div class="wrap">';
767
- echo '<h2>' . __( 'WP ULike Statistics', WP_ULIKE_SLUG ) . '</h2>';
768
-
769
- apply_filters( 'wp_ulike_advertisement', '__return_null' );
770
-
771
- /*******************************************************
772
- Welcome Panel
773
- *******************************************************/
774
- if($get_option['welcome_panel'] == 1){
775
- echo '<div id="welcome-panel" class="welcome-panel"><div class="welcome-panel-content">';
776
- echo '<h3>' . __('Welcome to WP ULike Statistics!',WP_ULIKE_SLUG) . '</h3>';
777
- echo '<p class="about-description">' . __('We have provided some useful statistics tools in this page:',WP_ULIKE_SLUG) . '</p>';
778
- echo '<div class="welcome-panel-column-container">';
779
- echo '
780
- <div class="welcome-panel-column">
781
- <h4>'.__('Get Started').'</h4>
782
- <a class="button button-primary button-hero" href="admin.php?page=wp-ulike-about">'.__( 'About WP ULike', WP_ULIKE_SLUG ).'</a>
783
- <p class="hide-if-no-customize">'.__('or',WP_ULIKE_SLUG).', <a target="_blank" href="'.WP_ULIKE_PLUGIN_URI.'">'.__( 'Visit our homepage', WP_ULIKE_SLUG ).'</a></p>
784
- </div>
785
- <div class="welcome-panel-column">
786
- <h4>'.__('Other Tools',WP_ULIKE_SLUG).'</h4>
787
- <ul>
788
- <li><a target="_blank" href="admin.php?page=wp-ulike-post-logs" class="welcome-icon welcome-view-site">'.__('Post Likes Logs',WP_ULIKE_SLUG).'</a></li>
789
- <li><a target="_blank" href="admin.php?page=wp-ulike-comment-logs" class="welcome-icon welcome-view-site">'.__('Comment Likes Logs',WP_ULIKE_SLUG).'</a></li>
790
- <li><a target="_blank" href="admin.php?page=wp-ulike-bp-logs" class="welcome-icon welcome-view-site">'.__('Activity Likes Logs',WP_ULIKE_SLUG).'</a></li>
791
- <li><a target="_blank" href="admin.php?page=wp-ulike-bbpress-logs" class="welcome-icon welcome-view-site">'.__('Topics Likes Logs',WP_ULIKE_SLUG).'</a></li>
792
- </ul>
793
- </div>
794
- <div class="welcome-panel-column welcome-panel-last">
795
- <h4>'.__('Documentation').'</h4>
796
- <ul>
797
- <li><a target="_blank" href="https://wordpress.org/support/plugin/wp-ulike" class="welcome-icon welcome-learn-more">'.__('Support',WP_ULIKE_SLUG).'</a></li>
798
- <li><a target="_blank" href="https://wordpress.org/plugins/wp-ulike/faq/" class="welcome-icon welcome-learn-more">'.__('FAQ',WP_ULIKE_SLUG).'</a></li>
799
- <li><a target="_blank" href="http://preview.alimir.ir/contact/" class="welcome-icon welcome-learn-more">'.__('Contact',WP_ULIKE_SLUG).'</a></li>
800
- <li><a target="_blank" href="https://github.com/Alimir/wp-ulike" class="welcome-icon welcome-learn-more">'.__('GitHub Repository',WP_ULIKE_SLUG).'</a></li>
801
- </ul>
802
- </div>
803
- ';
804
- echo '</div></div></div>';
805
- }
806
-
807
- /*******************************************************
808
- First Column
809
- *******************************************************/
810
- $total_likes = 0;
811
-
812
- echo '
813
- <div class="postbox-container" id="right-log">
814
- <div class="metabox-holder">
815
- <div class="meta-box-sortables ui-sortable">';
816
-
817
- if( isset($get_option) && $get_option['summary_like_stats'] == 1){
818
-
819
- $SummaryArr = array(
820
- "posts" => array(
821
- "id" => "posts_likes_stats",
822
- "type" => "ulike",
823
- "table" => "postmeta",
824
- "key" => "_liked",
825
- "dashicons" => "dashicons-admin-post",
826
- "title" => __('Posts Likes Summary',WP_ULIKE_SLUG)
827
- ),
828
- "comments" => array(
829
- "id" => "comments_likes_stats",
830
- "type" => "ulike_comments",
831
- "table" => "commentmeta",
832
- "key" => "_commentliked",
833
- "dashicons" => "dashicons-admin-comments",
834
- "title" => __('Comments Likes Summary',WP_ULIKE_SLUG)
835
- ),
836
- "activities" => array(
837
- "id" => "activities_likes_stats",
838
- "type" => "ulike_activities",
839
- "table" => "bp_activity_meta",
840
- "key" => "_activityliked",
841
- "dashicons" => "dashicons-groups",
842
- "title" => __('Activities Likes Summary',WP_ULIKE_SLUG)
843
- ),
844
- "topics" => array(
845
- "id" => "topics_likes_stats",
846
- "type" => "ulike_forums",
847
- "table" => "postmeta",
848
- "key" => "_topicliked",
849
- "dashicons" => "dashicons-admin-post",
850
- "title" => __('Topics Likes Summary',WP_ULIKE_SLUG)
851
- )
852
- );
853
-
854
- foreach ($SummaryArr as $SummaryTotal) {
855
- $total_likes += $wp_ulike_stats->get_all_data_date($SummaryTotal["table"],$SummaryTotal["key"]);
856
- }
857
-
858
- echo'
859
- <div style="display: block;" class="postbox">
860
- <div class="handlediv" title="Click to toggle"><br></div>
861
- <h3 class="hndle"><span><i class="dashicons dashicons-chart-bar"></i> '.__('Summary',WP_ULIKE_SLUG).'</span></h3>
862
- <div class="inside">';
863
-
864
- foreach ($SummaryArr as $SummaryVal) {
865
-
866
- echo'<table class="widefat table-stats" id="summary-stats" width="100%"><tbody>';
867
-
868
- if($get_option[$SummaryVal['id']] == 1){
869
-
870
- if($SummaryVal["id"] == 'posts_likes_stats'){
871
- echo'
872
- <tr>
873
- <th><i class="dashicons dashicons-pressthis"></i> '.__('Total Likes',WP_ULIKE_SLUG).':</th>
874
- <th colspan="2" id="th-colspan"><span>'.$total_likes.'</span></th>
875
- </tr>';
876
- }
877
-
878
- echo'
879
-
880
- <tr>
881
- <th colspan="3" style="text-align: center; font-weight:bold;"><br><hr>'.$SummaryVal["title"].'<hr><br></th>
882
- </tr>
883
-
884
- <tr>
885
- <th><i class="dashicons dashicons-star-filled"></i> '. __('Today',WP_ULIKE_SLUG) .':</th>
886
- <th class="th-center"><span>'. $wp_ulike_stats->get_data_date($SummaryVal["type"],'today').'</span></th>
887
- </tr>
888
-
889
- <tr>
890
- <th><i class="dashicons dashicons-star-empty"></i> '. __('Yesterday',WP_ULIKE_SLUG) .':</th>
891
- <th class="th-center"><span>'. $wp_ulike_stats->get_data_date($SummaryVal["type"],'yesterday').'</span></th>
892
- </tr>
893
-
894
- <tr>
895
- <th><i class="dashicons dashicons-calendar"></i> '. __('Week',WP_ULIKE_SLUG) .':</th>
896
- <th class="th-center"><span>'. $wp_ulike_stats->get_data_date($SummaryVal["type"],'week').'</span></th>
897
- </tr>
898
-
899
- <tr>
900
- <th><i class="dashicons dashicons-flag"></i> '. __('Month',WP_ULIKE_SLUG) .':</th>
901
- <th class="th-center"><span>'. $wp_ulike_stats->get_data_date($SummaryVal["type"],'month').'</span></th>
902
- </tr>
903
-
904
- <tr>
905
- <th><i class="dashicons dashicons-chart-area"></i> '. __('Total',WP_ULIKE_SLUG) .':</th>
906
- <th class="th-center"><span>'. $wp_ulike_stats->get_all_data_date($SummaryVal["table"],$SummaryVal["key"]).'</span></th>
907
- </tr>';
908
-
909
- }
910
-
911
- echo '</tbody></table>';
912
-
913
- }
914
-
915
- echo '</div></div>';
916
- }
917
-
918
- if($get_option['likers_map'] == 1){
919
- echo '
920
- <div id="world_map" class="postbox">
921
- <div class="handlediv" title="Click to toggle"><br></div>
922
- <h3 class="hndle"><span><i class="dashicons dashicons-location-alt"></i> '.__('Likers World Map',WP_ULIKE_SLUG) . '</span></h3>
923
- <div class="inside">
924
- <div class="main">
925
- <div>
926
- <div id="vmap" style="width: 100%; min-height: 250px;"></div>
927
- </div>
928
- </div>
929
- </div>
930
- </div>';
931
- }
932
-
933
- if($get_option['top_likers'] == 1){
934
- $get_top_likers = $wp_ulike_stats->get_top_likers();
935
- $top_users_counter = 1;
936
- echo'
937
- <div class="postbox">
938
- <div class="handlediv" title="Click to toggle"><br></div>
939
- <h3 class="hndle"><span><i class="dashicons dashicons-awards"></i> '.__('Top Likers',WP_ULIKE_SLUG) . '</span></h3>
940
- <div class="inside">';
941
-
942
- foreach ($get_top_likers as $top_liker) {
943
- $get_top_user_id = stripslashes($top_liker->user_id);
944
- $get_top_user_info = get_userdata($get_top_user_id);
945
- $final_user_name = __('Guest User',WP_ULIKE_SLUG);
946
- if($get_top_user_info != '')
947
- $final_user_name = $get_top_user_info->display_name;
948
- echo'
949
- <div class="log-latest">
950
- <div class="log-item">
951
- <div class="log-page-title">'. $top_users_counter++ . ' - ' .$final_user_name.'</div>
952
- <div class="badge"><strong>'.$top_liker->SumUser.'</strong> '.__('Like',WP_ULIKE_SLUG) . '</div>
953
- <div class="left-div"><i class="dashicons dashicons-location"></i> <em dir="ltr">'.$top_liker->ip.'</em> | '.getCountryFromIP($top_liker->ip, "NamE").'</div>
954
- </div>
955
- </div>
956
- ';
957
- }
958
- echo '</div></div>';
959
- }
960
-
961
- if($get_option['top_posts'] == 1){
962
- echo'
963
- <div class="postbox">
964
- <div class="handlediv" title="Click to toggle"><br></div>
965
- <h3 class="hndle"><span><i class="dashicons dashicons-admin-post"></i> '.__('Most Liked Posts',WP_ULIKE_SLUG) . '</span></h3>
966
- <div class="inside"><div class="top-widget"><ol>';
967
- echo $wp_ulike_stats->get_tops('top_posts');
968
- echo '</ol></div></div></div>';
969
- }
970
-
971
- if($get_option['top_comments'] == 1){
972
- echo'
973
- <div class="postbox">
974
- <div class="handlediv" title="Click to toggle"><br></div>
975
- <h3 class="hndle"><span><i class="dashicons dashicons-admin-comments"></i> '.__('Most Liked Comments',WP_ULIKE_SLUG) . '</span></h3>
976
- <div class="inside"><div class="top-widget"><ol>';
977
- echo $wp_ulike_stats->get_tops('top_comments');
978
- echo '</ol></div></div></div>';
979
- }
980
-
981
- if($get_option['top_activities'] == 1){
982
- echo'
983
- <div class="postbox">
984
- <div class="handlediv" title="Click to toggle"><br></div>
985
- <h3 class="hndle"><span><i class="dashicons dashicons-groups"></i> '.__('Most Liked Activities',WP_ULIKE_SLUG) . '</span></h3>
986
- <div class="inside"><div class="top-widget"><ol>';
987
- echo $wp_ulike_stats->get_tops('top_activities');
988
- echo '</ol></div></div></div>';
989
- }
990
-
991
- if($get_option['top_topics'] == 1){
992
- echo'
993
- <div class="postbox">
994
- <div class="handlediv" title="Click to toggle"><br></div>
995
- <h3 class="hndle"><span><i class="dashicons dashicons-index-card"></i> '.__('Most Liked Topics',WP_ULIKE_SLUG) . '</span></h3>
996
- <div class="inside"><div class="top-widget"><ol>';
997
- echo $wp_ulike_stats->get_tops('top_topics');
998
- echo '</ol></div></div></div>';
999
- }
1000
-
1001
- echo '</div></div></div>';
1002
-
1003
-
1004
-
1005
- /*******************************************************
1006
- Second Column
1007
- *******************************************************/
1008
-
1009
- if(isset($get_option)){
1010
-
1011
- $ChartsArr = array(
1012
- "posts" => array(
1013
- "id" => "posts_likes_stats",
1014
- "view_logs" => ' <a style="text-decoration:none;" href="?page=wp-ulike-post-logs" target="_blank"><i class="dashicons dashicons-visibility"></i> '. __('View Logs',WP_ULIKE_SLUG) .'</a>',
1015
- "title" => __('Posts Likes Stats',WP_ULIKE_SLUG) . ' - ' . sprintf(__('In The Last %s Days',WP_ULIKE_SLUG), $get_option['days_number']),
1016
- "chart" => "chart1"
1017
- ),
1018
- "comments" => array(
1019
- "id" => "comments_likes_stats",
1020
- "view_logs" => ' <a style="text-decoration:none;" href="?page=wp-ulike-comment-logs" target="_blank"><i class="dashicons dashicons-visibility"></i> '. __('View Logs',WP_ULIKE_SLUG) .'</a>',
1021
- "title" => __('Comments Likes Stats',WP_ULIKE_SLUG) . ' - ' . sprintf(__('In The Last %s Days',WP_ULIKE_SLUG), $get_option['days_number']),
1022
- "chart" => "chart2"
1023
- ),
1024
- "activities" => array(
1025
- "id" => "activities_likes_stats",
1026
- "view_logs" => ' <a style="text-decoration:none;" href="?page=wp-ulike-bp-logs" target="_blank"><i class="dashicons dashicons-visibility"></i> '. __('View Logs',WP_ULIKE_SLUG) .'</a>',
1027
- "title" => __('Activities Likes Stats',WP_ULIKE_SLUG) . ' - ' . sprintf(__('In The Last %s Days',WP_ULIKE_SLUG), $get_option['days_number']),
1028
- "chart" => "chart3"
1029
- ),
1030
- "topics" => array(
1031
- "id" => "topics_likes_stats",
1032
- "view_logs" => ' <a style="text-decoration:none;" href="?page=wp-ulike-bbpress-logs" target="_blank"><i class="dashicons dashicons-visibility"></i> '. __('View Logs',WP_ULIKE_SLUG) .'</a>',
1033
- "title" => __('Topics Likes Stats',WP_ULIKE_SLUG) . ' - ' . sprintf(__('In The Last %s Days',WP_ULIKE_SLUG), $get_option['days_number']),
1034
- "chart" => "chart4"
1035
- )
1036
- );
1037
-
1038
- echo '
1039
- <div class="postbox-container" id="left-log">
1040
- <div class="metabox-holder">
1041
- <div class="meta-box-sortables ui-sortable">';
1042
-
1043
- foreach ($ChartsArr as $ChartArr) {
1044
- if($get_option[$ChartArr['id']] == 1){
1045
- echo '
1046
- <div id="'.$ChartArr['id'].'" class="postbox">
1047
- <div class="handlediv" title="Click to toggle"><br></div>
1048
- <h3 class="hndle"><span><i class="dashicons dashicons-chart-line"></i> '.$ChartArr['title'] . $ChartArr['view_logs'].' </span></h3>
1049
- <div class="inside">
1050
- <div class="main">
1051
- <div>
1052
- <canvas id="'.$ChartArr['chart'].'"></canvas>
1053
- </div>
1054
- </div>
1055
- </div>
1056
- </div>';
1057
- }
1058
- }
1059
-
1060
- if($get_option['piechart_stats'] == 1){
1061
- echo '
1062
- <div id="piechart_stats" class="postbox">
1063
- <div class="handlediv" title="Click to toggle"><br></div>
1064
- <h3 class="hndle"><span><i class="dashicons dashicons-chart-pie"></i> '.__('Likes Percent',WP_ULIKE_SLUG) . ' - ' . sprintf(__('In The Last %s Days',WP_ULIKE_SLUG), $get_option['days_number']).' </span></h3>
1065
- <div class="inside">
1066
- <div class="main">
1067
- <div>
1068
- <canvas id="piechart"></canvas>
1069
- </div>
1070
- </div>
1071
- </div>
1072
- </div>';
1073
- }
1074
-
1075
- echo '</div></div></div>';
1076
- }
1077
-
1078
- echo '</div>'; //end wrap class
1079
-
1080
- }
1081
-
1082
-
1083
- /**
1084
- * Display Screen Options
1085
- *
1086
- * @author Alimir
1087
- * @since 2.1
1088
- * @return Void
1089
- */
1090
- function wp_ulike_statistics_display_option(){
1091
- // get user options
1092
- $get_option = get_option( 'wp_ulike_statistics_screen' );
1093
-
1094
- if( ! $get_option ){
1095
- $options = array(
1096
- 'welcome_panel' => 1,
1097
- 'summary_like_stats' => 1,
1098
- 'posts_likes_stats' => 1,
1099
- 'comments_likes_stats' => 1,
1100
- 'activities_likes_stats' => 0,
1101
- 'topics_likes_stats' => 0,
1102
- 'most_liked_posts' => 1,
1103
- 'most_liked_comments' => 1,
1104
- 'piechart_stats' => 1,
1105
- 'likers_map' => 0,
1106
- 'top_likers' => 1,
1107
- 'top_posts' => 1,
1108
- 'top_comments' => 1,
1109
- 'top_activities' => 1,
1110
- 'top_topics' => 1,
1111
- 'days_number' => 20
1112
  );
1113
- update_option('wp_ulike_statistics_screen',$options);
1114
- }
1115
 
1116
- ?>
1117
- <div style="display: block;" id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="Screen Options Tab">
1118
- <form name="wp_ulike_statistics_screen_form" method="post">
1119
- <h5><?php echo _e('Show on screen'); ?></h5>
1120
- <div class="metabox-prefs">
1121
- <label><input class="hide-postbox-tog" name="wp_ulike_welcome" type="checkbox" value="1" <?php checked( '1', $get_option['welcome_panel'] ); ?>><?php echo _e('Welcome',WP_ULIKE_SLUG); ?></label>
1122
- <label><input class="hide-postbox-tog" name="wp_ulike_summary_stats" type="checkbox" value="1" <?php checked( '1', $get_option['summary_like_stats'] ); ?>><?php echo _e('Summary',WP_ULIKE_SLUG); ?></label>
1123
- <label><input class="hide-postbox-tog" name="wp_ulike_posts_stats" type="checkbox" value="1" <?php checked( '1', $get_option['posts_likes_stats'] ); ?>><?php echo _e('Posts Likes Stats',WP_ULIKE_SLUG); ?></label>
1124
- <label><input class="hide-postbox-tog" name="wp_ulike_comments_stats" type="checkbox" value="1" <?php checked( '1', $get_option['comments_likes_stats'] ); ?>><?php echo _e('Comments Likes Stats',WP_ULIKE_SLUG); ?></label>
1125
- <label><input class="hide-postbox-tog" name="wp_ulike_activities_stats" type="checkbox" value="1" <?php checked( '1', $get_option['activities_likes_stats'] ); ?>><?php echo _e('Activities Likes Stats',WP_ULIKE_SLUG); ?></label>
1126
- <label><input class="hide-postbox-tog" name="wp_ulike_topics_stats" type="checkbox" value="1" <?php checked( '1', $get_option['topics_likes_stats'] ); ?>><?php echo _e('Topics Likes Stats',WP_ULIKE_SLUG); ?></label>
1127
- <label><input class="hide-postbox-tog" name="wp_ulike_piechart_stats" type="checkbox" value="1" <?php checked( '1', $get_option['piechart_stats'] ); ?>><?php echo _e('Likes Percent',WP_ULIKE_SLUG); ?></label>
1128
- <label><input class="hide-postbox-tog" name="wp_ulike_likers_map" type="checkbox" value="1" <?php checked( '1', $get_option['likers_map'] ); ?>><?php echo _e('Likers World Map',WP_ULIKE_SLUG); ?></label>
1129
- <label><input class="hide-postbox-tog" name="wp_ulike_top_likers" type="checkbox" value="1" <?php checked( '1', $get_option['top_likers'] ); ?>><?php echo _e('Top Likers',WP_ULIKE_SLUG); ?></label>
1130
- <label><input class="hide-postbox-tog" name="wp_ulike_top_posts" type="checkbox" value="1" <?php checked( '1', $get_option['top_posts'] ); ?>><?php echo _e('Most Liked Posts',WP_ULIKE_SLUG); ?></label>
1131
- <label><input class="hide-postbox-tog" name="wp_ulike_top_comments" type="checkbox" value="1" <?php checked( '1', $get_option['top_comments'] ); ?>><?php echo _e('Most Liked Comments',WP_ULIKE_SLUG); ?></label>
1132
- <label><input class="hide-postbox-tog" name="wp_ulike_top_activities" type="checkbox" value="1" <?php checked( '1', $get_option['top_activities'] ); ?>><?php echo _e('Most Liked Activities',WP_ULIKE_SLUG); ?></label>
1133
- <label><input class="hide-postbox-tog" name="wp_ulike_top_topics" type="checkbox" value="1" <?php checked( '1', $get_option['top_topics'] ); ?>><?php echo _e('Most Liked Topics',WP_ULIKE_SLUG); ?></label>
1134
- <br class="clear">
1135
- <input step="1" min="5" max="60" class="screen-per-page" name="wp_ulike_days_number" maxlength="3" value="<?php echo $get_option['days_number']; ?>" type="number">
1136
- <label><?php echo _e('Days',WP_ULIKE_SLUG); ?></label>
1137
- <input name="screen-options-apply" class="button button-primary" value="<?php echo _e('Save Settings',WP_ULIKE_SLUG); ?>" type="submit">
1138
- <?php wp_nonce_field( 'wp_ulike_statistics_nonce_field', 'wp_ulike_statistics_screen' ); ?>
1139
- </div>
1140
- </form>
1141
- </div>
1142
- <?php
1143
 
1144
  }
1145
 
@@ -1157,14 +100,18 @@ function wp_ulike_get_number_of_new_likes() {
1157
  update_option( 'wpulike_lastvisit', current_time( 'mysql' ) );
1158
  }
1159
 
1160
- $request = "SELECT
1161
- (SELECT COUNT(*) FROM ".$wpdb->prefix."ulike WHERE (date_time<=NOW() AND date_time>='".get_option( 'wpulike_lastvisit')."'))
1162
- +
1163
- (SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_activities WHERE (date_time<=NOW() AND date_time>='".get_option( 'wpulike_lastvisit')."'))
1164
- +
1165
- (SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_comments WHERE (date_time<=NOW() AND date_time>='".get_option( 'wpulike_lastvisit')."'))
1166
- +
1167
- (SELECT COUNT(*) FROM ".$wpdb->prefix."ulike_forums WHERE (date_time<=NOW() AND date_time>='".get_option( 'wpulike_lastvisit')."'));";
 
 
1168
 
1169
- return $wpdb->get_var($request);
1170
- }
 
 
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'WPINC' ) ) {
12
+ die('No Naughty Business Please !');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
14
 
 
 
 
15
  /**
16
  * Return per_page option value
17
  *
20
  * @return Integer
21
  */
22
  function wp_ulike_logs_return_per_page(){
23
+ $user = get_current_user_id();
24
+ $screen = get_current_screen();
25
+ $option = $screen->get_option( 'per_page', 'option' );
26
+ $per_page = get_user_meta( $user, $option, true );
27
 
28
+ return ( empty( $per_page ) || $per_page < 1 ) ? 30 : $per_page;
 
 
 
 
29
  }
30
 
31
  /**
32
+ * Get paginated logs datasets
33
  *
34
  * @author Alimir
35
+ * @since 3.5
36
+ * @return Array
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  */
38
+ function wp_ulike_get_paginated_logs( $table, $type ){
39
  global $wpdb;
 
 
 
 
 
 
 
 
 
 
40
 
41
+ // Make new sql request
42
+ $query = sprintf( "
43
+ SELECT COUNT(*)
44
+ FROM %s",
45
+ $wpdb->prefix . $table
46
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ $num_rows = $wpdb->get_var( $query );
 
 
 
 
 
 
 
 
49
 
50
+ if( empty( $num_rows ) ) {
 
51
  return;
52
  }
53
 
54
+ $per_page = wp_ulike_logs_return_per_page();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
+ $pagination = new wp_ulike_pagination;
57
+ $pagination->items( $num_rows );
58
+ $pagination->limit( $per_page ); // Limit entries per page
59
+ $pagination->target( 'admin.php?page=wp-ulike-' . $type . '-logs' );
60
+ $pagination->calculate(); // Calculates what to show
61
+ $pagination->parameterName( 'page_number' );
62
+ $pagination->adjacents(1); //No. of page away from the current page
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
+ if( ! isset( $_GET['page_number'] ) ) {
65
+ $pagination->page = 1;
66
  } else {
67
+ $pagination->page = (int) $_GET['page_number'];
68
+ }
69
+
70
+ // Make new sql request
71
+ $query = sprintf( '
72
+ SELECT *
73
+ FROM %s
74
+ ORDER BY id
75
+ DESC
76
+ LIMIT %s',
77
+ $wpdb->prefix . $table,
78
+ ($pagination->page - 1) * $pagination->limit . ", " . $pagination->limit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  );
 
 
80
 
81
+ return array(
82
+ 'data_rows' => $wpdb->get_results( $query ),
83
+ 'paginate' => $pagination,
84
+ 'num_rows' => $num_rows
85
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  }
88
 
100
  update_option( 'wpulike_lastvisit', current_time( 'mysql' ) );
101
  }
102
 
103
+ $query = sprintf( '
104
+ SELECT
105
+ ( SELECT COUNT(*) FROM `%1$sulike` WHERE ( date_time <= NOW() AND date_time >= "%2$s" ) ) +
106
+ ( SELECT COUNT(*) FROM `%1$sulike_activities` WHERE ( date_time <= NOW() AND date_time >= "%2$s" ) ) +
107
+ ( SELECT COUNT(*) FROM `%1$sulike_comments` WHERE ( date_time <= NOW() AND date_time >= "%2$s" ) ) +
108
+ ( SELECT COUNT(*) FROM `%1$sulike_forums` WHERE ( date_time <= NOW() AND date_time >= "%2$s" ) )
109
+ ',
110
+ $wpdb->prefix,
111
+ get_option( 'wpulike_lastvisit')
112
+ );
113
 
114
+ $result = $wpdb->get_var( $query );
115
+
116
+ return empty( $result ) ? 0 : $result;
117
+ }
admin/admin-hooks.php CHANGED
@@ -7,9 +7,10 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- /*******************************************************
11
- General Hooks
12
- *******************************************************/
 
13
 
14
  /**
15
  * Add WP ULike CopyRight in footer
@@ -20,48 +21,17 @@
20
  * @return String
21
  */
22
  function wp_ulike_copyright( $text ) {
23
- return sprintf( __( ' Thank you for choosing <a href="%s" title="Wordpress ULike" target="_blank">WP ULike</a>. Created by <a href="%s" title="Wordpress ULike" target="_blank">Ali Mirzaei</a>' ), 'http://wordpress.org/plugins/wp-ulike/', 'https://ir.linkedin.com/in/alimirir' );
24
- }
25
- //check for wp ulike page
26
- if( isset($_GET["page"]) && stripos($_GET["page"], "wp-ulike") !== false ) {
27
- add_filter( 'admin_footer_text', 'wp_ulike_copyright');
28
- }
29
-
30
- /**
31
- * admin enqueue scripts
32
- *
33
- * @author Alimir
34
- * @since 2.1
35
- * @return Void
36
- */
37
- function wp_ulike_logs_enqueue_script( $hook ){
38
-
39
- // Enqueue admin styles
40
- wp_enqueue_style( 'wp-ulike-admin', WP_ULIKE_ADMIN_URL . '/assets/css/admin.css' );
41
-
42
- $currentScreen = get_current_screen();
43
-
44
- if ( $currentScreen->id !== $hook || ! preg_match( '/logs/', $currentScreen->id ) ) {
45
- return;
46
  }
47
 
48
- // Register Script
49
- wp_enqueue_script(
50
- 'wp_ulike_stats',
51
- WP_ULIKE_ADMIN_URL . '/assets/js/statistics.js',
52
- array('jquery'),
53
- null,
54
- true
55
- );
56
-
57
- //localize script
58
- wp_localize_script( 'wp_ulike_stats', 'wp_ulike_logs', array(
59
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
60
- 'message' => __('Are you sure to remove this item?!',WP_ULIKE_SLUG)
61
- ));
62
-
63
  }
64
- add_action('admin_enqueue_scripts', 'wp_ulike_logs_enqueue_script');
65
 
66
  /**
67
  * Set the option of per_page
@@ -71,7 +41,11 @@ add_action('admin_enqueue_scripts', 'wp_ulike_logs_enqueue_script');
71
  * @return String
72
  */
73
  function wp_ulike_logs_per_page_set_option($status, $option, $value) {
74
- if ( 'wp_ulike_logs_per_page' == $option ) return $value;
 
 
 
 
75
  return $status;
76
  }
77
  add_filter('set-screen-option', 'wp_ulike_logs_per_page_set_option', 10, 3);
@@ -89,80 +63,6 @@ function wp_ulike_remove_photo_class($avatar) {
89
  add_filter('get_avatar', 'wp_ulike_remove_photo_class');
90
 
91
 
92
- /**
93
- * Save screen options with "update_option" mehtod
94
- *
95
- * @author Alimir
96
- * @since 2.1
97
- * @return Void
98
- */
99
- function wp_ulike_statistics_save_option(){
100
- if(isset($_POST['wp_ulike_statistics_screen']) AND wp_verify_nonce($_POST['wp_ulike_statistics_screen'], 'wp_ulike_statistics_nonce_field' ) ){
101
- $options = array(
102
- 'welcome_panel' => isset($_POST['wp_ulike_welcome']) ? $_POST['wp_ulike_welcome'] : 0,
103
- 'summary_like_stats' => isset($_POST['wp_ulike_summary_stats']) ? $_POST['wp_ulike_summary_stats'] : 0,
104
- 'posts_likes_stats' => isset($_POST['wp_ulike_posts_stats']) ? $_POST['wp_ulike_posts_stats'] : 0,
105
- 'comments_likes_stats' => isset($_POST['wp_ulike_comments_stats']) ? $_POST['wp_ulike_comments_stats'] : 0,
106
- 'activities_likes_stats' => isset($_POST['wp_ulike_activities_stats']) ? $_POST['wp_ulike_activities_stats'] : 0,
107
- 'topics_likes_stats' => isset($_POST['wp_ulike_topics_stats']) ? $_POST['wp_ulike_topics_stats'] : 0,
108
- 'most_liked_posts' => isset($_POST['wp_ulike_most_liked_posts']) ? $_POST['wp_ulike_most_liked_posts'] : 0,
109
- 'most_liked_comments' => isset($_POST['wp_ulike_most_liked_cmt']) ? $_POST['wp_ulike_most_liked_cmt'] : 0,
110
- 'piechart_stats' => isset($_POST['wp_ulike_piechart_stats']) ? $_POST['wp_ulike_piechart_stats'] : 0,
111
- 'likers_map' => isset($_POST['wp_ulike_likers_map']) ? $_POST['wp_ulike_likers_map'] : 0,
112
- 'top_likers' => isset($_POST['wp_ulike_top_likers']) ? $_POST['wp_ulike_top_likers'] : 0,
113
- 'top_posts' => isset($_POST['wp_ulike_top_posts']) ? $_POST['wp_ulike_top_posts'] : 0,
114
- 'top_comments' => isset($_POST['wp_ulike_top_comments']) ? $_POST['wp_ulike_top_comments'] : 0,
115
- 'top_activities' => isset($_POST['wp_ulike_top_activities']) ? $_POST['wp_ulike_top_activities'] : 0,
116
- 'top_topics' => isset($_POST['wp_ulike_top_topics']) ? $_POST['wp_ulike_top_topics'] : 0,
117
- 'days_number' => isset($_POST['wp_ulike_days_number']) ? $_POST['wp_ulike_days_number'] : 20
118
- );
119
- update_option( 'wp_ulike_statistics_screen', $options );
120
- }
121
- }
122
- add_action('admin_init', 'wp_ulike_statistics_save_option');
123
-
124
- /**
125
- * Add menu to admin
126
- *
127
- * @author Alimir
128
- * @since 1.0
129
- * @updated 2.2
130
- * @updated 2.4.2
131
- * @return String
132
- */
133
- function wp_ulike_admin_menu() {
134
-
135
- global $menu;
136
-
137
- //Post Like Logs Menu
138
- $posts_screen = add_submenu_page(null, __( 'Post Likes Logs', WP_ULIKE_SLUG ), __( 'Post Likes Logs', WP_ULIKE_SLUG ), 'manage_options', 'wp-ulike-post-logs', 'wp_ulike_post_likes_logs');
139
- add_action("load-$posts_screen",'wp_ulike_logs_per_page');
140
-
141
- //Comment Like Logs Menu
142
- $comments_screen = add_submenu_page(null, __( 'Comment Likes Logs', WP_ULIKE_SLUG ), __( 'Comment Likes Logs', WP_ULIKE_SLUG ), 'manage_options','wp-ulike-comment-logs', 'wp_ulike_comment_likes_logs');
143
- add_action("load-$comments_screen",'wp_ulike_logs_per_page');
144
-
145
- //Activity Like Logs Menu
146
- $activities_screen = add_submenu_page(null, __( 'Activity Likes Logs', WP_ULIKE_SLUG ), __( 'Activity Likes Logs', WP_ULIKE_SLUG ), 'manage_options', 'wp-ulike-bp-logs', 'wp_ulike_buddypress_likes_logs');
147
- add_action("load-$activities_screen",'wp_ulike_logs_per_page');
148
-
149
- //Activity Like Logs Menu
150
- $topics_screen = add_submenu_page(null, __( 'Topics Likes Logs', WP_ULIKE_SLUG ), __( 'Topics Likes Logs', WP_ULIKE_SLUG ), 'manage_options', 'wp-ulike-bbpress-logs', 'wp_ulike_bbpress_likes_logs');
151
- add_action("load-$topics_screen",'wp_ulike_logs_per_page');
152
-
153
- //Statistics Menu
154
- $statistics_screen = add_submenu_page('wp-ulike-settings', __( 'WP ULike Statistics', WP_ULIKE_SLUG ), __( 'WP ULike Statistics', WP_ULIKE_SLUG ), 'manage_options', 'wp-ulike-statistics', 'wp_ulike_statistics');
155
- add_action("load-$statistics_screen",'wp_ulike_statistics_register_option');
156
-
157
- //WP ULike About Menu
158
- add_submenu_page('wp-ulike-settings', __( 'About WP ULike', WP_ULIKE_SLUG ), __( 'About WP ULike', WP_ULIKE_SLUG ), 'manage_options', 'wp-ulike-about', 'wp_ulike_about_page');
159
-
160
- $newvotes = wp_ulike_get_number_of_new_likes();
161
- $menu[313][0] .= $newvotes ? " <span class='update-plugins count-1'><span class='update-count'>". number_format_i18n($newvotes) ."</span></span> " : '';
162
-
163
- }
164
- add_action('admin_menu', 'wp_ulike_admin_menu');
165
-
166
  /**
167
  * Set the admin login time.
168
  *
@@ -208,7 +108,7 @@ function wp_ulike_admin_notice() {
208
  <img src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/wp-ulike-badge.png" alt="WP ULike Plugin">
209
  </div>
210
  <div class="wp-ulike-notice-text">
211
- <p><?php echo _e( "It's great to see that you've been using the WP ULike plugin for a while now. Hopefully you're happy with it!&nbsp; If so, would you consider leaving a positive review? It really helps to support the plugin and helps others to discover it too!" , WP_ULIKE_SLUG ); ?> </p>
212
  <div class="links">
213
  <a href="https://wordpress.org/support/plugin/wp-ulike/reviews/?filter=5" target="_blank"><?php echo _e( "Sure, I'd love to!", WP_ULIKE_SLUG ); ?></a>
214
  <a href="https://m.do.co/c/13ad5bc24738" target="_blank"><?php echo _e( "I also want to donate!", WP_ULIKE_SLUG ); ?></a>
@@ -218,22 +118,4 @@ function wp_ulike_admin_notice() {
218
  </div>
219
  <?php
220
  }
221
- add_action( 'admin_notices', 'wp_ulike_admin_notice', 999);
222
-
223
- /**
224
- * Simple Ads
225
- *
226
- * @author Alimir
227
- * @since 3.1
228
- * @return String
229
- */
230
- function wp_ulike_advertisement(){
231
- ?>
232
- <div class="welcome-panel wp-ulike-advertisement">
233
- <a href="http://averta.net/phlox/wordpress-theme/?utm_source=ulike&utm_medium=banner&utm_campaign=phlox" target="_blank" title="Phlox Theme">
234
- <img src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/phlox-theme.png" alt="Phlox Theme">
235
- </a>
236
- </div>
237
- <?php
238
- }
239
- add_filter( 'wp_ulike_advertisement', 'wp_ulike_advertisement', 99999999999999 );
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'WPINC' ) ) {
12
+ die('No Naughty Business Please !');
13
+ }
14
 
15
  /**
16
  * Add WP ULike CopyRight in footer
21
  * @return String
22
  */
23
  function wp_ulike_copyright( $text ) {
24
+ if( isset($_GET["page"]) && stripos( $_GET["page"], "wp-ulike") !== false ) {
25
+ return sprintf(
26
+ __( ' Thank you for choosing <a href="%s" title="Wordpress ULike" target="_blank">WP ULike</a>. Created by <a href="%s" title="Wordpress ULike" target="_blank">Ali Mirzaei</a>', WP_ULIKE_SLUG ),
27
+ 'http://wordpress.org/plugins/wp-ulike/',
28
+ 'https://ir.linkedin.com/in/alimirir'
29
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
+ return $text;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
34
+ add_filter( 'admin_footer_text', 'wp_ulike_copyright');
35
 
36
  /**
37
  * Set the option of per_page
41
  * @return String
42
  */
43
  function wp_ulike_logs_per_page_set_option($status, $option, $value) {
44
+
45
+ if ( 'wp_ulike_logs_per_page' == $option ) {
46
+ return $value;
47
+ }
48
+
49
  return $status;
50
  }
51
  add_filter('set-screen-option', 'wp_ulike_logs_per_page_set_option', 10, 3);
63
  add_filter('get_avatar', 'wp_ulike_remove_photo_class');
64
 
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  /**
67
  * Set the admin login time.
68
  *
108
  <img src="<?php echo WP_ULIKE_ASSETS_URL; ?>/img/wp-ulike-badge.png" alt="WP ULike Plugin">
109
  </div>
110
  <div class="wp-ulike-notice-text">
111
+ <p><?php echo _e( "It's great to see that you've been using the WP ULike plugin. Hopefully you're happy with it!&nbsp; If so, would you consider leaving a positive review? It really helps to support the plugin and helps others to discover it too!" , WP_ULIKE_SLUG ); ?> </p>
112
  <div class="links">
113
  <a href="https://wordpress.org/support/plugin/wp-ulike/reviews/?filter=5" target="_blank"><?php echo _e( "Sure, I'd love to!", WP_ULIKE_SLUG ); ?></a>
114
  <a href="https://m.do.co/c/13ad5bc24738" target="_blank"><?php echo _e( "I also want to donate!", WP_ULIKE_SLUG ); ?></a>
118
  </div>
119
  <?php
120
  }
121
+ add_action( 'admin_notices', 'wp_ulike_admin_notice', 25 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/css/admin.css CHANGED
@@ -13,6 +13,193 @@ https://wordpress.org/plugins/wp-ulike/
13
 
14
  \------------------------------------------/
15
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  /** WP ULike Icons */
17
  @font-face { font-family: 'wp-ulike'; src: url("../fonts/wp-ulike.eot?113a2q"); src: url("../fonts/wp-ulike.eot?113a2q#iefix") format("embedded-opentype"), url("../fonts/wp-ulike.ttf?113a2q") format("truetype"), url("../fonts/wp-ulike.woff?113a2q") format("woff"), url("../fonts/wp-ulike.svg?113a2q#wp-ulike") format("svg"); font-weight: normal; font-style: normal; }
18
  [class^="wp-ulike-icons-"], [class*=" wp-ulike-icons-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'wp-ulike' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
@@ -126,130 +313,122 @@ tr.hide-label td { padding-left: 0; }
126
  #wp_ulike_customize_custom_css { font-family: Consolas,Monaco,monospace; direction: ltr; font-size: 13px; width: 97%; background: none repeat scroll 0% 0% #F9F9F9; outline: 0px none; width: 60%; min-height: 300px; }
127
 
128
  .wp-ulike-notice { position: relative; max-width: 870px; overflow: hidden; padding: 20px; background: #f83600; background: linear-gradient(to right, #f83600, #fe8c00); color: #FFFCD6; display: table; box-shadow: 0 3px 25px rgba(248, 54, 0, 0.2); margin: 20px 0px; }
129
- .wp-ulike-notice .wp-ulike-notice-image { display: table-cell; vertical-align: middle; }
130
- .wp-ulike-notice .wp-ulike-notice-image img { width: 100px; }
131
  .wp-ulike-notice .wp-ulike-notice-text { display: table-cell; vertical-align: middle; padding: 10px 20px; }
132
  .wp-ulike-notice .wp-ulike-notice-text p { font-size: 15px; margin-top: 0; }
133
  .wp-ulike-notice .links a { display: inline-block; color: #FFFCD6; text-transform: uppercase; text-decoration: none; padding: 5px 10px; border: 1px solid #FFFCD6; margin-top: 8px; margin-right: 8px; box-shadow: none; }
134
  .wp-ulike-notice .links a:hover, .wp-ulike-notice .links a:focus { background: #FFFCD6; color: #212121; }
135
 
136
- /** Visual Select */
137
- .wp-ulike-visual-select { height: auto; display: inline-block; width: 100%; max-width: 900px; }
138
- .wp-ulike-visual-select .radio-img-item { display: inline-block; margin-right: 10px; border: 3px solid #d8d8d8; padding: 0 10px; width: 110px; height: 60px; cursor: pointer; }
139
- .wp-ulike-visual-select .radio-img-item.item-checked { -webkit-filter: brightness(40%) sepia(100%) hue-rotate(170deg) saturate(250%); filter: brightness(40%) sepia(100%) hue-rotate(170deg) saturate(250%); }
140
- .wp-ulike-visual-select .radio-img-item img { display: block; clear: both; width: 100%; height: 100%; }
141
-
142
- /** Statistics Page */
143
- #right-log { width: 31%; }
144
- #right-log a { text-decoration: none; }
145
 
146
- #left-log { margin: 0 0 0 1%; width: 68%; }
147
- #left-log a { text-decoration: none; }
148
 
149
- #last-log { width: 100%; }
150
- #last-log a { text-decoration: none; }
151
 
152
- #summary-stats { background: none repeat scroll 0 0 transparent; border: 1px none; margin: 0 0 10px; }
153
- #summary-stats tr:first-child th { border-top: 0 none; }
154
- #summary-stats span { color: #27ae60 !important; font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; font-size: 21px; }
155
 
156
- #th-colspan { text-align: center; }
157
- #th-colspan span { color: #21759B !important; font-size: 30px; }
158
 
159
- #last-visitor tr { text-align: center; }
160
- #last-visitor tr:first-child { background: none repeat scroll 0 0 #EEEEEE; font-weight: bold; text-align: center; }
161
 
162
- #last-search tr { text-align: center; }
163
- #last-search tr:first-child { background: none repeat scroll 0 0 #EEEEEE; font-weight: bold; text-align: center; }
164
 
165
- #last-referrer tr { text-align: left; }
166
- #last-referrer tr:first-child { background: none repeat scroll 0 0 #EEEEEE; font-weight: bold; text-align: center; }
167
 
168
- .th-center { text-align: center !important; }
169
 
170
- .td-align { text-align: left; }
171
 
172
- .td-url { color: #009936 !important; direction: ltr; font-size: 10px !important; text-align: left; white-space: nowrap; }
173
 
174
- #map_canvas { direction: ltr; height: 380px; width: 100%; }
175
 
176
- .map-html-marker { max-height: 170px; width: 200px; }
177
- .map-html-marker p { border-bottom: 1px dashed #EFEFEF; font-size: 10px; margin: 2px 0; padding: 3px 0; text-align: left; }
178
- .map-html-marker p:last-child { border-bottom: 0 none; }
179
 
180
- .log-item { border-bottom: 1px solid #D3CDCD; border-top: 1px solid #FFFFFF; height: 46px; padding: 3px 7px; }
181
- .log-item:hover { background: none repeat scroll 0 0 #EEEEEE; }
182
 
183
- .top-widget ol li { border-bottom: 1px solid #D3CDCD; border-top: 1px solid #FFFFFF; height: 46px; padding: 3px 7px; height: inherit; padding: 12px 5px; font-size: 16px; margin-bottom: 0; }
184
- .top-widget ol li a { color: #616161; }
185
- .top-widget ol li:hover { background: none repeat scroll 0 0 #EEEEEE; }
186
- .top-widget .wp_counter_span { display: inline-block; background-color: #D54E21; color: #FFFFFF; font-size: 12px; line-height: 19px; font-weight: normal; margin: 1px 0px 0px 2px; vertical-align: top; border-radius: 10px; padding-left: 5px; padding-right: 5px; z-index: 26; float: right; }
187
 
188
- .show-map { float: left; }
189
 
190
- .log-referred { float: left; overflow: hidden; white-space: nowrap; width: 79%; }
191
 
192
- .log-ip { direction: ltr; float: right; font-size: 10px; margin-bottom: 5px; white-space: pre; width: 20%; }
193
 
194
- .log-tools { float: left; margin: 0 2px; }
195
 
196
- .log-agent { float: left; }
197
-
198
- .log-url { direction: ltr; float: left; font-size: 10px; margin: 0 0 0 2px; white-space: nowrap; width: 85%; }
199
-
200
- #time_zone a { font-size: 11px; text-decoration: none; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
 
202
- #visits-log { direction: ltr; height: 290px; width: 100%; }
 
203
 
204
- #search-engine-log { direction: ltr; }
 
 
205
 
206
- #browsers-log { direction: ltr; height: 330px; margin: 0 auto; width: 100%; }
 
207
 
208
- #platform-log { direction: ltr; }
209
 
210
- #visits-stats { direction: ltr; }
 
 
 
211
 
212
- #exclusion-stats { direction: ltr; }
 
213
 
214
- #search-stats { direction: ltr; }
 
215
 
216
- #about-links { margin: 0 0 10px; }
217
- #about-links p { display: inline; font-size: 11px; margin: 0 2px; }
 
 
218
 
219
- #donate-button { float: left; padding: 7px 0 0; text-align: center; width: 100%; }
 
 
 
 
 
220
 
221
- .left-div { float: left; }
 
 
 
222
 
223
- .right-div { float: right; }
 
 
 
224
 
 
225
  .wp_ulike_logs .button { line-height: 20px; }
226
  .wp_ulike_logs i { font-size: 1.9em; }
227
  .wp_ulike_logs i.wp-ulike-icons-thumb_up:before { color: #4caf50; }
228
  .wp_ulike_logs i.wp-ulike-icons-thumb_down:before { color: #f44336; }
229
 
230
- .postbox .badge { display: inline-block; background-color: #D54E21; color: #FFFFFF; font-size: 12px; line-height: 19px; font-weight: normal; margin: 1px 0px 0px 2px; vertical-align: top; border-radius: 10px; padding-left: 5px; padding-right: 5px; z-index: 26; float: right; }
231
-
232
- @media screen and (max-width: 960px) { #right-log { width: 35%; }
233
- #left-log { margin: 0 0 0 1%; width: 63%; } }
234
- @media screen and (max-width: 758px) { #right-log { width: 100%; }
235
- #left-log { margin: 0 0 0 1%; width: 100%; } }
236
- @media screen and (max-width: 524px) { #right-log { width: 100%; }
237
- #left-log { margin: 0 0 0 1%; width: 100%; } }
238
- /** jQVMap Version 1.5 */
239
- .jqvmap-label { position: absolute; display: none; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; background: #292929; color: white; font-family: sans-serif, Verdana; font-size: smaller; padding: 3px; pointer-events: none; }
240
-
241
- .jqvmap-pin { pointer-events: none; }
242
-
243
- .jqvmap-zoomin, .jqvmap-zoomout { position: absolute; left: 10px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; background: #000000; padding: 3px; color: white; width: 10px; height: 10px; cursor: pointer; line-height: 10px; text-align: center; }
244
-
245
- .jqvmap-zoomin { top: 10px; }
246
-
247
- .jqvmap-zoomout { top: 30px; }
248
-
249
- .jqvmap-region { cursor: pointer; }
250
-
251
- .jqvmap-ajax_response { width: 100%; height: 500px; }
252
-
253
  /** About Page */
254
  .wp-ulike-about-page .ulike-badge { background: url(../../../assets/img/wp-ulike-badge.png) no-repeat scroll center 24px/95px 95px #F3643A; color: #FFFFFF; position: absolute; top: 0px; right: 0px; font-size: 14px; text-align: center; font-weight: 600; margin: 5px 0px 0px; padding-top: 120px; height: 40px; display: inline-block; width: 150px; text-rendering: optimizelegibility; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); }
255
  .wp-ulike-about-page .wp_ulike_version { display: inline-block; position: absolute; top: 54px; left: 0; padding: 5px 10px; background: #e74c3c; color: #FFFFFF; font-size: 13px; font-weight: normal; }
@@ -269,17 +448,5 @@ tr.hide-label td { padding-left: 0; }
269
  .rtl .settings-error.info { border-left: none; border-right: 4px solid #2ea2cc; }
270
  .rtl .settings-error.warning { border-left: none; border-right: 4px solid #2ea2cc; }
271
  .rtl tr.hide-label td { padding-right: 0; padding-left: inherit !important; }
272
- .rtl #left-log { margin: 0 1% 0 0; }
273
- .rtl .th-center { text-align: center !important; }
274
- .rtl .td-align { text-align: right; }
275
- .rtl .log-referred { float: right; }
276
- .rtl .log-ip { float: left; }
277
- .rtl .left-div { float: right; }
278
- .rtl .right-div { float: left; }
279
- .rtl .postbox .badge { margin: 1px 2px 0px 0; float: left; }
280
- .rtl .top-widget .wp_counter_span { margin: 1px 2px 0px 0; float: left; }
281
  .rtl .wp-ulike-about-page .ulike-badge { right: inherit; left: 0px; }
282
- .rtl .wp-ulike-notice img { width: 84px; margin: 0 -100% 0 0 !important; }
283
- .rtl .wp-ulike-notice .wp-ulike-notice-text { float: right; }
284
- .rtl .wp-ulike-notice p { float: right; margin: 0 100px 0 0 !important; padding: 4px 0 4px 40px; }
285
- .rtl .wp-ulike-notice .links { margin: 0 92px 0 0 !important; }
13
 
14
  \------------------------------------------/
15
  */
16
+ /***
17
+ Spectrum Colorpicker v1.8.0
18
+ https://github.com/bgrins/spectrum
19
+ Author: Brian Grinstead
20
+ License: MIT
21
+ ***/
22
+ .sp-container { position: absolute; top: 0; left: 0; display: inline-block; *display: inline; *zoom: 1; /* https://github.com/bgrins/spectrum/issues/40 */ z-index: 9999994; overflow: hidden; }
23
+
24
+ .sp-container.sp-flat { position: relative; }
25
+
26
+ /* Fix for * { box-sizing: border-box; } */
27
+ .sp-container, .sp-container * { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
28
+
29
+ /* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
30
+ .sp-top { position: relative; width: 100%; display: inline-block; }
31
+
32
+ .sp-top-inner { position: absolute; top: 0; left: 0; bottom: 0; right: 0; }
33
+
34
+ .sp-color { position: absolute; top: 0; left: 0; bottom: 0; right: 20%; }
35
+
36
+ .sp-hue { position: absolute; top: 0; right: 0; bottom: 0; left: 84%; height: 100%; }
37
+
38
+ .sp-clear-enabled .sp-hue { top: 33px; height: 77.5%; }
39
+
40
+ .sp-fill { padding-top: 80%; }
41
+
42
+ .sp-sat, .sp-val { position: absolute; top: 0; left: 0; right: 0; bottom: 0; }
43
+
44
+ .sp-alpha-enabled .sp-top { margin-bottom: 18px; }
45
+
46
+ .sp-alpha-enabled .sp-alpha { display: block; }
47
+
48
+ .sp-alpha-handle { position: absolute; top: -4px; bottom: -4px; width: 6px; left: 50%; cursor: pointer; border: 1px solid black; background: white; opacity: .8; }
49
+
50
+ .sp-alpha { display: none; position: absolute; bottom: -14px; right: 0; left: 0; height: 8px; }
51
+
52
+ .sp-alpha-inner { border: solid 1px #333; }
53
+
54
+ .sp-clear { display: none; }
55
+
56
+ .sp-clear.sp-clear-display { background-position: center; }
57
+
58
+ .sp-clear-enabled .sp-clear { display: block; position: absolute; top: 0px; right: 0; bottom: 0; left: 84%; height: 28px; }
59
+
60
+ /* Don't allow text selection */
61
+ .sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { -webkit-user-select: none; -moz-user-select: -moz-none; -o-user-select: none; user-select: none; }
62
+
63
+ .sp-container.sp-input-disabled .sp-input-container { display: none; }
64
+
65
+ .sp-container.sp-buttons-disabled .sp-button-container { display: none; }
66
+
67
+ .sp-container.sp-palette-buttons-disabled .sp-palette-button-container { display: none; }
68
+
69
+ .sp-palette-only .sp-picker-container { display: none; }
70
+
71
+ .sp-palette-disabled .sp-palette-container { display: none; }
72
+
73
+ .sp-initial-disabled .sp-initial { display: none; }
74
+
75
+ /* Gradients for hue, saturation and value instead of images. Not pretty... but it works */
76
+ .sp-sat { background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); background-image: linear-gradient(to right, #ffffff, rgba(204, 154, 129, 0)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); }
77
+
78
+ .sp-val { background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); background-image: linear-gradient(to top, #000000, rgba(204, 154, 129, 0)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); }
79
+
80
+ .sp-hue { background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); }
81
+
82
+ /* IE filters do not support multiple color stops. Generate 6 divs, line them up, and do two color gradients for each. Yes, really. */
83
+ .sp-1 { height: 17%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); }
84
+
85
+ .sp-2 { height: 16%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); }
86
+
87
+ .sp-3 { height: 17%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); }
88
+
89
+ .sp-4 { height: 17%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); }
90
+
91
+ .sp-5 { height: 16%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); }
92
+
93
+ .sp-6 { height: 17%; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); }
94
+
95
+ .sp-hidden { display: none !important; }
96
+
97
+ /* Clearfix hack */
98
+ .sp-cf:before, .sp-cf:after { content: ""; display: table; }
99
+
100
+ .sp-cf:after { clear: both; }
101
+
102
+ .sp-cf { *zoom: 1; }
103
+
104
+ /* Mobile devices, make hue slider bigger so it is easier to slide */
105
+ @media (max-device-width: 480px) { .sp-color { right: 40%; }
106
+ .sp-hue { left: 63%; }
107
+ .sp-fill { padding-top: 60%; } }
108
+ .sp-dragger { border-radius: 5px; height: 5px; width: 5px; border: 1px solid #fff; background: #000; cursor: pointer; position: absolute; top: 0; left: 0; }
109
+
110
+ .sp-slider { position: absolute; top: 0; cursor: pointer; height: 3px; left: -1px; right: -1px; border: 1px solid #000; background: white; opacity: .8; }
111
+
112
+ /*
113
+ Theme authors:
114
+ Here are the basic themeable display options (colors, fonts, global widths).
115
+ See http://bgrins.github.io/spectrum/themes/ for instructions.
116
+ */
117
+ .sp-container { border-radius: 0; background-color: #ECECEC; border: solid 1px #f0c49B; padding: 0; }
118
+
119
+ .sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
120
+
121
+ .sp-top { margin-bottom: 3px; }
122
+
123
+ .sp-color, .sp-hue, .sp-clear { border: solid 1px #666; }
124
+
125
+ /* Input */
126
+ .sp-input-container { float: right; width: 100px; margin-bottom: 4px; }
127
+
128
+ .sp-initial-disabled .sp-input-container { width: 100%; }
129
+
130
+ .sp-input { font-size: 12px !important; border: 1px inset; padding: 4px 5px; margin: 0; width: 100%; background: transparent; border-radius: 3px; color: #222; }
131
+
132
+ .sp-input:focus { border: 1px solid orange; }
133
+
134
+ .sp-input.sp-validation-error { border: 1px solid red; background: #fdd; }
135
+
136
+ .sp-picker-container, .sp-palette-container { float: left; position: relative; padding: 10px; padding-bottom: 300px; margin-bottom: -290px; }
137
+
138
+ .sp-picker-container { width: 172px; border-left: solid 1px #fff; }
139
+
140
+ /* Palettes */
141
+ .sp-palette-container { border-right: solid 1px #ccc; }
142
+
143
+ .sp-palette-only .sp-palette-container { border: 0; }
144
+
145
+ .sp-palette .sp-thumb-el { display: block; position: relative; float: left; width: 24px; height: 15px; margin: 3px; cursor: pointer; border: solid 2px transparent; }
146
+
147
+ .sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { border-color: orange; }
148
+
149
+ .sp-thumb-el { position: relative; }
150
+
151
+ /* Initial */
152
+ .sp-initial { float: left; border: solid 1px #333; }
153
+
154
+ .sp-initial span { width: 30px; height: 25px; border: none; display: block; float: left; margin: 0; }
155
+
156
+ .sp-initial .sp-clear-display { background-position: center; }
157
+
158
+ /* Buttons */
159
+ .sp-palette-button-container, .sp-button-container { float: right; }
160
+
161
+ /* Replacer (the little preview div that shows up instead of the <input>) */
162
+ .sp-replacer { margin: 0; overflow: hidden; cursor: pointer; padding: 4px; display: inline-block; *zoom: 1; *display: inline; border: solid 1px #91765d; background: #eee; color: #333; vertical-align: middle; }
163
+
164
+ .sp-replacer:hover, .sp-replacer.sp-active { border-color: #F0C49B; color: #111; }
165
+
166
+ .sp-replacer.sp-disabled { cursor: default; border-color: silver; color: silver; }
167
+
168
+ .sp-dd { padding: 2px 0; height: 16px; line-height: 16px; float: left; font-size: 10px; }
169
+
170
+ .sp-preview { position: relative; width: 25px; height: 20px; border: solid 1px #222; margin-right: 5px; float: left; z-index: 0; }
171
+
172
+ .sp-palette { *width: 220px; max-width: 220px; }
173
+
174
+ .sp-palette .sp-thumb-el { width: 16px; height: 16px; margin: 2px 1px; border: solid 1px #d0d0d0; }
175
+
176
+ .sp-container { padding-bottom: 0; }
177
+
178
+ /* Buttons: http://hellohappy.org/css3-buttons/ */
179
+ .sp-container button { background-color: #eeeeee; background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); background-image: -o-linear-gradient(top, #eeeeee, #cccccc); background-image: linear-gradient(to bottom, #eeeeee, #cccccc); border: 1px solid #ccc; border-bottom: 1px solid #bbb; border-radius: 3px; color: #333; font-size: 14px; line-height: 1; padding: 5px 4px; text-align: center; text-shadow: 0 1px 0 #eee; vertical-align: middle; }
180
+
181
+ .sp-container button:hover { background-color: #dddddd; background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); border: 1px solid #bbb; border-bottom: 1px solid #999; cursor: pointer; text-shadow: 0 1px 0 #ddd; }
182
+
183
+ .sp-container button:active { border: 1px solid #aaa; border-bottom: 1px solid #888; -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; }
184
+
185
+ .sp-cancel { font-size: 11px; color: #d93f3f !important; margin: 0; padding: 2px; margin-right: 5px; vertical-align: middle; text-decoration: none; }
186
+
187
+ .sp-cancel:hover { color: #d93f3f !important; text-decoration: underline; }
188
+
189
+ .sp-palette span:hover, .sp-palette span.sp-thumb-active { border-color: #000; }
190
+
191
+ .sp-preview, .sp-alpha, .sp-thumb-el { position: relative; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); }
192
+
193
+ .sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { display: block; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }
194
+
195
+ .sp-palette .sp-thumb-inner { background-position: 50% 50%; background-repeat: no-repeat; }
196
+
197
+ .sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); }
198
+
199
+ .sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); }
200
+
201
+ .sp-clear-display { background-repeat: no-repeat; background-position: center; background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); }
202
+
203
  /** WP ULike Icons */
204
  @font-face { font-family: 'wp-ulike'; src: url("../fonts/wp-ulike.eot?113a2q"); src: url("../fonts/wp-ulike.eot?113a2q#iefix") format("embedded-opentype"), url("../fonts/wp-ulike.ttf?113a2q") format("truetype"), url("../fonts/wp-ulike.woff?113a2q") format("woff"), url("../fonts/wp-ulike.svg?113a2q#wp-ulike") format("svg"); font-weight: normal; font-style: normal; }
205
  [class^="wp-ulike-icons-"], [class*=" wp-ulike-icons-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'wp-ulike' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
313
  #wp_ulike_customize_custom_css { font-family: Consolas,Monaco,monospace; direction: ltr; font-size: 13px; width: 97%; background: none repeat scroll 0% 0% #F9F9F9; outline: 0px none; width: 60%; min-height: 300px; }
314
 
315
  .wp-ulike-notice { position: relative; max-width: 870px; overflow: hidden; padding: 20px; background: #f83600; background: linear-gradient(to right, #f83600, #fe8c00); color: #FFFCD6; display: table; box-shadow: 0 3px 25px rgba(248, 54, 0, 0.2); margin: 20px 0px; }
316
+ .wp-ulike-notice .wp-ulike-notice-image { display: table-cell; vertical-align: middle; min-width: 100px; }
317
+ .wp-ulike-notice .wp-ulike-notice-image img { width: 100px; height: auto; }
318
  .wp-ulike-notice .wp-ulike-notice-text { display: table-cell; vertical-align: middle; padding: 10px 20px; }
319
  .wp-ulike-notice .wp-ulike-notice-text p { font-size: 15px; margin-top: 0; }
320
  .wp-ulike-notice .links a { display: inline-block; color: #FFFCD6; text-transform: uppercase; text-decoration: none; padding: 5px 10px; border: 1px solid #FFFCD6; margin-top: 8px; margin-right: 8px; box-shadow: none; }
321
  .wp-ulike-notice .links a:hover, .wp-ulike-notice .links a:focus { background: #FFFCD6; color: #212121; }
322
 
323
+ .wp-ulike-container { width: 100%; margin-left: auto; margin-right: auto; }
 
 
 
 
 
 
 
 
324
 
325
+ .wp-ulike-row { position: relative; width: 100%; }
 
326
 
327
+ .wp-ulike-flex { display: flex; align-items: center; flex-wrap: wrap; justify-content: center; padding: 10px 0; }
 
328
 
329
+ .wp-ulike-row [class^="col"] { float: left; margin: 2%; }
 
 
330
 
331
+ .rtl .wp-ulike-row [class^="col"] { float: right; }
 
332
 
333
+ .wp-ulike-row::after { content: ""; display: table; clear: both; }
 
334
 
335
+ .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12 { width: 96%; }
 
336
 
337
+ .col-1-sm { width: 4.33333%; }
 
338
 
339
+ .col-2-sm { width: 12.66667%; }
340
 
341
+ .col-3-sm { width: 21%; }
342
 
343
+ .col-4-sm { width: 29.33333%; }
344
 
345
+ .col-5-sm { width: 37.66667%; }
346
 
347
+ .col-6-sm { width: 46%; }
 
 
348
 
349
+ .col-7-sm { width: 54.33333%; }
 
350
 
351
+ .col-8-sm { width: 62.66667%; }
 
 
 
352
 
353
+ .col-9-sm { width: 71%; }
354
 
355
+ .col-10-sm { width: 79.33333%; }
356
 
357
+ .col-11-sm { width: 87.66667%; }
358
 
359
+ .col-12-sm { width: 96%; }
360
 
361
+ @media only screen and (min-width: 45em) { .col-1 { width: 4.33333%; }
362
+ .col-2 { width: 12.66667%; }
363
+ .col-3 { width: 21%; }
364
+ .col-4 { width: 29.33333%; }
365
+ .col-5 { width: 37.66667%; }
366
+ .col-6 { width: 46%; }
367
+ .col-7 { width: 54.33333%; }
368
+ .col-8 { width: 62.66667%; }
369
+ .col-9 { width: 71%; }
370
+ .col-10 { width: 79.33333%; }
371
+ .col-11 { width: 87.66667%; }
372
+ .col-12 { width: 96%; }
373
+ .hidden-sm { display: block; } }
374
+ @media only screen and (max-width: 45em) { .wp-ulike-flex { text-align: center; } }
375
+ /** Visual Select */
376
+ .wp-ulike-visual-select { height: auto; display: inline-block; width: 100%; max-width: 900px; }
377
+ .wp-ulike-visual-select .radio-img-item { display: inline-block; margin-right: 10px; border: 3px solid #d8d8d8; padding: 0 10px; width: 110px; height: 60px; cursor: pointer; }
378
+ .wp-ulike-visual-select .radio-img-item.item-checked { -webkit-filter: brightness(40%) sepia(100%) hue-rotate(170deg) saturate(250%); filter: brightness(40%) sepia(100%) hue-rotate(170deg) saturate(250%); }
379
+ .wp-ulike-visual-select .radio-img-item img { display: block; clear: both; width: 100%; height: 100%; }
380
 
381
+ /** Statistics Page */
382
+ .wp-ulike-page-title { font-size: 38px; line-height: 50px; font-weight: 400; margin: 0; }
383
 
384
+ .wp-ulike-header { margin: 0 2% 10px; padding: 0 20px 35px; display: flex; justify-content: space-between; position: relative; align-items: center; flex-wrap: wrap; }
385
+ .wp-ulike-header:after { content: ""; position: absolute; bottom: 0; height: 1px; background: #dde3e7; right: 20px; left: 20px; }
386
+ .wp-ulike-header .wp-ulike-widget-title { text-transform: capitalize; font-size: 22px; font-weight: 500; line-height: normal; color: #3d3d3d; margin: 0; }
387
 
388
+ .wp-ulike-button { background-color: #f9faff; padding: 10px 25px; text-decoration: none; text-transform: uppercase; color: #7e8996; border: 1px solid #dde3e7; border-radius: 50em; font-size: 14px; line-height: 20px; }
389
+ .wp-ulike-button:hover { background-color: #fff; color: #42484e; }
390
 
391
+ .wp-ulike-inner { position: relative; padding: 35px 20px; border: 1px solid #e4e6eb; background: #fff; border-radius: 4px; }
392
 
393
+ .wp-ulike-logs-count { margin: 0 auto; text-align: center; }
394
+ .wp-ulike-logs-count .wp-ulike-icon { font-size: 5vw; color: #8B93A6; line-height: 5vh; }
395
+ .wp-ulike-logs-count .wp-ulike-var { font-size: 3vw; line-height: 4vw; display: block; }
396
+ .wp-ulike-logs-count .wp-ulike-text { display: block; color: #8B93A6; font-size: 1.5vw; line-height: 2.5vw; }
397
 
398
+ .wp-ulike-is-loading { padding: 10px 0; }
399
+ .wp-ulike-is-loading:before { content: ""; position: absolute; left: 0; width: 100%; top: 0; height: 100%; background-color: white; background-image: url(../../../assets/img/svg/statistics.svg); background-repeat: no-repeat; background-position: center center; z-index: 9; }
400
 
401
+ .wp-ulike-table { display: table; }
402
+ .wp-ulike-table .wp-ulike-table-cell { display: table-cell; vertical-align: middle; }
403
 
404
+ .wp-ulike-summary-charts .wp-ulike-info { flex-basis: 35%; }
405
+ .wp-ulike-summary-charts .wp-ulike-icon { font-size: 3vw; color: #8B93A6; line-height: normal; flex-basis: 25%; }
406
+ .wp-ulike-summary-charts .wp-ulike-var { font-size: 1.8vw; line-height: normal; display: block; }
407
+ .wp-ulike-summary-charts .wp-ulike-text { display: block; color: #8B93A6; font-size: 1vw; line-height: normal; }
408
 
409
+ .wp-ulike-top-likers { margin: 0 2%; }
410
+ .wp-ulike-top-likers .wp-ulike-users-list { border-bottom: 1px solid #dde3e7; font-size: 15px; padding: 20px 0px; margin: 5px; }
411
+ .wp-ulike-top-likers .wp-ulike-users-list i { color: #8B93A6; margin: 0 5px; }
412
+ .wp-ulike-top-likers .wp-ulike-info { width: 60%; }
413
+ .wp-ulike-top-likers .wp-ulike-counter { width: 20%; }
414
+ .wp-ulike-top-likers .wp-ulike-total { width: 20%; }
415
 
416
+ .wp-ulike-empty-stats { text-align: center; height: 50em; position: relative; }
417
+ .wp-ulike-empty-stats > div { position: relative; top: 50%; transform: translateY(-50%); }
418
+ .wp-ulike-empty-stats .wp-ulike-icon { font-size: 110px; color: #8B93A6; }
419
+ .wp-ulike-empty-stats .wp-ulike-info { font-size: 28px; line-height: 42px; font-weight: 300; margin-top: 50px; }
420
 
421
+ .wp-ulike-tops-list { padding: 0 20px; }
422
+ .wp-ulike-tops-list > ul { font-size: 16px; font-weight: 300; line-height: 26px; color: #3d3d3d; margin: 0; }
423
+ .wp-ulike-tops-list > ul > li { display: flex; justify-content: space-between; border-bottom: 1px solid #dde3e7; padding: 8px 0; }
424
+ .wp-ulike-tops-list > ul > li a { text-decoration: none; color: #3d3d3d; }
425
 
426
+ /** Logs Page */
427
  .wp_ulike_logs .button { line-height: 20px; }
428
  .wp_ulike_logs i { font-size: 1.9em; }
429
  .wp_ulike_logs i.wp-ulike-icons-thumb_up:before { color: #4caf50; }
430
  .wp_ulike_logs i.wp-ulike-icons-thumb_down:before { color: #f44336; }
431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  /** About Page */
433
  .wp-ulike-about-page .ulike-badge { background: url(../../../assets/img/wp-ulike-badge.png) no-repeat scroll center 24px/95px 95px #F3643A; color: #FFFFFF; position: absolute; top: 0px; right: 0px; font-size: 14px; text-align: center; font-weight: 600; margin: 5px 0px 0px; padding-top: 120px; height: 40px; display: inline-block; width: 150px; text-rendering: optimizelegibility; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); }
434
  .wp-ulike-about-page .wp_ulike_version { display: inline-block; position: absolute; top: 54px; left: 0; padding: 5px 10px; background: #e74c3c; color: #FFFFFF; font-size: 13px; font-weight: normal; }
448
  .rtl .settings-error.info { border-left: none; border-right: 4px solid #2ea2cc; }
449
  .rtl .settings-error.warning { border-left: none; border-right: 4px solid #2ea2cc; }
450
  .rtl tr.hide-label td { padding-right: 0; padding-left: inherit !important; }
 
 
 
 
 
 
 
 
 
451
  .rtl .wp-ulike-about-page .ulike-badge { right: inherit; left: 0px; }
452
+ .rtl .wp-ulike-notice .links a { margin-right: 0; margin-left: 8px; }
 
 
 
admin/assets/js/{statistics.js → plugins.js} RENAMED
@@ -1,4 +1,4 @@
1
- /*! WP ULike - v3.4
2
  * https://wpulike.com
3
  * Alimir 2018;
4
  */
@@ -19,283 +19,2428 @@
19
  !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n||t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;r<i.length;r++)a(i[r]);return a}({1:[function(t,e,n){},{}],2:[function(t,e,n){function i(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3})$/i);if(i){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i[a]+i[a],16)}else if(i=t.match(/^#([a-fA-F0-9]{6})$/i)){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i.slice(2*a,2*a+2),16)}else if(i=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(i[a+1]);n=parseFloat(i[4])}else if(i=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(i[a+1]));n=parseFloat(i[4])}else if(i=t.match(/(\w+)/)){if("transparent"==i[1])return[0,0,0,0];if(!(e=c[i[1]]))return}for(var a=0;a<e.length;a++)e[a]=u(e[a],0,255);return n=n||0==n?u(n,0,1):1,e[3]=n,e}}function a(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function r(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function u(t,e,n){return Math.min(Math.max(e,t),n)}function d(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var c=t(6);e.exports={getRgba:i,getHsla:a,getRgb:function(t){var e=i(t);return e&&e.slice(0,3)},getHsl:function(t){var e=a(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=i(t);return e?e[3]:(e=a(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+d(t[0])+d(t[1])+d(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?r(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:r,percentString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:l,hslString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:s,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return h[t.slice(0,3)]}};var h={};for(var f in c)h[c[f]]=f},{6:6}],3:[function(t,e,n){var i=t(5),a=t(2),o=function(t){if(t instanceof o)return t;if(!(this instanceof o))return new o(t);this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;"string"==typeof t?(e=a.getRgba(t))?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e))};o.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,o=2*a-1,r=n.alpha()-i.alpha(),l=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*n.red()+s*i.red(),l*n.green()+s*i.green(),l*n.blue()+s*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},o.prototype.setValues=function(t,e){var n,a=this.values,o=this.spaces,r=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)a[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[o[t][0]]){var s=o[t];for(n=0;n<t.length;n++)a[t][n]=e[s[n]];l=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===l?a.alpha:l)),"alpha"===t)return!1;var u;for(n=0;n<t.length;n++)u=Math.max(0,Math.min(r[t][n],a[t][n])),a[t][n]=Math.round(u);for(var d in o)d!==t&&(a[d]=i[t][d](a[t]));return!0},o.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},o.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=o),e.exports=o},{2:2,5:5}],4:[function(t,e,n){function i(t){var e,n,i,a=t[0]/255,o=t[1]/255,r=t[2]/255,l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=(l+s)/2,n=s==l?0:i<=.5?u/(s+l):u/(2-s-l),[e,100*n,100*i]}function a(t){var e,n,i,a=t[0],o=t[1],r=t[2],l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return n=0==s?0:u/s*1e3/10,s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=s/255*1e3/10,[e,n,i]}function o(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function l(t){var e,n,i,a,o=t[0]/255,r=t[1]/255,l=t[2]/255;return a=Math.min(1-o,1-r,1-l),e=(1-o-a)/(1-a)||0,n=(1-r-a)/(1-a)||0,i=(1-l-a)/(1-a)||0,[100*e,100*n,100*i,100*a]}function s(t){return C[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e,n,i,a=u(t),o=a[0],r=a[1],l=a[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,n=500*(o-r),i=200*(r-l),[e,n,i]}function c(t){var e,n,i,a,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];e=2*s-(n=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(i=r+1/3*-(u-1))<0&&i++,i>1&&i--,o=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-n),l=255*i*(1-n*o),s=255*i*(1-n*(1-o)),i=255*i;switch(a){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function f(t){var e,n,i,a,o=t[0]/360,l=t[1]/100,s=t[2]/100,u=l+s;switch(u>1&&(l/=u,s/=u),e=Math.floor(6*o),n=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),a=l+i*(n-l),e){default:case 6:case 0:r=n,g=a,b=l;break;case 1:r=a,g=n,b=l;break;case 2:r=l,g=n,b=a;break;case 3:r=l,g=a,b=n;break;case 4:r=a,g=l,b=n;break;case 5:r=n,g=l,b=a}return[255*r,255*g,255*b]}function p(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,a*(1-l)+l),n=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*n,255*i]}function v(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*a+-1.5372*o+-.4986*r,n=-.9689*a+1.8758*o+.0415*r,i=.0557*a+-.204*o+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function m(t){var e,n,i,a=t[0],o=t[1],r=t[2];return a/=95.047,o/=100,r/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,n=500*(a-o),i=200*(o-r),[e,n,i]}function x(t){var e,n,i,a,o=t[0],r=t[1],l=t[2];return o<=8?a=(n=100*o/903.3)/100*7.787+16/116:(n=100*Math.pow((o+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i=i/108.883<=.008859?i=108.883*(a-l/200-16/116)/7.787:108.883*Math.pow(a-l/200,3),[e,n,i]}function y(t){var e,n,i,a=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),(n=360*e/2/Math.PI)<0&&(n+=360),i=Math.sqrt(o*o+r*r),[a,i,n]}function k(t){return v(x(t))}function w(t){var e,n,i,a=t[0],o=t[1];return i=t[2]/360*2*Math.PI,e=o*Math.cos(i),n=o*Math.sin(i),[a,e,n]}function M(t){return S[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,a*=o<=1?o:2-o,n=(o+a)/2,e=2*a/(o+a),[i,100*e,100*n])},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return l(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return n=(2-a)*o,e=a*o,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return l(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return l(f(t))},hwb2keyword:function(t){return s(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return i(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return s(p(t))},keyword2rgb:M,keyword2hsl:function(t){return i(M(t))},keyword2hsv:function(t){return a(M(t))},keyword2hwb:function(t){return o(M(t))},keyword2cmyk:function(t){return l(M(t))},keyword2lab:function(t){return d(M(t))},keyword2xyz:function(t){return u(M(t))},xyz2rgb:v,xyz2lab:m,xyz2lch:function(t){return y(m(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:w,lch2xyz:function(t){return x(w(t))},lch2rgb:function(t){return k(w(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,n){var i=t(4),a=function(){return new u};for(var o in i){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];(a[l]=a[l]||{})[s]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(o)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=a[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{4:4}],6:[function(t,e,n){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,n){var i=t(29)();i.helpers=t(45),t(27)(i),i.defaults=t(25),i.Element=t(26),i.elements=t(40),i.Interaction=t(28),i.platform=t(48),t(31)(i),t(22)(i),t(23)(i),t(24)(i),t(30)(i),t(33)(i),t(32)(i),t(35)(i),t(54)(i),t(52)(i),t(53)(i),t(55)(i),t(56)(i),t(57)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=[];a.push(t(49)(i),t(50)(i),t(51)(i)),i.plugins.register(a),i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.Chart=i),i.canvasHelpers=i.helpers.canvas},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,35:35,40:40,45:45,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e,n=this;t.DatasetController.prototype.initialize.apply(n,arguments),(e=n.getMeta()).stack=n.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this,a=i.getMeta().data;for(i._ruler=i.getRuler(),e=0,n=a.length;e<n;++e)i.updateElement(a[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,r=i.getMeta(),l=i.getDataset(),s=t.custom||{},u=a.options.elements.rectangle;t._xScale=i.getScaleForId(r.xAxisID),t._yScale=i.getScaleForId(r.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:l.label,label:a.data.labels[e],borderSkipped:s.borderSkipped?s.borderSkipped:u.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:o.valueAtIndexOrDefault(l.backgroundColor,e,u.backgroundColor),borderColor:s.borderColor?s.borderColor:o.valueAtIndexOrDefault(l.borderColor,e,u.borderColor),borderWidth:s.borderWidth?s.borderWidth:o.valueAtIndexOrDefault(l.borderWidth,e,u.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,o=i.getValueScale(),r=o.getBasePixel(),l=o.isHorizontal(),s=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,s);a.horizontal=l,a.base=n?r:u.base,a.x=l?n?r:u.head:d.center,a.y=l?d.center:n?r:u.head,a.height=l?d.size:void 0,a.width=l?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},getStackCount:function(t){var e,n,i=this,a=i.chart,o=i.getIndexScale().options.stacked,r=void 0===t?a.data.datasets.length:t+1,l=[];for(e=0;e<r;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===o||!0===o&&-1===l.indexOf(n.stack)||void 0===o&&(void 0===n.stack||-1===l.indexOf(n.stack)))&&l.push(n.stack);return l.length},getStackIndex:function(t){return this.getStackCount(t)-1},getRuler:function(){var t,e,n=this,i=n.getIndexScale(),a=n.getStackCount(),o=n.index,r=[],l=i.isHorizontal(),s=l?i.left:i.top,u=s+(l?i.width:i.height);for(t=0,e=n.getMeta().data.length;t<e;++t)r.push(i.getPixelForValue(null,t,o));return{pixels:r,start:s,end:u,stackCount:a,scale:i}},calculateBarValuePixels:function(t,e){var n,i,a,o,r,l,s=this,u=s.chart,d=s.getMeta(),c=s.getValueScale(),h=u.data.datasets,f=c.getRightValue(h[t].data[e]),g=c.options.stacked,p=d.stack,v=0;if(g||void 0===g&&void 0!==p)for(n=0;n<t;++n)(i=u.getDatasetMeta(n)).bar&&i.stack===p&&i.controller.getValueScaleId()===c.id&&u.isDatasetVisible(n)&&(a=c.getRightValue(h[n].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=c.getPixelForValue(v),r=c.getPixelForValue(v+f),l=(r-o)/2,{size:l,base:o,head:r,center:r+l/2}},calculateBarIndexPixels:function(t,e,n){var i,a,r,l,s,u,d=this,c=n.scale.options,h=d.getStackIndex(t),f=n.pixels,g=f[e],p=f.length,v=n.start,m=n.end;return 1===p?(i=g>v?g-v:m-g,a=g<m?m-g:g-v):(e>0&&(i=(g-f[e-1])/2,e===p-1&&(a=i)),e<p-1&&(a=(f[e+1]-g)/2,0===e&&(i=a))),r=i*c.categoryPercentage,l=a*c.categoryPercentage,s=(r+l)/n.stackCount,u=s*c.barPercentage,u=Math.min(o.valueOrDefault(c.barThickness,u),o.valueOrDefault(c.maxBarThickness,1/0)),g-=r,g+=s*h,g+=(s-u)/2,{size:u,base:g,head:g+u,center:g+u/2}},draw:function(){var t=this,e=t.chart,n=t.getValueScale(),i=t.getMeta().data,a=t.getDataset(),r=i.length,l=0;for(o.canvas.clipArea(e.ctx,e.chartArea);l<r;++l)isNaN(n.getRightValue(a.data[l]))||i[l].draw();o.canvas.unclipArea(e.ctx)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:o.valueAtIndexOrDefault(e.hoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:o.valueAtIndexOrDefault(e.hoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:o.valueAtIndexOrDefault(e.hoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model,r=this.chart.options.elements.rectangle;a.backgroundColor=i.backgroundColor?i.backgroundColor:o.valueAtIndexOrDefault(e.backgroundColor,n,r.backgroundColor),a.borderColor=i.borderColor?i.borderColor:o.valueAtIndexOrDefault(e.borderColor,n,r.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:o.valueAtIndexOrDefault(e.borderWidth,n,r.borderWidth)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{25:25,40:40,45:45}],16:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,n=e.getMeta().data;o.each(n,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),o=t.custom||{},r=i.getScaleForId(a.xAxisID),l=i.getScaleForId(a.yAxisID),s=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,c=n?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof u?u:NaN,e,d),h=n?l.getBasePixel():l.getPixelForValue(u,e,d);t._xScale=r,t._yScale=l,t._options=s,t._datasetIndex=d,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth,hitRadius:s.hitRadius,pointStyle:s.pointStyle,radius:n?0:s.radius,skip:o.skip||isNaN(c)||isNaN(h),x:c,y:h},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=o.valueOrDefault(n.hoverBackgroundColor,o.getHoverColor(n.backgroundColor)),e.borderColor=o.valueOrDefault(n.hoverBorderColor,o.getHoverColor(n.borderColor)),e.borderWidth=o.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},removeHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=n.backgroundColor,e.borderColor=n.borderColor,e.borderWidth=n.borderWidth,e.radius=n.radius},_resolveElementOptions:function(t,e){var n,i,a,r=this,l=r.chart,s=l.data.datasets[r.index],u=t.custom||{},d=l.options.elements.point,c=o.options.resolve,h=s.data[e],f={},g={chart:l,dataIndex:e,dataset:s,datasetIndex:r.index},p=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle"];for(n=0,i=p.length;n<i;++n)f[a=p[n]]=c([u[a],s[a],d[a]],g,e);return f.radius=c([u.radius,h?h.r:void 0,s.radius,d.radius],g,e),f}})}},{25:25,40:40,45:45}],17:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i],s=l&&l.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(r.backgroundColor,i,d.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(r.borderColor,i,d.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(r.borderWidth,i,d.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],i=": "+e.datasets[t.datasetIndex].data[t.index];return o.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",o.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e=this,n=e.chart,i=n.chartArea,a=n.options,r=a.elements.arc,l=i.right-i.left-r.borderWidth,s=i.bottom-i.top-r.borderWidth,u=Math.min(l,s),d={x:0,y:0},c=e.getMeta(),h=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),p=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,v={x:Math.cos(g),y:Math.sin(g)},m={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,w=h/100,M={x:y?-1:Math.min(v.x*(v.x<0?1:w),m.x*(m.x<0?1:w)),y:k?-1:Math.min(v.y*(v.y<0?1:w),m.y*(m.y<0?1:w))},S={x:b?1:Math.max(v.x*(v.x>0?1:w),m.x*(m.x>0?1:w)),y:x?1:Math.max(v.y*(v.y>0?1:w),m.y*(m.y>0?1:w))},C={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(l/C.width,s/C.height),d={x:-.5*(S.x+M.x),y:-.5*(S.y+M.y)}}n.borderWidth=e.getMaxBorderWidth(c.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,c.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),o.each(c.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,r=a.chartArea,l=a.options,s=l.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=i.getDataset(),g=n&&s.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(l.circumference/(2*Math.PI)),p=n&&s.animateScale?0:i.innerRadius,v=n&&s.animateScale?0:i.outerRadius,m=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:v,innerRadius:p,label:m(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),n&&s.animateRotate||(b.startAngle=0===e?l.rotation:i.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return o.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,o=t.length,r=0;r<o;r++)e=t[r]._model?t[r]._model.borderWidth:0,i=(n=t[r]._chart?t[r]._chart.config.data.datasets[a].hoverBorderWidth:0)>(i=e>i?e:i)?n:i;return i}})}},{25:25,40:40,45:45}],18:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,r=this,l=r.getMeta(),s=l.dataset,u=l.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=u,s._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},s.pivot()),n=0,i=u.length;n<i;++n)r.updateElement(u[n],n,t);for(g&&0!==s._model.tension&&r.updateBezierControlPoints(),n=0,i=u.length;n<i;++n)u[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=o.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=o.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||o.isArray(i.pointBorderWidth)?n=o.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},updateElement:function(t,e,n){var i,a,r=this,l=r.getMeta(),s=t.custom||{},u=r.getDataset(),d=r.index,c=u.data[e],h=r.getScaleForId(l.yAxisID),f=r.getScaleForId(l.xAxisID),g=r.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),i=f.getPixelForValue("object"==typeof c?c:NaN,e,d),a=n?h.getBasePixel():r.calculatePointY(c,e,d),t._xScale=f,t._yScale=h,t._datasetIndex=d,t._index=e,t._model={x:i,y:a,skip:s.skip||isNaN(i)||isNaN(a),radius:s.radius||o.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:s.pointStyle||o.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:l.dataset._model?l.dataset._model.tension:0,steppedLine:!!l.dataset._model&&l.dataset._model.steppedLine,hitRadius:s.hitRadius||o.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,o,r=this,l=r.chart,s=r.getMeta(),u=r.getScaleForId(s.yAxisID),d=0,c=0;if(u.options.stacked){for(i=0;i<n;i++)if(a=l.data.datasets[i],"line"===(o=l.getDatasetMeta(i)).type&&o.yAxisID===u.id&&l.isDatasetVisible(i)){var h=Number(u.getRightValue(a.data[e]));h<0?c+=h||0:d+=h||0}var f=Number(u.getRightValue(t));return f<0?u.getPixelForValue(c+f):u.getPixelForValue(d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){function t(t,e,n){return Math.max(Math.min(t,n),e)}var e,n,i,a,r=this,l=r.getMeta(),s=r.chart.chartArea,u=l.data||[];if(l.dataset._model.spanGaps&&(u=u.filter(function(t){return!t._model.skip})),"monotone"===l.dataset._model.cubicInterpolationMode)o.splineCurveMonotone(u);else for(e=0,n=u.length;e<n;++e)i=u[e]._model,a=o.splineCurve(o.previousItem(u,e)._model,i,o.nextItem(u,e)._model,l.dataset._model.tension),i.controlPointPreviousX=a.previous.x,i.controlPointPreviousY=a.previous.y,i.controlPointNextX=a.next.x,i.controlPointNextY=a.next.y;if(r.chart.options.elements.line.capBezierPoints)for(e=0,n=u.length;e<n;++e)(i=u[e]._model).controlPointPreviousX=t(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=t(i.controlPointPreviousY,s.top,s.bottom),i.controlPointNextX=t(i.controlPointNextX,s.left,s.right),i.controlPointNextY=t(i.controlPointNextY,s.top,s.bottom)},draw:function(){var t=this,n=t.chart,i=t.getMeta(),a=i.data||[],r=n.chartArea,l=a.length,s=0;for(o.canvas.clipArea(n.ctx,r),e(t.getDataset(),n.options)&&i.dataset.draw(),o.canvas.unclipArea(n.ctx);s<l;++s)a[s].draw(r)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.radius=i.hoverRadius||o.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor||o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||o.valueAtIndexOrDefault(e.pointHoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||o.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this,n=e.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model;void 0!==n.radius&&void 0===n.pointRadius&&(n.pointRadius=n.radius),r.radius=a.radius||o.valueAtIndexOrDefault(n.pointRadius,i,e.chart.options.elements.point.radius),r.backgroundColor=e.getPointBackgroundColor(t,i),r.borderColor=e.getPointBorderColor(t,i),r.borderWidth=e.getPointBorderWidth(t,i)}})}},{25:25,40:40,45:45}],19:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i].custom||{},s=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:s(r.backgroundColor,i,u.backgroundColor),strokeStyle:l.borderColor?l.borderColor:s(r.borderColor,i,u.borderColor),lineWidth:l.borderWidth?l.borderWidth:s(r.borderWidth,i,u.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,update:function(t){var e=this,n=e.chart,i=n.chartArea,a=e.getMeta(),r=n.options,l=r.elements.arc,s=Math.min(i.right-i.left,i.bottom-i.top);n.outerRadius=Math.max((s-l.borderWidth/2)/2,0),n.innerRadius=Math.max(r.cutoutPercentage?n.outerRadius/100*r.cutoutPercentage:1,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),e.outerRadius=n.outerRadius-n.radiusLength*e.index,e.innerRadius=e.outerRadius-n.radiusLength,a.count=e.countVisibleElements(),o.each(a.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){for(var i=this,a=i.chart,r=i.getDataset(),l=a.options,s=l.animation,u=a.scale,d=a.data.labels,c=i.calculateCircumference(r.data[e]),h=u.xCenter,f=u.yCenter,g=0,p=i.getMeta(),v=0;v<e;++v)isNaN(r.data[v])||p.data[v].hidden||++g;var m=l.startAngle,b=t.hidden?0:u.getDistanceFromCenterForValue(r.data[e]),x=m+c*g,y=x+(t.hidden?0:c),k=s.animateScale?0:u.getDistanceFromCenterForValue(r.data[e]);o.extend(t,{_datasetIndex:i.index,_index:e,_scale:u,_model:{x:h,y:f,innerRadius:0,outerRadius:n?k:b,startAngle:n&&s.animateRotate?m:x,endAngle:n&&s.animateRotate?m:y,label:o.valueAtIndexOrDefault(d,e,d[e])}}),i.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return o.each(e.data,function(e,i){isNaN(t.data[i])||e.hidden||n++}),n},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,n=e.getMeta(),i=n.dataset,a=n.data,r=i.custom||{},l=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),o.each(a,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},r=i.getDataset(),l=i.chart.scale,s=i.chart.options.elements.point,u=l.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:i.index,_index:e,_scale:l,_model:{x:n?l.xCenter:u.x,y:n?l.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,s.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();o.each(e.data,function(n,i){var a=n._model,r=o.splineCurve(o.previousItem(e.data,i,!0)._model,a,o.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;a.radius=n.hoverRadius?n.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,o.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,i,o.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=n.radius?n.radius:o.valueAtIndexOrDefault(e.pointRadius,i,r.radius),a.backgroundColor=n.backgroundColor?n.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,i,r.backgroundColor),a.borderColor=n.borderColor?n.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,i,r.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,i,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,n){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,o,r=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=o.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=o.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a<i.length;)n=(e=i[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),o.callback(e.render,[n,e],n),o.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(o.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(28),r=t(48);e.exports=function(t){function e(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=a.configMerge(i.global,i[t.type],t.options||{}),t}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function l(t){return"top"===t||"bottom"===t}var s=t.plugins;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var o=this;i=e(i);var l=r.acquireContext(n,i),s=l&&l.canvas,u=s&&s.height,d=s&&s.width;o.id=a.uid(),o.ctx=l,o.canvas=s,o.config=i,o.width=d,o.height=u,o.aspectRatio=u?d/u:null,o.options=i.options,o._bufferedRender=!1,o.chart=o,o.controller=o,t.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),l&&s?(o.initialize(),o.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return s.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),s.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,o=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(i))),l=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(i)));if((e.width!==r||e.height!==l)&&(i.width=e.width=r,i.height=e.height=l,i.style.width=r+"px",i.style.height=l+"px",a.retinaScale(e,n.devicePixelRatio),!t)){var u={width:r,height:l};s.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,i=e.scales={},o=[];n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&o.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(o,function(n){var o=n.options,r=a.valueOrDefault(o.type,n.dtype),s=t.scaleService.getScaleConstructor(r);if(s){l(o.position)!==l(n.dposition)&&(o.position=n.dposition);var u=new s({id:o.id,options:o,ctx:e.ctx,chart:e});i[u.id]=u,u.mergeTicksOptions(),n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),l=a.type||e.config.type;if(r.type&&r.type!==l&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=l,n.push(r.type),r.controller)r.controller.updateIndex(o);else{var s=t.controllers[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(e,o),i.push(r.controller)}},e),i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n(e),!1!==s.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var i=e.buildOrUpdateControllers();a.each(e.data.datasets,function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()},e),e.updateLayout(),a.each(i,function(t){t.reset()}),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],s.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){var e=this;!1!==s.notify(e,"beforeLayout")&&(t.layoutService.update(this,this.width,this.height),s.notify(e,"afterScaleUpdate"),s.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(!1!==s.notify(t,"beforeDatasetsUpdate")){for(var e=0,n=t.data.datasets.length;e<n;++e)t.updateDataset(e);s.notify(t,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this,n=e.getDatasetMeta(t),i={meta:n,index:t};!1!==s.notify(e,"beforeDatasetUpdate",[i])&&(n.controller.update(),s.notify(e,"afterDatasetUpdate",[i]))},render:function(e){var n=this;e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]});var i=e.duration,o=e.lazy;if(!1!==s.notify(n,"beforeRender")){var r=n.options.animation,l=function(t){s.notify(n,"afterRender"),a.callback(r&&r.onComplete,[t],n)};if(r&&(void 0!==i&&0!==i||void 0===i&&0!==r.duration)){var u=new t.Animation({numSteps:(i||r.duration)/16.66,easing:e.easing||r.easing,render:function(t,e){var n=a.easing.effects[e.easing],i=e.currentStep,o=i/e.numSteps;t.draw(n(o),o,i)},onAnimationProgress:r.onProgress,onAnimationComplete:l});t.animationService.addAnimation(n,u,i,o)}else n.draw(),l(new t.Animation({numSteps:0,chart:n}));return n}},draw:function(t){var e=this;e.clear(),a.isNullOrUndef(t)&&(t=1),e.transition(t),!1!==s.notify(e,"beforeDraw",[t])&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),s.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=this,n=0,i=(e.data.datasets||[]).length;n<i;++n)e.isDatasetVisible(n)&&e.getDatasetMeta(n).controller.transition(t);e.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==s.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);s.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};!1!==s.notify(n,"beforeDatasetDraw",[a])&&(i.controller.draw(e),s.notify(n,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this,n=e.tooltip,i={tooltip:n,easingValue:t};!1!==s.notify(e,"beforeTooltipDraw",[i])&&(n.draw(),s.notify(e,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=o.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var e,n,i=this,o=i.canvas;for(i.stop(),e=0,n=i.data.datasets.length;e<n;++e)i.destroyDatasetMeta(e);o&&(i.unbindEvents(),a.canvas.clear(i),r.releaseContext(i.ctx),i.canvas=null,i.ctx=null),s.notify(i,"destroy"),delete t.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(i){r.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},r.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,n){r.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,o,r=n?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[r](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==s.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);i|=n&&n.handleEvent(t),s.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e=this,n=e.options||{},i=n.hover,o=!1;return e.lastActive=e.lastActive||[],"mouseout"===t.type?e.active=[]:e.active=e.getElementsAtEventForMode(t,i.mode,i),a.callback(n.onHover||n.hover.onHover,[t.native,e.active],e),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(e,t.native,e.active),e.lastActive.length&&e.updateHoverStyle(e.lastActive,i.mode,!1),e.active.length&&i.mode&&e.updateHoverStyle(e.active,i.mode,!0),o=!a.arrayEquals(e.active,e.lastActive),e.lastActive=e.active,o}}),t.Controller=t}},{25:25,28:28,45:45,48:48}],24:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),a.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),o=a.apply(this,e);return i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),o}})}))}function n(t,e){var n=t._chartjs;if(n){var i=n.listeners,o=i.indexOf(e);-1!==o&&i.splice(o,1),i.length>0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],o=i.data;for(t=0,e=a.length;t<e;++t)o[t]=o[t]||n.createMetaData(t);i.dataset=i.dataset||n.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t=this,i=t.getDataset(),a=i.data||(i.data=[]);t._data!==a&&(t._data&&n(t._data,t),e(a,t),t._data=a),t.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t,e){var n=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},r=i.valueAtIndexOrDefault,l=t._model;l.backgroundColor=o.backgroundColor?o.backgroundColor:r(n.backgroundColor,a,e.backgroundColor),l.borderColor=o.borderColor?o.borderColor:r(n.borderColor,a,e.borderColor),l.borderWidth=o.borderWidth?o.borderWidth:r(n.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=i.valueAtIndexOrDefault,r=i.getHoverColor,l=t._model;l.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:o(e.hoverBackgroundColor,n,r(l.backgroundColor)),l.borderColor=a.hoverBorderColor?a.hoverBorderColor:o(e.hoverBorderColor,n,r(l.borderColor)),l.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:o(e.hoverBorderWidth,n,l.borderWidth)},resyncElements:function(){var t=this,e=t.getMeta(),n=t.getDataset().data,i=e.data.length,a=n.length;a<i?e.data.splice(a,i-a):a>i&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=i.inherits}},{45:45}],25:[function(t,e,n){"use strict";var i=t(45);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{45:45}],26:[function(t,e,n){"use strict";function i(t,e,n,i){var o,r,l,s,u,d,c,h,f,g=Object.keys(n);for(o=0,r=g.length;o<r;++o)if(l=g[o],d=n[l],e.hasOwnProperty(l)||(e[l]=d),(s=e[l])!==d&&"_"!==l[0]){if(t.hasOwnProperty(l)||(t[l]=s),u=t[l],(c=typeof d)===typeof u)if("string"===c){if((h=a(u)).valid&&(f=a(d)).valid){e[l]=f.mix(h,i).rgbString();continue}}else if("number"===c&&isFinite(u)&&isFinite(d)){e[l]=u+(d-u)*i;continue}e[l]=d}}var a=t(3),o=t(45),r=function(t){o.extend(this,t),this.initialize.apply(this,arguments)};o.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=o.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,o=e._view;return n&&1!==t?(o||(o=e._view={}),a||(a=e._start={}),i(a,o,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return o.isNumber(this._model.x)&&o.isNumber(this._model.y)}}),r.extend=o.inherits,e.exports=r},{3:3,45:45}],27:[function(t,e,n){"use strict";var i=t(3),a=t(25),o=t(45);e.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return void 0!==t&&null!==t&&"none"!==t}function r(t,i,a){var o=document.defaultView,r=t.parentNode,l=o.getComputedStyle(t)[i],s=o.getComputedStyle(r)[i],u=n(l),d=n(s),c=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(l,t,a):c,d?e(s,r,a):c):"none"}o.configMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){var r=n[e]||{},l=i[e];"scales"===e?n[e]=o.scaleMerge(r,l):"scale"===e?n[e]=o.merge(r,[t.scaleService.getScaleDefaults(l.type),l]):o._merger(e,n,i,a)}})},o.scaleMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){if("xAxes"===e||"yAxes"===e){var r,l,s,u=i[e].length;for(n[e]||(n[e]=[]),r=0;r<u;++r)s=i[e][r],l=o.valueOrDefault(s.type,"xAxes"===e?"category":"linear"),r>=n[e].length&&n[e].push({}),!n[e][r].type||s.type&&s.type!==n[e][r].type?o.merge(n[e][r],[t.scaleService.getScaleDefaults(l),s]):o.merge(n[e][r],s)}else o._merger(e,n,i,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return o.each(t,function(t){e(t)&&n.push(t)}),n},o.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},o.findNextWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},o.findPreviousWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,n){return Math.abs(t-e)<n},o.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,n,i){var a=t.skip?e:t,o=e,r=n.skip?e:n,l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=l/(l+s),d=s/(l+s),c=i*(u=isNaN(u)?0:u),h=i*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,n,i,a,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),l=r.length;for(e=0;e<l;++e)if(!(i=r[e]).model.skip){if(n=e>0?r[e-1]:null,(a=e<l-1?r[e+1]:null)&&!a.model.skip){var s=a.model.x-i.model.x;i.deltaK=0!==s?(a.model.y-i.model.y)/s:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}var u,d,c,h;for(e=0;e<l-1;++e)i=r[e],a=r[e+1],i.model.skip||a.model.skip||(o.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(u=i.mK/i.deltaK,d=a.mK/i.deltaK,(h=Math.pow(u,2)+Math.pow(d,2))<=9||(c=3/Math.sqrt(h),i.mK=u*c*i.deltaK,a.mK=d*c*i.deltaK)));var f;for(e=0;e<l;++e)(i=r[e]).model.skip||(n=e>0?r[e-1]:null,a=e<l-1?r[e+1]:null,n&&!n.model.skip&&(f=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-f,i.model.controlPointPreviousY=i.model.y-f*i.mK),a&&!a.model.skip&&(f=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+f,i.model.controlPointNextY=i.model.y+f*i.mK))},o.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var n=Math.floor(o.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-u-c,g=l.bottom-l.top-d-h;return n=Math.round((n-l.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-d)/g*r.height/e.currentDevicePixelRatio),{x:n,y:i}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,o=t.width;i.height=a*n,i.width=o*n,t.ctx.scale(n,n),i.style.height=a+"px",i.style.width=o+"px"}},o.fontString=function(t,e,n){return e+" "+t+"px "+n},o.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(n,function(e){void 0!==e&&null!==e&&!0!==o.isArray(e)?l=o.measureText(t,a,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,a,r,l,e))})});var s=r.length/2;if(s>n.length){for(var u=0;u<s;u++)delete a[r[u]];r.splice(0,s)}return l},o.measureText=function(t,e,n,i,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,n.push(a)),o>i&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,n){"use strict";function i(t,e){return t.native?{x:t.x,y:t.y}:u.getRelativePosition(t,e)}function a(t,e){var n,i,a,o,r;for(i=0,o=t.data.datasets.length;i<o;++i)if(t.isDatasetVisible(i))for(a=0,r=(n=t.getDatasetMeta(i)).data.length;a<r;++a){var l=n.data[a];l._view.skip||e(l)}}function o(t,e){var n=[];return a(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function r(t,e,n,i){var o=Number.POSITIVE_INFINITY,r=[];return a(t,function(t){if(!n||t.inRange(e.x,e.y)){var a=t.getCenterPoint(),l=i(e,a);l<o?(r=[t],o=l):l===o&&r.push(t)}}),r}function l(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,i){var a=e?Math.abs(t.x-i.x):0,o=n?Math.abs(t.y-i.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function s(t,e,n){var a=i(e,t);n.axis=n.axis||"x";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s),d=[];return u.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n).data[u[0]._index];i&&!i._view.skip&&d.push(i)}}),d):[]}var u=t(45);e.exports={modes:{single:function(t,e){var n=i(e,t),o=[];return a(t,function(t){if(t.inRange(n.x,n.y))return o.push(t),o}),o.slice(0,1)},label:s,index:s,dataset:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return s(t,e,{intersect:!1})},point:function(t,e){return o(t,i(e,t))},nearest:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var o=l(n.axis),s=r(t,a,n.intersect,o);return s.length>1&&s.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),s.slice(0,1)},x:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r},y:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r}}}},{45:45}],29:[function(t,e,n){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)i=a[r],n.hasOwnProperty(i)&&(e[i]=n[i])},update:function(t,a,o){function r(t){var e=i.findNextWhere(_,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(T,D),right:Math.max(F,I),top:0,bottom:0};t.update(t.fullWidth?x:S,y/2,n)}else t.update(e.minSize.width,C)}function l(t){t.isHorizontal()?(t.left=t.fullWidth?d:T,t.right=t.fullWidth?a-c:T+S,t.top=V,t.bottom=V+t.height,V=t.bottom):(t.left=N,t.right=N+t.width,t.top=O,t.bottom=O+C,N=t.right)}if(t){var s=t.options.layout||{},u=i.options.toPadding(s.padding),d=u.left,c=u.right,h=u.top,f=u.bottom,g=e(t.boxes,"left"),p=e(t.boxes,"right"),v=e(t.boxes,"top"),m=e(t.boxes,"bottom"),b=e(t.boxes,"chartArea");n(g,!0),n(p,!1),n(v,!0),n(m,!1);var x=a-d-c,y=o-h-f,k=y/2,w=(a-x/2)/(g.length+p.length),M=(o-k)/(v.length+m.length),S=x,C=y,_=[];i.each(g.concat(p,v,m),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?x:S,M),C-=e.height):(e=t.update(w,k),S-=e.width),_.push({horizontal:n,minSize:e,box:t})});var D=0,I=0,P=0,A=0;i.each(v.concat(m),function(t){if(t.getPadding){var e=t.getPadding();D=Math.max(D,e.left),I=Math.max(I,e.right)}}),i.each(g.concat(p),function(t){if(t.getPadding){var e=t.getPadding();P=Math.max(P,e.top),A=Math.max(A,e.bottom)}});var T=d,F=c,O=h,R=f;i.each(g.concat(p),r),i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v.concat(m),r),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height}),i.each(g.concat(p),function(t){var e=i.findNextWhere(_,function(e){return e.box===t}),n={left:0,right:0,top:O,bottom:R};e&&t.update(e.minSize.width,C,n)}),T=d,F=c,O=h,R=f,i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height});var L=Math.max(D-T,0);T+=L,F+=Math.max(I-F,0);var z=Math.max(P-O,0);O+=z,R+=Math.max(A-R,0);var B=o-O-R,W=a-T-F;W===S&&B===C||(i.each(g,function(t){t.height=B}),i.each(p,function(t){t.height=B}),i.each(v,function(t){t.fullWidth||(t.width=W)}),i.each(m,function(t){t.fullWidth||(t.width=W)}),C=B,S=W);var N=d+L,V=h+z;i.each(g.concat(v),l),N+=S,V+=C,i.each(p,l),i.each(m,l),t.chartArea={left:T,top:O,right:T+S,bottom:O+C},i.each(b,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(S,C)})}}}}},{45:45}],31:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{plugins:{}}),e.exports=function(t){t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,o,r,l,s=this.descriptors(t),u=s.length;for(i=0;i<u;++i)if(a=s[i],o=a.plugin,"function"==typeof(l=o[e])&&((r=[t].concat(n||[])).push(a.options),!1===l.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t._plugins||(t._plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},l=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,r=l[e];!1!==r&&(!0===r&&(r=o.clone(i.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}}),e.descriptors=a,e.id=this._cacheId,a}},t.pluginService=t.plugins,t.PluginBase=a.extend({})}},{25:25,26:26,45:45}],32:[function(t,e,n){"use strict";function i(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function a(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}var o=t(25),r=t(26),l=t(45),s=t(34);o._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:s.formatters.values,minor:{},major:{}}}),e.exports=function(t){function e(t,e,n){return l.isArray(e)?l.longestText(t,n,e):t.measureText(e).width}function n(t){var e=l.valueOrDefault,n=o.global,i=e(t.fontSize,n.defaultFontSize),a=e(t.fontStyle,n.defaultFontStyle),r=e(t.fontFamily,n.defaultFontFamily);return{size:i,style:a,family:r,font:l.fontString(i,a,r)}}function s(t){return l.options.toLineHeight(l.valueOrDefault(t.lineHeight,1.2),l.valueOrDefault(t.fontSize,o.global.defaultFontSize))}t.Scale=r.extend({getPadding:function(){var t=this;return{left:t.paddingLeft||0,top:t.paddingTop||0,right:t.paddingRight||0,bottom:t.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1});for(var e in t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){l.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,o,r,s,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=l.extend({left:0,right:0,top:0,bottom:0},n),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,i=0,a=o.length;i<a;++i)r=o[i],(u=s[i])?u.label=r:s.push(u={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){l.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){l.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){l.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){l.callback(this.options.beforeDataLimits,[this])},determineDataLimits:l.noop,afterDataLimits:function(){l.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){l.callback(this.options.beforeBuildTicks,[this])},buildTicks:l.noop,afterBuildTicks:function(){l.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){l.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this,e=t.options.ticks;t.ticks=t.ticks.map(e.userCallback||e.callback,this)},afterTickToLabelConversion:function(){l.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){l.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,a=t.options.ticks,o=i(t._ticks),r=n(a);e.font=r.font;var s=a.minRotation||0;if(o.length&&t.options.display&&t.isHorizontal())for(var u,d=l.longestText(e,r.font,o,t.longestTextCache),c=d,h=t.getPixelForTick(1)-t.getPixelForTick(0)-6;c>h&&s<a.maxRotation;){var f=l.toRadians(s);if(u=Math.cos(f),Math.sin(f)*d>t.maxHeight){s--;break}s++,c=u*d}t.labelRotation=s},afterCalculateTickRotation:function(){l.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){l.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},o=i(t._ticks),r=t.options,u=r.ticks,d=r.scaleLabel,c=r.gridLines,h=r.display,f=t.isHorizontal(),g=n(u),p=r.gridLines.tickMarkLength;if(a.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,a.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var v=s(d)+l.options.toPadding(d.padding).height;f?a.height+=v:a.width+=v}if(u.display&&h){var m=l.longestText(t.ctx,g.font,o,t.longestTextCache),b=l.numberOfLabelLines(o),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=m;var k=l.toRadians(t.labelRotation),w=Math.cos(k),M=Math.sin(k)*m+g.size*b+x*(b-1)+x;a.height=Math.min(t.maxHeight,a.height+M+y),t.ctx.font=g.font;var S=e(t.ctx,o[0],g.font),C=e(t.ctx,o[o.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===r.position?w*S+3:w*x+3,t.paddingRight="bottom"===r.position?w*x+3:w*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?m=0:m+=y+x,a.width=Math.min(t.maxWidth,a.width+m),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){l.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(l.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:l.noop,getPixelForValue:l.noop,getValueForPixel:l.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},_autoSkip:function(t){var e,n,i,a,o=this,r=o.isHorizontal(),s=o.options.ticks.minor,u=t.length,d=l.toRadians(o.labelRotation),c=Math.cos(d),h=o.longestLabelWidth*c,f=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),r&&(e=!1,(h+s.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((h+s.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n<u;n++)i=t[n],(e>1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,i=e.options;if(i.display){var r=e.ctx,u=o.global,d=i.ticks.minor,c=i.ticks.major||d,h=i.gridLines,f=i.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),v=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),m=l.valueOrDefault(d.fontColor,u.defaultFontColor),b=n(d),x=l.valueOrDefault(c.fontColor,u.defaultFontColor),y=n(c),k=h.drawTicks?h.tickMarkLength:0,w=l.valueOrDefault(f.fontColor,u.defaultFontColor),M=n(f),S=l.options.toPadding(f.padding),C=l.toRadians(e.labelRotation),_=[],D="right"===i.position?e.left:e.right-k,I="right"===i.position?e.left+k:e.right,P="bottom"===i.position?e.top:e.bottom-k,A="bottom"===i.position?e.top+k:e.bottom;if(l.each(v,function(n,o){if(!l.isNullOrUndef(n.label)){var r,s,c,f,m=n.label;o===e.zeroLineIndex&&i.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=l.valueAtIndexOrDefault(h.lineWidth,o),s=l.valueAtIndexOrDefault(h.color,o),c=l.valueOrDefault(h.borderDash,u.borderDash),f=l.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var b,x,y,w,M,S,T,F,O,R,L="middle",z="middle",B=d.padding;if(p){var W=k+B;"bottom"===i.position?(z=g?"middle":"top",L=g?"right":"center",R=e.top+W):(z=g?"middle":"bottom",L=g?"left":"center",R=e.bottom-W);var N=a(e,o,h.offsetGridLines&&v.length>1);N<e.left&&(s="rgba(0,0,0,0)"),N+=l.aliasPixel(r),O=e.getPixelForTick(o)+d.labelOffset,b=y=M=T=N,x=P,w=A,S=t.top,F=t.bottom}else{var V,E="left"===i.position;d.mirror?(L=E?"left":"right",V=B):(L=E?"right":"left",V=k+B),O=E?e.right-V:e.left+V;var H=a(e,o,h.offsetGridLines&&v.length>1);H<e.top&&(s="rgba(0,0,0,0)"),H+=l.aliasPixel(r),R=e.getPixelForTick(o)+d.labelOffset,b=D,y=I,M=t.left,T=t.right,x=w=S=F=H}_.push({tx1:b,ty1:x,tx2:y,ty2:w,x1:M,y1:S,x2:T,y2:F,labelX:O,labelY:R,glWidth:r,glColor:s,glBorderDash:c,glBorderDashOffset:f,rotation:-1*C,label:m,major:n.major,textBaseline:z,textAlign:L})}}),l.each(_,function(t){if(h.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),h.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),d.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?y.font:b.font,r.fillStyle=t.major?x:m,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var e=t.label;if(l.isArray(e))for(var n=0,i=0;n<e.length;++n)r.fillText(""+e[n],0,i),i+=1.5*b.size;else r.fillText(e,0,0);r.restore()}}),f.display){var T,F,O=0,R=s(f)/2;if(p)T=e.left+(e.right-e.left)/2,F="bottom"===i.position?e.bottom-R-S.bottom:e.top+R+S.top;else{var L="left"===i.position;T=L?e.left+R+S.top:e.right-R-S.top,F=e.top+(e.bottom-e.top)/2,O=L?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(T,F),r.rotate(O),r.textAlign="center",r.textBaseline="middle",r.fillStyle=w,r.font=M.font,r.fillText(f.labelString,0,0),r.restore()}if(h.drawBorder){r.lineWidth=l.valueAtIndexOrDefault(h.lineWidth,0),r.strokeStyle=l.valueAtIndexOrDefault(h.color,0);var z=e.left,B=e.right,W=e.top,N=e.bottom,V=l.aliasPixel(r.lineWidth);p?(W=N="top"===i.position?e.bottom:e.top,W+=V,N+=V):(z=B="left"===i.position?e.right:e.left,z+=V,B+=V),r.beginPath(),r.moveTo(z,W),r.lineTo(B,N),r.stroke()}}}})}},{25:25,26:26,34:34,45:45}],33:[function(t,e,n){"use strict";var i=t(25),a=t(45);e.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){var n=this;n.defaults.hasOwnProperty(t)&&(n.defaults[t]=a.extend(n.defaults[t],e))},addScalesToLayout:function(e){a.each(e.scales,function(n){n.fullWidth=n.options.fullWidth,n.position=n.options.position,n.weight=n.options.weight,t.layoutService.addBox(e,n)})}}}},{25:25,45:45}],34:[function(t,e,n){"use strict";var i=t(45);e.exports={generators:{linear:function(t,e){var n,a=[];if(t.stepSize&&t.stepSize>0)n=t.stepSize;else{var o=i.niceNum(e.max-e.min,!1);n=i.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/n)*n,l=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(r=t.min,l=t.max);var s=(l-r)/n;s=i.almostEquals(s,Math.round(s),n/1e3)?Math.round(s):Math.ceil(s),a.push(void 0!==t.min?t.min:r);for(var u=1;u<s;++u)a.push(r+u*n);return a.push(void 0!==t.max?t.max:l),a},logarithmic:function(t,e){var n,a,o=[],r=i.valueOrDefault,l=r(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),s=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,s));0===l?(n=Math.floor(i.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),o.push(l),l=a*Math.pow(10,n)):(n=Math.floor(i.log10(l)),a=Math.floor(l/Math.pow(10,n)));do{o.push(l),10===++a&&(a=1,++n),l=a*Math.pow(10,n)}while(n<s||n===s&&a<u);var d=r(t.max,l);return o.push(d),o}},formatters:{values:function(t){return i.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=i.log10(Math.abs(a)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?n=o.xLabel:a>0&&o.index<a&&(n=i[o.index])}return n},afterTitle:o.noop,beforeBody:o.noop,beforeLabel:o.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+=t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:o.noop,afterBody:o.noop,beforeFooter:o.noop,footer:o.noop,afterFooter:o.noop}}}),e.exports=function(t){function e(t,e){var n=o.color(t);return n.alpha(e*n.alpha()).rgbaString()}function n(t,e){return e&&(o.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function r(t){var e=t._xScale,n=t._yScale||t._scale,i=t._index,a=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,a):"",yLabel:n?n.getLabelForIndex(i,a):"",index:i,datasetIndex:a,x:t._model.x,y:t._model.y}}function l(t){var e=i.global,n=o.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function s(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,r=e.body,l=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);l+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=s*d,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=l*c,i+=l?(l-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=o.fontString(d,e._titleFontStyle,e._titleFontFamily),o.each(e.title,g),n.font=o.fontString(c,e._bodyFontStyle,e._bodyFontFamily),o.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,o.each(r,function(t){o.each(t.before,g),o.each(t.lines,g),o.each(t.after,g)}),f=0,n.font=o.fontString(h,e._footerFontStyle,e._footerFontFamily),o.each(e.footer,g),a+=2*e.xPadding,{width:a,height:i}}function u(t,e){var n=t._model,i=t._chart,a=t._chart.chartArea,o="center",r="center";n.y<e.height?r="top":n.y>i.height-e.height&&(r="bottom");var l,s,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===r?(l=function(t){return t<=h},s=function(t){return t>h}):(l=function(t){return t<=e.width/2},s=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},l(n.x)?(o="left",u(n.x)&&(o="center",r=c(n.y))):s(n.x)&&(o="right",d(n.x)&&(o="center",r=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function d(t,e,n){var i=t.x,a=t.y,o=t.caretSize,r=t.caretPadding,l=t.cornerRadius,s=n.xAlign,u=n.yAlign,d=o+r,c=l+r;return"right"===s?i-=e.width:"center"===s&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===s?i+=d:"right"===s&&(i-=d):"left"===s?i-=c:"right"===s&&(i+=c),{x:i,y:a}}t.Tooltip=a.extend({initialize:function(){this._model=l(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options.callbacks,i=e.beforeTitle.apply(t,arguments),a=e.title.apply(t,arguments),o=e.afterTitle.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,r=[];return o.each(t,function(t){var o={before:[],lines:[],after:[]};n(o.before,a.beforeLabel.call(i,t,e)),n(o.lines,a.label.call(i,t,e)),n(o.after,a.afterLabel.call(i,t,e)),r.push(o)}),r},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),o=e.afterFooter.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},update:function(e){var n,i,a=this,c=a._options,h=a._model,f=a._model=l(c),g=a._active,p=a._data,v={xAlign:h.xAlign,yAlign:h.yAlign},m={x:h.x,y:h.y},b={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var y=[],k=[];x=t.Tooltip.positioners[c.position].call(a,g,a._eventPosition);var w=[];for(n=0,i=g.length;n<i;++n)w.push(r(g[n]));c.filter&&(w=w.filter(function(t){return c.filter(t,p)})),c.itemSort&&(w=w.sort(function(t,e){return c.itemSort(t,e,p)})),o.each(w,function(t){y.push(c.callbacks.labelColor.call(a,t,a._chart)),k.push(c.callbacks.labelTextColor.call(a,t,a._chart))}),f.title=a.getTitle(w,p),f.beforeBody=a.getBeforeBody(w,p),f.body=a.getBody(w,p),f.afterBody=a.getAfterBody(w,p),f.footer=a.getFooter(w,p),f.x=Math.round(x.x),f.y=Math.round(x.y),f.caretPadding=c.caretPadding,f.labelColors=y,f.labelTextColors=k,f.dataPoints=w,m=d(f,b=s(this,f),v=u(this,b))}else f.opacity=0;return f.xAlign=v.xAlign,f.yAlign=v.yAlign,f.x=m.x,f.y=m.y,f.width=b.width,f.height=b.height,f.caretX=x.x,f.caretY=x.y,a._model=f,e&&c.custom&&c.custom.call(a,f),a},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,o,r,l,s,u=n.caretSize,d=n.cornerRadius,c=n.xAlign,h=n.yAlign,f=t.x,g=t.y,p=e.width,v=e.height;if("center"===h)l=g+v/2,"left"===c?(a=(i=f)-u,o=i,r=l+u,s=l-u):(a=(i=f+p)+u,o=i,r=l-u,s=l+u);else if("left"===c?(i=(a=f+d+u)-u,o=a+u):"right"===c?(i=(a=f+p-d-u)-u,o=a+u):(i=(a=f+p/2)-u,o=a+u),"top"===h)l=(r=g)-u,s=r;else{l=(r=g+v)+u,s=r;var m=o;o=i,i=m}return{x1:i,x2:a,x3:o,y1:r,y2:l,y3:s}},drawTitle:function(t,n,i,a){var r=n.title;if(r.length){i.textAlign=n._titleAlign,i.textBaseline="top";var l=n.titleFontSize,s=n.titleSpacing;i.fillStyle=e(n.titleFontColor,a),i.font=o.fontString(l,n._titleFontStyle,n._titleFontFamily);var u,d;for(u=0,d=r.length;u<d;++u)i.fillText(r[u],t.x,t.y),t.y+=l+s,u+1===r.length&&(t.y+=n.titleMarginBottom-s)}},drawBody:function(t,n,i,a){var r=n.bodyFontSize,l=n.bodySpacing,s=n.body;i.textAlign=n._bodyAlign,i.textBaseline="top",i.font=o.fontString(r,n._bodyFontStyle,n._bodyFontFamily);var u=0,d=function(e){i.fillText(e,t.x+u,t.y),t.y+=r+l};i.fillStyle=e(n.bodyFontColor,a),o.each(n.beforeBody,d);var c=n.displayColors;u=c?r+2:0,o.each(s,function(l,s){var u=e(n.labelTextColors[s],a);i.fillStyle=u,o.each(l.before,d),o.each(l.lines,function(o){c&&(i.fillStyle=e(n.legendColorBackground,a),i.fillRect(t.x,t.y,r,r),i.lineWidth=1,i.strokeStyle=e(n.labelColors[s].borderColor,a),i.strokeRect(t.x,t.y,r,r),i.fillStyle=e(n.labelColors[s].backgroundColor,a),i.fillRect(t.x+1,t.y+1,r-2,r-2),i.fillStyle=u),d(o)}),o.each(l.after,d)}),u=0,o.each(n.afterBody,d),t.y-=l},drawFooter:function(t,n,i,a){var r=n.footer;r.length&&(t.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=e(n.footerFontColor,a),i.font=o.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),o.each(r,function(e){i.fillText(e,t.x,t.y),t.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,n,i,a,o){i.fillStyle=e(n.backgroundColor,o),i.strokeStyle=e(n.borderColor,o),i.lineWidth=n.borderWidth;var r=n.xAlign,l=n.yAlign,s=t.x,u=t.y,d=a.width,c=a.height,h=n.cornerRadius;i.beginPath(),i.moveTo(s+h,u),"top"===l&&this.drawCaret(t,a),i.lineTo(s+d-h,u),i.quadraticCurveTo(s+d,u,s+d,u+h),"center"===l&&"right"===r&&this.drawCaret(t,a),i.lineTo(s+d,u+c-h),i.quadraticCurveTo(s+d,u+c,s+d-h,u+c),"bottom"===l&&this.drawCaret(t,a),i.lineTo(s+h,u+c),i.quadraticCurveTo(s,u+c,s,u+c-h),"center"===l&&"left"===r&&this.drawCaret(t,a),i.lineTo(s,u+h),i.quadraticCurveTo(s,u,s+h,u),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),!(i=!o.arrayEquals(e._active,e._lastActive)))return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,o=0;for(e=0,n=t.length;e<n;++e){var r=t[e];if(r&&r.hasValue()){var l=r.tooltipPosition();i+=l.x,a+=l.y,++o}}return{x:Math.round(i/o),y:Math.round(a/o)}},nearest:function(t,e){var n,i,a,r=e.x,l=e.y,s=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),c=o.distanceBetweenPoints(e,d);c<s&&(s=c,a=u)}}if(a){var h=a.tooltipPosition();r=h.x,l=h.y}return{x:r,y:l}}}}},{25:25,26:26,45:45}],36:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var i=o.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,r=i.distance,l=n.startAngle,s=n.endAngle;s<l;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<l;)a+=2*Math.PI;var u=a>=l&&a<=s,d=r>=n.innerRadius&&r<=n.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45),r=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this,l=a._view,s=a._chart.ctx,u=l.spanGaps,d=a._children.slice(),c=r.elements.line,h=-1;for(a._loop&&d.length&&d.push(d[0]),s.save(),s.lineCap=l.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(l.borderDash||c.borderDash),s.lineDashOffset=l.borderDashOffset||c.borderDashOffset,s.lineJoin=l.borderJoinStyle||c.borderJoinStyle,s.lineWidth=l.borderWidth||c.borderWidth,s.strokeStyle=l.borderColor||r.defaultColor,s.beginPath(),h=-1,t=0;t<d.length;++t)e=d[t],n=o.previousItem(d,t),i=e._view,0===t?i.skip||(s.moveTo(i.x,i.y),h=t):(n=-1===h?n:d[h],i.skip||(h!==t-1&&!u||-1===h?s.moveTo(i.x,i.y):o.canvas.lineTo(s,n._view,e._view),h=t));s.stroke(),s.restore()}})},{25:25,26:26,45:45}],38:[function(t,e,n){"use strict";function i(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2)}var a=t(25),o=t(26),r=t(45),l=a.global.defaultColor;a._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:l,borderColor:l,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=o.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:i,inXRange:i,inYRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.y,2)<Math.pow(e.radius+e.hitRadius,2)},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._model,i=this._chart.ctx,o=e.pointStyle,s=e.radius,u=e.x,d=e.y,c=r.color,h=0;e.skip||(i.strokeStyle=e.borderColor||l,i.lineWidth=r.valueOrDefault(e.borderWidth,a.global.elements.point.borderWidth),i.fillStyle=e.backgroundColor||l,void 0!==t&&(n.x<t.left||1.01*t.right<n.x||n.y<t.top||1.01*t.bottom<n.y)&&(n.x<t.left?h=(u-n.x)/(t.left-n.x):1.01*t.right<n.x?h=(n.x-u)/(n.x-t.right):n.y<t.top?h=(d-n.y)/(t.top-n.y):1.01*t.bottom<n.y&&(h=(n.y-d)/(n.y-t.bottom)),h=Math.round(100*h)/100,i.strokeStyle=c(i.strokeStyle).alpha(h).rgbString(),i.fillStyle=c(i.fillStyle).alpha(h).rgbString()),r.canvas.drawPoint(i,o,s,u,d))}})},{25:25,26:26,45:45}],39:[function(t,e,n){"use strict";function i(t){return void 0!==t._view.width}function a(t){var e,n,a,o,r=t._view;if(i(t)){var l=r.width/2;e=r.x-l,n=r.x+l,a=Math.min(r.y,r.base),o=Math.max(r.y,r.base)}else{var s=r.height/2;e=Math.min(r.x,r.base),n=Math.max(r.x,r.base),a=r.y-s,o=r.y+s}return{left:e,top:a,right:n,bottom:o}}var o=t(25),r=t(26);o._set("global",{elements:{rectangle:{backgroundColor:o.global.defaultColor,borderColor:o.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=r.extend({draw:function(){function t(t){return m[(b+t)%4]}var e,n,i,a,o,r,l,s=this._chart.ctx,u=this._view,d=u.borderWidth;if(u.horizontal?(e=u.base,n=u.x,i=u.y-u.height/2,a=u.y+u.height/2,o=n>e?1:-1,r=1,l=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,o=1,r=(a=u.base)>i?1:-1,l=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a)),h=(d=d>c?c:d)/2,f=e+("left"!==l?h*o:0),g=n+("right"!==l?-h*o:0),p=i+("top"!==l?h*r:0),v=a+("bottom"!==l?-h*r:0);f!==g&&(i=p,a=v),p!==v&&(e=f,n=g)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=d;var m=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"].indexOf(l,0);-1===b&&(b=0);var x=t(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=t(y),s.lineTo(x[0],x[1]);s.fill(),d&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=a(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){var n=this;if(!n._view)return!1;var o=a(n);return i(n)?t>=o.left&&t<=o.right:e>=o.top&&e<=o.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,n){"use strict";var i=t(42),n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,o){if(o){var r=Math.min(o,i/2),l=Math.min(o,a/2);t.moveTo(e+r,n),t.lineTo(e+i-r,n),t.quadraticCurveTo(e+i,n,e+i,n+l),t.lineTo(e+i,n+a-l),t.quadraticCurveTo(e+i,n+a,e+i-r,n+a),t.lineTo(e+r,n+a),t.quadraticCurveTo(e,n+a,e,n+a-l),t.lineTo(e,n+l),t.quadraticCurveTo(e,n,e+r,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a){var o,r,l,s,u,d;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,a,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-r/2,a+u/3),t.lineTo(i+r/2,a+u/3),t.lineTo(i,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-d,a-d,2*d,2*d),t.strokeRect(i-d,a-d,2*d,2*d);break;case"rectRounded":var c=n/Math.SQRT2,h=i-c,f=a-c,g=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,g,g,n/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-d,a),t.lineTo(i,a+d),t.lineTo(i+d,a),t.lineTo(i,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"crossRot":t.beginPath(),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,a),t.lineTo(i+n,a),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments),t.closePath()}},{42:42}],42:[function(t,e,n){"use strict";var i={noop:function(){},uid:function(){var t=0;return function(){return t++}}(),isNullOrUndef:function(t){return null===t||void 0===t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return i.valueOrDefault(i.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var o,r,l;if(i.isArray(t))if(r=t.length,a)for(o=r-1;o>=0;o--)e.call(n,t[o],o);else for(o=0;o<r;o++)e.call(n,t[o],o);else if(i.isObject(t))for(r=(l=Object.keys(t)).length,o=0;o<r;o++)e.call(n,t[l[o]],l[o])},arrayEquals:function(t,e){var n,a,o,r;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(o=t[n],r=e[n],o instanceof Array&&r instanceof Array){if(!i.arrayEquals(o,r))return!1}else if(o!==r)return!1;return!0},clone:function(t){if(i.isArray(t))return t.map(i.clone);if(i.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,o=0;o<a;++o)e[n[o]]=i.clone(t[n[o]]);return e}return t},_merger:function(t,e,n,a){var o=e[t],r=n[t];i.isObject(o)&&i.isObject(r)?i.merge(o,r,a):e[t]=i.clone(r)},_mergerIf:function(t,e,n){var a=e[t],o=n[t];i.isObject(a)&&i.isObject(o)?i.mergeIf(a,o):e.hasOwnProperty(t)||(e[t]=i.clone(o))},merge:function(t,e,n){var a,o,r,l,s,u=i.isArray(e)?e:[e],d=u.length;if(!i.isObject(t))return t;for(a=(n=n||{}).merger||i._merger,o=0;o<d;++o)if(e=u[o],i.isObject(e))for(s=0,l=(r=Object.keys(e)).length;s<l;++s)a(r[s],t,e,n);return t},mergeIf:function(t,e){return i.merge(t,e,{merger:i._mergerIf})},extend:function(t){for(var e=1,n=arguments.length;e<n;++e)i.each(arguments[e],function(e,n){t[n]=e});return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=i.inherits,t&&i.extend(n.prototype,t),n.__super__=e.prototype,n}};e.exports=i,i.callCallback=i.callback,i.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},i.getValueOrDefault=i.valueOrDefault,i.getValueAtIndexOrDefault=i.valueAtIndexOrDefault},{}],43:[function(t,e,n){"use strict";var i=t(42),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{42:42}],44:[function(t,e,n){"use strict";var i=t(42);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,o;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=n=a=o=+t||0,{top:e,right:n,bottom:a,left:o,height:e+a,width:o+n}},resolve:function(t,e,n){var a,o,r;for(a=0,o=t.length;a<o;++a)if(void 0!==(r=t[a])&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==n&&i.isArray(r)&&(r=r[n]),void 0!==r))return r}}},{42:42}],45:[function(t,e,n){"use strict";e.exports=t(42),e.exports.easing=t(43),e.exports.canvas=t(41),e.exports.options=t(44)},{41:41,42:42,43:43,44:44}],46:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],47:[function(t,e,n){"use strict";function i(t,e){var n=v.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}function a(t,e){var n=t.style,a=t.getAttribute("height"),o=t.getAttribute("width");if(t[m]={initial:{height:a,width:o,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===o||""===o){var r=i(t,"width");void 0!==r&&(t.width=r)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var l=i(t,"height");void 0!==r&&(t.height=l)}return t}function o(t,e,n){t.addEventListener(e,n,M)}function r(t,e,n){t.removeEventListener(e,n,M)}function l(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function s(t,e){var n=w[t.type]||t.type,i=v.getRelativePosition(t,e);return l(n,e,i.x,i.y,t)}function u(t,e){var n=!1,i=[];return function(){i=Array.prototype.slice.call(arguments),e=e||this,n||(n=!0,v.requestAnimFrame.call(window,function(){n=!1,t.apply(e,i)}))}}function d(t){var e=document.createElement("div"),n=b+"size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var l=function(){e._reset(),t()};return o(a,"scroll",l.bind(a,"expand")),o(r,"scroll",l.bind(r,"shrink")),e}function c(t,e){var n=t[m]||(t[m]={}),i=n.renderProxy=function(t){t.animationName===y&&e()};v.each(k,function(e){o(t,e,i)}),n.reflow=!!t.offsetParent,t.classList.add(x)}function h(t){var e=t[m]||{},n=e.renderProxy;n&&(v.each(k,function(e){r(t,e,n)}),delete e.renderProxy),t.classList.remove(x)}function f(t,e,n){var i=t[m]||(t[m]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(l("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[m]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function p(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var v=t(45),m="$chartjs",b="chartjs-",x=b+"render-monitor",y=b+"render-animation",k=["animationstart","webkitAnimationStart"],w={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},M=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";p(this,"@-webkit-keyframes "+y+"{"+t+"}@keyframes "+y+"{"+t+"}."+x+"{-webkit-animation:"+y+" 0.001s;animation:"+y+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[m]){var n=e[m].initial;["height","width"].forEach(function(t){var i=n[t];v.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),v.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[m]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[m]||(n[m]={});o(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(s(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[m]||{}).proxies||{})[t.id+"_"+e];a&&r(i,e,a)}else g(i)}},v.addEvent=o,v.removeEvent=r},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(i=parseFloat(o,10),isFinite(i)&&Math.floor(i)===i)return"-"!==o[0]&&"+"!==o[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?o=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?o=n.scaleZero:i.getBasePosition?o=i.getBasePosition():i.getBasePixel&&(o=i.getBasePixel()),void 0!==o&&null!==o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return e=i.isHorizontal(),{x:e?o:null,y:e?null:o}}return null}function n(t,e,n){var i,a=t[e].fill,o=[e];if(!n)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;o.push(a),a=i.fill}return!1}function r(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function l(t){return t&&!t.skip}function s(t,e,n,i,a){var r;if(i&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r<i;++r)o.canvas.lineTo(t,e[r-1],e[r]);for(t.lineTo(n[a-1].x,n[a-1].y),r=a-1;r>0;--r)o.canvas.lineTo(t,n[r],n[r-1],!0)}}function u(t,e,n,i,a,o){var r,u,d,c,h,f,g,p=e.length,v=i.spanGaps,m=[],b=[],x=0,y=0;for(t.beginPath(),r=0,u=p+!!o;r<u;++r)h=n(c=e[d=r%p]._view,d,i),f=l(c),g=l(h),f&&g?(x=m.push(c),y=b.push(h)):x&&y&&(v?(f&&m.push(c),g&&b.push(h)):(s(t,m,b,x,y),x=y=0,m=[],b=[]));s(t,m,b,x,y),t.closePath(),t.fillStyle=a,t.fill()}var d={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};return{id:"filler",afterDatasetsUpdate:function(i,o){var l,s,u,d,c=(i.data.datasets||[]).length,h=o.propagate,f=[];for(s=0;s<c;++s)d=null,(u=(l=i.getDatasetMeta(s)).dataset)&&u._model&&u instanceof a.Line&&(d={visible:i.isDatasetVisible(s),fill:t(u,s,c),chart:i,el:u}),l.$filler=d,f.push(d);for(s=0;s<c;++s)(d=f[s])&&(d.fill=n(f,s,h),d.boundary=e(d),d.mapper=r(d))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,l=r._view,s=r._children||[],d=n.mapper,c=l.backgroundColor||i.global.defaultColor;d&&c&&s.length&&(o.canvas.clipArea(a,t.chartArea),u(a,s,d,l,c,r._loop),o.canvas.unclipArea(a))}}}}},{25:25,40:40,45:45}],50:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return o.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:o.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});r.configure(e,i,n),r.addBox(e,i),e.legend=i}var r=t.layoutService,l=o.noop;return t.Legend=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:l,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:l,beforeSetDimensions:l,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:l,beforeBuildLabels:l,buildLabels:function(){var t=this,e=t.options.labels||{},n=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:l,beforeFit:l,fit:function(){var t=this,n=t.options,a=n.labels,r=n.display,l=t.ctx,s=i.global,u=o.valueOrDefault,d=u(a.fontSize,s.defaultFontSize),c=u(a.fontStyle,s.defaultFontStyle),h=u(a.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,v=t.isHorizontal();if(v?(p.width=t.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=t.maxHeight),r)if(l.font=f,v){var m=t.lineWidths=[0],b=t.legendItems.length?d+a.padding:0;l.textAlign="left",l.textBaseline="top",o.each(t.legendItems,function(n,i){var o=e(a,d)+d/2+l.measureText(n.text).width;m[m.length-1]+o+a.padding>=t.width&&(b+=d+a.padding,m[m.length]=t.left),g[i]={left:0,top:0,width:o,height:d},m[m.length-1]+=o+a.padding}),p.height+=b}else{var x=a.padding,y=t.columnWidths=[],k=a.padding,w=0,M=0,S=d+x;o.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+l.measureText(t.text).width;M+S>p.height&&(k+=w+a.padding,y.push(w),w=0,M=0),w=Math.max(w,i),M+=S,g[n]={left:0,top:0,width:i,height:d}}),k+=w,y.push(w),p.width+=k}t.width=p.width,t.height=p.height},afterFit:l,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,r=i.global,l=r.elements.line,s=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(a.fontColor,r.defaultFontColor),g=h(a.fontSize,r.defaultFontSize),p=h(a.fontStyle,r.defaultFontStyle),v=h(a.fontFamily,r.defaultFontFamily),m=o.fontString(g,p,v);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=m;var b=e(a,g),x=t.legendHitBoxes,y=function(t,e,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,l.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,l.borderDashOffset),c.lineJoin=h(i.lineJoin,l.borderJoinStyle),c.lineWidth=h(i.lineWidth,l.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var a=0===h(i.lineWidth,l.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,l.borderDash)),n.labels&&n.labels.usePointStyle){var s=g*Math.SQRT2/2,u=s/Math.SQRT2,d=t+u,f=e+u;o.canvas.drawPoint(c,i.pointStyle,s,d,f)}else a||c.strokeRect(t,e,b,g),c.fillRect(t,e,b,g);c.restore()}},k=function(t,e,n,i){var a=g/2,o=b+a+t,r=e+a;c.fillText(n.text,o,r),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(o,r),c.lineTo(o+i,r),c.stroke())},w=t.isHorizontal();d=w?{x:t.left+(s-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var M=g+a.padding;o.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,o=b+g/2+i,r=d.x,l=d.y;w?r+o>=s&&(l=d.y+=M,d.line++,r=d.x=t.left+(s-u[d.line])/2):l+M>t.bottom&&(r=d.x=r+t.columnWidths[d.line]+a.padding,l=d.y=t.top+a.padding,d.line++),y(r,l,e),x[n].left=r,x[n].top=l,k(r,l,e,i),w?d.x+=o+a.padding:d.y+=M})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var l=e.legendHitBoxes,s=0;s<l.length;++s){var u=l[s];if(o>=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[s]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[s]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(o.mergeIf(e,i.global.legend),a?(r.configure(t,a,e),a.options=e):n(t,e)):a&&(r.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,r=o.noop;return t.Title=a.extend({initialize:function(t){var e=this;o.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:r,afterBuildLabels:r,beforeFit:r,fit:function(){var t=this,e=o.valueOrDefault,n=t.options,a=n.display,r=e(n.fontSize,i.global.defaultFontSize),l=t.minSize,s=o.isArray(n.text)?n.text.length:1,u=o.options.toLineHeight(n.lineHeight,r),d=a?s*u+2*n.padding:0;t.isHorizontal()?(l.width=t.maxWidth,l.height=d):(l.width=d,l.height=t.maxHeight),t.width=l.width,t.height=l.height},afterFit:r,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=o.valueOrDefault,a=t.options,r=i.global;if(a.display){var l,s,u,d=n(a.fontSize,r.defaultFontSize),c=n(a.fontStyle,r.defaultFontStyle),h=n(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,v=0,m=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=n(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(s=b+(y-b)/2,u=m+p,l=y-b):(s="left"===a.position?b+p:y-p,u=m+(x-m)/2,l=x-m,v=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(s,u),e.rotate(v),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var w=0,M=0;M<k.length;++M)e.fillText(k[M],0,w,l),w+=g;else e.fillText(k,0,0,l);e.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var r=a.options.title,l=a.titleBlock;r?(o.mergeIf(r,i.global.title),l?(n.configure(a,l,r),l.options=r):e(a,r)):l&&(t.layoutService.removeBox(a,l),delete a.titleBlock)}}}},{25:25,26:26,45:45}],52:[function(t,e,n){"use strict";e.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,e=t.getLabels();t.minIndex=0,t.maxIndex=e.length-1;var n;void 0!==t.options.ticks.min&&(n=e.indexOf(t.options.ticks.min),t.minIndex=-1!==n?n:t.minIndex),void 0!==t.options.ticks.max&&(n=e.indexOf(t.options.ticks.max),t.maxIndex=-1!==n?n:t.maxIndex),t.min=e[t.minIndex],t.max=e[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,o=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(void 0!==t&&null!==t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var r=i.getLabels();t=n||t;var l=r.indexOf(t);e=-1!==l?l:e}if(i.isHorizontal()){var s=i.width/o,u=s*(e-i.minIndex);return a&&(u+=s/2),i.left+Math.round(u)}var d=i.height/o,c=d*(e-i.minIndex);return a&&(c+=d/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",e,{position:"bottom"})}},{}],53:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return r?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,i=e.chart,o=i.data.datasets,r=e.isHorizontal();e.min=null,e.max=null;var l=n.stacked;if(void 0===l&&a.each(o,function(e,n){if(!l){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&t(a)&&void 0!==a.stack&&(l=!0)}}),n.stacked||l){var s={};a.each(o,function(o,r){var l=i.getDatasetMeta(r),u=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");void 0===s[u]&&(s[u]={positiveValues:[],negativeValues:[]});var d=s[u].positiveValues,c=s[u].negativeValues;i.isDatasetVisible(r)&&t(l)&&a.each(o.data,function(t,i){var a=+e.getRightValue(t);isNaN(a)||l.data[i].hidden||(d[i]=d[i]||0,c[i]=c[i]||0,n.relativePoints?d[i]=100:a<0?c[i]+=a:d[i]+=a)})}),a.each(s,function(t){var n=t.positiveValues.concat(t.negativeValues),i=a.min(n),o=a.max(n);e.min=null===e.min?i:Math.min(e.min,i),e.max=null===e.max?o:Math.max(e.max,o)})}else a.each(o,function(n,o){var r=i.getDatasetMeta(o);i.isDatasetVisible(o)&&t(r)&&a.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var o=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*o)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),o=n.end-i;return n.isHorizontal()?(e=n.left+n.width/o*(a-i),Math.round(e)):(e=n.bottom-n.height/o*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),o={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=a.generators.linear(o,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,o=e.chart,r=o.data.datasets,l=i.valueOrDefault,s=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(r,function(e,n){if(!u){var i=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(r,function(a,r){var l=o.getDatasetMeta(r),s=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");o.isDatasetVisible(r)&&t(l)&&(void 0===d[s]&&(d[s]=[]),i.each(a.data,function(t,i){var a=d[s],o=+e.getRightValue(t);isNaN(o)||l.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=o)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(r,function(n,a){var r=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(r)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i),0!==i&&(null===e.minNotZero||i<e.minNotZero)&&(e.minNotZero=i))})});e.min=l(a.min,e.min),e.max=l(a.max,e.max),e.min===e.max&&(0!==e.min&&null!==e.min?(e.min=Math.pow(10,Math.floor(i.log10(e.min))-1),e.max=Math.pow(10,Math.floor(i.log10(e.max))+1)):(e.min=1,e.max=10))},buildTicks:function(){var t=this,e=t.options.ticks,n={min:e.min,max:e.max},o=t.ticks=a.generators.logarithmic(n,t);t.isHorizontal()||o.reverse(),t.max=i.max(o),t.min=i.min(o),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},getPixelForValue:function(t){var e,n,a,o=this,r=o.start,l=+o.getRightValue(t),s=o.options.ticks;return o.isHorizontal()?(a=i.log10(o.end)-i.log10(r),0===l?n=o.left:(e=o.width,n=o.left+e/a*(i.log10(l)-i.log10(r)))):(e=o.height,0!==r||s.reverse?0===o.end&&s.reverse?(a=i.log10(o.start)-i.log10(o.minNotZero),n=l===o.end?o.top:l===o.minNotZero?o.top+.02*e:o.top+.02*e+.98*e/a*(i.log10(l)-i.log10(o.minNotZero))):0===l?n=s.reverse?o.top:o.bottom:(a=i.log10(o.end)-i.log10(r),e=o.height,n=o.bottom-e/a*(i.log10(l)-i.log10(r))):(a=i.log10(o.end)-i.log10(o.minNotZero),n=l===r?o.bottom:l===o.minNotZero?o.bottom-.02*e:o.bottom-.02*e-.98*e/a*(i.log10(l)-i.log10(o.minNotZero)))),n},getValueForPixel:function(t){var e,n,a=this,o=i.log10(a.end)-i.log10(a.start);return a.isHorizontal()?(n=a.width,e=a.start*Math.pow(10,(t-a.left)*o/n)):(n=a.height,e=Math.pow(10,(a.bottom-t)*o/n)/a.start),e}});t.scaleService.registerScaleType("logarithmic",n,e)}},{34:34,45:45}],56:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){function e(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function n(t){var e=t.options.pointLabels,n=a.valueOrDefault(e.fontSize,v.defaultFontSize),i=a.valueOrDefault(e.fontStyle,v.defaultFontStyle),o=a.valueOrDefault(e.fontFamily,v.defaultFontFamily);return{size:n,style:i,family:o,font:a.fontString(n,i,o)}}function r(t,e,n){return a.isArray(n)?{w:a.longestText(t,t.font,n),h:n.length*e+1.5*(n.length-1)*e}:{w:t.measureText(n).width,h:e}}function l(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function s(t){var i,o,s,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;i<f;i++){s=t.getPointPosition(i,d),o=r(t.ctx,u.size,t.pointLabels[i]||""),t._pointLabelSizes[i]=o;var g=t.getIndexAngle(i),p=a.toDegrees(g)%360,v=l(p,s.x,o.w,0,180),m=l(p,s.y,o.h,90,270);v.start<c.l&&(c.l=v.start,h.l=g),v.end>c.r&&(c.r=v.end,h.r=g),m.start<c.t&&(c.t=m.start,h.t=g),m.end>c.b&&(c.b=m.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var o=n.y,r=1.5*i,l=0;l<e.length;++l)t.fillText(e[l],n.x,o),o+=r;else t.fillText(e,n.x,n.y)}function h(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,o=a.valueOrDefault,r=t.options,l=r.angleLines,s=r.pointLabels;i.lineWidth=l.lineWidth,i.strokeStyle=l.color;var u=t.getDistanceFromCenterForValue(r.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(l.display){var p=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(p.x,p.y),i.stroke(),i.closePath()}if(s.display){var m=t.getPointPosition(g,u+5),b=o(s.fontColor,v.defaultFontColor);i.font=f.font,i.fillStyle=b;var x=t.getIndexAngle(g),y=a.toDegrees(x);i.textAlign=d(y),h(y,t._pointLabelSizes[g],m),c(i,t.pointLabels[g]||"",m,f.size)}}}function g(t,n,i,o){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(n.color,o-1),r.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,o-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var l=e(t);if(0===l)return;r.beginPath();var s=t.getPointPosition(0,i);r.moveTo(s.x,s.y);for(var u=1;u<l;u++)s=t.getPointPosition(u,i),r.lineTo(s.x,s.y);r.closePath(),r.stroke()}}function p(t){return a.isNumber(t)?t:0}var v=i.global,m={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}},b=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=a.min([t.height,t.width]),o=a.valueOrDefault(n.fontSize,v.defaultFontSize);t.drawingArea=e.display?i/2-(o/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(o,r){if(e.isDatasetVisible(r)){var l=e.getDatasetMeta(r);a.each(o.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||l.data[a].hidden||(n=Math.min(o,n),i=Math.max(o,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=a.valueOrDefault(t.fontSize,v.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){this.options.pointLabels.display?s(this):u(this)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),o=Math.max(e.r-i.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),l=-Math.max(e.b-i.height,0)/Math.cos(n.b);a=p(a),o=p(o),r=p(r),l=p(l),i.drawingArea=Math.min(Math.round(t-(a+o)/2),Math.round(t-(r+l)/2)),i.setCenterPoint(a,o,r,l)},setCenterPoint:function(t,e,n,i){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,l=n+a.drawingArea,s=a.height-i-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((l+s)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/e(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this,i=n.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+n.xCenter,y:Math.round(Math.sin(i)*e)+n.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,n=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,o=a.valueOrDefault;if(e.display){var r=t.ctx,l=this.getIndexAngle(0),s=o(i.fontSize,v.defaultFontSize),u=o(i.fontStyle,v.defaultFontStyle),d=o(i.fontFamily,v.defaultFontFamily),c=a.fontString(s,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=o(i.fontColor,v.defaultFontColor);if(r.font=c,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(l),i.showLabelBackdrop){var h=r.measureText(e).width;r.fillStyle=i.backdropColor,r.fillRect(-h/2-i.backdropPaddingX,-u-s/2-i.backdropPaddingY,h+2*i.backdropPaddingX,s+2*i.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=d,r.fillText(e,0,-u),r.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",b,m)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},o=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,o.push(i));return o}function o(t,e,n,i){if("linear"===i||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,o,r,l,s,u=[],d=[e];for(a=0,o=t.length;a<o;++a)(l=t[a])>e&&l<n&&d.push(l);for(d.push(n),a=0,o=d.length;a<o;++a)s=d[a+1],r=d[a-1],l=d[a],void 0!==r&&void 0!==s&&Math.round((s+r)/2)===l||u.push({time:l,pos:a/(o-1)});return u}function r(t,e,n){for(var i,a,o,r=0,l=t.length-1;r>=0&&r<=l;){if(i=r+l>>1,a=t[i-1]||null,o=t[i],!a)return{lo:null,hi:o};if(o[e]<n)r=i+1;else{if(!(a[e]>n))return{lo:a,hi:o};l=i-1}}return{lo:o,hi:null}}function l(t,e,n,i){var a=r(t,e,n),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],l=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=l[e]-o[e],u=s?(n-o[e])/s:0,d=(l[i]-o[i])*u;return o[i]+d}function s(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?m(t,i):(t instanceof m||(t=m(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(x.isNullOrUndef(t))return null;var n=e.options.time,i=s(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,o,r,l=e-t,s=w[n],u=s.size,d=s.steps;if(!d)return Math.ceil(l/((i||1)*u));for(a=0,o=d.length;a<o&&(r=d[a],!(Math.ceil(l/(u*r))<=i));++a);return r}function c(t,e,n,i){var a,o,r,l=M.length;for(a=M.indexOf(t);a<l-1;++a)if(o=w[M[a]],r=o.steps?o.steps[o.steps.length-1]:k,o.common&&Math.ceil((n-e)/(r*o.size))<=i)return M[a];return M[l-1]}function h(t,e,n,i){var a,o,r=m.duration(m(i).diff(m(n)));for(a=M.length-1;a>=M.indexOf(e);a--)if(o=M[a],w[o].common&&r.as(o)>=t.length)return o;return M[e?M.indexOf(e):0]}function f(t){for(var e=M.indexOf(t)+1,n=M.length;e<n;++e)if(w[M[e]].common)return M[e]}function g(t,e,n,i){var a,o=i.time,r=o.unit||c(o.minUnit,t,e,n),l=f(r),s=x.valueOrDefault(o.stepSize,o.unitStepSize),u="week"===r&&o.isoWeekday,h=i.ticks.major.enabled,g=w[r],p=m(t),v=m(e),b=[];for(s||(s=d(t,e,r,n)),u&&(p=p.isoWeekday(u),v=v.isoWeekday(u)),p=p.startOf(u?"day":r),(v=v.startOf(u?"day":r))<e&&v.add(1,r),a=m(p),h&&l&&!u&&!o.round&&(a.startOf(l),a.add(~~((p-a)/(g.size*s))*s,r));a<v;a.add(s,r))b.push(+a);return b.push(+a),b}function p(t,e,n,i,a){var o,r,s=0,u=0;return a.offset&&e.length&&(a.time.min||(o=e.length>1?e[1]:i,r=e[0],s=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2),a.time.max||(o=e[e.length-1],r=e.length>1?e[e.length-2]:n,u=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2)),{left:s,right:u}}function v(t,e){var n,i,a,o,r=[];for(n=0,i=t.length;n<i;++n)a=t[n],o=!!e&&a===+m(a).startOf(e),r.push({value:a,major:o});return r}var m=t(1);m="function"==typeof m?m:window.moment;var b=t(25),x=t(45),y=Number.MIN_SAFE_INTEGER||-9007199254740991,k=Number.MAX_SAFE_INTEGER||9007199254740991,w={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},M=Object.keys(w);e.exports=function(t){var e=t.Scale.extend({initialize:function(){if(!m)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),t.Scale.prototype.initialize.call(this)},update:function(){var e=this,n=e.options;return n.time&&n.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),t.Scale.prototype.update.apply(e,arguments)},getRightValue:function(e){return e&&void 0!==e.t&&(e=e.t),t.Scale.prototype.getRightValue.call(this,e)},determineDataLimits:function(){var t,e,n,o,r,l,s=this,d=s.chart,c=s.options.time,h=k,f=y,g=[],p=[],v=[];for(t=0,n=d.data.labels.length;t<n;++t)v.push(u(d.data.labels[t],s));for(t=0,n=(d.data.datasets||[]).length;t<n;++t)if(d.isDatasetVisible(t))if(r=d.data.datasets[t].data,x.isObject(r[0]))for(p[t]=[],e=0,o=r.length;e<o;++e)l=u(r[e],s),g.push(l),p[t][e]=l;else g.push.apply(g,v),p[t]=v.slice(0);else p[t]=[];v.length&&(v=a(v).sort(i),h=Math.min(h,v[0]),f=Math.max(f,v[v.length-1])),g.length&&(g=a(g).sort(i),h=Math.min(h,g[0]),f=Math.max(f,g[g.length-1])),h=u(c.min,s)||h,f=u(c.max,s)||f,h=h===k?+m().startOf("day"):h,f=f===y?+m().endOf("day")+1:f,s.min=Math.min(h,f),s.max=Math.max(h+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:g,datasets:p,labels:v}},buildTicks:function(){var t,e,n,i=this,a=i.min,r=i.max,l=i.options,s=l.time,d=[],c=[];switch(l.ticks.source){case"data":d=i._timestamps.data;break;case"labels":d=i._timestamps.labels;break;case"auto":default:d=g(a,r,i.getLabelCapacity(a),l)}for("ticks"===l.bounds&&d.length&&(a=d[0],r=d[d.length-1]),a=u(s.min,i)||a,r=u(s.max,i)||r,t=0,e=d.length;t<e;++t)(n=d[t])>=a&&n<=r&&c.push(n);return i.min=a,i.max=r,i._unit=s.unit||h(c,s.minUnit,i.min,i.max),i._majorUnit=f(i._unit),i._table=o(i._timestamps.data,a,r,l.distribution),i._offsets=p(i._table,c,a,r,l),v(c,i._majorUnit)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,o=i.labels&&t<i.labels.length?i.labels[t]:"",r=i.datasets[e].data[t];return x.isObject(r)&&(o=n.getRightValue(r)),a.tooltipFormat&&(o=s(o,a).format(a.tooltipFormat)),o},tickFormatFunction:function(t,e,n,i){var a=this,o=a.options,r=t.valueOf(),l=o.time.displayFormats,s=l[a._unit],u=a._majorUnit,d=l[u],c=t.clone().startOf(u).valueOf(),h=o.ticks.major,f=h.enabled&&u&&d&&r===c,g=t.format(i||(f?d:s)),p=f?h:o.ticks.minor,v=x.valueOrDefault(p.callback,p.userCallback);return v?v(g,e,n):g},convertTicksToLabels:function(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(this.tickFormatFunction(m(t[e].value),e,t));return i},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=l(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=this,a=null;if(void 0!==e&&void 0!==n&&(a=i._timestamps.datasets[n][e]),null===a&&(a=u(t,i)),null!==a)return i.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=(n?(t-i)/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=l(e._table,"pos",a,"time");return m(o)},getLabelWidth:function(t){var e=this,n=e.options.ticks,i=e.ctx.measureText(t).width,a=x.toRadians(n.maxRotation),o=Math.cos(a),r=Math.sin(a);return i*o+x.valueOrDefault(n.fontSize,b.global.defaultFontSize)*r},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,i=e.tickFormatFunction(m(t),0,[],n),a=e.getLabelWidth(i),o=e.isHorizontal()?e.width:e.height;return Math.floor(o/a)}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,25:25,45:45}]},{},[7])(7)});
20
 
21
 
22
- /* ================== admin/assets/js/src/plugins/jquery.vmap.min.js =================== */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
 
25
  /*!
26
- * JQVMap: jQuery Vector Map Library
27
- * @author JQVMap <me@peterschmalfeldt.com>
28
- * @version 1.5.1
29
- * @link http://jqvmap.com
30
- * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE
31
- * @builddate 2016/05/18
32
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
- var VectorCanvas=function(a,b,c){if(this.mode=window.SVGAngle?"svg":"vml",this.params=c,"svg"===this.mode)this.createSvgNode=function(a){return document.createElementNS(this.svgns,a)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(a){return document.createElement("<rvml:"+a+' class="rvml">')}}catch(d){this.createVmlNode=function(a){return document.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"===this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(a,b)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){a&&this.setColors(a),b&&this.setNormalizeFunction(b),c&&this.setMin(c),c&&this.setMax(d)};ColorScale.prototype={colors:[]};var JQVMap=function(a){a=a||{};var b,c=this,d=JQVMap.maps[a.map];if(!d)throw new Error('Invalid "'+a.map+'" map parameter. Please make sure you have loaded this map file in your HTML.');this.selectedRegions=[],this.multiSelectRegion=a.multiSelectRegion,this.container=a.container,this.defaultWidth=d.width,this.defaultHeight=d.height,this.color=a.color,this.selectedColor=a.selectedColor,this.hoverColor=a.hoverColor,this.hoverColors=a.hoverColors,this.hoverOpacity=a.hoverOpacity,this.setBackgroundColor(a.backgroundColor),this.width=a.container.width(),this.height=a.container.height(),this.resize(),jQuery(window).resize(function(){var d=a.container.width(),e=a.container.height();if(d&&e){c.width=d,c.height=e,c.resize(),c.canvas.setSize(c.width,c.height),c.applyTransform();var f=jQuery.Event("resize.jqvmap");jQuery(a.container).trigger(f,[d,e]),b&&(jQuery(".jqvmap-pin").remove(),c.pinHandlers=!1,c.placePins(b.pins,b.mode))}}),this.canvas=new VectorCanvas(this.width,this.height,a),a.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=JQVMap.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")).hide(),a.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(a.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("&#x2212;").appendTo(a.container)),c.countries=[];for(var e in d.paths){var f=this.canvas.createPath({path:d.paths[e].path});f.setFill(this.color),f.id=c.getCountryId(e),c.countries[e]=f,"svg"===this.canvas.mode?f.setAttribute("class","jqvmap-region"):jQuery(f).addClass("jqvmap-region"),jQuery(this.rootGroup).append(f)}if(jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","mouseover mouseout",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("labelShow.jqvmap"),h=jQuery.Event("regionMouseOver.jqvmap");f=f.toLowerCase(),"mouseover"===b.type?(jQuery(a.container).trigger(h,[f,d.paths[f].name]),h.isDefaultPrevented()||c.highlight(f,e),a.showTooltip&&(c.label.text(d.paths[f].name),jQuery(a.container).trigger(g,[c.label,f]),g.isDefaultPrevented()||(c.label.show(),c.labelWidth=c.label.width(),c.labelHeight=c.label.height()))):(c.unhighlight(f,e),c.label.hide(),jQuery(a.container).trigger("regionMouseOut.jqvmap",[f,d.paths[f].name]))}),jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","click",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("regionClick.jqvmap");if(f=f.toLowerCase(),jQuery(a.container).trigger(g,[f,d.paths[f].name]),!a.multiSelectRegion&&!g.isDefaultPrevented())for(var h in d.paths)c.countries[h].currentFillColor=c.countries[h].getOriginalFill(),c.countries[h].setFill(c.countries[h].getOriginalFill());g.isDefaultPrevented()||(c.isSelected(f)?c.deselect(f,e):c.select(f,e))}),a.showTooltip&&a.container.mousemove(function(a){if(c.label.is(":visible")){var b=a.pageX-15-c.labelWidth,d=a.pageY-15-c.labelHeight;0>b&&(b=a.pageX+15),0>d&&(d=a.pageY+15),c.label.css({left:b,top:d})}}),this.setColors(a.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new ColorScale(a.scaleColors,a.normalizeFunction,a.valueMin,a.valueMax),a.values&&(this.values=a.values,this.setValues(a.values)),a.selectedRegions)if(a.selectedRegions instanceof Array)for(var g in a.selectedRegions)this.select(a.selectedRegions[g].toLowerCase());else this.select(a.selectedRegions.toLowerCase());if(this.bindZoomButtons(),a.pins&&(b={pins:a.pins,mode:a.pinMode},this.pinHandlers=!1,this.placePins(a.pins,a.pinMode)),a.showLabels){this.pinHandlers=!1;var h={};for(e in c.countries)"function"!=typeof c.countries[e]&&(a.pins&&a.pins[e]||(h[e]=e.toUpperCase()));b={pins:h,mode:"content"},this.placePins(h,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1},JQVMap.xlink="http://www.w3.org/1999/xlink",JQVMap.mapIndex=1,JQVMap.maps={},function(){var a={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},b={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var d={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},e=this.data("mapObject");if("addMap"===c)JQVMap.maps[arguments[1]]=arguments[2];else{if("set"!==c||!a[arguments[1]]){if("string"==typeof c&&"function"==typeof e[c])return e[c].apply(e,Array.prototype.slice.call(arguments,1));jQuery.extend(d,c),d.container=this,this.css({position:"relative",overflow:"hidden"}),e=new JQVMap(d),this.data("mapObject",e),this.unbind(".jqvmap");for(var f in b)d[f]&&this.bind(b[f]+".jqvmap",d[f]);var g=jQuery.Event("load.jqvmap");return jQuery(d.container).trigger(g,e),e}e["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(e,Array.prototype.slice.call(arguments,2))}}}(jQuery),ColorScale.arrayToRgb=function(a){for(var b,c="#",d=0;d<a.length;d++)b=a[d].toString(16),c+=1===b.length?"0"+b:b;return c},ColorScale.prototype.getColor=function(a){"function"==typeof this.normalize&&(a=this.normalize(a));for(var b,c=[],d=0,e=0;e<this.colors.length-1;e++)b=this.vectorLength(this.vectorSubtract(this.colors[e+1],this.colors[e])),c.push(b),d+=b;var f=(this.maxValue-this.minValue)/d;for(e=0;e<c.length;e++)c[e]*=f;for(e=0,a-=this.minValue;a-c[e]>=0;)a-=c[e],e++;var g;for(g=e===this.colors.length-1?this.vectorToNum(this.colors[e]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[e],this.vectorMult(this.vectorSubtract(this.colors[e+1],this.colors[e]),a/c[e]))).toString(16);g.length<6;)g="0"+g;return"#"+g},ColorScale.rgbToArray=function(a){return a=a.substr(1),[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]},ColorScale.prototype.setColors=function(a){for(var b=0;b<a.length;b++)a[b]=ColorScale.rgbToArray(a[b]);this.colors=a},ColorScale.prototype.setMax=function(a){this.clearMaxValue=a,"function"==typeof this.normalize?this.maxValue=this.normalize(a):this.maxValue=a},ColorScale.prototype.setMin=function(a){this.clearMinValue=a,"function"==typeof this.normalize?this.minValue=this.normalize(a):this.minValue=a},ColorScale.prototype.setNormalizeFunction=function(a){"polynomial"===a?this.normalize=function(a){return Math.pow(a,.2)}:"linear"===a?delete this.normalize:this.normalize=a,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},ColorScale.prototype.vectorAdd=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]+b[d];return c},ColorScale.prototype.vectorLength=function(a){for(var b=0,c=0;c<a.length;c++)b+=a[c]*a[c];return Math.sqrt(b)},ColorScale.prototype.vectorMult=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]*b;return c},ColorScale.prototype.vectorSubtract=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]-b[d];return c},ColorScale.prototype.vectorToNum=function(a){for(var b=0,c=0;c<a.length;c++)b+=Math.round(a[c])*Math.pow(256,a.length-c-1);return b},JQVMap.prototype.applyTransform=function(){var a,b,c,d;this.defaultWidth*this.scale<=this.width?(a=(this.width-this.defaultWidth*this.scale)/(2*this.scale),c=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(a=0,c=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(b=(this.height-this.defaultHeight*this.scale)/(2*this.scale),d=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(b=0,d=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>b?this.transY=b:this.transY<d&&(this.transY=d),this.transX>a?this.transX=a:this.transX<c&&(this.transX=c),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},JQVMap.prototype.bindZoomButtons=function(){var a=this;this.container.find(".jqvmap-zoomin").click(function(){a.zoomIn()}),this.container.find(".jqvmap-zoomout").click(function(){a.zoomOut()})},JQVMap.prototype.deselect=function(a,b){if(a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a))this.selectedRegions.splice(this.selectIndex(a),1),jQuery(this.container).trigger("regionDeselect.jqvmap",[a]),b.currentFillColor=b.getOriginalFill(),b.setFill(b.getOriginalFill());else for(var c in this.countries)this.selectedRegions.splice(this.selectedRegions.indexOf(c),1),this.countries[c].currentFillColor=this.color,this.countries[c].setFill(this.color)},JQVMap.prototype.getCountryId=function(a){return"jqvmap"+this.index+"_"+a},JQVMap.prototype.getPin=function(a){var b=jQuery("#"+this.getPinId(a));return b.html()},JQVMap.prototype.getPinId=function(a){return this.getCountryId(a)+"_pin"},JQVMap.prototype.getPins=function(){var a=this.container.find(".jqvmap-pin"),b={};return jQuery.each(a,function(a,c){c=jQuery(c);var d=c.attr("for").toLowerCase(),e=c.html();b[d]=e}),JSON.stringify(b)},JQVMap.prototype.highlight=function(a,b){b=b||jQuery("#"+this.getCountryId(a))[0],this.hoverOpacity?b.setOpacity(this.hoverOpacity):this.hoverColors&&a in this.hoverColors?(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColors[a])):this.hoverColor&&(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColor))},JQVMap.prototype.isSelected=function(a){return this.selectIndex(a)>=0},JQVMap.prototype.makeDraggable=function(){var a,b,c=!1,d=this;d.isMoving=!1,d.isMovingTimeout=!1;var e,f,g,h,i,j,k;this.container.mousemove(function(e){return c&&(d.transX-=(a-e.pageX)/d.scale,d.transY-=(b-e.pageY)/d.scale,d.applyTransform(),a=e.pageX,b=e.pageY,d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout),d.container.trigger("drag")),!1}).mousedown(function(d){return c=!0,a=d.pageX,b=d.pageY,!1}).mouseup(function(){return c=!1,clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){d.isMoving=!1},100),!1}).mouseout(function(){return c&&d.isMoving?(clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){c=!1,d.isMoving=!1},100),!1):void 0}),jQuery(this.container).bind("touchmove",function(a){var b,c,l,m,n=a.originalEvent.touches;if(1===n.length){if(1===e){if(j===n[0].pageX&&k===n[0].pageY)return;l=d.transX,m=d.transY,d.transX-=(j-n[0].pageX)/d.scale,d.transY-=(k-n[0].pageY)/d.scale,d.applyTransform(),(l!==d.transX||m!==d.transY)&&a.preventDefault(),d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout)}j=n[0].pageX,k=n[0].pageY}else 2===n.length&&(2===e?(c=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))/h,d.setScale(i*c,f,g),a.preventDefault()):(b=jQuery(d.container).offset(),f=n[0].pageX>n[1].pageX?n[1].pageX+(n[0].pageX-n[1].pageX)/2:n[0].pageX+(n[1].pageX-n[0].pageX)/2,g=n[0].pageY>n[1].pageY?n[1].pageY+(n[0].pageY-n[1].pageY)/2:n[0].pageY+(n[1].pageY-n[0].pageY)/2,f-=b.left,g-=b.top,i=d.scale,h=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))));e=n.length}),jQuery(this.container).bind("touchstart",function(){e=0}),jQuery(this.container).bind("touchend",function(){e=0})},JQVMap.prototype.placePins=function(a,b){var c=this;if((!b||"content"!==b&&"id"!==b)&&(b="content"),"content"===b?jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute">'+b+"</div>")}}):jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute"></div>'),e.append(jQuery("#"+b))}}),this.positionPins(),!this.pinHandlers){this.pinHandlers=!0;var d=function(){c.positionPins()};this.container.bind("zoomIn",d).bind("zoomOut",d).bind("drag",d)}},JQVMap.prototype.positionPins=function(){var a=this,b=this.container.find(".jqvmap-pin");jQuery.each(b,function(b,c){c=jQuery(c);var d=a.getCountryId(c.attr("for").toLowerCase()),e=jQuery("#"+d),f=document.getElementById(d).getBBox(),g=e.position(),h=a.scale,i=g.left+f.width/2*h-c.width()/2,j=g.top+f.height/2*h-c.height()/2;c.css("left",i).css("top",j)})},JQVMap.prototype.removePin=function(a){a=a.toLowerCase(),jQuery("#"+this.getPinId(a)).remove()},JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()},JQVMap.prototype.reset=function(){for(var a in this.countries)this.countries[a].setFill(this.color);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},JQVMap.prototype.resize=function(){var a=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/a,this.transX*=this.baseScale/a,this.transY*=this.baseScale/a},JQVMap.prototype.select=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a)||(this.multiSelectRegion?this.selectedRegions.push(a):this.selectedRegions=[a],jQuery(this.container).trigger("regionSelect.jqvmap",[a]),this.selectedColor&&b&&(b.currentFillColor=this.selectedColor,b.setFill(this.selectedColor)))},JQVMap.prototype.selectIndex=function(a){a=a.toLowerCase();for(var b=0;b<this.selectedRegions.length;b++)if(a===this.selectedRegions[b])return b;return-1},JQVMap.prototype.setBackgroundColor=function(a){this.container.css("background-color",a)},JQVMap.prototype.setColors=function(a,b){if("string"==typeof a)this.countries[a].setFill(b),this.countries[a].setAttribute("original",b);else{var c=a;for(var d in c)this.countries[d]&&(this.countries[d].setFill(c[d]),this.countries[d].setAttribute("original",c[d]))}},JQVMap.prototype.setNormalizeFunction=function(a){this.colorScale.setNormalizeFunction(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setScale=function(a){this.scale=a,this.applyTransform()},JQVMap.prototype.setScaleColors=function(a){this.colorScale.setColors(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setValues=function(a){var b,c=0,d=Number.MAX_VALUE;for(var e in a)e=e.toLowerCase(),b=parseFloat(a[e]),isNaN(b)||(b>c&&(c=a[e]),d>b&&(d=b));d===c&&c++,this.colorScale.setMin(d),this.colorScale.setMax(c);var f={};for(e in a)e=e.toLowerCase(),b=parseFloat(a[e]),f[e]=isNaN(b)?this.color:this.colorScale.getColor(b);this.setColors(f),this.values=a},JQVMap.prototype.unhighlight=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],b.setOpacity(1),b.currentFillColor&&b.setFill(b.currentFillColor)},JQVMap.prototype.zoomIn=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep<a.zoomMaxStep){a.transX-=(a.width/a.scale-a.width/(a.scale*a.zoomStep))/2,a.transY-=(a.height/a.scale-a.height/(a.scale*a.zoomStep))/2,a.setScale(a.scale*a.zoomStep),a.zoomCurStep++;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)-b),a.container.trigger("zoomIn")}},JQVMap.prototype.zoomOut=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep>1){a.transX+=(a.width/(a.scale/a.zoomStep)-a.width/a.scale)/2,a.transY+=(a.height/(a.scale/a.zoomStep)-a.height/a.scale)/2,a.setScale(a.scale/a.zoomStep),a.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+b),a.container.trigger("zoomOut")}},VectorCanvas.prototype.applyTransformParams=function(a,b,c){"svg"===this.mode?this.rootGroup.setAttribute("transform","scale("+a+") translate("+b+", "+c+")"):(this.rootGroup.coordorigin=this.width-b+","+(this.height-c),this.rootGroup.coordsize=this.width/a+","+this.height/a)},VectorCanvas.prototype.createGroup=function(a){var b;return"svg"===this.mode?b=this.createSvgNode("g"):(b=this.createVmlNode("group"),b.style.width=this.width+"px",b.style.height=this.height+"px",b.style.left="0px",b.style.top="0px",b.coordorigin="0 0",b.coordsize=this.width+" "+this.height),a&&(this.rootGroup=b),b},VectorCanvas.prototype.createPath=function(a){var b;if("svg"===this.mode)b=this.createSvgNode("path"),b.setAttribute("d",a.path),null!==this.params.borderColor&&b.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(b.setAttribute("stroke-width",this.params.borderWidth),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&b.setAttribute("stroke-opacity",this.params.borderOpacity),b.setFill=function(a){this.setAttribute("fill",a),null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getAttribute("fill")},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.setAttribute("fill-opacity",a)};else{b=this.createVmlNode("shape"),b.coordorigin="0 0",b.coordsize=this.width+" "+this.height,b.style.width=this.width+"px",b.style.height=this.height+"px",b.fillcolor=JQVMap.defaultFillColor,b.stroked=!1,b.path=VectorCanvas.pathSvgToVml(a.path);var c=this.createVmlNode("skew");c.on=!0,c.matrix="0.01,0,0,0.01,0,0",c.offset="0,0",b.appendChild(c);var d=this.createVmlNode("fill");b.appendChild(d),b.setFill=function(a){this.getElementsByTagName("fill")[0].color=a,null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getElementsByTagName("fill")[0].color},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.getElementsByTagName("fill")[0].opacity=parseInt(100*a,10)+"%"}}return b},VectorCanvas.prototype.pathSvgToVml=function(a){var b,c,d="",e=0,f=0;return a.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(a,g,h){h=h.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","),h[0]||h.shift();for(var i=0,j=h.length;j>i;i++)h[i]=Math.round(100*h[i]);switch(g){case"m":e+=h[0],f+=h[1],d="t"+h.join(",");break;case"M":e=h[0],f=h[1],d="m"+h.join(",");break;case"l":e+=h[0],f+=h[1],d="r"+h.join(",");break;case"L":e=h[0],f=h[1],d="l"+h.join(",");break;case"h":e+=h[0],d="r"+h[0]+",0";break;case"H":e=h[0],d="l"+e+","+f;break;case"v":f+=h[0],d="r0,"+h[0];break;case"V":f=h[0],d="l"+e+","+f;break;case"c":b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"C":b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",");break;case"s":h.unshift(f-c),h.unshift(e-b),b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"S":h.unshift(f+f-c),h.unshift(e+e-b),b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",")}return d}).replace(/z/g,"")},VectorCanvas.prototype.setSize=function(a,b){if("svg"===this.mode)this.canvas.setAttribute("width",a),this.canvas.setAttribute("height",b);else if(this.canvas.style.width=a+"px",this.canvas.style.height=b+"px",this.canvas.coordsize=a+" "+b,this.canvas.coordorigin="0 0",this.rootGroup){for(var c=this.rootGroup.getElementsByTagName("shape"),d=0,e=c.length;e>d;d++)c[d].coordsize=a+" "+b,c[d].style.width=a+"px",c[d].style.height=b+"px";this.rootGroup.coordsize=a+" "+b,this.rootGroup.style.width=a+"px",this.rootGroup.style.height=b+"px"}this.width=a,this.height=b};
35
-
36
-
37
- /* ================== admin/assets/js/src/plugins/maps/jquery.vmap.world.js =================== */
38
-
39
-
40
- /** Add World Map Data Points */
41
- jQuery.fn.vectorMap('addMap', 'world_en', {"width":950,"height":550,"paths":{"id":{"path":"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z","name":"Indonesia"},"pg":{"path":"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z","name":"Papua New Guinea"},"mx":{"path":"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z","name":"Mexico"},"ee":{"path":"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z","name":"Estonia"},"dz":{"path":"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z","name":"Algeria"},"ma":{"path":"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z","name":"Morocco"},"mr":{"path":"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z","name":"Mauritania"},"sn":{"path":"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z","name":"Senegal"},"gm":{"path":"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z","name":"Gambia"},"gw":{"path":"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z","name":"Guinea-Bissau"},"gn":{"path":"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z","name":"Guinea"},"sl":{"path":"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z","name":"Sierra Leone"},"lr":{"path":"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z","name":"Liberia"},"ci":{"path":"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z","name":"Cote d'Ivoire"},"ml":{"path":"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z","name":"Mali"},"bf":{"path":"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z","name":"Burkina Faso"},"ne":{"path":"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z","name":"Niger"},"gh":{"path":"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z","name":"Ghana"},"tg":{"path":"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z","name":"Togo"},"bj":{"path":"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z","name":"Benin"},"ng":{"path":"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z","name":"Nigeria"},"tn":{"path":"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z","name":"Tunisia"},"ly":{"path":"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z","name":"Libya"},"eg":{"path":"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z","name":"Egypt"},"td":{"path":"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z","name":"Chad"},"sd":{"path":"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z","name":"Sudan"},"cm":{"path":"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z","name":"Cameroon"},"er":{"path":"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z","name":"Eritrea"},"dj":{"path":"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z","name":"Djibouti"},"et":{"path":"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z","name":"Ethiopia"},"so":{"path":"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z","name":"Somalia"},"ye":{"path":"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z","name":"Yemen"},"cf":{"path":"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z","name":"Central African Republic"},"st":{"path":"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z","name":"Sao Tome and Principe"},"gq":{"path":"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z","name":"Equatorial Guinea"},"ga":{"path":"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z","name":"Gabon"},"cg":{"path":"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z","name":"Congo"},"ao":{"path":"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z","name":"Angola"},"cd":{"path":"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z","name":"Congo"},"rw":{"path":"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z","name":"Rwanda"},"bi":{"path":"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z","name":"Burundi"},"ug":{"path":"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z","name":"Uganda"},"ke":{"path":"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z","name":"Kenya"},"tz":{"path":"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z","name":"Tanzania"},"zm":{"path":"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z","name":"Zambia"},"mw":{"path":"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z","name":"Malawi"},"mz":{"path":"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z","name":"Mozambique"},"zw":{"path":"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z","name":"Zimbabwe"},"na":{"path":"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z","name":"Namibia"},"bw":{"path":"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z","name":"Botswana"},"sz":{"path":"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z","name":"Swaziland"},"ls":{"path":"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z","name":"Lesotho"},"za":{"path":"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z","name":"South Africa"},"gl":{"path":"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z","name":"Greenland"},"au":{"path":"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z","name":"Australia"},"nz":{"path":"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z","name":"New Zealand"},"nc":{"path":"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z","name":"New Caledonia"},"my":{"path":"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z","name":"Malaysia"},"bn":{"path":"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z","name":"Brunei Darussalam"},"tl":{"path":"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z","name":"Timor-Leste"},"sb":{"path":"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z","name":"Solomon Islands"},"vu":{"path":"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z","name":"Vanuatu"},"fj":{"path":"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z","name":"Fiji"},"ph":{"path":"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z","name":"Philippines"},"cn":{"path":"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z","name":"China"},"tw":{"path":"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z","name":"Taiwan"},"jp":{"path":"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z","name":"Japan"},"ru":{"path":"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z","name":"Russian Federation"},"us":{"path":"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z","name":"United States of America"},"mu":{"path":"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z","name":"Mauritius"},"re":{"path":"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z","name":"Reunion"},"mg":{"path":"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z","name":"Madagascar"},"km":{"path":"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z","name":"Comoros"},"sc":{"path":"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z","name":"Seychelles"},"mv":{"path":"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z","name":"Maldives"},"pt":{"path":"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z","name":"Portugal"},"es":{"path":"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z","name":"Spain"},"cv":{"path":"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z","name":"Cape Verde"},"pf":{"path":"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z","name":"French Polynesia"},"kn":{"path":"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z","name":"Saint Kitts and Nevis"},"ag":{"path":"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z","name":"Antigua and Barbuda"},"dm":{"path":"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z","name":"Dominica"},"lc":{"path":"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z","name":"Saint Lucia"},"bb":{"path":"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z","name":"Barbados"},"gd":{"path":"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z","name":"Grenada"},"tt":{"path":"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z","name":"Trinidad and Tobago"},"do":{"path":"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z","name":"Dominican Republic"},"ht":{"path":"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z","name":"Haiti"},"fk":{"path":"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z","name":"Falkland Islands"},"is":{"path":"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z","name":"Iceland"},"no":{"path":"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z","name":"Norway"},"lk":{"path":"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z","name":"Sri Lanka"},"cu":{"path":"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z","name":"Cuba"},"bs":{"path":"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z","name":"Bahamas"},"jm":{"path":"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z","name":"Jamaica"},"ec":{"path":"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z","name":"Ecuador"},"ca":{"path":"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z","name":"Canada"},"gt":{"path":"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z","name":"Guatemala"},"hn":{"path":"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z","name":"Honduras"},"sv":{"path":"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z","name":"El Salvador"},"ni":{"path":"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z","name":"Nicaragua"},"cr":{"path":"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z","name":"Costa Rica"},"pa":{"path":"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z","name":"Panama"},"co":{"path":"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z","name":"Colombia"},"ve":{"path":"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z","name":"Venezuela"},"gy":{"path":"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z","name":"Guyana"},"sr":{"path":"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z","name":"Suriname"},"gf":{"path":"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z","name":"French Guiana"},"pe":{"path":"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z","name":"Peru"},"bo":{"path":"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z","name":"Bolivia"},"py":{"path":"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z","name":"Paraguay"},"uy":{"path":"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z","name":"Uruguay"},"ar":{"path":"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z","name":"Argentina"},"cl":{"path":"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z","name":"Chile"},"br":{"path":"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z","name":"Brazil"},"bz":{"path":"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z","name":"Belize"},"mn":{"path":"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z","name":"Mongolia"},"kp":{"path":"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z","name":"North Korea"},"kr":{"path":"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z","name":"South Korea"},"kz":{"path":"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z","name":"Kazakhstan"},"tm":{"path":"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z","name":"Turkmenistan"},"uz":{"path":"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z","name":"Uzbekistan"},"tj":{"path":"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z","name":"Tajikistan"},"kg":{"path":"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z","name":"Kyrgyz Republic"},"af":{"path":"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z","name":"Afghanistan"},"pk":{"path":"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z","name":"Pakistan"},"in":{"path":"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z","name":"India"},"np":{"path":"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z","name":"Nepal"},"bt":{"path":"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z","name":"Bhutan"},"bd":{"path":"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z","name":"Bangladesh"},"mm":{"path":"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z","name":"Myanmar"},"th":{"path":"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z","name":"Thailand"},"kh":{"path":"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z","name":"Cambodia"},"la":{"path":"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z","name":"Lao People's Democratic Republic"},"vn":{"path":"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z","name":"Vietnam"},"ge":{"path":"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z","name":"Georgia"},"am":{"path":"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z","name":"Armenia"},"az":{"path":"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z","name":"Azerbaijan"},"ir":{"path":"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z","name":"Iran"},"tr":{"path":"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z","name":"Turkey"},"om":{"path":"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z","name":"Oman"},"ae":{"path":"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z","name":"United Arab Emirates"},"qa":{"path":"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z","name":"Qatar"},"kw":{"path":"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z","name":"Kuwait"},"sa":{"path":"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z","name":"Saudi Arabia"},"sy":{"path":"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z","name":"Syrian Arab Republic"},"iq":{"path":"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z","name":"Iraq"},"jo":{"path":"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z","name":"Jordan"},"lb":{"path":"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z","name":"Lebanon"},"il":{"path":"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z","name":"Israel"},"cy":{"path":"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z","name":"Cyprus"},"gb":{"path":"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z","name":"United Kingdom"},"ie":{"path":"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z","name":"Ireland"},"se":{"path":"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z","name":"Sweden"},"fi":{"path":"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z","name":"Finland"},"lv":{"path":"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z","name":"Latvia"},"lt":{"path":"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z","name":"Lithuania"},"by":{"path":"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z","name":"Belarus"},"pl":{"path":"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z","name":"Poland"},"it":{"path":"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z","name":"Italy"},"fr":{"path":"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z","name":"France"},"nl":{"path":"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z","name":"Netherlands"},"be":{"path":"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z","name":"Belgium"},"de":{"path":"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z","name":"Germany"},"dk":{"path":"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z","name":"Denmark"},"ch":{"path":"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z","name":"Switzerland"},"cz":{"path":"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z","name":"Czech Republic"},"sk":{"path":"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z","name":"Slovakia"},"at":{"path":"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z","name":"Austria"},"hu":{"path":"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z","name":"Hungary"},"si":{"path":"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z","name":"Slovenia"},"hr":{"path":"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z","name":"Croatia"},"ba":{"path":"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z","name":"Bosnia and Herzegovina"},"mt":{"path":"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z","name":"Malta"},"ua":{"path":"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z","name":"Ukraine"},"md":{"path":"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z","name":"Moldova"},"ro":{"path":"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z","name":"Romania"},"rs":{"path":"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z","name":"Serbia"},"bg":{"path":"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z","name":"Bulgaria"},"al":{"path":"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z","name":"Albania"},"mk":{"path":"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z","name":"Macedonia"},"gr":{"path":"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z","name":"Greece"}}});
42
-
43
-
44
- /* ================== admin/assets/js/src/scripts.js =================== */
45
-
46
-
47
- (function( $ ) {
48
-
49
- $('.wp_ulike_delete').click(function(e) {
50
- e.preventDefault();
51
- var parent = $(this).closest('tr');
52
- var value = $(this).data('id');
53
- var table = $(this).data('table');
54
- var nonce = $(this).data('nonce');
55
- var r = confirm(wp_ulike_logs.message);
56
- if (r === true) {
57
- jQuery.ajax({
58
- type:'POST',
59
- url: wp_ulike_logs.ajaxurl,
60
- data:{
61
- action:'ulikelogs',
62
- id : value,
63
- nonce : nonce,
64
- table : table
65
- },
66
- beforeSend:function(){
67
- parent.css("background-color","#fff59d");
68
- },
69
- success: function( response ) {
70
- if( response.success ) {
71
- parent.fadeOut(300);
72
- } else {
73
- parent.css("background-color","#ef9a9a");
74
- }
75
- }
76
- });
77
- }
78
- });
79
-
80
- if ( typeof wp_ulike_statistics === "undefined" ) return;
81
-
82
- var posts_dataset_var = JSON.parse(wp_ulike_statistics.posts_dataset);
83
- var comments_dataset_var = JSON.parse(wp_ulike_statistics.comments_dataset);
84
- var activities_dataset_var = JSON.parse(wp_ulike_statistics.activities_dataset);
85
- var topics_dataset_var = JSON.parse(wp_ulike_statistics.topics_dataset);
86
- var world_map_data = JSON.parse(wp_ulike_statistics.data_map);
87
- var activities_dataset_sum = 0;
88
- var topics_dataset_sum = 0;
89
- var comments_dataset_sum = 0;
90
- var posts_dataset_sum = 0;
91
- //posts dataset
92
- if(posts_dataset_var !== null){
93
- for (var postNum = 0; postNum < posts_dataset_var.length; postNum++) {
94
- posts_dataset_sum += parseInt(posts_dataset_var[postNum]);
95
- }
96
- var posts_date = {
97
- labels : JSON.parse(wp_ulike_statistics.posts_date_labels),
98
- datasets : [
99
- {
100
- label: "Liked Posts",
101
- data : posts_dataset_var,
102
- backgroundColor: "rgba(66, 165, 245,0.8)",
103
- borderColor: "rgba(21, 101, 192,1)",
104
- pointBackgroundColor: "rgba(255,255,255,1)",
105
- borderWidth: 1
106
- }
107
- ]
108
- };
109
- }
110
-
111
- //comments dataset
112
- if(comments_dataset_var !== null){
113
- for (var commentNum = 0; commentNum < comments_dataset_var.length; commentNum++) {
114
- comments_dataset_sum += parseInt(comments_dataset_var[commentNum]);
115
- }
116
- var comments_date = {
117
- labels : JSON.parse(wp_ulike_statistics.comments_date_labels),
118
- datasets : [
119
- {
120
- label: "Liked Comments",
121
- data : comments_dataset_var,
122
- backgroundColor : "rgba(255, 202, 40,0.8)",
123
- borderColor : "rgba(255, 143, 0,1)",
124
- pointBackgroundColor: "rgba(255,255,255,1)",
125
- borderWidth: 1
126
-
127
- }
128
- ]
129
- };
130
- }
131
-
132
-
133
- //activities dataset
134
- if(activities_dataset_var !== null){
135
- for (var activityNum = 0; activityNum < activities_dataset_var.length; activityNum++) {
136
- activities_dataset_sum += parseInt(activities_dataset_var[activityNum]);
137
- }
138
- var activities_date = {
139
- labels : JSON.parse(wp_ulike_statistics.activities_date_labels),
140
- datasets : [
141
- {
142
- label: "Liked Activities",
143
- data : activities_dataset_var,
144
- backgroundColor: "rgba(239, 83, 80,0.8)",
145
- borderColor: "rgba(198, 40, 40,1)",
146
- pointBackgroundColor: "rgba(255,255,255,1)",
147
- borderWidth: 1
148
- }
149
- ]
150
- };
151
- }
152
-
153
- //Topics dataset
154
- if(topics_dataset_var !== null){
155
- for (var topicNum = 0; topicNum < topics_dataset_var.length; topicNum++) {
156
- topics_dataset_sum += parseInt(topics_dataset_var[topicNum]);
157
- }
158
- var topics_date = {
159
- labels : JSON.parse(wp_ulike_statistics.topics_date_labels),
160
- datasets : [
161
- {
162
- label: "Liked Topics",
163
- data : topics_dataset_var,
164
- backgroundColor: "rgba(102, 187, 106,0.8)",
165
- borderColor: "rgba(27, 94, 32,1)",
166
- pointBackgroundColor: "rgba(255,255,255,1)",
167
- borderWidth: 1
168
- }
169
- ]
170
- };
171
- }
172
-
173
- var pieData = {
174
- datasets: [{
175
- data: [
176
- posts_dataset_sum,
177
- comments_dataset_sum,
178
- activities_dataset_sum,
179
- topics_dataset_sum
180
- ],
181
- backgroundColor: [
182
- "#42a5f5",
183
- "#ffca28",
184
- "#F7464A",
185
- "#66bb6a",
186
- ],
187
- }],
188
-
189
- // These labels appear in the legend and in the tooltips when hovering different arcs
190
- labels: [
191
- 'Posts',
192
- 'Comments',
193
- 'Activities',
194
- 'Topics',
195
- ]
196
- };
197
-
198
-
199
- var postsChart = document.getElementById('chart1');
200
- var commentsChart = document.getElementById('chart2');
201
- var activitiesChart = document.getElementById('chart3');
202
- var topicsChart = document.getElementById('chart4');
203
- var allocationChart = document.getElementById('piechart');
204
-
205
- if ( postsChart !== null ) {
206
- if( posts_dataset_var !== null ){
207
- var ctx1 = postsChart.getContext("2d");
208
- postsChart = new Chart(ctx1, {
209
- // The type of chart we want to create
210
- type: 'line',
211
- // The data for our dataset
212
- data: posts_date
213
- });
214
- }else{
215
- document.getElementById("posts_likes_stats").getElementsByClassName("main")[0].innerHTML = "No Data Found!";
216
- }
217
- }
218
-
219
- if ( commentsChart !== null ) {
220
- if( comments_dataset_var !== null ){
221
- var ctx2 = commentsChart.getContext("2d");
222
- commentsChart = new Chart(ctx2, {
223
- // The type of chart we want to create
224
- type: 'line',
225
- // The data for our dataset
226
- data: comments_date
227
- });
228
- }else{
229
- document.getElementById("comments_likes_stats").getElementsByClassName("main")[0].innerHTML = "No Data Found!";
230
- }
231
- }
232
-
233
- if ( activitiesChart !== null ) {
234
- if( activities_dataset_var !== null ){
235
- var ctx3 = activitiesChart.getContext("2d");
236
- activitiesChart = new Chart(ctx3, {
237
- // The type of chart we want to create
238
- type: 'line',
239
- // The data for our dataset
240
- data: activities_date
241
- });
242
- }else{
243
- document.getElementById("activities_likes_stats").getElementsByClassName("main")[0].innerHTML = "No Data Found!";
244
- }
245
- }
246
-
247
- if ( topicsChart !== null ) {
248
- if( topics_dataset_var !== null ){
249
- var ctx4 = topicsChart.getContext("2d");
250
- topicsChart = new Chart(ctx4, {
251
- // The type of chart we want to create
252
- type: 'line',
253
- // The data for our dataset
254
- data: topics_date
255
- });
256
- }else{
257
- document.getElementById("topics_likes_stats").getElementsByClassName("main")[0].innerHTML = "No Data Found!";
258
- }
259
- }
260
-
261
- if( allocationChart !== null ) {
262
- if( activities_dataset_var !== null || topics_dataset_var !== null || comments_dataset_var || null && posts_dataset_var || null ){
263
- var ctx5 = allocationChart.getContext("2d");
264
- allocationChart = new Chart(ctx5, {
265
- // The type of chart we want to create
266
- type: 'pie',
267
- // The data for our dataset
268
- data: pieData
269
- });
270
- }else{
271
- document.getElementById("piechart_stats").getElementsByClassName("main")[0].innerHTML = "No Data Found!";
272
- }
273
- }
274
-
275
- jQuery('#vmap').vectorMap({
276
- map : 'world_en',
277
- backgroundColor : '#333333',
278
- color : '#ffffff',
279
- hoverOpacity : 0.7,
280
- selectedColor : '#666666',
281
- enableZoom : true,
282
- showTooltip : true,
283
- values : world_map_data,
284
- scaleColors : ['#C8EEFF', '#006491'],
285
- normalizeFunction : 'polynomial',
286
- onLabelShow : function (event, label, code) {
287
- if(world_map_data[code] > 0) {
288
- label.append(': '+world_map_data[code]+' Users');
289
- }
290
- }
291
- });
292
-
293
- postboxes.save_state = function(){
294
- return;
295
- };
296
- postboxes.save_order = function(){
297
- return;
298
- };
299
- postboxes.add_postbox_toggles();
300
-
301
- })( jQuery );
1
+ /*! WP ULike - v3.5.0
2
  * https://wpulike.com
3
  * Alimir 2018;
4
  */
19
  !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n||t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;r<i.length;r++)a(i[r]);return a}({1:[function(t,e,n){},{}],2:[function(t,e,n){function i(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3})$/i);if(i){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i[a]+i[a],16)}else if(i=t.match(/^#([a-fA-F0-9]{6})$/i)){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i.slice(2*a,2*a+2),16)}else if(i=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(i[a+1]);n=parseFloat(i[4])}else if(i=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(i[a+1]));n=parseFloat(i[4])}else if(i=t.match(/(\w+)/)){if("transparent"==i[1])return[0,0,0,0];if(!(e=c[i[1]]))return}for(var a=0;a<e.length;a++)e[a]=u(e[a],0,255);return n=n||0==n?u(n,0,1):1,e[3]=n,e}}function a(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function r(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function u(t,e,n){return Math.min(Math.max(e,t),n)}function d(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var c=t(6);e.exports={getRgba:i,getHsla:a,getRgb:function(t){var e=i(t);return e&&e.slice(0,3)},getHsl:function(t){var e=a(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=i(t);return e?e[3]:(e=a(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+d(t[0])+d(t[1])+d(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?r(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:r,percentString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:l,hslString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:s,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return h[t.slice(0,3)]}};var h={};for(var f in c)h[c[f]]=f},{6:6}],3:[function(t,e,n){var i=t(5),a=t(2),o=function(t){if(t instanceof o)return t;if(!(this instanceof o))return new o(t);this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;"string"==typeof t?(e=a.getRgba(t))?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e))};o.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,o=2*a-1,r=n.alpha()-i.alpha(),l=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*n.red()+s*i.red(),l*n.green()+s*i.green(),l*n.blue()+s*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},o.prototype.setValues=function(t,e){var n,a=this.values,o=this.spaces,r=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)a[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[o[t][0]]){var s=o[t];for(n=0;n<t.length;n++)a[t][n]=e[s[n]];l=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===l?a.alpha:l)),"alpha"===t)return!1;var u;for(n=0;n<t.length;n++)u=Math.max(0,Math.min(r[t][n],a[t][n])),a[t][n]=Math.round(u);for(var d in o)d!==t&&(a[d]=i[t][d](a[t]));return!0},o.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},o.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=o),e.exports=o},{2:2,5:5}],4:[function(t,e,n){function i(t){var e,n,i,a=t[0]/255,o=t[1]/255,r=t[2]/255,l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=(l+s)/2,n=s==l?0:i<=.5?u/(s+l):u/(2-s-l),[e,100*n,100*i]}function a(t){var e,n,i,a=t[0],o=t[1],r=t[2],l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return n=0==s?0:u/s*1e3/10,s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=s/255*1e3/10,[e,n,i]}function o(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function l(t){var e,n,i,a,o=t[0]/255,r=t[1]/255,l=t[2]/255;return a=Math.min(1-o,1-r,1-l),e=(1-o-a)/(1-a)||0,n=(1-r-a)/(1-a)||0,i=(1-l-a)/(1-a)||0,[100*e,100*n,100*i,100*a]}function s(t){return C[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e,n,i,a=u(t),o=a[0],r=a[1],l=a[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,n=500*(o-r),i=200*(r-l),[e,n,i]}function c(t){var e,n,i,a,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];e=2*s-(n=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(i=r+1/3*-(u-1))<0&&i++,i>1&&i--,o=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-n),l=255*i*(1-n*o),s=255*i*(1-n*(1-o)),i=255*i;switch(a){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function f(t){var e,n,i,a,o=t[0]/360,l=t[1]/100,s=t[2]/100,u=l+s;switch(u>1&&(l/=u,s/=u),e=Math.floor(6*o),n=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),a=l+i*(n-l),e){default:case 6:case 0:r=n,g=a,b=l;break;case 1:r=a,g=n,b=l;break;case 2:r=l,g=n,b=a;break;case 3:r=l,g=a,b=n;break;case 4:r=a,g=l,b=n;break;case 5:r=n,g=l,b=a}return[255*r,255*g,255*b]}function p(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,a*(1-l)+l),n=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*n,255*i]}function v(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*a+-1.5372*o+-.4986*r,n=-.9689*a+1.8758*o+.0415*r,i=.0557*a+-.204*o+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function m(t){var e,n,i,a=t[0],o=t[1],r=t[2];return a/=95.047,o/=100,r/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,n=500*(a-o),i=200*(o-r),[e,n,i]}function x(t){var e,n,i,a,o=t[0],r=t[1],l=t[2];return o<=8?a=(n=100*o/903.3)/100*7.787+16/116:(n=100*Math.pow((o+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i=i/108.883<=.008859?i=108.883*(a-l/200-16/116)/7.787:108.883*Math.pow(a-l/200,3),[e,n,i]}function y(t){var e,n,i,a=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),(n=360*e/2/Math.PI)<0&&(n+=360),i=Math.sqrt(o*o+r*r),[a,i,n]}function k(t){return v(x(t))}function w(t){var e,n,i,a=t[0],o=t[1];return i=t[2]/360*2*Math.PI,e=o*Math.cos(i),n=o*Math.sin(i),[a,e,n]}function M(t){return S[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,a*=o<=1?o:2-o,n=(o+a)/2,e=2*a/(o+a),[i,100*e,100*n])},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return l(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return n=(2-a)*o,e=a*o,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return l(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return l(f(t))},hwb2keyword:function(t){return s(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return i(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return s(p(t))},keyword2rgb:M,keyword2hsl:function(t){return i(M(t))},keyword2hsv:function(t){return a(M(t))},keyword2hwb:function(t){return o(M(t))},keyword2cmyk:function(t){return l(M(t))},keyword2lab:function(t){return d(M(t))},keyword2xyz:function(t){return u(M(t))},xyz2rgb:v,xyz2lab:m,xyz2lch:function(t){return y(m(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:w,lch2xyz:function(t){return x(w(t))},lch2rgb:function(t){return k(w(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,n){var i=t(4),a=function(){return new u};for(var o in i){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];(a[l]=a[l]||{})[s]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(o)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=a[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{4:4}],6:[function(t,e,n){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,n){var i=t(29)();i.helpers=t(45),t(27)(i),i.defaults=t(25),i.Element=t(26),i.elements=t(40),i.Interaction=t(28),i.platform=t(48),t(31)(i),t(22)(i),t(23)(i),t(24)(i),t(30)(i),t(33)(i),t(32)(i),t(35)(i),t(54)(i),t(52)(i),t(53)(i),t(55)(i),t(56)(i),t(57)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=[];a.push(t(49)(i),t(50)(i),t(51)(i)),i.plugins.register(a),i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.Chart=i),i.canvasHelpers=i.helpers.canvas},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,35:35,40:40,45:45,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e,n=this;t.DatasetController.prototype.initialize.apply(n,arguments),(e=n.getMeta()).stack=n.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this,a=i.getMeta().data;for(i._ruler=i.getRuler(),e=0,n=a.length;e<n;++e)i.updateElement(a[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,r=i.getMeta(),l=i.getDataset(),s=t.custom||{},u=a.options.elements.rectangle;t._xScale=i.getScaleForId(r.xAxisID),t._yScale=i.getScaleForId(r.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:l.label,label:a.data.labels[e],borderSkipped:s.borderSkipped?s.borderSkipped:u.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:o.valueAtIndexOrDefault(l.backgroundColor,e,u.backgroundColor),borderColor:s.borderColor?s.borderColor:o.valueAtIndexOrDefault(l.borderColor,e,u.borderColor),borderWidth:s.borderWidth?s.borderWidth:o.valueAtIndexOrDefault(l.borderWidth,e,u.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,o=i.getValueScale(),r=o.getBasePixel(),l=o.isHorizontal(),s=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,s);a.horizontal=l,a.base=n?r:u.base,a.x=l?n?r:u.head:d.center,a.y=l?d.center:n?r:u.head,a.height=l?d.size:void 0,a.width=l?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},getStackCount:function(t){var e,n,i=this,a=i.chart,o=i.getIndexScale().options.stacked,r=void 0===t?a.data.datasets.length:t+1,l=[];for(e=0;e<r;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===o||!0===o&&-1===l.indexOf(n.stack)||void 0===o&&(void 0===n.stack||-1===l.indexOf(n.stack)))&&l.push(n.stack);return l.length},getStackIndex:function(t){return this.getStackCount(t)-1},getRuler:function(){var t,e,n=this,i=n.getIndexScale(),a=n.getStackCount(),o=n.index,r=[],l=i.isHorizontal(),s=l?i.left:i.top,u=s+(l?i.width:i.height);for(t=0,e=n.getMeta().data.length;t<e;++t)r.push(i.getPixelForValue(null,t,o));return{pixels:r,start:s,end:u,stackCount:a,scale:i}},calculateBarValuePixels:function(t,e){var n,i,a,o,r,l,s=this,u=s.chart,d=s.getMeta(),c=s.getValueScale(),h=u.data.datasets,f=c.getRightValue(h[t].data[e]),g=c.options.stacked,p=d.stack,v=0;if(g||void 0===g&&void 0!==p)for(n=0;n<t;++n)(i=u.getDatasetMeta(n)).bar&&i.stack===p&&i.controller.getValueScaleId()===c.id&&u.isDatasetVisible(n)&&(a=c.getRightValue(h[n].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=c.getPixelForValue(v),r=c.getPixelForValue(v+f),l=(r-o)/2,{size:l,base:o,head:r,center:r+l/2}},calculateBarIndexPixels:function(t,e,n){var i,a,r,l,s,u,d=this,c=n.scale.options,h=d.getStackIndex(t),f=n.pixels,g=f[e],p=f.length,v=n.start,m=n.end;return 1===p?(i=g>v?g-v:m-g,a=g<m?m-g:g-v):(e>0&&(i=(g-f[e-1])/2,e===p-1&&(a=i)),e<p-1&&(a=(f[e+1]-g)/2,0===e&&(i=a))),r=i*c.categoryPercentage,l=a*c.categoryPercentage,s=(r+l)/n.stackCount,u=s*c.barPercentage,u=Math.min(o.valueOrDefault(c.barThickness,u),o.valueOrDefault(c.maxBarThickness,1/0)),g-=r,g+=s*h,g+=(s-u)/2,{size:u,base:g,head:g+u,center:g+u/2}},draw:function(){var t=this,e=t.chart,n=t.getValueScale(),i=t.getMeta().data,a=t.getDataset(),r=i.length,l=0;for(o.canvas.clipArea(e.ctx,e.chartArea);l<r;++l)isNaN(n.getRightValue(a.data[l]))||i[l].draw();o.canvas.unclipArea(e.ctx)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:o.valueAtIndexOrDefault(e.hoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:o.valueAtIndexOrDefault(e.hoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:o.valueAtIndexOrDefault(e.hoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model,r=this.chart.options.elements.rectangle;a.backgroundColor=i.backgroundColor?i.backgroundColor:o.valueAtIndexOrDefault(e.backgroundColor,n,r.backgroundColor),a.borderColor=i.borderColor?i.borderColor:o.valueAtIndexOrDefault(e.borderColor,n,r.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:o.valueAtIndexOrDefault(e.borderWidth,n,r.borderWidth)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{25:25,40:40,45:45}],16:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,n=e.getMeta().data;o.each(n,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),o=t.custom||{},r=i.getScaleForId(a.xAxisID),l=i.getScaleForId(a.yAxisID),s=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,c=n?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof u?u:NaN,e,d),h=n?l.getBasePixel():l.getPixelForValue(u,e,d);t._xScale=r,t._yScale=l,t._options=s,t._datasetIndex=d,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth,hitRadius:s.hitRadius,pointStyle:s.pointStyle,radius:n?0:s.radius,skip:o.skip||isNaN(c)||isNaN(h),x:c,y:h},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=o.valueOrDefault(n.hoverBackgroundColor,o.getHoverColor(n.backgroundColor)),e.borderColor=o.valueOrDefault(n.hoverBorderColor,o.getHoverColor(n.borderColor)),e.borderWidth=o.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},removeHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=n.backgroundColor,e.borderColor=n.borderColor,e.borderWidth=n.borderWidth,e.radius=n.radius},_resolveElementOptions:function(t,e){var n,i,a,r=this,l=r.chart,s=l.data.datasets[r.index],u=t.custom||{},d=l.options.elements.point,c=o.options.resolve,h=s.data[e],f={},g={chart:l,dataIndex:e,dataset:s,datasetIndex:r.index},p=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle"];for(n=0,i=p.length;n<i;++n)f[a=p[n]]=c([u[a],s[a],d[a]],g,e);return f.radius=c([u.radius,h?h.r:void 0,s.radius,d.radius],g,e),f}})}},{25:25,40:40,45:45}],17:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i],s=l&&l.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(r.backgroundColor,i,d.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(r.borderColor,i,d.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(r.borderWidth,i,d.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],i=": "+e.datasets[t.datasetIndex].data[t.index];return o.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",o.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e=this,n=e.chart,i=n.chartArea,a=n.options,r=a.elements.arc,l=i.right-i.left-r.borderWidth,s=i.bottom-i.top-r.borderWidth,u=Math.min(l,s),d={x:0,y:0},c=e.getMeta(),h=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),p=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,v={x:Math.cos(g),y:Math.sin(g)},m={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,w=h/100,M={x:y?-1:Math.min(v.x*(v.x<0?1:w),m.x*(m.x<0?1:w)),y:k?-1:Math.min(v.y*(v.y<0?1:w),m.y*(m.y<0?1:w))},S={x:b?1:Math.max(v.x*(v.x>0?1:w),m.x*(m.x>0?1:w)),y:x?1:Math.max(v.y*(v.y>0?1:w),m.y*(m.y>0?1:w))},C={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(l/C.width,s/C.height),d={x:-.5*(S.x+M.x),y:-.5*(S.y+M.y)}}n.borderWidth=e.getMaxBorderWidth(c.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,c.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),o.each(c.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,r=a.chartArea,l=a.options,s=l.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=i.getDataset(),g=n&&s.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(l.circumference/(2*Math.PI)),p=n&&s.animateScale?0:i.innerRadius,v=n&&s.animateScale?0:i.outerRadius,m=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:v,innerRadius:p,label:m(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),n&&s.animateRotate||(b.startAngle=0===e?l.rotation:i.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return o.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,o=t.length,r=0;r<o;r++)e=t[r]._model?t[r]._model.borderWidth:0,i=(n=t[r]._chart?t[r]._chart.config.data.datasets[a].hoverBorderWidth:0)>(i=e>i?e:i)?n:i;return i}})}},{25:25,40:40,45:45}],18:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,r=this,l=r.getMeta(),s=l.dataset,u=l.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=u,s._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},s.pivot()),n=0,i=u.length;n<i;++n)r.updateElement(u[n],n,t);for(g&&0!==s._model.tension&&r.updateBezierControlPoints(),n=0,i=u.length;n<i;++n)u[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=o.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=o.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||o.isArray(i.pointBorderWidth)?n=o.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},updateElement:function(t,e,n){var i,a,r=this,l=r.getMeta(),s=t.custom||{},u=r.getDataset(),d=r.index,c=u.data[e],h=r.getScaleForId(l.yAxisID),f=r.getScaleForId(l.xAxisID),g=r.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),i=f.getPixelForValue("object"==typeof c?c:NaN,e,d),a=n?h.getBasePixel():r.calculatePointY(c,e,d),t._xScale=f,t._yScale=h,t._datasetIndex=d,t._index=e,t._model={x:i,y:a,skip:s.skip||isNaN(i)||isNaN(a),radius:s.radius||o.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:s.pointStyle||o.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:l.dataset._model?l.dataset._model.tension:0,steppedLine:!!l.dataset._model&&l.dataset._model.steppedLine,hitRadius:s.hitRadius||o.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,o,r=this,l=r.chart,s=r.getMeta(),u=r.getScaleForId(s.yAxisID),d=0,c=0;if(u.options.stacked){for(i=0;i<n;i++)if(a=l.data.datasets[i],"line"===(o=l.getDatasetMeta(i)).type&&o.yAxisID===u.id&&l.isDatasetVisible(i)){var h=Number(u.getRightValue(a.data[e]));h<0?c+=h||0:d+=h||0}var f=Number(u.getRightValue(t));return f<0?u.getPixelForValue(c+f):u.getPixelForValue(d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){function t(t,e,n){return Math.max(Math.min(t,n),e)}var e,n,i,a,r=this,l=r.getMeta(),s=r.chart.chartArea,u=l.data||[];if(l.dataset._model.spanGaps&&(u=u.filter(function(t){return!t._model.skip})),"monotone"===l.dataset._model.cubicInterpolationMode)o.splineCurveMonotone(u);else for(e=0,n=u.length;e<n;++e)i=u[e]._model,a=o.splineCurve(o.previousItem(u,e)._model,i,o.nextItem(u,e)._model,l.dataset._model.tension),i.controlPointPreviousX=a.previous.x,i.controlPointPreviousY=a.previous.y,i.controlPointNextX=a.next.x,i.controlPointNextY=a.next.y;if(r.chart.options.elements.line.capBezierPoints)for(e=0,n=u.length;e<n;++e)(i=u[e]._model).controlPointPreviousX=t(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=t(i.controlPointPreviousY,s.top,s.bottom),i.controlPointNextX=t(i.controlPointNextX,s.left,s.right),i.controlPointNextY=t(i.controlPointNextY,s.top,s.bottom)},draw:function(){var t=this,n=t.chart,i=t.getMeta(),a=i.data||[],r=n.chartArea,l=a.length,s=0;for(o.canvas.clipArea(n.ctx,r),e(t.getDataset(),n.options)&&i.dataset.draw(),o.canvas.unclipArea(n.ctx);s<l;++s)a[s].draw(r)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.radius=i.hoverRadius||o.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor||o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||o.valueAtIndexOrDefault(e.pointHoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||o.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this,n=e.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model;void 0!==n.radius&&void 0===n.pointRadius&&(n.pointRadius=n.radius),r.radius=a.radius||o.valueAtIndexOrDefault(n.pointRadius,i,e.chart.options.elements.point.radius),r.backgroundColor=e.getPointBackgroundColor(t,i),r.borderColor=e.getPointBorderColor(t,i),r.borderWidth=e.getPointBorderWidth(t,i)}})}},{25:25,40:40,45:45}],19:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i].custom||{},s=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:s(r.backgroundColor,i,u.backgroundColor),strokeStyle:l.borderColor?l.borderColor:s(r.borderColor,i,u.borderColor),lineWidth:l.borderWidth?l.borderWidth:s(r.borderWidth,i,u.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,update:function(t){var e=this,n=e.chart,i=n.chartArea,a=e.getMeta(),r=n.options,l=r.elements.arc,s=Math.min(i.right-i.left,i.bottom-i.top);n.outerRadius=Math.max((s-l.borderWidth/2)/2,0),n.innerRadius=Math.max(r.cutoutPercentage?n.outerRadius/100*r.cutoutPercentage:1,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),e.outerRadius=n.outerRadius-n.radiusLength*e.index,e.innerRadius=e.outerRadius-n.radiusLength,a.count=e.countVisibleElements(),o.each(a.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){for(var i=this,a=i.chart,r=i.getDataset(),l=a.options,s=l.animation,u=a.scale,d=a.data.labels,c=i.calculateCircumference(r.data[e]),h=u.xCenter,f=u.yCenter,g=0,p=i.getMeta(),v=0;v<e;++v)isNaN(r.data[v])||p.data[v].hidden||++g;var m=l.startAngle,b=t.hidden?0:u.getDistanceFromCenterForValue(r.data[e]),x=m+c*g,y=x+(t.hidden?0:c),k=s.animateScale?0:u.getDistanceFromCenterForValue(r.data[e]);o.extend(t,{_datasetIndex:i.index,_index:e,_scale:u,_model:{x:h,y:f,innerRadius:0,outerRadius:n?k:b,startAngle:n&&s.animateRotate?m:x,endAngle:n&&s.animateRotate?m:y,label:o.valueAtIndexOrDefault(d,e,d[e])}}),i.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return o.each(e.data,function(e,i){isNaN(t.data[i])||e.hidden||n++}),n},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,n=e.getMeta(),i=n.dataset,a=n.data,r=i.custom||{},l=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),o.each(a,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},r=i.getDataset(),l=i.chart.scale,s=i.chart.options.elements.point,u=l.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:i.index,_index:e,_scale:l,_model:{x:n?l.xCenter:u.x,y:n?l.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,s.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();o.each(e.data,function(n,i){var a=n._model,r=o.splineCurve(o.previousItem(e.data,i,!0)._model,a,o.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;a.radius=n.hoverRadius?n.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,o.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,i,o.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=n.radius?n.radius:o.valueAtIndexOrDefault(e.pointRadius,i,r.radius),a.backgroundColor=n.backgroundColor?n.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,i,r.backgroundColor),a.borderColor=n.borderColor?n.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,i,r.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,i,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,n){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,o,r=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=o.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=o.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a<i.length;)n=(e=i[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),o.callback(e.render,[n,e],n),o.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(o.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(28),r=t(48);e.exports=function(t){function e(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=a.configMerge(i.global,i[t.type],t.options||{}),t}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function l(t){return"top"===t||"bottom"===t}var s=t.plugins;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var o=this;i=e(i);var l=r.acquireContext(n,i),s=l&&l.canvas,u=s&&s.height,d=s&&s.width;o.id=a.uid(),o.ctx=l,o.canvas=s,o.config=i,o.width=d,o.height=u,o.aspectRatio=u?d/u:null,o.options=i.options,o._bufferedRender=!1,o.chart=o,o.controller=o,t.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),l&&s?(o.initialize(),o.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return s.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),s.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,o=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(i))),l=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(i)));if((e.width!==r||e.height!==l)&&(i.width=e.width=r,i.height=e.height=l,i.style.width=r+"px",i.style.height=l+"px",a.retinaScale(e,n.devicePixelRatio),!t)){var u={width:r,height:l};s.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,i=e.scales={},o=[];n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&o.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(o,function(n){var o=n.options,r=a.valueOrDefault(o.type,n.dtype),s=t.scaleService.getScaleConstructor(r);if(s){l(o.position)!==l(n.dposition)&&(o.position=n.dposition);var u=new s({id:o.id,options:o,ctx:e.ctx,chart:e});i[u.id]=u,u.mergeTicksOptions(),n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),l=a.type||e.config.type;if(r.type&&r.type!==l&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=l,n.push(r.type),r.controller)r.controller.updateIndex(o);else{var s=t.controllers[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(e,o),i.push(r.controller)}},e),i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n(e),!1!==s.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var i=e.buildOrUpdateControllers();a.each(e.data.datasets,function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()},e),e.updateLayout(),a.each(i,function(t){t.reset()}),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],s.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){var e=this;!1!==s.notify(e,"beforeLayout")&&(t.layoutService.update(this,this.width,this.height),s.notify(e,"afterScaleUpdate"),s.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(!1!==s.notify(t,"beforeDatasetsUpdate")){for(var e=0,n=t.data.datasets.length;e<n;++e)t.updateDataset(e);s.notify(t,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this,n=e.getDatasetMeta(t),i={meta:n,index:t};!1!==s.notify(e,"beforeDatasetUpdate",[i])&&(n.controller.update(),s.notify(e,"afterDatasetUpdate",[i]))},render:function(e){var n=this;e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]});var i=e.duration,o=e.lazy;if(!1!==s.notify(n,"beforeRender")){var r=n.options.animation,l=function(t){s.notify(n,"afterRender"),a.callback(r&&r.onComplete,[t],n)};if(r&&(void 0!==i&&0!==i||void 0===i&&0!==r.duration)){var u=new t.Animation({numSteps:(i||r.duration)/16.66,easing:e.easing||r.easing,render:function(t,e){var n=a.easing.effects[e.easing],i=e.currentStep,o=i/e.numSteps;t.draw(n(o),o,i)},onAnimationProgress:r.onProgress,onAnimationComplete:l});t.animationService.addAnimation(n,u,i,o)}else n.draw(),l(new t.Animation({numSteps:0,chart:n}));return n}},draw:function(t){var e=this;e.clear(),a.isNullOrUndef(t)&&(t=1),e.transition(t),!1!==s.notify(e,"beforeDraw",[t])&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),s.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=this,n=0,i=(e.data.datasets||[]).length;n<i;++n)e.isDatasetVisible(n)&&e.getDatasetMeta(n).controller.transition(t);e.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==s.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);s.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};!1!==s.notify(n,"beforeDatasetDraw",[a])&&(i.controller.draw(e),s.notify(n,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this,n=e.tooltip,i={tooltip:n,easingValue:t};!1!==s.notify(e,"beforeTooltipDraw",[i])&&(n.draw(),s.notify(e,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=o.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var e,n,i=this,o=i.canvas;for(i.stop(),e=0,n=i.data.datasets.length;e<n;++e)i.destroyDatasetMeta(e);o&&(i.unbindEvents(),a.canvas.clear(i),r.releaseContext(i.ctx),i.canvas=null,i.ctx=null),s.notify(i,"destroy"),delete t.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(i){r.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},r.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,n){r.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,o,r=n?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[r](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==s.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);i|=n&&n.handleEvent(t),s.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e=this,n=e.options||{},i=n.hover,o=!1;return e.lastActive=e.lastActive||[],"mouseout"===t.type?e.active=[]:e.active=e.getElementsAtEventForMode(t,i.mode,i),a.callback(n.onHover||n.hover.onHover,[t.native,e.active],e),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(e,t.native,e.active),e.lastActive.length&&e.updateHoverStyle(e.lastActive,i.mode,!1),e.active.length&&i.mode&&e.updateHoverStyle(e.active,i.mode,!0),o=!a.arrayEquals(e.active,e.lastActive),e.lastActive=e.active,o}}),t.Controller=t}},{25:25,28:28,45:45,48:48}],24:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),a.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),o=a.apply(this,e);return i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),o}})}))}function n(t,e){var n=t._chartjs;if(n){var i=n.listeners,o=i.indexOf(e);-1!==o&&i.splice(o,1),i.length>0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],o=i.data;for(t=0,e=a.length;t<e;++t)o[t]=o[t]||n.createMetaData(t);i.dataset=i.dataset||n.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t=this,i=t.getDataset(),a=i.data||(i.data=[]);t._data!==a&&(t._data&&n(t._data,t),e(a,t),t._data=a),t.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t,e){var n=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},r=i.valueAtIndexOrDefault,l=t._model;l.backgroundColor=o.backgroundColor?o.backgroundColor:r(n.backgroundColor,a,e.backgroundColor),l.borderColor=o.borderColor?o.borderColor:r(n.borderColor,a,e.borderColor),l.borderWidth=o.borderWidth?o.borderWidth:r(n.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=i.valueAtIndexOrDefault,r=i.getHoverColor,l=t._model;l.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:o(e.hoverBackgroundColor,n,r(l.backgroundColor)),l.borderColor=a.hoverBorderColor?a.hoverBorderColor:o(e.hoverBorderColor,n,r(l.borderColor)),l.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:o(e.hoverBorderWidth,n,l.borderWidth)},resyncElements:function(){var t=this,e=t.getMeta(),n=t.getDataset().data,i=e.data.length,a=n.length;a<i?e.data.splice(a,i-a):a>i&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=i.inherits}},{45:45}],25:[function(t,e,n){"use strict";var i=t(45);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{45:45}],26:[function(t,e,n){"use strict";function i(t,e,n,i){var o,r,l,s,u,d,c,h,f,g=Object.keys(n);for(o=0,r=g.length;o<r;++o)if(l=g[o],d=n[l],e.hasOwnProperty(l)||(e[l]=d),(s=e[l])!==d&&"_"!==l[0]){if(t.hasOwnProperty(l)||(t[l]=s),u=t[l],(c=typeof d)===typeof u)if("string"===c){if((h=a(u)).valid&&(f=a(d)).valid){e[l]=f.mix(h,i).rgbString();continue}}else if("number"===c&&isFinite(u)&&isFinite(d)){e[l]=u+(d-u)*i;continue}e[l]=d}}var a=t(3),o=t(45),r=function(t){o.extend(this,t),this.initialize.apply(this,arguments)};o.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=o.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,o=e._view;return n&&1!==t?(o||(o=e._view={}),a||(a=e._start={}),i(a,o,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return o.isNumber(this._model.x)&&o.isNumber(this._model.y)}}),r.extend=o.inherits,e.exports=r},{3:3,45:45}],27:[function(t,e,n){"use strict";var i=t(3),a=t(25),o=t(45);e.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return void 0!==t&&null!==t&&"none"!==t}function r(t,i,a){var o=document.defaultView,r=t.parentNode,l=o.getComputedStyle(t)[i],s=o.getComputedStyle(r)[i],u=n(l),d=n(s),c=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(l,t,a):c,d?e(s,r,a):c):"none"}o.configMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){var r=n[e]||{},l=i[e];"scales"===e?n[e]=o.scaleMerge(r,l):"scale"===e?n[e]=o.merge(r,[t.scaleService.getScaleDefaults(l.type),l]):o._merger(e,n,i,a)}})},o.scaleMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){if("xAxes"===e||"yAxes"===e){var r,l,s,u=i[e].length;for(n[e]||(n[e]=[]),r=0;r<u;++r)s=i[e][r],l=o.valueOrDefault(s.type,"xAxes"===e?"category":"linear"),r>=n[e].length&&n[e].push({}),!n[e][r].type||s.type&&s.type!==n[e][r].type?o.merge(n[e][r],[t.scaleService.getScaleDefaults(l),s]):o.merge(n[e][r],s)}else o._merger(e,n,i,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return o.each(t,function(t){e(t)&&n.push(t)}),n},o.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},o.findNextWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},o.findPreviousWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,n){return Math.abs(t-e)<n},o.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,n,i){var a=t.skip?e:t,o=e,r=n.skip?e:n,l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=l/(l+s),d=s/(l+s),c=i*(u=isNaN(u)?0:u),h=i*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,n,i,a,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),l=r.length;for(e=0;e<l;++e)if(!(i=r[e]).model.skip){if(n=e>0?r[e-1]:null,(a=e<l-1?r[e+1]:null)&&!a.model.skip){var s=a.model.x-i.model.x;i.deltaK=0!==s?(a.model.y-i.model.y)/s:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}var u,d,c,h;for(e=0;e<l-1;++e)i=r[e],a=r[e+1],i.model.skip||a.model.skip||(o.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(u=i.mK/i.deltaK,d=a.mK/i.deltaK,(h=Math.pow(u,2)+Math.pow(d,2))<=9||(c=3/Math.sqrt(h),i.mK=u*c*i.deltaK,a.mK=d*c*i.deltaK)));var f;for(e=0;e<l;++e)(i=r[e]).model.skip||(n=e>0?r[e-1]:null,a=e<l-1?r[e+1]:null,n&&!n.model.skip&&(f=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-f,i.model.controlPointPreviousY=i.model.y-f*i.mK),a&&!a.model.skip&&(f=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+f,i.model.controlPointNextY=i.model.y+f*i.mK))},o.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var n=Math.floor(o.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-u-c,g=l.bottom-l.top-d-h;return n=Math.round((n-l.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-d)/g*r.height/e.currentDevicePixelRatio),{x:n,y:i}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,o=t.width;i.height=a*n,i.width=o*n,t.ctx.scale(n,n),i.style.height=a+"px",i.style.width=o+"px"}},o.fontString=function(t,e,n){return e+" "+t+"px "+n},o.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(n,function(e){void 0!==e&&null!==e&&!0!==o.isArray(e)?l=o.measureText(t,a,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,a,r,l,e))})});var s=r.length/2;if(s>n.length){for(var u=0;u<s;u++)delete a[r[u]];r.splice(0,s)}return l},o.measureText=function(t,e,n,i,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,n.push(a)),o>i&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,n){"use strict";function i(t,e){return t.native?{x:t.x,y:t.y}:u.getRelativePosition(t,e)}function a(t,e){var n,i,a,o,r;for(i=0,o=t.data.datasets.length;i<o;++i)if(t.isDatasetVisible(i))for(a=0,r=(n=t.getDatasetMeta(i)).data.length;a<r;++a){var l=n.data[a];l._view.skip||e(l)}}function o(t,e){var n=[];return a(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function r(t,e,n,i){var o=Number.POSITIVE_INFINITY,r=[];return a(t,function(t){if(!n||t.inRange(e.x,e.y)){var a=t.getCenterPoint(),l=i(e,a);l<o?(r=[t],o=l):l===o&&r.push(t)}}),r}function l(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,i){var a=e?Math.abs(t.x-i.x):0,o=n?Math.abs(t.y-i.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function s(t,e,n){var a=i(e,t);n.axis=n.axis||"x";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s),d=[];return u.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n).data[u[0]._index];i&&!i._view.skip&&d.push(i)}}),d):[]}var u=t(45);e.exports={modes:{single:function(t,e){var n=i(e,t),o=[];return a(t,function(t){if(t.inRange(n.x,n.y))return o.push(t),o}),o.slice(0,1)},label:s,index:s,dataset:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return s(t,e,{intersect:!1})},point:function(t,e){return o(t,i(e,t))},nearest:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var o=l(n.axis),s=r(t,a,n.intersect,o);return s.length>1&&s.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),s.slice(0,1)},x:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r},y:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r}}}},{45:45}],29:[function(t,e,n){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)i=a[r],n.hasOwnProperty(i)&&(e[i]=n[i])},update:function(t,a,o){function r(t){var e=i.findNextWhere(_,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(T,D),right:Math.max(F,I),top:0,bottom:0};t.update(t.fullWidth?x:S,y/2,n)}else t.update(e.minSize.width,C)}function l(t){t.isHorizontal()?(t.left=t.fullWidth?d:T,t.right=t.fullWidth?a-c:T+S,t.top=V,t.bottom=V+t.height,V=t.bottom):(t.left=N,t.right=N+t.width,t.top=O,t.bottom=O+C,N=t.right)}if(t){var s=t.options.layout||{},u=i.options.toPadding(s.padding),d=u.left,c=u.right,h=u.top,f=u.bottom,g=e(t.boxes,"left"),p=e(t.boxes,"right"),v=e(t.boxes,"top"),m=e(t.boxes,"bottom"),b=e(t.boxes,"chartArea");n(g,!0),n(p,!1),n(v,!0),n(m,!1);var x=a-d-c,y=o-h-f,k=y/2,w=(a-x/2)/(g.length+p.length),M=(o-k)/(v.length+m.length),S=x,C=y,_=[];i.each(g.concat(p,v,m),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?x:S,M),C-=e.height):(e=t.update(w,k),S-=e.width),_.push({horizontal:n,minSize:e,box:t})});var D=0,I=0,P=0,A=0;i.each(v.concat(m),function(t){if(t.getPadding){var e=t.getPadding();D=Math.max(D,e.left),I=Math.max(I,e.right)}}),i.each(g.concat(p),function(t){if(t.getPadding){var e=t.getPadding();P=Math.max(P,e.top),A=Math.max(A,e.bottom)}});var T=d,F=c,O=h,R=f;i.each(g.concat(p),r),i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v.concat(m),r),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height}),i.each(g.concat(p),function(t){var e=i.findNextWhere(_,function(e){return e.box===t}),n={left:0,right:0,top:O,bottom:R};e&&t.update(e.minSize.width,C,n)}),T=d,F=c,O=h,R=f,i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height});var L=Math.max(D-T,0);T+=L,F+=Math.max(I-F,0);var z=Math.max(P-O,0);O+=z,R+=Math.max(A-R,0);var B=o-O-R,W=a-T-F;W===S&&B===C||(i.each(g,function(t){t.height=B}),i.each(p,function(t){t.height=B}),i.each(v,function(t){t.fullWidth||(t.width=W)}),i.each(m,function(t){t.fullWidth||(t.width=W)}),C=B,S=W);var N=d+L,V=h+z;i.each(g.concat(v),l),N+=S,V+=C,i.each(p,l),i.each(m,l),t.chartArea={left:T,top:O,right:T+S,bottom:O+C},i.each(b,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(S,C)})}}}}},{45:45}],31:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{plugins:{}}),e.exports=function(t){t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,o,r,l,s=this.descriptors(t),u=s.length;for(i=0;i<u;++i)if(a=s[i],o=a.plugin,"function"==typeof(l=o[e])&&((r=[t].concat(n||[])).push(a.options),!1===l.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t._plugins||(t._plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},l=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,r=l[e];!1!==r&&(!0===r&&(r=o.clone(i.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}}),e.descriptors=a,e.id=this._cacheId,a}},t.pluginService=t.plugins,t.PluginBase=a.extend({})}},{25:25,26:26,45:45}],32:[function(t,e,n){"use strict";function i(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function a(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}var o=t(25),r=t(26),l=t(45),s=t(34);o._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:s.formatters.values,minor:{},major:{}}}),e.exports=function(t){function e(t,e,n){return l.isArray(e)?l.longestText(t,n,e):t.measureText(e).width}function n(t){var e=l.valueOrDefault,n=o.global,i=e(t.fontSize,n.defaultFontSize),a=e(t.fontStyle,n.defaultFontStyle),r=e(t.fontFamily,n.defaultFontFamily);return{size:i,style:a,family:r,font:l.fontString(i,a,r)}}function s(t){return l.options.toLineHeight(l.valueOrDefault(t.lineHeight,1.2),l.valueOrDefault(t.fontSize,o.global.defaultFontSize))}t.Scale=r.extend({getPadding:function(){var t=this;return{left:t.paddingLeft||0,top:t.paddingTop||0,right:t.paddingRight||0,bottom:t.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1});for(var e in t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){l.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,o,r,s,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=l.extend({left:0,right:0,top:0,bottom:0},n),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,i=0,a=o.length;i<a;++i)r=o[i],(u=s[i])?u.label=r:s.push(u={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){l.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){l.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){l.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){l.callback(this.options.beforeDataLimits,[this])},determineDataLimits:l.noop,afterDataLimits:function(){l.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){l.callback(this.options.beforeBuildTicks,[this])},buildTicks:l.noop,afterBuildTicks:function(){l.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){l.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this,e=t.options.ticks;t.ticks=t.ticks.map(e.userCallback||e.callback,this)},afterTickToLabelConversion:function(){l.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){l.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,a=t.options.ticks,o=i(t._ticks),r=n(a);e.font=r.font;var s=a.minRotation||0;if(o.length&&t.options.display&&t.isHorizontal())for(var u,d=l.longestText(e,r.font,o,t.longestTextCache),c=d,h=t.getPixelForTick(1)-t.getPixelForTick(0)-6;c>h&&s<a.maxRotation;){var f=l.toRadians(s);if(u=Math.cos(f),Math.sin(f)*d>t.maxHeight){s--;break}s++,c=u*d}t.labelRotation=s},afterCalculateTickRotation:function(){l.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){l.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},o=i(t._ticks),r=t.options,u=r.ticks,d=r.scaleLabel,c=r.gridLines,h=r.display,f=t.isHorizontal(),g=n(u),p=r.gridLines.tickMarkLength;if(a.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,a.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var v=s(d)+l.options.toPadding(d.padding).height;f?a.height+=v:a.width+=v}if(u.display&&h){var m=l.longestText(t.ctx,g.font,o,t.longestTextCache),b=l.numberOfLabelLines(o),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=m;var k=l.toRadians(t.labelRotation),w=Math.cos(k),M=Math.sin(k)*m+g.size*b+x*(b-1)+x;a.height=Math.min(t.maxHeight,a.height+M+y),t.ctx.font=g.font;var S=e(t.ctx,o[0],g.font),C=e(t.ctx,o[o.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===r.position?w*S+3:w*x+3,t.paddingRight="bottom"===r.position?w*x+3:w*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?m=0:m+=y+x,a.width=Math.min(t.maxWidth,a.width+m),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){l.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(l.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:l.noop,getPixelForValue:l.noop,getValueForPixel:l.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},_autoSkip:function(t){var e,n,i,a,o=this,r=o.isHorizontal(),s=o.options.ticks.minor,u=t.length,d=l.toRadians(o.labelRotation),c=Math.cos(d),h=o.longestLabelWidth*c,f=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),r&&(e=!1,(h+s.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((h+s.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n<u;n++)i=t[n],(e>1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,i=e.options;if(i.display){var r=e.ctx,u=o.global,d=i.ticks.minor,c=i.ticks.major||d,h=i.gridLines,f=i.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),v=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),m=l.valueOrDefault(d.fontColor,u.defaultFontColor),b=n(d),x=l.valueOrDefault(c.fontColor,u.defaultFontColor),y=n(c),k=h.drawTicks?h.tickMarkLength:0,w=l.valueOrDefault(f.fontColor,u.defaultFontColor),M=n(f),S=l.options.toPadding(f.padding),C=l.toRadians(e.labelRotation),_=[],D="right"===i.position?e.left:e.right-k,I="right"===i.position?e.left+k:e.right,P="bottom"===i.position?e.top:e.bottom-k,A="bottom"===i.position?e.top+k:e.bottom;if(l.each(v,function(n,o){if(!l.isNullOrUndef(n.label)){var r,s,c,f,m=n.label;o===e.zeroLineIndex&&i.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=l.valueAtIndexOrDefault(h.lineWidth,o),s=l.valueAtIndexOrDefault(h.color,o),c=l.valueOrDefault(h.borderDash,u.borderDash),f=l.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var b,x,y,w,M,S,T,F,O,R,L="middle",z="middle",B=d.padding;if(p){var W=k+B;"bottom"===i.position?(z=g?"middle":"top",L=g?"right":"center",R=e.top+W):(z=g?"middle":"bottom",L=g?"left":"center",R=e.bottom-W);var N=a(e,o,h.offsetGridLines&&v.length>1);N<e.left&&(s="rgba(0,0,0,0)"),N+=l.aliasPixel(r),O=e.getPixelForTick(o)+d.labelOffset,b=y=M=T=N,x=P,w=A,S=t.top,F=t.bottom}else{var V,E="left"===i.position;d.mirror?(L=E?"left":"right",V=B):(L=E?"right":"left",V=k+B),O=E?e.right-V:e.left+V;var H=a(e,o,h.offsetGridLines&&v.length>1);H<e.top&&(s="rgba(0,0,0,0)"),H+=l.aliasPixel(r),R=e.getPixelForTick(o)+d.labelOffset,b=D,y=I,M=t.left,T=t.right,x=w=S=F=H}_.push({tx1:b,ty1:x,tx2:y,ty2:w,x1:M,y1:S,x2:T,y2:F,labelX:O,labelY:R,glWidth:r,glColor:s,glBorderDash:c,glBorderDashOffset:f,rotation:-1*C,label:m,major:n.major,textBaseline:z,textAlign:L})}}),l.each(_,function(t){if(h.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),h.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),d.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?y.font:b.font,r.fillStyle=t.major?x:m,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var e=t.label;if(l.isArray(e))for(var n=0,i=0;n<e.length;++n)r.fillText(""+e[n],0,i),i+=1.5*b.size;else r.fillText(e,0,0);r.restore()}}),f.display){var T,F,O=0,R=s(f)/2;if(p)T=e.left+(e.right-e.left)/2,F="bottom"===i.position?e.bottom-R-S.bottom:e.top+R+S.top;else{var L="left"===i.position;T=L?e.left+R+S.top:e.right-R-S.top,F=e.top+(e.bottom-e.top)/2,O=L?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(T,F),r.rotate(O),r.textAlign="center",r.textBaseline="middle",r.fillStyle=w,r.font=M.font,r.fillText(f.labelString,0,0),r.restore()}if(h.drawBorder){r.lineWidth=l.valueAtIndexOrDefault(h.lineWidth,0),r.strokeStyle=l.valueAtIndexOrDefault(h.color,0);var z=e.left,B=e.right,W=e.top,N=e.bottom,V=l.aliasPixel(r.lineWidth);p?(W=N="top"===i.position?e.bottom:e.top,W+=V,N+=V):(z=B="left"===i.position?e.right:e.left,z+=V,B+=V),r.beginPath(),r.moveTo(z,W),r.lineTo(B,N),r.stroke()}}}})}},{25:25,26:26,34:34,45:45}],33:[function(t,e,n){"use strict";var i=t(25),a=t(45);e.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){var n=this;n.defaults.hasOwnProperty(t)&&(n.defaults[t]=a.extend(n.defaults[t],e))},addScalesToLayout:function(e){a.each(e.scales,function(n){n.fullWidth=n.options.fullWidth,n.position=n.options.position,n.weight=n.options.weight,t.layoutService.addBox(e,n)})}}}},{25:25,45:45}],34:[function(t,e,n){"use strict";var i=t(45);e.exports={generators:{linear:function(t,e){var n,a=[];if(t.stepSize&&t.stepSize>0)n=t.stepSize;else{var o=i.niceNum(e.max-e.min,!1);n=i.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/n)*n,l=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(r=t.min,l=t.max);var s=(l-r)/n;s=i.almostEquals(s,Math.round(s),n/1e3)?Math.round(s):Math.ceil(s),a.push(void 0!==t.min?t.min:r);for(var u=1;u<s;++u)a.push(r+u*n);return a.push(void 0!==t.max?t.max:l),a},logarithmic:function(t,e){var n,a,o=[],r=i.valueOrDefault,l=r(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),s=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,s));0===l?(n=Math.floor(i.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),o.push(l),l=a*Math.pow(10,n)):(n=Math.floor(i.log10(l)),a=Math.floor(l/Math.pow(10,n)));do{o.push(l),10===++a&&(a=1,++n),l=a*Math.pow(10,n)}while(n<s||n===s&&a<u);var d=r(t.max,l);return o.push(d),o}},formatters:{values:function(t){return i.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=i.log10(Math.abs(a)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?n=o.xLabel:a>0&&o.index<a&&(n=i[o.index])}return n},afterTitle:o.noop,beforeBody:o.noop,beforeLabel:o.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+=t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:o.noop,afterBody:o.noop,beforeFooter:o.noop,footer:o.noop,afterFooter:o.noop}}}),e.exports=function(t){function e(t,e){var n=o.color(t);return n.alpha(e*n.alpha()).rgbaString()}function n(t,e){return e&&(o.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function r(t){var e=t._xScale,n=t._yScale||t._scale,i=t._index,a=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,a):"",yLabel:n?n.getLabelForIndex(i,a):"",index:i,datasetIndex:a,x:t._model.x,y:t._model.y}}function l(t){var e=i.global,n=o.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function s(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,r=e.body,l=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);l+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=s*d,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=l*c,i+=l?(l-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=o.fontString(d,e._titleFontStyle,e._titleFontFamily),o.each(e.title,g),n.font=o.fontString(c,e._bodyFontStyle,e._bodyFontFamily),o.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,o.each(r,function(t){o.each(t.before,g),o.each(t.lines,g),o.each(t.after,g)}),f=0,n.font=o.fontString(h,e._footerFontStyle,e._footerFontFamily),o.each(e.footer,g),a+=2*e.xPadding,{width:a,height:i}}function u(t,e){var n=t._model,i=t._chart,a=t._chart.chartArea,o="center",r="center";n.y<e.height?r="top":n.y>i.height-e.height&&(r="bottom");var l,s,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===r?(l=function(t){return t<=h},s=function(t){return t>h}):(l=function(t){return t<=e.width/2},s=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},l(n.x)?(o="left",u(n.x)&&(o="center",r=c(n.y))):s(n.x)&&(o="right",d(n.x)&&(o="center",r=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function d(t,e,n){var i=t.x,a=t.y,o=t.caretSize,r=t.caretPadding,l=t.cornerRadius,s=n.xAlign,u=n.yAlign,d=o+r,c=l+r;return"right"===s?i-=e.width:"center"===s&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===s?i+=d:"right"===s&&(i-=d):"left"===s?i-=c:"right"===s&&(i+=c),{x:i,y:a}}t.Tooltip=a.extend({initialize:function(){this._model=l(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options.callbacks,i=e.beforeTitle.apply(t,arguments),a=e.title.apply(t,arguments),o=e.afterTitle.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,r=[];return o.each(t,function(t){var o={before:[],lines:[],after:[]};n(o.before,a.beforeLabel.call(i,t,e)),n(o.lines,a.label.call(i,t,e)),n(o.after,a.afterLabel.call(i,t,e)),r.push(o)}),r},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),o=e.afterFooter.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},update:function(e){var n,i,a=this,c=a._options,h=a._model,f=a._model=l(c),g=a._active,p=a._data,v={xAlign:h.xAlign,yAlign:h.yAlign},m={x:h.x,y:h.y},b={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var y=[],k=[];x=t.Tooltip.positioners[c.position].call(a,g,a._eventPosition);var w=[];for(n=0,i=g.length;n<i;++n)w.push(r(g[n]));c.filter&&(w=w.filter(function(t){return c.filter(t,p)})),c.itemSort&&(w=w.sort(function(t,e){return c.itemSort(t,e,p)})),o.each(w,function(t){y.push(c.callbacks.labelColor.call(a,t,a._chart)),k.push(c.callbacks.labelTextColor.call(a,t,a._chart))}),f.title=a.getTitle(w,p),f.beforeBody=a.getBeforeBody(w,p),f.body=a.getBody(w,p),f.afterBody=a.getAfterBody(w,p),f.footer=a.getFooter(w,p),f.x=Math.round(x.x),f.y=Math.round(x.y),f.caretPadding=c.caretPadding,f.labelColors=y,f.labelTextColors=k,f.dataPoints=w,m=d(f,b=s(this,f),v=u(this,b))}else f.opacity=0;return f.xAlign=v.xAlign,f.yAlign=v.yAlign,f.x=m.x,f.y=m.y,f.width=b.width,f.height=b.height,f.caretX=x.x,f.caretY=x.y,a._model=f,e&&c.custom&&c.custom.call(a,f),a},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,o,r,l,s,u=n.caretSize,d=n.cornerRadius,c=n.xAlign,h=n.yAlign,f=t.x,g=t.y,p=e.width,v=e.height;if("center"===h)l=g+v/2,"left"===c?(a=(i=f)-u,o=i,r=l+u,s=l-u):(a=(i=f+p)+u,o=i,r=l-u,s=l+u);else if("left"===c?(i=(a=f+d+u)-u,o=a+u):"right"===c?(i=(a=f+p-d-u)-u,o=a+u):(i=(a=f+p/2)-u,o=a+u),"top"===h)l=(r=g)-u,s=r;else{l=(r=g+v)+u,s=r;var m=o;o=i,i=m}return{x1:i,x2:a,x3:o,y1:r,y2:l,y3:s}},drawTitle:function(t,n,i,a){var r=n.title;if(r.length){i.textAlign=n._titleAlign,i.textBaseline="top";var l=n.titleFontSize,s=n.titleSpacing;i.fillStyle=e(n.titleFontColor,a),i.font=o.fontString(l,n._titleFontStyle,n._titleFontFamily);var u,d;for(u=0,d=r.length;u<d;++u)i.fillText(r[u],t.x,t.y),t.y+=l+s,u+1===r.length&&(t.y+=n.titleMarginBottom-s)}},drawBody:function(t,n,i,a){var r=n.bodyFontSize,l=n.bodySpacing,s=n.body;i.textAlign=n._bodyAlign,i.textBaseline="top",i.font=o.fontString(r,n._bodyFontStyle,n._bodyFontFamily);var u=0,d=function(e){i.fillText(e,t.x+u,t.y),t.y+=r+l};i.fillStyle=e(n.bodyFontColor,a),o.each(n.beforeBody,d);var c=n.displayColors;u=c?r+2:0,o.each(s,function(l,s){var u=e(n.labelTextColors[s],a);i.fillStyle=u,o.each(l.before,d),o.each(l.lines,function(o){c&&(i.fillStyle=e(n.legendColorBackground,a),i.fillRect(t.x,t.y,r,r),i.lineWidth=1,i.strokeStyle=e(n.labelColors[s].borderColor,a),i.strokeRect(t.x,t.y,r,r),i.fillStyle=e(n.labelColors[s].backgroundColor,a),i.fillRect(t.x+1,t.y+1,r-2,r-2),i.fillStyle=u),d(o)}),o.each(l.after,d)}),u=0,o.each(n.afterBody,d),t.y-=l},drawFooter:function(t,n,i,a){var r=n.footer;r.length&&(t.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=e(n.footerFontColor,a),i.font=o.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),o.each(r,function(e){i.fillText(e,t.x,t.y),t.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,n,i,a,o){i.fillStyle=e(n.backgroundColor,o),i.strokeStyle=e(n.borderColor,o),i.lineWidth=n.borderWidth;var r=n.xAlign,l=n.yAlign,s=t.x,u=t.y,d=a.width,c=a.height,h=n.cornerRadius;i.beginPath(),i.moveTo(s+h,u),"top"===l&&this.drawCaret(t,a),i.lineTo(s+d-h,u),i.quadraticCurveTo(s+d,u,s+d,u+h),"center"===l&&"right"===r&&this.drawCaret(t,a),i.lineTo(s+d,u+c-h),i.quadraticCurveTo(s+d,u+c,s+d-h,u+c),"bottom"===l&&this.drawCaret(t,a),i.lineTo(s+h,u+c),i.quadraticCurveTo(s,u+c,s,u+c-h),"center"===l&&"left"===r&&this.drawCaret(t,a),i.lineTo(s,u+h),i.quadraticCurveTo(s,u,s+h,u),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),!(i=!o.arrayEquals(e._active,e._lastActive)))return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,o=0;for(e=0,n=t.length;e<n;++e){var r=t[e];if(r&&r.hasValue()){var l=r.tooltipPosition();i+=l.x,a+=l.y,++o}}return{x:Math.round(i/o),y:Math.round(a/o)}},nearest:function(t,e){var n,i,a,r=e.x,l=e.y,s=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),c=o.distanceBetweenPoints(e,d);c<s&&(s=c,a=u)}}if(a){var h=a.tooltipPosition();r=h.x,l=h.y}return{x:r,y:l}}}}},{25:25,26:26,45:45}],36:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var i=o.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,r=i.distance,l=n.startAngle,s=n.endAngle;s<l;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<l;)a+=2*Math.PI;var u=a>=l&&a<=s,d=r>=n.innerRadius&&r<=n.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45),r=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this,l=a._view,s=a._chart.ctx,u=l.spanGaps,d=a._children.slice(),c=r.elements.line,h=-1;for(a._loop&&d.length&&d.push(d[0]),s.save(),s.lineCap=l.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(l.borderDash||c.borderDash),s.lineDashOffset=l.borderDashOffset||c.borderDashOffset,s.lineJoin=l.borderJoinStyle||c.borderJoinStyle,s.lineWidth=l.borderWidth||c.borderWidth,s.strokeStyle=l.borderColor||r.defaultColor,s.beginPath(),h=-1,t=0;t<d.length;++t)e=d[t],n=o.previousItem(d,t),i=e._view,0===t?i.skip||(s.moveTo(i.x,i.y),h=t):(n=-1===h?n:d[h],i.skip||(h!==t-1&&!u||-1===h?s.moveTo(i.x,i.y):o.canvas.lineTo(s,n._view,e._view),h=t));s.stroke(),s.restore()}})},{25:25,26:26,45:45}],38:[function(t,e,n){"use strict";function i(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2)}var a=t(25),o=t(26),r=t(45),l=a.global.defaultColor;a._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:l,borderColor:l,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=o.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:i,inXRange:i,inYRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.y,2)<Math.pow(e.radius+e.hitRadius,2)},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._model,i=this._chart.ctx,o=e.pointStyle,s=e.radius,u=e.x,d=e.y,c=r.color,h=0;e.skip||(i.strokeStyle=e.borderColor||l,i.lineWidth=r.valueOrDefault(e.borderWidth,a.global.elements.point.borderWidth),i.fillStyle=e.backgroundColor||l,void 0!==t&&(n.x<t.left||1.01*t.right<n.x||n.y<t.top||1.01*t.bottom<n.y)&&(n.x<t.left?h=(u-n.x)/(t.left-n.x):1.01*t.right<n.x?h=(n.x-u)/(n.x-t.right):n.y<t.top?h=(d-n.y)/(t.top-n.y):1.01*t.bottom<n.y&&(h=(n.y-d)/(n.y-t.bottom)),h=Math.round(100*h)/100,i.strokeStyle=c(i.strokeStyle).alpha(h).rgbString(),i.fillStyle=c(i.fillStyle).alpha(h).rgbString()),r.canvas.drawPoint(i,o,s,u,d))}})},{25:25,26:26,45:45}],39:[function(t,e,n){"use strict";function i(t){return void 0!==t._view.width}function a(t){var e,n,a,o,r=t._view;if(i(t)){var l=r.width/2;e=r.x-l,n=r.x+l,a=Math.min(r.y,r.base),o=Math.max(r.y,r.base)}else{var s=r.height/2;e=Math.min(r.x,r.base),n=Math.max(r.x,r.base),a=r.y-s,o=r.y+s}return{left:e,top:a,right:n,bottom:o}}var o=t(25),r=t(26);o._set("global",{elements:{rectangle:{backgroundColor:o.global.defaultColor,borderColor:o.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=r.extend({draw:function(){function t(t){return m[(b+t)%4]}var e,n,i,a,o,r,l,s=this._chart.ctx,u=this._view,d=u.borderWidth;if(u.horizontal?(e=u.base,n=u.x,i=u.y-u.height/2,a=u.y+u.height/2,o=n>e?1:-1,r=1,l=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,o=1,r=(a=u.base)>i?1:-1,l=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a)),h=(d=d>c?c:d)/2,f=e+("left"!==l?h*o:0),g=n+("right"!==l?-h*o:0),p=i+("top"!==l?h*r:0),v=a+("bottom"!==l?-h*r:0);f!==g&&(i=p,a=v),p!==v&&(e=f,n=g)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=d;var m=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"].indexOf(l,0);-1===b&&(b=0);var x=t(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=t(y),s.lineTo(x[0],x[1]);s.fill(),d&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=a(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){var n=this;if(!n._view)return!1;var o=a(n);return i(n)?t>=o.left&&t<=o.right:e>=o.top&&e<=o.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,n){"use strict";var i=t(42),n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,o){if(o){var r=Math.min(o,i/2),l=Math.min(o,a/2);t.moveTo(e+r,n),t.lineTo(e+i-r,n),t.quadraticCurveTo(e+i,n,e+i,n+l),t.lineTo(e+i,n+a-l),t.quadraticCurveTo(e+i,n+a,e+i-r,n+a),t.lineTo(e+r,n+a),t.quadraticCurveTo(e,n+a,e,n+a-l),t.lineTo(e,n+l),t.quadraticCurveTo(e,n,e+r,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a){var o,r,l,s,u,d;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,a,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-r/2,a+u/3),t.lineTo(i+r/2,a+u/3),t.lineTo(i,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-d,a-d,2*d,2*d),t.strokeRect(i-d,a-d,2*d,2*d);break;case"rectRounded":var c=n/Math.SQRT2,h=i-c,f=a-c,g=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,g,g,n/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-d,a),t.lineTo(i,a+d),t.lineTo(i+d,a),t.lineTo(i,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"crossRot":t.beginPath(),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,a),t.lineTo(i+n,a),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments),t.closePath()}},{42:42}],42:[function(t,e,n){"use strict";var i={noop:function(){},uid:function(){var t=0;return function(){return t++}}(),isNullOrUndef:function(t){return null===t||void 0===t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return i.valueOrDefault(i.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var o,r,l;if(i.isArray(t))if(r=t.length,a)for(o=r-1;o>=0;o--)e.call(n,t[o],o);else for(o=0;o<r;o++)e.call(n,t[o],o);else if(i.isObject(t))for(r=(l=Object.keys(t)).length,o=0;o<r;o++)e.call(n,t[l[o]],l[o])},arrayEquals:function(t,e){var n,a,o,r;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(o=t[n],r=e[n],o instanceof Array&&r instanceof Array){if(!i.arrayEquals(o,r))return!1}else if(o!==r)return!1;return!0},clone:function(t){if(i.isArray(t))return t.map(i.clone);if(i.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,o=0;o<a;++o)e[n[o]]=i.clone(t[n[o]]);return e}return t},_merger:function(t,e,n,a){var o=e[t],r=n[t];i.isObject(o)&&i.isObject(r)?i.merge(o,r,a):e[t]=i.clone(r)},_mergerIf:function(t,e,n){var a=e[t],o=n[t];i.isObject(a)&&i.isObject(o)?i.mergeIf(a,o):e.hasOwnProperty(t)||(e[t]=i.clone(o))},merge:function(t,e,n){var a,o,r,l,s,u=i.isArray(e)?e:[e],d=u.length;if(!i.isObject(t))return t;for(a=(n=n||{}).merger||i._merger,o=0;o<d;++o)if(e=u[o],i.isObject(e))for(s=0,l=(r=Object.keys(e)).length;s<l;++s)a(r[s],t,e,n);return t},mergeIf:function(t,e){return i.merge(t,e,{merger:i._mergerIf})},extend:function(t){for(var e=1,n=arguments.length;e<n;++e)i.each(arguments[e],function(e,n){t[n]=e});return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=i.inherits,t&&i.extend(n.prototype,t),n.__super__=e.prototype,n}};e.exports=i,i.callCallback=i.callback,i.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},i.getValueOrDefault=i.valueOrDefault,i.getValueAtIndexOrDefault=i.valueAtIndexOrDefault},{}],43:[function(t,e,n){"use strict";var i=t(42),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{42:42}],44:[function(t,e,n){"use strict";var i=t(42);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,o;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=n=a=o=+t||0,{top:e,right:n,bottom:a,left:o,height:e+a,width:o+n}},resolve:function(t,e,n){var a,o,r;for(a=0,o=t.length;a<o;++a)if(void 0!==(r=t[a])&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==n&&i.isArray(r)&&(r=r[n]),void 0!==r))return r}}},{42:42}],45:[function(t,e,n){"use strict";e.exports=t(42),e.exports.easing=t(43),e.exports.canvas=t(41),e.exports.options=t(44)},{41:41,42:42,43:43,44:44}],46:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],47:[function(t,e,n){"use strict";function i(t,e){var n=v.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}function a(t,e){var n=t.style,a=t.getAttribute("height"),o=t.getAttribute("width");if(t[m]={initial:{height:a,width:o,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===o||""===o){var r=i(t,"width");void 0!==r&&(t.width=r)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var l=i(t,"height");void 0!==r&&(t.height=l)}return t}function o(t,e,n){t.addEventListener(e,n,M)}function r(t,e,n){t.removeEventListener(e,n,M)}function l(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function s(t,e){var n=w[t.type]||t.type,i=v.getRelativePosition(t,e);return l(n,e,i.x,i.y,t)}function u(t,e){var n=!1,i=[];return function(){i=Array.prototype.slice.call(arguments),e=e||this,n||(n=!0,v.requestAnimFrame.call(window,function(){n=!1,t.apply(e,i)}))}}function d(t){var e=document.createElement("div"),n=b+"size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var l=function(){e._reset(),t()};return o(a,"scroll",l.bind(a,"expand")),o(r,"scroll",l.bind(r,"shrink")),e}function c(t,e){var n=t[m]||(t[m]={}),i=n.renderProxy=function(t){t.animationName===y&&e()};v.each(k,function(e){o(t,e,i)}),n.reflow=!!t.offsetParent,t.classList.add(x)}function h(t){var e=t[m]||{},n=e.renderProxy;n&&(v.each(k,function(e){r(t,e,n)}),delete e.renderProxy),t.classList.remove(x)}function f(t,e,n){var i=t[m]||(t[m]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(l("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[m]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function p(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var v=t(45),m="$chartjs",b="chartjs-",x=b+"render-monitor",y=b+"render-animation",k=["animationstart","webkitAnimationStart"],w={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},M=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";p(this,"@-webkit-keyframes "+y+"{"+t+"}@keyframes "+y+"{"+t+"}."+x+"{-webkit-animation:"+y+" 0.001s;animation:"+y+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[m]){var n=e[m].initial;["height","width"].forEach(function(t){var i=n[t];v.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),v.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[m]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[m]||(n[m]={});o(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(s(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[m]||{}).proxies||{})[t.id+"_"+e];a&&r(i,e,a)}else g(i)}},v.addEvent=o,v.removeEvent=r},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(i=parseFloat(o,10),isFinite(i)&&Math.floor(i)===i)return"-"!==o[0]&&"+"!==o[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?o=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?o=n.scaleZero:i.getBasePosition?o=i.getBasePosition():i.getBasePixel&&(o=i.getBasePixel()),void 0!==o&&null!==o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return e=i.isHorizontal(),{x:e?o:null,y:e?null:o}}return null}function n(t,e,n){var i,a=t[e].fill,o=[e];if(!n)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;o.push(a),a=i.fill}return!1}function r(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function l(t){return t&&!t.skip}function s(t,e,n,i,a){var r;if(i&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r<i;++r)o.canvas.lineTo(t,e[r-1],e[r]);for(t.lineTo(n[a-1].x,n[a-1].y),r=a-1;r>0;--r)o.canvas.lineTo(t,n[r],n[r-1],!0)}}function u(t,e,n,i,a,o){var r,u,d,c,h,f,g,p=e.length,v=i.spanGaps,m=[],b=[],x=0,y=0;for(t.beginPath(),r=0,u=p+!!o;r<u;++r)h=n(c=e[d=r%p]._view,d,i),f=l(c),g=l(h),f&&g?(x=m.push(c),y=b.push(h)):x&&y&&(v?(f&&m.push(c),g&&b.push(h)):(s(t,m,b,x,y),x=y=0,m=[],b=[]));s(t,m,b,x,y),t.closePath(),t.fillStyle=a,t.fill()}var d={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};return{id:"filler",afterDatasetsUpdate:function(i,o){var l,s,u,d,c=(i.data.datasets||[]).length,h=o.propagate,f=[];for(s=0;s<c;++s)d=null,(u=(l=i.getDatasetMeta(s)).dataset)&&u._model&&u instanceof a.Line&&(d={visible:i.isDatasetVisible(s),fill:t(u,s,c),chart:i,el:u}),l.$filler=d,f.push(d);for(s=0;s<c;++s)(d=f[s])&&(d.fill=n(f,s,h),d.boundary=e(d),d.mapper=r(d))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,l=r._view,s=r._children||[],d=n.mapper,c=l.backgroundColor||i.global.defaultColor;d&&c&&s.length&&(o.canvas.clipArea(a,t.chartArea),u(a,s,d,l,c,r._loop),o.canvas.unclipArea(a))}}}}},{25:25,40:40,45:45}],50:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return o.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:o.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});r.configure(e,i,n),r.addBox(e,i),e.legend=i}var r=t.layoutService,l=o.noop;return t.Legend=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:l,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:l,beforeSetDimensions:l,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:l,beforeBuildLabels:l,buildLabels:function(){var t=this,e=t.options.labels||{},n=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:l,beforeFit:l,fit:function(){var t=this,n=t.options,a=n.labels,r=n.display,l=t.ctx,s=i.global,u=o.valueOrDefault,d=u(a.fontSize,s.defaultFontSize),c=u(a.fontStyle,s.defaultFontStyle),h=u(a.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,v=t.isHorizontal();if(v?(p.width=t.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=t.maxHeight),r)if(l.font=f,v){var m=t.lineWidths=[0],b=t.legendItems.length?d+a.padding:0;l.textAlign="left",l.textBaseline="top",o.each(t.legendItems,function(n,i){var o=e(a,d)+d/2+l.measureText(n.text).width;m[m.length-1]+o+a.padding>=t.width&&(b+=d+a.padding,m[m.length]=t.left),g[i]={left:0,top:0,width:o,height:d},m[m.length-1]+=o+a.padding}),p.height+=b}else{var x=a.padding,y=t.columnWidths=[],k=a.padding,w=0,M=0,S=d+x;o.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+l.measureText(t.text).width;M+S>p.height&&(k+=w+a.padding,y.push(w),w=0,M=0),w=Math.max(w,i),M+=S,g[n]={left:0,top:0,width:i,height:d}}),k+=w,y.push(w),p.width+=k}t.width=p.width,t.height=p.height},afterFit:l,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,r=i.global,l=r.elements.line,s=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(a.fontColor,r.defaultFontColor),g=h(a.fontSize,r.defaultFontSize),p=h(a.fontStyle,r.defaultFontStyle),v=h(a.fontFamily,r.defaultFontFamily),m=o.fontString(g,p,v);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=m;var b=e(a,g),x=t.legendHitBoxes,y=function(t,e,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,l.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,l.borderDashOffset),c.lineJoin=h(i.lineJoin,l.borderJoinStyle),c.lineWidth=h(i.lineWidth,l.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var a=0===h(i.lineWidth,l.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,l.borderDash)),n.labels&&n.labels.usePointStyle){var s=g*Math.SQRT2/2,u=s/Math.SQRT2,d=t+u,f=e+u;o.canvas.drawPoint(c,i.pointStyle,s,d,f)}else a||c.strokeRect(t,e,b,g),c.fillRect(t,e,b,g);c.restore()}},k=function(t,e,n,i){var a=g/2,o=b+a+t,r=e+a;c.fillText(n.text,o,r),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(o,r),c.lineTo(o+i,r),c.stroke())},w=t.isHorizontal();d=w?{x:t.left+(s-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var M=g+a.padding;o.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,o=b+g/2+i,r=d.x,l=d.y;w?r+o>=s&&(l=d.y+=M,d.line++,r=d.x=t.left+(s-u[d.line])/2):l+M>t.bottom&&(r=d.x=r+t.columnWidths[d.line]+a.padding,l=d.y=t.top+a.padding,d.line++),y(r,l,e),x[n].left=r,x[n].top=l,k(r,l,e,i),w?d.x+=o+a.padding:d.y+=M})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var l=e.legendHitBoxes,s=0;s<l.length;++s){var u=l[s];if(o>=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[s]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[s]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(o.mergeIf(e,i.global.legend),a?(r.configure(t,a,e),a.options=e):n(t,e)):a&&(r.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,r=o.noop;return t.Title=a.extend({initialize:function(t){var e=this;o.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:r,afterBuildLabels:r,beforeFit:r,fit:function(){var t=this,e=o.valueOrDefault,n=t.options,a=n.display,r=e(n.fontSize,i.global.defaultFontSize),l=t.minSize,s=o.isArray(n.text)?n.text.length:1,u=o.options.toLineHeight(n.lineHeight,r),d=a?s*u+2*n.padding:0;t.isHorizontal()?(l.width=t.maxWidth,l.height=d):(l.width=d,l.height=t.maxHeight),t.width=l.width,t.height=l.height},afterFit:r,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=o.valueOrDefault,a=t.options,r=i.global;if(a.display){var l,s,u,d=n(a.fontSize,r.defaultFontSize),c=n(a.fontStyle,r.defaultFontStyle),h=n(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,v=0,m=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=n(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(s=b+(y-b)/2,u=m+p,l=y-b):(s="left"===a.position?b+p:y-p,u=m+(x-m)/2,l=x-m,v=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(s,u),e.rotate(v),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var w=0,M=0;M<k.length;++M)e.fillText(k[M],0,w,l),w+=g;else e.fillText(k,0,0,l);e.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var r=a.options.title,l=a.titleBlock;r?(o.mergeIf(r,i.global.title),l?(n.configure(a,l,r),l.options=r):e(a,r)):l&&(t.layoutService.removeBox(a,l),delete a.titleBlock)}}}},{25:25,26:26,45:45}],52:[function(t,e,n){"use strict";e.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,e=t.getLabels();t.minIndex=0,t.maxIndex=e.length-1;var n;void 0!==t.options.ticks.min&&(n=e.indexOf(t.options.ticks.min),t.minIndex=-1!==n?n:t.minIndex),void 0!==t.options.ticks.max&&(n=e.indexOf(t.options.ticks.max),t.maxIndex=-1!==n?n:t.maxIndex),t.min=e[t.minIndex],t.max=e[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,o=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(void 0!==t&&null!==t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var r=i.getLabels();t=n||t;var l=r.indexOf(t);e=-1!==l?l:e}if(i.isHorizontal()){var s=i.width/o,u=s*(e-i.minIndex);return a&&(u+=s/2),i.left+Math.round(u)}var d=i.height/o,c=d*(e-i.minIndex);return a&&(c+=d/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",e,{position:"bottom"})}},{}],53:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return r?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,i=e.chart,o=i.data.datasets,r=e.isHorizontal();e.min=null,e.max=null;var l=n.stacked;if(void 0===l&&a.each(o,function(e,n){if(!l){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&t(a)&&void 0!==a.stack&&(l=!0)}}),n.stacked||l){var s={};a.each(o,function(o,r){var l=i.getDatasetMeta(r),u=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");void 0===s[u]&&(s[u]={positiveValues:[],negativeValues:[]});var d=s[u].positiveValues,c=s[u].negativeValues;i.isDatasetVisible(r)&&t(l)&&a.each(o.data,function(t,i){var a=+e.getRightValue(t);isNaN(a)||l.data[i].hidden||(d[i]=d[i]||0,c[i]=c[i]||0,n.relativePoints?d[i]=100:a<0?c[i]+=a:d[i]+=a)})}),a.each(s,function(t){var n=t.positiveValues.concat(t.negativeValues),i=a.min(n),o=a.max(n);e.min=null===e.min?i:Math.min(e.min,i),e.max=null===e.max?o:Math.max(e.max,o)})}else a.each(o,function(n,o){var r=i.getDatasetMeta(o);i.isDatasetVisible(o)&&t(r)&&a.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var o=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*o)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),o=n.end-i;return n.isHorizontal()?(e=n.left+n.width/o*(a-i),Math.round(e)):(e=n.bottom-n.height/o*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),o={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=a.generators.linear(o,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,o=e.chart,r=o.data.datasets,l=i.valueOrDefault,s=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(r,function(e,n){if(!u){var i=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(r,function(a,r){var l=o.getDatasetMeta(r),s=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");o.isDatasetVisible(r)&&t(l)&&(void 0===d[s]&&(d[s]=[]),i.each(a.data,function(t,i){var a=d[s],o=+e.getRightValue(t);isNaN(o)||l.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=o)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(r,function(n,a){var r=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(r)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i),0!==i&&(null===e.minNotZero||i<e.minNotZero)&&(e.minNotZero=i))})});e.min=l(a.min,e.min),e.max=l(a.max,e.max),e.min===e.max&&(0!==e.min&&null!==e.min?(e.min=Math.pow(10,Math.floor(i.log10(e.min))-1),e.max=Math.pow(10,Math.floor(i.log10(e.max))+1)):(e.min=1,e.max=10))},buildTicks:function(){var t=this,e=t.options.ticks,n={min:e.min,max:e.max},o=t.ticks=a.generators.logarithmic(n,t);t.isHorizontal()||o.reverse(),t.max=i.max(o),t.min=i.min(o),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},getPixelForValue:function(t){var e,n,a,o=this,r=o.start,l=+o.getRightValue(t),s=o.options.ticks;return o.isHorizontal()?(a=i.log10(o.end)-i.log10(r),0===l?n=o.left:(e=o.width,n=o.left+e/a*(i.log10(l)-i.log10(r)))):(e=o.height,0!==r||s.reverse?0===o.end&&s.reverse?(a=i.log10(o.start)-i.log10(o.minNotZero),n=l===o.end?o.top:l===o.minNotZero?o.top+.02*e:o.top+.02*e+.98*e/a*(i.log10(l)-i.log10(o.minNotZero))):0===l?n=s.reverse?o.top:o.bottom:(a=i.log10(o.end)-i.log10(r),e=o.height,n=o.bottom-e/a*(i.log10(l)-i.log10(r))):(a=i.log10(o.end)-i.log10(o.minNotZero),n=l===r?o.bottom:l===o.minNotZero?o.bottom-.02*e:o.bottom-.02*e-.98*e/a*(i.log10(l)-i.log10(o.minNotZero)))),n},getValueForPixel:function(t){var e,n,a=this,o=i.log10(a.end)-i.log10(a.start);return a.isHorizontal()?(n=a.width,e=a.start*Math.pow(10,(t-a.left)*o/n)):(n=a.height,e=Math.pow(10,(a.bottom-t)*o/n)/a.start),e}});t.scaleService.registerScaleType("logarithmic",n,e)}},{34:34,45:45}],56:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){function e(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function n(t){var e=t.options.pointLabels,n=a.valueOrDefault(e.fontSize,v.defaultFontSize),i=a.valueOrDefault(e.fontStyle,v.defaultFontStyle),o=a.valueOrDefault(e.fontFamily,v.defaultFontFamily);return{size:n,style:i,family:o,font:a.fontString(n,i,o)}}function r(t,e,n){return a.isArray(n)?{w:a.longestText(t,t.font,n),h:n.length*e+1.5*(n.length-1)*e}:{w:t.measureText(n).width,h:e}}function l(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function s(t){var i,o,s,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;i<f;i++){s=t.getPointPosition(i,d),o=r(t.ctx,u.size,t.pointLabels[i]||""),t._pointLabelSizes[i]=o;var g=t.getIndexAngle(i),p=a.toDegrees(g)%360,v=l(p,s.x,o.w,0,180),m=l(p,s.y,o.h,90,270);v.start<c.l&&(c.l=v.start,h.l=g),v.end>c.r&&(c.r=v.end,h.r=g),m.start<c.t&&(c.t=m.start,h.t=g),m.end>c.b&&(c.b=m.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var o=n.y,r=1.5*i,l=0;l<e.length;++l)t.fillText(e[l],n.x,o),o+=r;else t.fillText(e,n.x,n.y)}function h(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,o=a.valueOrDefault,r=t.options,l=r.angleLines,s=r.pointLabels;i.lineWidth=l.lineWidth,i.strokeStyle=l.color;var u=t.getDistanceFromCenterForValue(r.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(l.display){var p=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(p.x,p.y),i.stroke(),i.closePath()}if(s.display){var m=t.getPointPosition(g,u+5),b=o(s.fontColor,v.defaultFontColor);i.font=f.font,i.fillStyle=b;var x=t.getIndexAngle(g),y=a.toDegrees(x);i.textAlign=d(y),h(y,t._pointLabelSizes[g],m),c(i,t.pointLabels[g]||"",m,f.size)}}}function g(t,n,i,o){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(n.color,o-1),r.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,o-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var l=e(t);if(0===l)return;r.beginPath();var s=t.getPointPosition(0,i);r.moveTo(s.x,s.y);for(var u=1;u<l;u++)s=t.getPointPosition(u,i),r.lineTo(s.x,s.y);r.closePath(),r.stroke()}}function p(t){return a.isNumber(t)?t:0}var v=i.global,m={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}},b=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=a.min([t.height,t.width]),o=a.valueOrDefault(n.fontSize,v.defaultFontSize);t.drawingArea=e.display?i/2-(o/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(o,r){if(e.isDatasetVisible(r)){var l=e.getDatasetMeta(r);a.each(o.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||l.data[a].hidden||(n=Math.min(o,n),i=Math.max(o,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=a.valueOrDefault(t.fontSize,v.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){this.options.pointLabels.display?s(this):u(this)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),o=Math.max(e.r-i.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),l=-Math.max(e.b-i.height,0)/Math.cos(n.b);a=p(a),o=p(o),r=p(r),l=p(l),i.drawingArea=Math.min(Math.round(t-(a+o)/2),Math.round(t-(r+l)/2)),i.setCenterPoint(a,o,r,l)},setCenterPoint:function(t,e,n,i){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,l=n+a.drawingArea,s=a.height-i-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((l+s)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/e(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this,i=n.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+n.xCenter,y:Math.round(Math.sin(i)*e)+n.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,n=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,o=a.valueOrDefault;if(e.display){var r=t.ctx,l=this.getIndexAngle(0),s=o(i.fontSize,v.defaultFontSize),u=o(i.fontStyle,v.defaultFontStyle),d=o(i.fontFamily,v.defaultFontFamily),c=a.fontString(s,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=o(i.fontColor,v.defaultFontColor);if(r.font=c,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(l),i.showLabelBackdrop){var h=r.measureText(e).width;r.fillStyle=i.backdropColor,r.fillRect(-h/2-i.backdropPaddingX,-u-s/2-i.backdropPaddingY,h+2*i.backdropPaddingX,s+2*i.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=d,r.fillText(e,0,-u),r.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",b,m)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},o=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,o.push(i));return o}function o(t,e,n,i){if("linear"===i||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,o,r,l,s,u=[],d=[e];for(a=0,o=t.length;a<o;++a)(l=t[a])>e&&l<n&&d.push(l);for(d.push(n),a=0,o=d.length;a<o;++a)s=d[a+1],r=d[a-1],l=d[a],void 0!==r&&void 0!==s&&Math.round((s+r)/2)===l||u.push({time:l,pos:a/(o-1)});return u}function r(t,e,n){for(var i,a,o,r=0,l=t.length-1;r>=0&&r<=l;){if(i=r+l>>1,a=t[i-1]||null,o=t[i],!a)return{lo:null,hi:o};if(o[e]<n)r=i+1;else{if(!(a[e]>n))return{lo:a,hi:o};l=i-1}}return{lo:o,hi:null}}function l(t,e,n,i){var a=r(t,e,n),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],l=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=l[e]-o[e],u=s?(n-o[e])/s:0,d=(l[i]-o[i])*u;return o[i]+d}function s(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?m(t,i):(t instanceof m||(t=m(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(x.isNullOrUndef(t))return null;var n=e.options.time,i=s(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,o,r,l=e-t,s=w[n],u=s.size,d=s.steps;if(!d)return Math.ceil(l/((i||1)*u));for(a=0,o=d.length;a<o&&(r=d[a],!(Math.ceil(l/(u*r))<=i));++a);return r}function c(t,e,n,i){var a,o,r,l=M.length;for(a=M.indexOf(t);a<l-1;++a)if(o=w[M[a]],r=o.steps?o.steps[o.steps.length-1]:k,o.common&&Math.ceil((n-e)/(r*o.size))<=i)return M[a];return M[l-1]}function h(t,e,n,i){var a,o,r=m.duration(m(i).diff(m(n)));for(a=M.length-1;a>=M.indexOf(e);a--)if(o=M[a],w[o].common&&r.as(o)>=t.length)return o;return M[e?M.indexOf(e):0]}function f(t){for(var e=M.indexOf(t)+1,n=M.length;e<n;++e)if(w[M[e]].common)return M[e]}function g(t,e,n,i){var a,o=i.time,r=o.unit||c(o.minUnit,t,e,n),l=f(r),s=x.valueOrDefault(o.stepSize,o.unitStepSize),u="week"===r&&o.isoWeekday,h=i.ticks.major.enabled,g=w[r],p=m(t),v=m(e),b=[];for(s||(s=d(t,e,r,n)),u&&(p=p.isoWeekday(u),v=v.isoWeekday(u)),p=p.startOf(u?"day":r),(v=v.startOf(u?"day":r))<e&&v.add(1,r),a=m(p),h&&l&&!u&&!o.round&&(a.startOf(l),a.add(~~((p-a)/(g.size*s))*s,r));a<v;a.add(s,r))b.push(+a);return b.push(+a),b}function p(t,e,n,i,a){var o,r,s=0,u=0;return a.offset&&e.length&&(a.time.min||(o=e.length>1?e[1]:i,r=e[0],s=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2),a.time.max||(o=e[e.length-1],r=e.length>1?e[e.length-2]:n,u=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2)),{left:s,right:u}}function v(t,e){var n,i,a,o,r=[];for(n=0,i=t.length;n<i;++n)a=t[n],o=!!e&&a===+m(a).startOf(e),r.push({value:a,major:o});return r}var m=t(1);m="function"==typeof m?m:window.moment;var b=t(25),x=t(45),y=Number.MIN_SAFE_INTEGER||-9007199254740991,k=Number.MAX_SAFE_INTEGER||9007199254740991,w={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},M=Object.keys(w);e.exports=function(t){var e=t.Scale.extend({initialize:function(){if(!m)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),t.Scale.prototype.initialize.call(this)},update:function(){var e=this,n=e.options;return n.time&&n.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),t.Scale.prototype.update.apply(e,arguments)},getRightValue:function(e){return e&&void 0!==e.t&&(e=e.t),t.Scale.prototype.getRightValue.call(this,e)},determineDataLimits:function(){var t,e,n,o,r,l,s=this,d=s.chart,c=s.options.time,h=k,f=y,g=[],p=[],v=[];for(t=0,n=d.data.labels.length;t<n;++t)v.push(u(d.data.labels[t],s));for(t=0,n=(d.data.datasets||[]).length;t<n;++t)if(d.isDatasetVisible(t))if(r=d.data.datasets[t].data,x.isObject(r[0]))for(p[t]=[],e=0,o=r.length;e<o;++e)l=u(r[e],s),g.push(l),p[t][e]=l;else g.push.apply(g,v),p[t]=v.slice(0);else p[t]=[];v.length&&(v=a(v).sort(i),h=Math.min(h,v[0]),f=Math.max(f,v[v.length-1])),g.length&&(g=a(g).sort(i),h=Math.min(h,g[0]),f=Math.max(f,g[g.length-1])),h=u(c.min,s)||h,f=u(c.max,s)||f,h=h===k?+m().startOf("day"):h,f=f===y?+m().endOf("day")+1:f,s.min=Math.min(h,f),s.max=Math.max(h+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:g,datasets:p,labels:v}},buildTicks:function(){var t,e,n,i=this,a=i.min,r=i.max,l=i.options,s=l.time,d=[],c=[];switch(l.ticks.source){case"data":d=i._timestamps.data;break;case"labels":d=i._timestamps.labels;break;case"auto":default:d=g(a,r,i.getLabelCapacity(a),l)}for("ticks"===l.bounds&&d.length&&(a=d[0],r=d[d.length-1]),a=u(s.min,i)||a,r=u(s.max,i)||r,t=0,e=d.length;t<e;++t)(n=d[t])>=a&&n<=r&&c.push(n);return i.min=a,i.max=r,i._unit=s.unit||h(c,s.minUnit,i.min,i.max),i._majorUnit=f(i._unit),i._table=o(i._timestamps.data,a,r,l.distribution),i._offsets=p(i._table,c,a,r,l),v(c,i._majorUnit)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,o=i.labels&&t<i.labels.length?i.labels[t]:"",r=i.datasets[e].data[t];return x.isObject(r)&&(o=n.getRightValue(r)),a.tooltipFormat&&(o=s(o,a).format(a.tooltipFormat)),o},tickFormatFunction:function(t,e,n,i){var a=this,o=a.options,r=t.valueOf(),l=o.time.displayFormats,s=l[a._unit],u=a._majorUnit,d=l[u],c=t.clone().startOf(u).valueOf(),h=o.ticks.major,f=h.enabled&&u&&d&&r===c,g=t.format(i||(f?d:s)),p=f?h:o.ticks.minor,v=x.valueOrDefault(p.callback,p.userCallback);return v?v(g,e,n):g},convertTicksToLabels:function(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(this.tickFormatFunction(m(t[e].value),e,t));return i},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=l(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=this,a=null;if(void 0!==e&&void 0!==n&&(a=i._timestamps.datasets[n][e]),null===a&&(a=u(t,i)),null!==a)return i.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=(n?(t-i)/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=l(e._table,"pos",a,"time");return m(o)},getLabelWidth:function(t){var e=this,n=e.options.ticks,i=e.ctx.measureText(t).width,a=x.toRadians(n.maxRotation),o=Math.cos(a),r=Math.sin(a);return i*o+x.valueOrDefault(n.fontSize,b.global.defaultFontSize)*r},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,i=e.tickFormatFunction(m(t),0,[],n),a=e.getLabelWidth(i),o=e.isHorizontal()?e.width:e.height;return Math.floor(o/a)}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,25:25,45:45}]},{},[7])(7)});
20
 
21
 
22
+ /* ================== admin/assets/js/src/plugins/jquery.matchHeight-min.js =================== */
23
+
24
+
25
+ /*
26
+ * jquery-match-height 0.7.2 by @liabru
27
+ * http://brm.io/jquery-match-height/
28
+ * License MIT
29
+ */
30
+ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){var e=-1,o=-1,n=function(t){return parseFloat(t)||0},a=function(e){var o=1,a=t(e),i=null,r=[];return a.each(function(){var e=t(this),a=e.offset().top-n(e.css("margin-top")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(i-a))<=o?r[r.length-1]=s.add(e):r.push(e),i=a}),r},i=function(e){var o={
31
+ byRow:!0,property:"height",target:null,remove:!1};return"object"==typeof e?t.extend(o,e):("boolean"==typeof e?o.byRow=e:"remove"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=i(e);if(o.remove){var n=this;return this.css(o.property,""),t.each(r._groups,function(t,e){e.elements=e.elements.not(n)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version="0.7.2",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,
32
+ r._afterUpdate=null,r._rows=a,r._parse=n,r._parseOptions=i,r._apply=function(e,o){var s=i(o),h=t(e),l=[h],c=t(window).scrollTop(),p=t("html").outerHeight(!0),u=h.parents().filter(":hidden");return u.each(function(){var e=t(this);e.data("style-cache",e.attr("style"))}),u.css("display","block"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block"),e.data("style-cache",e.attr("style")),e.css({display:o,"padding-top":"0",
33
+ "padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),l=a(h),h.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||"")})),t.each(l,function(e,o){var a=t(o),i=0;if(s.target)i=s.target.outerHeight(!1);else{if(s.byRow&&a.length<=1)return void a.css(s.property,"");a.each(function(){var e=t(this),o=e.attr("style"),n=e.css("display");"inline-block"!==n&&"flex"!==n&&"inline-flex"!==n&&(n="block");var a={
34
+ display:n};a[s.property]="",e.css(a),e.outerHeight(!1)>i&&(i=e.outerHeight(!1)),o?e.attr("style",o):e.css("display","")})}a.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||("border-box"!==e.css("box-sizing")&&(o+=n(e.css("border-top-width"))+n(e.css("border-bottom-width")),o+=n(e.css("padding-top"))+n(e.css("padding-bottom"))),e.css(s.property,i-o+"px"))})}),u.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t("html").outerHeight(!0)),
35
+ this},r._applyDataApi=function(){var e={};t("[data-match-height], [data-mh]").each(function(){var o=t(this),n=o.attr("data-mh")||o.attr("data-match-height");n in e?e[n]=e[n].add(o):e[n]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(n,a){if(a&&"resize"===a.type){var i=t(window).width();if(i===e)return;e=i;
36
+ }n?o===-1&&(o=setTimeout(function(){s(a),o=-1},r._throttle)):s(a)},t(r._applyDataApi);var h=t.fn.on?"on":"bind";t(window)[h]("load",function(t){r._update(!1,t)}),t(window)[h]("resize orientationchange",function(t){r._update(!0,t)})});
37
+
38
+
39
+ /* ================== admin/assets/js/src/plugins/spectrum.js =================== */
40
+
41
+
42
+ // Spectrum Colorpicker v1.8.0
43
+ // https://github.com/bgrins/spectrum
44
+ // Author: Brian Grinstead
45
+ // License: MIT
46
+
47
+ (function (factory) {
48
+ "use strict";
49
+
50
+ if (typeof define === 'function' && define.amd) { // AMD
51
+ define(['jquery'], factory);
52
+ }
53
+ else if (typeof exports == "object" && typeof module == "object") { // CommonJS
54
+ module.exports = factory(require('jquery'));
55
+ }
56
+ else { // Browser
57
+ factory(jQuery);
58
+ }
59
+ })(function($, undefined) {
60
+ "use strict";
61
+
62
+ var defaultOpts = {
63
+
64
+ // Callbacks
65
+ beforeShow: noop,
66
+ move: noop,
67
+ change: noop,
68
+ show: noop,
69
+ hide: noop,
70
+
71
+ // Options
72
+ color: false,
73
+ flat: false,
74
+ showInput: false,
75
+ allowEmpty: false,
76
+ showButtons: true,
77
+ clickoutFiresChange: true,
78
+ showInitial: false,
79
+ showPalette: false,
80
+ showPaletteOnly: false,
81
+ hideAfterPaletteSelect: false,
82
+ togglePaletteOnly: false,
83
+ showSelectionPalette: true,
84
+ localStorageKey: false,
85
+ appendTo: "body",
86
+ maxSelectionSize: 7,
87
+ cancelText: "cancel",
88
+ chooseText: "choose",
89
+ togglePaletteMoreText: "more",
90
+ togglePaletteLessText: "less",
91
+ clearText: "Clear Color Selection",
92
+ noColorSelectedText: "No Color Selected",
93
+ preferredFormat: false,
94
+ className: "", // Deprecated - use containerClassName and replacerClassName instead.
95
+ containerClassName: "",
96
+ replacerClassName: "",
97
+ showAlpha: false,
98
+ theme: "sp-light",
99
+ palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]],
100
+ selectionPalette: [],
101
+ disabled: false,
102
+ offset: null
103
+ },
104
+ spectrums = [],
105
+ IE = !!/msie/i.exec( window.navigator.userAgent ),
106
+ rgbaSupport = (function() {
107
+ function contains( str, substr ) {
108
+ return !!~('' + str).indexOf(substr);
109
+ }
110
+
111
+ var elem = document.createElement('div');
112
+ var style = elem.style;
113
+ style.cssText = 'background-color:rgba(0,0,0,.5)';
114
+ return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
115
+ })(),
116
+ replaceInput = [
117
+ "<div class='sp-replacer'>",
118
+ "<div class='sp-preview'><div class='sp-preview-inner'></div></div>",
119
+ "<div class='sp-dd'>&#9660;</div>",
120
+ "</div>"
121
+ ].join(''),
122
+ markup = (function () {
123
+
124
+ // IE does not support gradients with multiple stops, so we need to simulate
125
+ // that for the rainbow slider with 8 divs that each have a single gradient
126
+ var gradientFix = "";
127
+ if (IE) {
128
+ for (var i = 1; i <= 6; i++) {
129
+ gradientFix += "<div class='sp-" + i + "'></div>";
130
+ }
131
+ }
132
+
133
+ return [
134
+ "<div class='sp-container sp-hidden'>",
135
+ "<div class='sp-palette-container'>",
136
+ "<div class='sp-palette sp-thumb sp-cf'></div>",
137
+ "<div class='sp-palette-button-container sp-cf'>",
138
+ "<button type='button' class='sp-palette-toggle'></button>",
139
+ "</div>",
140
+ "</div>",
141
+ "<div class='sp-picker-container'>",
142
+ "<div class='sp-top sp-cf'>",
143
+ "<div class='sp-fill'></div>",
144
+ "<div class='sp-top-inner'>",
145
+ "<div class='sp-color'>",
146
+ "<div class='sp-sat'>",
147
+ "<div class='sp-val'>",
148
+ "<div class='sp-dragger'></div>",
149
+ "</div>",
150
+ "</div>",
151
+ "</div>",
152
+ "<div class='sp-clear sp-clear-display'>",
153
+ "</div>",
154
+ "<div class='sp-hue'>",
155
+ "<div class='sp-slider'></div>",
156
+ gradientFix,
157
+ "</div>",
158
+ "</div>",
159
+ "<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>",
160
+ "</div>",
161
+ "<div class='sp-input-container sp-cf'>",
162
+ "<input class='sp-input' type='text' spellcheck='false' />",
163
+ "</div>",
164
+ "<div class='sp-initial sp-thumb sp-cf'></div>",
165
+ "<div class='sp-button-container sp-cf'>",
166
+ "<a class='sp-cancel' href='#'></a>",
167
+ "<button type='button' class='sp-choose'></button>",
168
+ "</div>",
169
+ "</div>",
170
+ "</div>"
171
+ ].join("");
172
+ })();
173
+
174
+ function paletteTemplate (p, color, className, opts) {
175
+ var html = [];
176
+ for (var i = 0; i < p.length; i++) {
177
+ var current = p[i];
178
+ if(current) {
179
+ var tiny = tinycolor(current);
180
+ var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light";
181
+ c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : "";
182
+ var formattedString = tiny.toString(opts.preferredFormat || "rgb");
183
+ var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter();
184
+ html.push('<span title="' + formattedString + '" data-color="' + tiny.toRgbString() + '" class="' + c + '"><span class="sp-thumb-inner" style="' + swatchStyle + ';" /></span>');
185
+ } else {
186
+ var cls = 'sp-clear-display';
187
+ html.push($('<div />')
188
+ .append($('<span data-color="" style="background-color:transparent;" class="' + cls + '"></span>')
189
+ .attr('title', opts.noColorSelectedText)
190
+ )
191
+ .html()
192
+ );
193
+ }
194
+ }
195
+ return "<div class='sp-cf " + className + "'>" + html.join('') + "</div>";
196
+ }
197
+
198
+ function hideAll() {
199
+ for (var i = 0; i < spectrums.length; i++) {
200
+ if (spectrums[i]) {
201
+ spectrums[i].hide();
202
+ }
203
+ }
204
+ }
205
+
206
+ function instanceOptions(o, callbackContext) {
207
+ var opts = $.extend({}, defaultOpts, o);
208
+ opts.callbacks = {
209
+ 'move': bind(opts.move, callbackContext),
210
+ 'change': bind(opts.change, callbackContext),
211
+ 'show': bind(opts.show, callbackContext),
212
+ 'hide': bind(opts.hide, callbackContext),
213
+ 'beforeShow': bind(opts.beforeShow, callbackContext)
214
+ };
215
+
216
+ return opts;
217
+ }
218
+
219
+ function spectrum(element, o) {
220
+
221
+ var opts = instanceOptions(o, element),
222
+ flat = opts.flat,
223
+ showSelectionPalette = opts.showSelectionPalette,
224
+ localStorageKey = opts.localStorageKey,
225
+ theme = opts.theme,
226
+ callbacks = opts.callbacks,
227
+ resize = throttle(reflow, 10),
228
+ visible = false,
229
+ isDragging = false,
230
+ dragWidth = 0,
231
+ dragHeight = 0,
232
+ dragHelperHeight = 0,
233
+ slideHeight = 0,
234
+ slideWidth = 0,
235
+ alphaWidth = 0,
236
+ alphaSlideHelperWidth = 0,
237
+ slideHelperHeight = 0,
238
+ currentHue = 0,
239
+ currentSaturation = 0,
240
+ currentValue = 0,
241
+ currentAlpha = 1,
242
+ palette = [],
243
+ paletteArray = [],
244
+ paletteLookup = {},
245
+ selectionPalette = opts.selectionPalette.slice(0),
246
+ maxSelectionSize = opts.maxSelectionSize,
247
+ draggingClass = "sp-dragging",
248
+ shiftMovementDirection = null;
249
+
250
+ var doc = element.ownerDocument,
251
+ body = doc.body,
252
+ boundElement = $(element),
253
+ disabled = false,
254
+ container = $(markup, doc).addClass(theme),
255
+ pickerContainer = container.find(".sp-picker-container"),
256
+ dragger = container.find(".sp-color"),
257
+ dragHelper = container.find(".sp-dragger"),
258
+ slider = container.find(".sp-hue"),
259
+ slideHelper = container.find(".sp-slider"),
260
+ alphaSliderInner = container.find(".sp-alpha-inner"),
261
+ alphaSlider = container.find(".sp-alpha"),
262
+ alphaSlideHelper = container.find(".sp-alpha-handle"),
263
+ textInput = container.find(".sp-input"),
264
+ paletteContainer = container.find(".sp-palette"),
265
+ initialColorContainer = container.find(".sp-initial"),
266
+ cancelButton = container.find(".sp-cancel"),
267
+ clearButton = container.find(".sp-clear"),
268
+ chooseButton = container.find(".sp-choose"),
269
+ toggleButton = container.find(".sp-palette-toggle"),
270
+ isInput = boundElement.is("input"),
271
+ isInputTypeColor = isInput && boundElement.attr("type") === "color" && inputTypeColorSupport(),
272
+ shouldReplace = isInput && !flat,
273
+ replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]),
274
+ offsetElement = (shouldReplace) ? replacer : boundElement,
275
+ previewElement = replacer.find(".sp-preview-inner"),
276
+ initialColor = opts.color || (isInput && boundElement.val()),
277
+ colorOnShow = false,
278
+ currentPreferredFormat = opts.preferredFormat,
279
+ clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,
280
+ isEmpty = !initialColor,
281
+ allowEmpty = opts.allowEmpty && !isInputTypeColor;
282
+
283
+ function applyOptions() {
284
+
285
+ if (opts.showPaletteOnly) {
286
+ opts.showPalette = true;
287
+ }
288
+
289
+ toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);
290
+
291
+ if (opts.palette) {
292
+ palette = opts.palette.slice(0);
293
+ paletteArray = $.isArray(palette[0]) ? palette : [palette];
294
+ paletteLookup = {};
295
+ for (var i = 0; i < paletteArray.length; i++) {
296
+ for (var j = 0; j < paletteArray[i].length; j++) {
297
+ var rgb = tinycolor(paletteArray[i][j]).toRgbString();
298
+ paletteLookup[rgb] = true;
299
+ }
300
+ }
301
+ }
302
+
303
+ container.toggleClass("sp-flat", flat);
304
+ container.toggleClass("sp-input-disabled", !opts.showInput);
305
+ container.toggleClass("sp-alpha-enabled", opts.showAlpha);
306
+ container.toggleClass("sp-clear-enabled", allowEmpty);
307
+ container.toggleClass("sp-buttons-disabled", !opts.showButtons);
308
+ container.toggleClass("sp-palette-buttons-disabled", !opts.togglePaletteOnly);
309
+ container.toggleClass("sp-palette-disabled", !opts.showPalette);
310
+ container.toggleClass("sp-palette-only", opts.showPaletteOnly);
311
+ container.toggleClass("sp-initial-disabled", !opts.showInitial);
312
+ container.addClass(opts.className).addClass(opts.containerClassName);
313
+
314
+ reflow();
315
+ }
316
+
317
+ function initialize() {
318
+
319
+ if (IE) {
320
+ container.find("*:not(input)").attr("unselectable", "on");
321
+ }
322
+
323
+ applyOptions();
324
+
325
+ if (shouldReplace) {
326
+ boundElement.after(replacer).hide();
327
+ }
328
+
329
+ if (!allowEmpty) {
330
+ clearButton.hide();
331
+ }
332
+
333
+ if (flat) {
334
+ boundElement.after(container).hide();
335
+ }
336
+ else {
337
+
338
+ var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo);
339
+ if (appendTo.length !== 1) {
340
+ appendTo = $("body");
341
+ }
342
+
343
+ appendTo.append(container);
344
+ }
345
+
346
+ updateSelectionPaletteFromStorage();
347
+
348
+ offsetElement.bind("click.spectrum touchstart.spectrum", function (e) {
349
+ if (!disabled) {
350
+ toggle();
351
+ }
352
+
353
+ e.stopPropagation();
354
+
355
+ if (!$(e.target).is("input")) {
356
+ e.preventDefault();
357
+ }
358
+ });
359
+
360
+ if(boundElement.is(":disabled") || (opts.disabled === true)) {
361
+ disable();
362
+ }
363
+
364
+ // Prevent clicks from bubbling up to document. This would cause it to be hidden.
365
+ container.click(stopPropagation);
366
+
367
+ // Handle user typed input
368
+ textInput.change(setFromTextInput);
369
+ textInput.bind("paste", function () {
370
+ setTimeout(setFromTextInput, 1);
371
+ });
372
+ textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } });
373
+
374
+ cancelButton.text(opts.cancelText);
375
+ cancelButton.bind("click.spectrum", function (e) {
376
+ e.stopPropagation();
377
+ e.preventDefault();
378
+ revert();
379
+ hide();
380
+ });
381
+
382
+ clearButton.attr("title", opts.clearText);
383
+ clearButton.bind("click.spectrum", function (e) {
384
+ e.stopPropagation();
385
+ e.preventDefault();
386
+ isEmpty = true;
387
+ move();
388
+
389
+ if(flat) {
390
+ //for the flat style, this is a change event
391
+ updateOriginalInput(true);
392
+ }
393
+ });
394
+
395
+ chooseButton.text(opts.chooseText);
396
+ chooseButton.bind("click.spectrum", function (e) {
397
+ e.stopPropagation();
398
+ e.preventDefault();
399
+
400
+ if (IE && textInput.is(":focus")) {
401
+ textInput.trigger('change');
402
+ }
403
+
404
+ if (isValid()) {
405
+ updateOriginalInput(true);
406
+ hide();
407
+ }
408
+ });
409
+
410
+ toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText);
411
+ toggleButton.bind("click.spectrum", function (e) {
412
+ e.stopPropagation();
413
+ e.preventDefault();
414
+
415
+ opts.showPaletteOnly = !opts.showPaletteOnly;
416
+
417
+ // To make sure the Picker area is drawn on the right, next to the
418
+ // Palette area (and not below the palette), first move the Palette
419
+ // to the left to make space for the picker, plus 5px extra.
420
+ // The 'applyOptions' function puts the whole container back into place
421
+ // and takes care of the button-text and the sp-palette-only CSS class.
422
+ if (!opts.showPaletteOnly && !flat) {
423
+ container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5));
424
+ }
425
+ applyOptions();
426
+ });
427
+
428
+ draggable(alphaSlider, function (dragX, dragY, e) {
429
+ currentAlpha = (dragX / alphaWidth);
430
+ isEmpty = false;
431
+ if (e.shiftKey) {
432
+ currentAlpha = Math.round(currentAlpha * 10) / 10;
433
+ }
434
+
435
+ move();
436
+ }, dragStart, dragStop);
437
+
438
+ draggable(slider, function (dragX, dragY) {
439
+ currentHue = parseFloat(dragY / slideHeight);
440
+ isEmpty = false;
441
+ if (!opts.showAlpha) {
442
+ currentAlpha = 1;
443
+ }
444
+ move();
445
+ }, dragStart, dragStop);
446
+
447
+ draggable(dragger, function (dragX, dragY, e) {
448
+
449
+ // shift+drag should snap the movement to either the x or y axis.
450
+ if (!e.shiftKey) {
451
+ shiftMovementDirection = null;
452
+ }
453
+ else if (!shiftMovementDirection) {
454
+ var oldDragX = currentSaturation * dragWidth;
455
+ var oldDragY = dragHeight - (currentValue * dragHeight);
456
+ var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY);
457
+
458
+ shiftMovementDirection = furtherFromX ? "x" : "y";
459
+ }
460
+
461
+ var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x";
462
+ var setValue = !shiftMovementDirection || shiftMovementDirection === "y";
463
+
464
+ if (setSaturation) {
465
+ currentSaturation = parseFloat(dragX / dragWidth);
466
+ }
467
+ if (setValue) {
468
+ currentValue = parseFloat((dragHeight - dragY) / dragHeight);
469
+ }
470
+
471
+ isEmpty = false;
472
+ if (!opts.showAlpha) {
473
+ currentAlpha = 1;
474
+ }
475
+
476
+ move();
477
+
478
+ }, dragStart, dragStop);
479
+
480
+ if (!!initialColor) {
481
+ set(initialColor);
482
+
483
+ // In case color was black - update the preview UI and set the format
484
+ // since the set function will not run (default color is black).
485
+ updateUI();
486
+ currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).format;
487
+
488
+ addColorToSelectionPalette(initialColor);
489
+ }
490
+ else {
491
+ updateUI();
492
+ }
493
+
494
+ if (flat) {
495
+ show();
496
+ }
497
+
498
+ function paletteElementClick(e) {
499
+ if (e.data && e.data.ignore) {
500
+ set($(e.target).closest(".sp-thumb-el").data("color"));
501
+ move();
502
+ }
503
+ else {
504
+ set($(e.target).closest(".sp-thumb-el").data("color"));
505
+ move();
506
+ updateOriginalInput(true);
507
+ if (opts.hideAfterPaletteSelect) {
508
+ hide();
509
+ }
510
+ }
511
+
512
+ return false;
513
+ }
514
+
515
+ var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum";
516
+ paletteContainer.delegate(".sp-thumb-el", paletteEvent, paletteElementClick);
517
+ initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, paletteElementClick);
518
+ }
519
+
520
+ function updateSelectionPaletteFromStorage() {
521
+
522
+ if (localStorageKey && window.localStorage) {
523
+
524
+ // Migrate old palettes over to new format. May want to remove this eventually.
525
+ try {
526
+ var oldPalette = window.localStorage[localStorageKey].split(",#");
527
+ if (oldPalette.length > 1) {
528
+ delete window.localStorage[localStorageKey];
529
+ $.each(oldPalette, function(i, c) {
530
+ addColorToSelectionPalette(c);
531
+ });
532
+ }
533
+ }
534
+ catch(e) { }
535
+
536
+ try {
537
+ selectionPalette = window.localStorage[localStorageKey].split(";");
538
+ }
539
+ catch (e) { }
540
+ }
541
+ }
542
+
543
+ function addColorToSelectionPalette(color) {
544
+ if (showSelectionPalette) {
545
+ var rgb = tinycolor(color).toRgbString();
546
+ if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) {
547
+ selectionPalette.push(rgb);
548
+ while(selectionPalette.length > maxSelectionSize) {
549
+ selectionPalette.shift();
550
+ }
551
+ }
552
+
553
+ if (localStorageKey && window.localStorage) {
554
+ try {
555
+ window.localStorage[localStorageKey] = selectionPalette.join(";");
556
+ }
557
+ catch(e) { }
558
+ }
559
+ }
560
+ }
561
+
562
+ function getUniqueSelectionPalette() {
563
+ var unique = [];
564
+ if (opts.showPalette) {
565
+ for (var i = 0; i < selectionPalette.length; i++) {
566
+ var rgb = tinycolor(selectionPalette[i]).toRgbString();
567
+
568
+ if (!paletteLookup[rgb]) {
569
+ unique.push(selectionPalette[i]);
570
+ }
571
+ }
572
+ }
573
+
574
+ return unique.reverse().slice(0, opts.maxSelectionSize);
575
+ }
576
+
577
+ function drawPalette() {
578
+
579
+ var currentColor = get();
580
+
581
+ var html = $.map(paletteArray, function (palette, i) {
582
+ return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts);
583
+ });
584
+
585
+ updateSelectionPaletteFromStorage();
586
+
587
+ if (selectionPalette) {
588
+ html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts));
589
+ }
590
+
591
+ paletteContainer.html(html.join(""));
592
+ }
593
+
594
+ function drawInitial() {
595
+ if (opts.showInitial) {
596
+ var initial = colorOnShow;
597
+ var current = get();
598
+ initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts));
599
+ }
600
+ }
601
+
602
+ function dragStart() {
603
+ if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) {
604
+ reflow();
605
+ }
606
+ isDragging = true;
607
+ container.addClass(draggingClass);
608
+ shiftMovementDirection = null;
609
+ boundElement.trigger('dragstart.spectrum', [ get() ]);
610
+ }
611
+
612
+ function dragStop() {
613
+ isDragging = false;
614
+ container.removeClass(draggingClass);
615
+ boundElement.trigger('dragstop.spectrum', [ get() ]);
616
+ }
617
+
618
+ function setFromTextInput() {
619
+
620
+ var value = textInput.val();
621
+
622
+ if ((value === null || value === "") && allowEmpty) {
623
+ set(null);
624
+ updateOriginalInput(true);
625
+ }
626
+ else {
627
+ var tiny = tinycolor(value);
628
+ if (tiny.isValid()) {
629
+ set(tiny);
630
+ updateOriginalInput(true);
631
+ }
632
+ else {
633
+ textInput.addClass("sp-validation-error");
634
+ }
635
+ }
636
+ }
637
+
638
+ function toggle() {
639
+ if (visible) {
640
+ hide();
641
+ }
642
+ else {
643
+ show();
644
+ }
645
+ }
646
+
647
+ function show() {
648
+ var event = $.Event('beforeShow.spectrum');
649
+
650
+ if (visible) {
651
+ reflow();
652
+ return;
653
+ }
654
+
655
+ boundElement.trigger(event, [ get() ]);
656
+
657
+ if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {
658
+ return;
659
+ }
660
+
661
+ hideAll();
662
+ visible = true;
663
+
664
+ $(doc).bind("keydown.spectrum", onkeydown);
665
+ $(doc).bind("click.spectrum", clickout);
666
+ $(window).bind("resize.spectrum", resize);
667
+ replacer.addClass("sp-active");
668
+ container.removeClass("sp-hidden");
669
+
670
+ reflow();
671
+ updateUI();
672
+
673
+ colorOnShow = get();
674
+
675
+ drawInitial();
676
+ callbacks.show(colorOnShow);
677
+ boundElement.trigger('show.spectrum', [ colorOnShow ]);
678
+ }
679
+
680
+ function onkeydown(e) {
681
+ // Close on ESC
682
+ if (e.keyCode === 27) {
683
+ hide();
684
+ }
685
+ }
686
+
687
+ function clickout(e) {
688
+ // Return on right click.
689
+ if (e.button == 2) { return; }
690
+
691
+ // If a drag event was happening during the mouseup, don't hide
692
+ // on click.
693
+ if (isDragging) { return; }
694
+
695
+ if (clickoutFiresChange) {
696
+ updateOriginalInput(true);
697
+ }
698
+ else {
699
+ revert();
700
+ }
701
+ hide();
702
+ }
703
+
704
+ function hide() {
705
+ // Return if hiding is unnecessary
706
+ if (!visible || flat) { return; }
707
+ visible = false;
708
+
709
+ $(doc).unbind("keydown.spectrum", onkeydown);
710
+ $(doc).unbind("click.spectrum", clickout);
711
+ $(window).unbind("resize.spectrum", resize);
712
+
713
+ replacer.removeClass("sp-active");
714
+ container.addClass("sp-hidden");
715
+
716
+ callbacks.hide(get());
717
+ boundElement.trigger('hide.spectrum', [ get() ]);
718
+ }
719
+
720
+ function revert() {
721
+ set(colorOnShow, true);
722
+ }
723
+
724
+ function set(color, ignoreFormatChange) {
725
+ if (tinycolor.equals(color, get())) {
726
+ // Update UI just in case a validation error needs
727
+ // to be cleared.
728
+ updateUI();
729
+ return;
730
+ }
731
+
732
+ var newColor, newHsv;
733
+ if (!color && allowEmpty) {
734
+ isEmpty = true;
735
+ } else {
736
+ isEmpty = false;
737
+ newColor = tinycolor(color);
738
+ newHsv = newColor.toHsv();
739
+
740
+ currentHue = (newHsv.h % 360) / 360;
741
+ currentSaturation = newHsv.s;
742
+ currentValue = newHsv.v;
743
+ currentAlpha = newHsv.a;
744
+ }
745
+ updateUI();
746
+
747
+ if (newColor && newColor.isValid() && !ignoreFormatChange) {
748
+ currentPreferredFormat = opts.preferredFormat || newColor.getFormat();
749
+ }
750
+ }
751
+
752
+ function get(opts) {
753
+ opts = opts || { };
754
+
755
+ if (allowEmpty && isEmpty) {
756
+ return null;
757
+ }
758
+
759
+ return tinycolor.fromRatio({
760
+ h: currentHue,
761
+ s: currentSaturation,
762
+ v: currentValue,
763
+ a: Math.round(currentAlpha * 100) / 100
764
+ }, { format: opts.format || currentPreferredFormat });
765
+ }
766
+
767
+ function isValid() {
768
+ return !textInput.hasClass("sp-validation-error");
769
+ }
770
+
771
+ function move() {
772
+ updateUI();
773
+
774
+ callbacks.move(get());
775
+ boundElement.trigger('move.spectrum', [ get() ]);
776
+ }
777
+
778
+ function updateUI() {
779
+
780
+ textInput.removeClass("sp-validation-error");
781
+
782
+ updateHelperLocations();
783
+
784
+ // Update dragger background color (gradients take care of saturation and value).
785
+ var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 });
786
+ dragger.css("background-color", flatColor.toHexString());
787
+
788
+ // Get a format that alpha will be included in (hex and names ignore alpha)
789
+ var format = currentPreferredFormat;
790
+ if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) {
791
+ if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") {
792
+ format = "rgb";
793
+ }
794
+ }
795
+
796
+ var realColor = get({ format: format }),
797
+ displayColor = '';
798
+
799
+ //reset background info for preview element
800
+ previewElement.removeClass("sp-clear-display");
801
+ previewElement.css('background-color', 'transparent');
802
+
803
+ if (!realColor && allowEmpty) {
804
+ // Update the replaced elements background with icon indicating no color selection
805
+ previewElement.addClass("sp-clear-display");
806
+ }
807
+ else {
808
+ var realHex = realColor.toHexString(),
809
+ realRgb = realColor.toRgbString();
810
+
811
+ // Update the replaced elements background color (with actual selected color)
812
+ if (rgbaSupport || realColor.alpha === 1) {
813
+ previewElement.css("background-color", realRgb);
814
+ }
815
+ else {
816
+ previewElement.css("background-color", "transparent");
817
+ previewElement.css("filter", realColor.toFilter());
818
+ }
819
+
820
+ if (opts.showAlpha) {
821
+ var rgb = realColor.toRgb();
822
+ rgb.a = 0;
823
+ var realAlpha = tinycolor(rgb).toRgbString();
824
+ var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")";
825
+
826
+ if (IE) {
827
+ alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex));
828
+ }
829
+ else {
830
+ alphaSliderInner.css("background", "-webkit-" + gradient);
831
+ alphaSliderInner.css("background", "-moz-" + gradient);
832
+ alphaSliderInner.css("background", "-ms-" + gradient);
833
+ // Use current syntax gradient on unprefixed property.
834
+ alphaSliderInner.css("background",
835
+ "linear-gradient(to right, " + realAlpha + ", " + realHex + ")");
836
+ }
837
+ }
838
+
839
+ displayColor = realColor.toString(format);
840
+ }
841
+
842
+ // Update the text entry input as it changes happen
843
+ if (opts.showInput) {
844
+ textInput.val(displayColor);
845
+ }
846
+
847
+ if (opts.showPalette) {
848
+ drawPalette();
849
+ }
850
+
851
+ drawInitial();
852
+ }
853
+
854
+ function updateHelperLocations() {
855
+ var s = currentSaturation;
856
+ var v = currentValue;
857
+
858
+ if(allowEmpty && isEmpty) {
859
+ //if selected color is empty, hide the helpers
860
+ alphaSlideHelper.hide();
861
+ slideHelper.hide();
862
+ dragHelper.hide();
863
+ }
864
+ else {
865
+ //make sure helpers are visible
866
+ alphaSlideHelper.show();
867
+ slideHelper.show();
868
+ dragHelper.show();
869
+
870
+ // Where to show the little circle in that displays your current selected color
871
+ var dragX = s * dragWidth;
872
+ var dragY = dragHeight - (v * dragHeight);
873
+ dragX = Math.max(
874
+ -dragHelperHeight,
875
+ Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight)
876
+ );
877
+ dragY = Math.max(
878
+ -dragHelperHeight,
879
+ Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight)
880
+ );
881
+ dragHelper.css({
882
+ "top": dragY + "px",
883
+ "left": dragX + "px"
884
+ });
885
+
886
+ var alphaX = currentAlpha * alphaWidth;
887
+ alphaSlideHelper.css({
888
+ "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px"
889
+ });
890
+
891
+ // Where to show the bar that displays your current selected hue
892
+ var slideY = (currentHue) * slideHeight;
893
+ slideHelper.css({
894
+ "top": (slideY - slideHelperHeight) + "px"
895
+ });
896
+ }
897
+ }
898
+
899
+ function updateOriginalInput(fireCallback) {
900
+ var color = get(),
901
+ displayColor = '',
902
+ hasChanged = !tinycolor.equals(color, colorOnShow);
903
+
904
+ if (color) {
905
+ displayColor = color.toString(currentPreferredFormat);
906
+ // Update the selection palette with the current color
907
+ addColorToSelectionPalette(color);
908
+ }
909
+
910
+ if (isInput) {
911
+ boundElement.val(displayColor);
912
+ }
913
+
914
+ if (fireCallback && hasChanged) {
915
+ callbacks.change(color);
916
+ boundElement.trigger('change', [ color ]);
917
+ }
918
+ }
919
+
920
+ function reflow() {
921
+ if (!visible) {
922
+ return; // Calculations would be useless and wouldn't be reliable anyways
923
+ }
924
+ dragWidth = dragger.width();
925
+ dragHeight = dragger.height();
926
+ dragHelperHeight = dragHelper.height();
927
+ slideWidth = slider.width();
928
+ slideHeight = slider.height();
929
+ slideHelperHeight = slideHelper.height();
930
+ alphaWidth = alphaSlider.width();
931
+ alphaSlideHelperWidth = alphaSlideHelper.width();
932
+
933
+ if (!flat) {
934
+ container.css("position", "absolute");
935
+ if (opts.offset) {
936
+ container.offset(opts.offset);
937
+ } else {
938
+ container.offset(getOffset(container, offsetElement));
939
+ }
940
+ }
941
+
942
+ updateHelperLocations();
943
+
944
+ if (opts.showPalette) {
945
+ drawPalette();
946
+ }
947
+
948
+ boundElement.trigger('reflow.spectrum');
949
+ }
950
+
951
+ function destroy() {
952
+ boundElement.show();
953
+ offsetElement.unbind("click.spectrum touchstart.spectrum");
954
+ container.remove();
955
+ replacer.remove();
956
+ spectrums[spect.id] = null;
957
+ }
958
+
959
+ function option(optionName, optionValue) {
960
+ if (optionName === undefined) {
961
+ return $.extend({}, opts);
962
+ }
963
+ if (optionValue === undefined) {
964
+ return opts[optionName];
965
+ }
966
+
967
+ opts[optionName] = optionValue;
968
+
969
+ if (optionName === "preferredFormat") {
970
+ currentPreferredFormat = opts.preferredFormat;
971
+ }
972
+ applyOptions();
973
+ }
974
+
975
+ function enable() {
976
+ disabled = false;
977
+ boundElement.attr("disabled", false);
978
+ offsetElement.removeClass("sp-disabled");
979
+ }
980
+
981
+ function disable() {
982
+ hide();
983
+ disabled = true;
984
+ boundElement.attr("disabled", true);
985
+ offsetElement.addClass("sp-disabled");
986
+ }
987
+
988
+ function setOffset(coord) {
989
+ opts.offset = coord;
990
+ reflow();
991
+ }
992
+
993
+ initialize();
994
+
995
+ var spect = {
996
+ show: show,
997
+ hide: hide,
998
+ toggle: toggle,
999
+ reflow: reflow,
1000
+ option: option,
1001
+ enable: enable,
1002
+ disable: disable,
1003
+ offset: setOffset,
1004
+ set: function (c) {
1005
+ set(c);
1006
+ updateOriginalInput();
1007
+ },
1008
+ get: get,
1009
+ destroy: destroy,
1010
+ container: container
1011
+ };
1012
+
1013
+ spect.id = spectrums.push(spect) - 1;
1014
+
1015
+ return spect;
1016
+ }
1017
+
1018
+ /**
1019
+ * checkOffset - get the offset below/above and left/right element depending on screen position
1020
+ * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js
1021
+ */
1022
+ function getOffset(picker, input) {
1023
+ var extraY = 0;
1024
+ var dpWidth = picker.outerWidth();
1025
+ var dpHeight = picker.outerHeight();
1026
+ var inputHeight = input.outerHeight();
1027
+ var doc = picker[0].ownerDocument;
1028
+ var docElem = doc.documentElement;
1029
+ var viewWidth = docElem.clientWidth + $(doc).scrollLeft();
1030
+ var viewHeight = docElem.clientHeight + $(doc).scrollTop();
1031
+ var offset = input.offset();
1032
+ offset.top += inputHeight;
1033
+
1034
+ offset.left -=
1035
+ Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
1036
+ Math.abs(offset.left + dpWidth - viewWidth) : 0);
1037
+
1038
+ offset.top -=
1039
+ Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
1040
+ Math.abs(dpHeight + inputHeight - extraY) : extraY));
1041
+
1042
+ return offset;
1043
+ }
1044
+
1045
+ /**
1046
+ * noop - do nothing
1047
+ */
1048
+ function noop() {
1049
+
1050
+ }
1051
+
1052
+ /**
1053
+ * stopPropagation - makes the code only doing this a little easier to read in line
1054
+ */
1055
+ function stopPropagation(e) {
1056
+ e.stopPropagation();
1057
+ }
1058
+
1059
+ /**
1060
+ * Create a function bound to a given object
1061
+ * Thanks to underscore.js
1062
+ */
1063
+ function bind(func, obj) {
1064
+ var slice = Array.prototype.slice;
1065
+ var args = slice.call(arguments, 2);
1066
+ return function () {
1067
+ return func.apply(obj, args.concat(slice.call(arguments)));
1068
+ };
1069
+ }
1070
+
1071
+ /**
1072
+ * Lightweight drag helper. Handles containment within the element, so that
1073
+ * when dragging, the x is within [0,element.width] and y is within [0,element.height]
1074
+ */
1075
+ function draggable(element, onmove, onstart, onstop) {
1076
+ onmove = onmove || function () { };
1077
+ onstart = onstart || function () { };
1078
+ onstop = onstop || function () { };
1079
+ var doc = document;
1080
+ var dragging = false;
1081
+ var offset = {};
1082
+ var maxHeight = 0;
1083
+ var maxWidth = 0;
1084
+ var hasTouch = ('ontouchstart' in window);
1085
+
1086
+ var duringDragEvents = {};
1087
+ duringDragEvents["selectstart"] = prevent;
1088
+ duringDragEvents["dragstart"] = prevent;
1089
+ duringDragEvents["touchmove mousemove"] = move;
1090
+ duringDragEvents["touchend mouseup"] = stop;
1091
+
1092
+ function prevent(e) {
1093
+ if (e.stopPropagation) {
1094
+ e.stopPropagation();
1095
+ }
1096
+ if (e.preventDefault) {
1097
+ e.preventDefault();
1098
+ }
1099
+ e.returnValue = false;
1100
+ }
1101
+
1102
+ function move(e) {
1103
+ if (dragging) {
1104
+ // Mouseup happened outside of window
1105
+ if (IE && doc.documentMode < 9 && !e.button) {
1106
+ return stop();
1107
+ }
1108
+
1109
+ var t0 = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0];
1110
+ var pageX = t0 && t0.pageX || e.pageX;
1111
+ var pageY = t0 && t0.pageY || e.pageY;
1112
+
1113
+ var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth));
1114
+ var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight));
1115
+
1116
+ if (hasTouch) {
1117
+ // Stop scrolling in iOS
1118
+ prevent(e);
1119
+ }
1120
+
1121
+ onmove.apply(element, [dragX, dragY, e]);
1122
+ }
1123
+ }
1124
+
1125
+ function start(e) {
1126
+ var rightclick = (e.which) ? (e.which == 3) : (e.button == 2);
1127
+
1128
+ if (!rightclick && !dragging) {
1129
+ if (onstart.apply(element, arguments) !== false) {
1130
+ dragging = true;
1131
+ maxHeight = $(element).height();
1132
+ maxWidth = $(element).width();
1133
+ offset = $(element).offset();
1134
+
1135
+ $(doc).bind(duringDragEvents);
1136
+ $(doc.body).addClass("sp-dragging");
1137
+
1138
+ move(e);
1139
+
1140
+ prevent(e);
1141
+ }
1142
+ }
1143
+ }
1144
+
1145
+ function stop() {
1146
+ if (dragging) {
1147
+ $(doc).unbind(duringDragEvents);
1148
+ $(doc.body).removeClass("sp-dragging");
1149
+
1150
+ // Wait a tick before notifying observers to allow the click event
1151
+ // to fire in Chrome.
1152
+ setTimeout(function() {
1153
+ onstop.apply(element, arguments);
1154
+ }, 0);
1155
+ }
1156
+ dragging = false;
1157
+ }
1158
+
1159
+ $(element).bind("touchstart mousedown", start);
1160
+ }
1161
+
1162
+ function throttle(func, wait, debounce) {
1163
+ var timeout;
1164
+ return function () {
1165
+ var context = this, args = arguments;
1166
+ var throttler = function () {
1167
+ timeout = null;
1168
+ func.apply(context, args);
1169
+ };
1170
+ if (debounce) clearTimeout(timeout);
1171
+ if (debounce || !timeout) timeout = setTimeout(throttler, wait);
1172
+ };
1173
+ }
1174
+
1175
+ function inputTypeColorSupport() {
1176
+ return $.fn.spectrum.inputTypeColorSupport();
1177
+ }
1178
+
1179
+ /**
1180
+ * Define a jQuery plugin
1181
+ */
1182
+ var dataID = "spectrum.id";
1183
+ $.fn.spectrum = function (opts, extra) {
1184
+
1185
+ if (typeof opts == "string") {
1186
+
1187
+ var returnValue = this;
1188
+ var args = Array.prototype.slice.call( arguments, 1 );
1189
+
1190
+ this.each(function () {
1191
+ var spect = spectrums[$(this).data(dataID)];
1192
+ if (spect) {
1193
+ var method = spect[opts];
1194
+ if (!method) {
1195
+ throw new Error( "Spectrum: no such method: '" + opts + "'" );
1196
+ }
1197
+
1198
+ if (opts == "get") {
1199
+ returnValue = spect.get();
1200
+ }
1201
+ else if (opts == "container") {
1202
+ returnValue = spect.container;
1203
+ }
1204
+ else if (opts == "option") {
1205
+ returnValue = spect.option.apply(spect, args);
1206
+ }
1207
+ else if (opts == "destroy") {
1208
+ spect.destroy();
1209
+ $(this).removeData(dataID);
1210
+ }
1211
+ else {
1212
+ method.apply(spect, args);
1213
+ }
1214
+ }
1215
+ });
1216
+
1217
+ return returnValue;
1218
+ }
1219
+
1220
+ // Initializing a new instance of spectrum
1221
+ return this.spectrum("destroy").each(function () {
1222
+ var options = $.extend({}, opts, $(this).data());
1223
+ var spect = spectrum(this, options);
1224
+ $(this).data(dataID, spect.id);
1225
+ });
1226
+ };
1227
+
1228
+ $.fn.spectrum.load = true;
1229
+ $.fn.spectrum.loadOpts = {};
1230
+ $.fn.spectrum.draggable = draggable;
1231
+ $.fn.spectrum.defaults = defaultOpts;
1232
+ $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() {
1233
+ if (typeof inputTypeColorSupport._cachedResult === "undefined") {
1234
+ var colorInput = $("<input type='color'/>")[0]; // if color element is supported, value will default to not null
1235
+ inputTypeColorSupport._cachedResult = colorInput.type === "color" && colorInput.value !== "";
1236
+ }
1237
+ return inputTypeColorSupport._cachedResult;
1238
+ };
1239
+
1240
+ $.spectrum = { };
1241
+ $.spectrum.localization = { };
1242
+ $.spectrum.palettes = { };
1243
+
1244
+ $.fn.spectrum.processNativeColorInputs = function () {
1245
+ var colorInputs = $("input[type=color]");
1246
+ if (colorInputs.length && !inputTypeColorSupport()) {
1247
+ colorInputs.spectrum({
1248
+ preferredFormat: "hex6"
1249
+ });
1250
+ }
1251
+ };
1252
+
1253
+ // TinyColor v1.1.2
1254
+ // https://github.com/bgrins/TinyColor
1255
+ // Brian Grinstead, MIT License
1256
+
1257
+ (function() {
1258
+
1259
+ var trimLeft = /^[\s,#]+/,
1260
+ trimRight = /\s+$/,
1261
+ tinyCounter = 0,
1262
+ math = Math,
1263
+ mathRound = math.round,
1264
+ mathMin = math.min,
1265
+ mathMax = math.max,
1266
+ mathRandom = math.random;
1267
+
1268
+ var tinycolor = function(color, opts) {
1269
+
1270
+ color = (color) ? color : '';
1271
+ opts = opts || { };
1272
+
1273
+ // If input is already a tinycolor, return itself
1274
+ if (color instanceof tinycolor) {
1275
+ return color;
1276
+ }
1277
+ // If we are called as a function, call using new instead
1278
+ if (!(this instanceof tinycolor)) {
1279
+ return new tinycolor(color, opts);
1280
+ }
1281
+
1282
+ var rgb = inputToRGB(color);
1283
+ this._originalInput = color,
1284
+ this._r = rgb.r,
1285
+ this._g = rgb.g,
1286
+ this._b = rgb.b,
1287
+ this._a = rgb.a,
1288
+ this._roundA = mathRound(100*this._a) / 100,
1289
+ this._format = opts.format || rgb.format;
1290
+ this._gradientType = opts.gradientType;
1291
+
1292
+ // Don't let the range of [0,255] come back in [0,1].
1293
+ // Potentially lose a little bit of precision here, but will fix issues where
1294
+ // .5 gets interpreted as half of the total, instead of half of 1
1295
+ // If it was supposed to be 128, this was already taken care of by `inputToRgb`
1296
+ if (this._r < 1) { this._r = mathRound(this._r); }
1297
+ if (this._g < 1) { this._g = mathRound(this._g); }
1298
+ if (this._b < 1) { this._b = mathRound(this._b); }
1299
+
1300
+ this._ok = rgb.ok;
1301
+ this._tc_id = tinyCounter++;
1302
+ };
1303
+
1304
+ tinycolor.prototype = {
1305
+ isDark: function() {
1306
+ return this.getBrightness() < 128;
1307
+ },
1308
+ isLight: function() {
1309
+ return !this.isDark();
1310
+ },
1311
+ isValid: function() {
1312
+ return this._ok;
1313
+ },
1314
+ getOriginalInput: function() {
1315
+ return this._originalInput;
1316
+ },
1317
+ getFormat: function() {
1318
+ return this._format;
1319
+ },
1320
+ getAlpha: function() {
1321
+ return this._a;
1322
+ },
1323
+ getBrightness: function() {
1324
+ var rgb = this.toRgb();
1325
+ return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;
1326
+ },
1327
+ setAlpha: function(value) {
1328
+ this._a = boundAlpha(value);
1329
+ this._roundA = mathRound(100*this._a) / 100;
1330
+ return this;
1331
+ },
1332
+ toHsv: function() {
1333
+ var hsv = rgbToHsv(this._r, this._g, this._b);
1334
+ return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };
1335
+ },
1336
+ toHsvString: function() {
1337
+ var hsv = rgbToHsv(this._r, this._g, this._b);
1338
+ var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);
1339
+ return (this._a == 1) ?
1340
+ "hsv(" + h + ", " + s + "%, " + v + "%)" :
1341
+ "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")";
1342
+ },
1343
+ toHsl: function() {
1344
+ var hsl = rgbToHsl(this._r, this._g, this._b);
1345
+ return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };
1346
+ },
1347
+ toHslString: function() {
1348
+ var hsl = rgbToHsl(this._r, this._g, this._b);
1349
+ var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);
1350
+ return (this._a == 1) ?
1351
+ "hsl(" + h + ", " + s + "%, " + l + "%)" :
1352
+ "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")";
1353
+ },
1354
+ toHex: function(allow3Char) {
1355
+ return rgbToHex(this._r, this._g, this._b, allow3Char);
1356
+ },
1357
+ toHexString: function(allow3Char) {
1358
+ return '#' + this.toHex(allow3Char);
1359
+ },
1360
+ toHex8: function() {
1361
+ return rgbaToHex(this._r, this._g, this._b, this._a);
1362
+ },
1363
+ toHex8String: function() {
1364
+ return '#' + this.toHex8();
1365
+ },
1366
+ toRgb: function() {
1367
+ return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };
1368
+ },
1369
+ toRgbString: function() {
1370
+ return (this._a == 1) ?
1371
+ "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" :
1372
+ "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")";
1373
+ },
1374
+ toPercentageRgb: function() {
1375
+ return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a };
1376
+ },
1377
+ toPercentageRgbString: function() {
1378
+ return (this._a == 1) ?
1379
+ "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" :
1380
+ "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
1381
+ },
1382
+ toName: function() {
1383
+ if (this._a === 0) {
1384
+ return "transparent";
1385
+ }
1386
+
1387
+ if (this._a < 1) {
1388
+ return false;
1389
+ }
1390
+
1391
+ return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
1392
+ },
1393
+ toFilter: function(secondColor) {
1394
+ var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a);
1395
+ var secondHex8String = hex8String;
1396
+ var gradientType = this._gradientType ? "GradientType = 1, " : "";
1397
+
1398
+ if (secondColor) {
1399
+ var s = tinycolor(secondColor);
1400
+ secondHex8String = s.toHex8String();
1401
+ }
1402
+
1403
+ return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")";
1404
+ },
1405
+ toString: function(format) {
1406
+ var formatSet = !!format;
1407
+ format = format || this._format;
1408
+
1409
+ var formattedString = false;
1410
+ var hasAlpha = this._a < 1 && this._a >= 0;
1411
+ var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name");
1412
+
1413
+ if (needsAlphaFormat) {
1414
+ // Special case for "transparent", all other non-alpha formats
1415
+ // will return rgba when there is transparency.
1416
+ if (format === "name" && this._a === 0) {
1417
+ return this.toName();
1418
+ }
1419
+ return this.toRgbString();
1420
+ }
1421
+ if (format === "rgb") {
1422
+ formattedString = this.toRgbString();
1423
+ }
1424
+ if (format === "prgb") {
1425
+ formattedString = this.toPercentageRgbString();
1426
+ }
1427
+ if (format === "hex" || format === "hex6") {
1428
+ formattedString = this.toHexString();
1429
+ }
1430
+ if (format === "hex3") {
1431
+ formattedString = this.toHexString(true);
1432
+ }
1433
+ if (format === "hex8") {
1434
+ formattedString = this.toHex8String();
1435
+ }
1436
+ if (format === "name") {
1437
+ formattedString = this.toName();
1438
+ }
1439
+ if (format === "hsl") {
1440
+ formattedString = this.toHslString();
1441
+ }
1442
+ if (format === "hsv") {
1443
+ formattedString = this.toHsvString();
1444
+ }
1445
+
1446
+ return formattedString || this.toHexString();
1447
+ },
1448
+
1449
+ _applyModification: function(fn, args) {
1450
+ var color = fn.apply(null, [this].concat([].slice.call(args)));
1451
+ this._r = color._r;
1452
+ this._g = color._g;
1453
+ this._b = color._b;
1454
+ this.setAlpha(color._a);
1455
+ return this;
1456
+ },
1457
+ lighten: function() {
1458
+ return this._applyModification(lighten, arguments);
1459
+ },
1460
+ brighten: function() {
1461
+ return this._applyModification(brighten, arguments);
1462
+ },
1463
+ darken: function() {
1464
+ return this._applyModification(darken, arguments);
1465
+ },
1466
+ desaturate: function() {
1467
+ return this._applyModification(desaturate, arguments);
1468
+ },
1469
+ saturate: function() {
1470
+ return this._applyModification(saturate, arguments);
1471
+ },
1472
+ greyscale: function() {
1473
+ return this._applyModification(greyscale, arguments);
1474
+ },
1475
+ spin: function() {
1476
+ return this._applyModification(spin, arguments);
1477
+ },
1478
+
1479
+ _applyCombination: function(fn, args) {
1480
+ return fn.apply(null, [this].concat([].slice.call(args)));
1481
+ },
1482
+ analogous: function() {
1483
+ return this._applyCombination(analogous, arguments);
1484
+ },
1485
+ complement: function() {
1486
+ return this._applyCombination(complement, arguments);
1487
+ },
1488
+ monochromatic: function() {
1489
+ return this._applyCombination(monochromatic, arguments);
1490
+ },
1491
+ splitcomplement: function() {
1492
+ return this._applyCombination(splitcomplement, arguments);
1493
+ },
1494
+ triad: function() {
1495
+ return this._applyCombination(triad, arguments);
1496
+ },
1497
+ tetrad: function() {
1498
+ return this._applyCombination(tetrad, arguments);
1499
+ }
1500
+ };
1501
+
1502
+ // If input is an object, force 1 into "1.0" to handle ratios properly
1503
+ // String input requires "1.0" as input, so 1 will be treated as 1
1504
+ tinycolor.fromRatio = function(color, opts) {
1505
+ if (typeof color == "object") {
1506
+ var newColor = {};
1507
+ for (var i in color) {
1508
+ if (color.hasOwnProperty(i)) {
1509
+ if (i === "a") {
1510
+ newColor[i] = color[i];
1511
+ }
1512
+ else {
1513
+ newColor[i] = convertToPercentage(color[i]);
1514
+ }
1515
+ }
1516
+ }
1517
+ color = newColor;
1518
+ }
1519
+
1520
+ return tinycolor(color, opts);
1521
+ };
1522
+
1523
+ // Given a string or object, convert that input to RGB
1524
+ // Possible string inputs:
1525
+ //
1526
+ // "red"
1527
+ // "#f00" or "f00"
1528
+ // "#ff0000" or "ff0000"
1529
+ // "#ff000000" or "ff000000"
1530
+ // "rgb 255 0 0" or "rgb (255, 0, 0)"
1531
+ // "rgb 1.0 0 0" or "rgb (1, 0, 0)"
1532
+ // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1"
1533
+ // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1"
1534
+ // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%"
1535
+ // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1"
1536
+ // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%"
1537
+ //
1538
+ function inputToRGB(color) {
1539
+
1540
+ var rgb = { r: 0, g: 0, b: 0 };
1541
+ var a = 1;
1542
+ var ok = false;
1543
+ var format = false;
1544
+
1545
+ if (typeof color == "string") {
1546
+ color = stringInputToObject(color);
1547
+ }
1548
+
1549
+ if (typeof color == "object") {
1550
+ if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) {
1551
+ rgb = rgbToRgb(color.r, color.g, color.b);
1552
+ ok = true;
1553
+ format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
1554
+ }
1555
+ else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) {
1556
+ color.s = convertToPercentage(color.s);
1557
+ color.v = convertToPercentage(color.v);
1558
+ rgb = hsvToRgb(color.h, color.s, color.v);
1559
+ ok = true;
1560
+ format = "hsv";
1561
+ }
1562
+ else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) {
1563
+ color.s = convertToPercentage(color.s);
1564
+ color.l = convertToPercentage(color.l);
1565
+ rgb = hslToRgb(color.h, color.s, color.l);
1566
+ ok = true;
1567
+ format = "hsl";
1568
+ }
1569
+
1570
+ if (color.hasOwnProperty("a")) {
1571
+ a = color.a;
1572
+ }
1573
+ }
1574
+
1575
+ a = boundAlpha(a);
1576
+
1577
+ return {
1578
+ ok: ok,
1579
+ format: color.format || format,
1580
+ r: mathMin(255, mathMax(rgb.r, 0)),
1581
+ g: mathMin(255, mathMax(rgb.g, 0)),
1582
+ b: mathMin(255, mathMax(rgb.b, 0)),
1583
+ a: a
1584
+ };
1585
+ }
1586
+
1587
+
1588
+ // Conversion Functions
1589
+ // --------------------
1590
+
1591
+ // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:
1592
+ // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
1593
+
1594
+ // `rgbToRgb`
1595
+ // Handle bounds / percentage checking to conform to CSS color spec
1596
+ // <http://www.w3.org/TR/css3-color/>
1597
+ // *Assumes:* r, g, b in [0, 255] or [0, 1]
1598
+ // *Returns:* { r, g, b } in [0, 255]
1599
+ function rgbToRgb(r, g, b){
1600
+ return {
1601
+ r: bound01(r, 255) * 255,
1602
+ g: bound01(g, 255) * 255,
1603
+ b: bound01(b, 255) * 255
1604
+ };
1605
+ }
1606
+
1607
+ // `rgbToHsl`
1608
+ // Converts an RGB color value to HSL.
1609
+ // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]
1610
+ // *Returns:* { h, s, l } in [0,1]
1611
+ function rgbToHsl(r, g, b) {
1612
+
1613
+ r = bound01(r, 255);
1614
+ g = bound01(g, 255);
1615
+ b = bound01(b, 255);
1616
+
1617
+ var max = mathMax(r, g, b), min = mathMin(r, g, b);
1618
+ var h, s, l = (max + min) / 2;
1619
+
1620
+ if(max == min) {
1621
+ h = s = 0; // achromatic
1622
+ }
1623
+ else {
1624
+ var d = max - min;
1625
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
1626
+ switch(max) {
1627
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
1628
+ case g: h = (b - r) / d + 2; break;
1629
+ case b: h = (r - g) / d + 4; break;
1630
+ }
1631
+
1632
+ h /= 6;
1633
+ }
1634
+
1635
+ return { h: h, s: s, l: l };
1636
+ }
1637
+
1638
+ // `hslToRgb`
1639
+ // Converts an HSL color value to RGB.
1640
+ // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]
1641
+ // *Returns:* { r, g, b } in the set [0, 255]
1642
+ function hslToRgb(h, s, l) {
1643
+ var r, g, b;
1644
+
1645
+ h = bound01(h, 360);
1646
+ s = bound01(s, 100);
1647
+ l = bound01(l, 100);
1648
+
1649
+ function hue2rgb(p, q, t) {
1650
+ if(t < 0) t += 1;
1651
+ if(t > 1) t -= 1;
1652
+ if(t < 1/6) return p + (q - p) * 6 * t;
1653
+ if(t < 1/2) return q;
1654
+ if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
1655
+ return p;
1656
+ }
1657
+
1658
+ if(s === 0) {
1659
+ r = g = b = l; // achromatic
1660
+ }
1661
+ else {
1662
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
1663
+ var p = 2 * l - q;
1664
+ r = hue2rgb(p, q, h + 1/3);
1665
+ g = hue2rgb(p, q, h);
1666
+ b = hue2rgb(p, q, h - 1/3);
1667
+ }
1668
+
1669
+ return { r: r * 255, g: g * 255, b: b * 255 };
1670
+ }
1671
+
1672
+ // `rgbToHsv`
1673
+ // Converts an RGB color value to HSV
1674
+ // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
1675
+ // *Returns:* { h, s, v } in [0,1]
1676
+ function rgbToHsv(r, g, b) {
1677
+
1678
+ r = bound01(r, 255);
1679
+ g = bound01(g, 255);
1680
+ b = bound01(b, 255);
1681
+
1682
+ var max = mathMax(r, g, b), min = mathMin(r, g, b);
1683
+ var h, s, v = max;
1684
+
1685
+ var d = max - min;
1686
+ s = max === 0 ? 0 : d / max;
1687
+
1688
+ if(max == min) {
1689
+ h = 0; // achromatic
1690
+ }
1691
+ else {
1692
+ switch(max) {
1693
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
1694
+ case g: h = (b - r) / d + 2; break;
1695
+ case b: h = (r - g) / d + 4; break;
1696
+ }
1697
+ h /= 6;
1698
+ }
1699
+ return { h: h, s: s, v: v };
1700
+ }
1701
+
1702
+ // `hsvToRgb`
1703
+ // Converts an HSV color value to RGB.
1704
+ // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
1705
+ // *Returns:* { r, g, b } in the set [0, 255]
1706
+ function hsvToRgb(h, s, v) {
1707
+
1708
+ h = bound01(h, 360) * 6;
1709
+ s = bound01(s, 100);
1710
+ v = bound01(v, 100);
1711
+
1712
+ var i = math.floor(h),
1713
+ f = h - i,
1714
+ p = v * (1 - s),
1715
+ q = v * (1 - f * s),
1716
+ t = v * (1 - (1 - f) * s),
1717
+ mod = i % 6,
1718
+ r = [v, q, p, p, t, v][mod],
1719
+ g = [t, v, v, q, p, p][mod],
1720
+ b = [p, p, t, v, v, q][mod];
1721
+
1722
+ return { r: r * 255, g: g * 255, b: b * 255 };
1723
+ }
1724
+
1725
+ // `rgbToHex`
1726
+ // Converts an RGB color to hex
1727
+ // Assumes r, g, and b are contained in the set [0, 255]
1728
+ // Returns a 3 or 6 character hex
1729
+ function rgbToHex(r, g, b, allow3Char) {
1730
+
1731
+ var hex = [
1732
+ pad2(mathRound(r).toString(16)),
1733
+ pad2(mathRound(g).toString(16)),
1734
+ pad2(mathRound(b).toString(16))
1735
+ ];
1736
+
1737
+ // Return a 3 character hex if possible
1738
+ if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {
1739
+ return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
1740
+ }
1741
+
1742
+ return hex.join("");
1743
+ }
1744
+ // `rgbaToHex`
1745
+ // Converts an RGBA color plus alpha transparency to hex
1746
+ // Assumes r, g, b and a are contained in the set [0, 255]
1747
+ // Returns an 8 character hex
1748
+ function rgbaToHex(r, g, b, a) {
1749
+
1750
+ var hex = [
1751
+ pad2(convertDecimalToHex(a)),
1752
+ pad2(mathRound(r).toString(16)),
1753
+ pad2(mathRound(g).toString(16)),
1754
+ pad2(mathRound(b).toString(16))
1755
+ ];
1756
+
1757
+ return hex.join("");
1758
+ }
1759
+
1760
+ // `equals`
1761
+ // Can be called with any tinycolor input
1762
+ tinycolor.equals = function (color1, color2) {
1763
+ if (!color1 || !color2) { return false; }
1764
+ return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();
1765
+ };
1766
+ tinycolor.random = function() {
1767
+ return tinycolor.fromRatio({
1768
+ r: mathRandom(),
1769
+ g: mathRandom(),
1770
+ b: mathRandom()
1771
+ });
1772
+ };
1773
+
1774
+
1775
+ // Modification Functions
1776
+ // ----------------------
1777
+ // Thanks to less.js for some of the basics here
1778
+ // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>
1779
+
1780
+ function desaturate(color, amount) {
1781
+ amount = (amount === 0) ? 0 : (amount || 10);
1782
+ var hsl = tinycolor(color).toHsl();
1783
+ hsl.s -= amount / 100;
1784
+ hsl.s = clamp01(hsl.s);
1785
+ return tinycolor(hsl);
1786
+ }
1787
+
1788
+ function saturate(color, amount) {
1789
+ amount = (amount === 0) ? 0 : (amount || 10);
1790
+ var hsl = tinycolor(color).toHsl();
1791
+ hsl.s += amount / 100;
1792
+ hsl.s = clamp01(hsl.s);
1793
+ return tinycolor(hsl);
1794
+ }
1795
+
1796
+ function greyscale(color) {
1797
+ return tinycolor(color).desaturate(100);
1798
+ }
1799
+
1800
+ function lighten (color, amount) {
1801
+ amount = (amount === 0) ? 0 : (amount || 10);
1802
+ var hsl = tinycolor(color).toHsl();
1803
+ hsl.l += amount / 100;
1804
+ hsl.l = clamp01(hsl.l);
1805
+ return tinycolor(hsl);
1806
+ }
1807
+
1808
+ function brighten(color, amount) {
1809
+ amount = (amount === 0) ? 0 : (amount || 10);
1810
+ var rgb = tinycolor(color).toRgb();
1811
+ rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));
1812
+ rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));
1813
+ rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));
1814
+ return tinycolor(rgb);
1815
+ }
1816
+
1817
+ function darken (color, amount) {
1818
+ amount = (amount === 0) ? 0 : (amount || 10);
1819
+ var hsl = tinycolor(color).toHsl();
1820
+ hsl.l -= amount / 100;
1821
+ hsl.l = clamp01(hsl.l);
1822
+ return tinycolor(hsl);
1823
+ }
1824
+
1825
+ // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.
1826
+ // Values outside of this range will be wrapped into this range.
1827
+ function spin(color, amount) {
1828
+ var hsl = tinycolor(color).toHsl();
1829
+ var hue = (mathRound(hsl.h) + amount) % 360;
1830
+ hsl.h = hue < 0 ? 360 + hue : hue;
1831
+ return tinycolor(hsl);
1832
+ }
1833
+
1834
+ // Combination Functions
1835
+ // ---------------------
1836
+ // Thanks to jQuery xColor for some of the ideas behind these
1837
+ // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>
1838
+
1839
+ function complement(color) {
1840
+ var hsl = tinycolor(color).toHsl();
1841
+ hsl.h = (hsl.h + 180) % 360;
1842
+ return tinycolor(hsl);
1843
+ }
1844
+
1845
+ function triad(color) {
1846
+ var hsl = tinycolor(color).toHsl();
1847
+ var h = hsl.h;
1848
+ return [
1849
+ tinycolor(color),
1850
+ tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),
1851
+ tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })
1852
+ ];
1853
+ }
1854
+
1855
+ function tetrad(color) {
1856
+ var hsl = tinycolor(color).toHsl();
1857
+ var h = hsl.h;
1858
+ return [
1859
+ tinycolor(color),
1860
+ tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),
1861
+ tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),
1862
+ tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })
1863
+ ];
1864
+ }
1865
+
1866
+ function splitcomplement(color) {
1867
+ var hsl = tinycolor(color).toHsl();
1868
+ var h = hsl.h;
1869
+ return [
1870
+ tinycolor(color),
1871
+ tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),
1872
+ tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})
1873
+ ];
1874
+ }
1875
+
1876
+ function analogous(color, results, slices) {
1877
+ results = results || 6;
1878
+ slices = slices || 30;
1879
+
1880
+ var hsl = tinycolor(color).toHsl();
1881
+ var part = 360 / slices;
1882
+ var ret = [tinycolor(color)];
1883
+
1884
+ for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {
1885
+ hsl.h = (hsl.h + part) % 360;
1886
+ ret.push(tinycolor(hsl));
1887
+ }
1888
+ return ret;
1889
+ }
1890
+
1891
+ function monochromatic(color, results) {
1892
+ results = results || 6;
1893
+ var hsv = tinycolor(color).toHsv();
1894
+ var h = hsv.h, s = hsv.s, v = hsv.v;
1895
+ var ret = [];
1896
+ var modification = 1 / results;
1897
+
1898
+ while (results--) {
1899
+ ret.push(tinycolor({ h: h, s: s, v: v}));
1900
+ v = (v + modification) % 1;
1901
+ }
1902
+
1903
+ return ret;
1904
+ }
1905
+
1906
+ // Utility Functions
1907
+ // ---------------------
1908
+
1909
+ tinycolor.mix = function(color1, color2, amount) {
1910
+ amount = (amount === 0) ? 0 : (amount || 50);
1911
+
1912
+ var rgb1 = tinycolor(color1).toRgb();
1913
+ var rgb2 = tinycolor(color2).toRgb();
1914
+
1915
+ var p = amount / 100;
1916
+ var w = p * 2 - 1;
1917
+ var a = rgb2.a - rgb1.a;
1918
+
1919
+ var w1;
1920
+
1921
+ if (w * a == -1) {
1922
+ w1 = w;
1923
+ } else {
1924
+ w1 = (w + a) / (1 + w * a);
1925
+ }
1926
+
1927
+ w1 = (w1 + 1) / 2;
1928
+
1929
+ var w2 = 1 - w1;
1930
+
1931
+ var rgba = {
1932
+ r: rgb2.r * w1 + rgb1.r * w2,
1933
+ g: rgb2.g * w1 + rgb1.g * w2,
1934
+ b: rgb2.b * w1 + rgb1.b * w2,
1935
+ a: rgb2.a * p + rgb1.a * (1 - p)
1936
+ };
1937
+
1938
+ return tinycolor(rgba);
1939
+ };
1940
+
1941
+
1942
+ // Readability Functions
1943
+ // ---------------------
1944
+ // <http://www.w3.org/TR/AERT#color-contrast>
1945
+
1946
+ // `readability`
1947
+ // Analyze the 2 colors and returns an object with the following properties:
1948
+ // `brightness`: difference in brightness between the two colors
1949
+ // `color`: difference in color/hue between the two colors
1950
+ tinycolor.readability = function(color1, color2) {
1951
+ var c1 = tinycolor(color1);
1952
+ var c2 = tinycolor(color2);
1953
+ var rgb1 = c1.toRgb();
1954
+ var rgb2 = c2.toRgb();
1955
+ var brightnessA = c1.getBrightness();
1956
+ var brightnessB = c2.getBrightness();
1957
+ var colorDiff = (
1958
+ Math.max(rgb1.r, rgb2.r) - Math.min(rgb1.r, rgb2.r) +
1959
+ Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) +
1960
+ Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b)
1961
+ );
1962
+
1963
+ return {
1964
+ brightness: Math.abs(brightnessA - brightnessB),
1965
+ color: colorDiff
1966
+ };
1967
+ };
1968
+
1969
+ // `readable`
1970
+ // http://www.w3.org/TR/AERT#color-contrast
1971
+ // Ensure that foreground and background color combinations provide sufficient contrast.
1972
+ // *Example*
1973
+ // tinycolor.isReadable("#000", "#111") => false
1974
+ tinycolor.isReadable = function(color1, color2) {
1975
+ var readability = tinycolor.readability(color1, color2);
1976
+ return readability.brightness > 125 && readability.color > 500;
1977
+ };
1978
+
1979
+ // `mostReadable`
1980
+ // Given a base color and a list of possible foreground or background
1981
+ // colors for that base, returns the most readable color.
1982
+ // *Example*
1983
+ // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000"
1984
+ tinycolor.mostReadable = function(baseColor, colorList) {
1985
+ var bestColor = null;
1986
+ var bestScore = 0;
1987
+ var bestIsReadable = false;
1988
+ for (var i=0; i < colorList.length; i++) {
1989
+
1990
+ // We normalize both around the "acceptable" breaking point,
1991
+ // but rank brightness constrast higher than hue.
1992
+
1993
+ var readability = tinycolor.readability(baseColor, colorList[i]);
1994
+ var readable = readability.brightness > 125 && readability.color > 500;
1995
+ var score = 3 * (readability.brightness / 125) + (readability.color / 500);
1996
+
1997
+ if ((readable && ! bestIsReadable) ||
1998
+ (readable && bestIsReadable && score > bestScore) ||
1999
+ ((! readable) && (! bestIsReadable) && score > bestScore)) {
2000
+ bestIsReadable = readable;
2001
+ bestScore = score;
2002
+ bestColor = tinycolor(colorList[i]);
2003
+ }
2004
+ }
2005
+ return bestColor;
2006
+ };
2007
+
2008
+
2009
+ // Big List of Colors
2010
+ // ------------------
2011
+ // <http://www.w3.org/TR/css3-color/#svg-color>
2012
+ var names = tinycolor.names = {
2013
+ aliceblue: "f0f8ff",
2014
+ antiquewhite: "faebd7",
2015
+ aqua: "0ff",
2016
+ aquamarine: "7fffd4",
2017
+ azure: "f0ffff",
2018
+ beige: "f5f5dc",
2019
+ bisque: "ffe4c4",
2020
+ black: "000",
2021
+ blanchedalmond: "ffebcd",
2022
+ blue: "00f",
2023
+ blueviolet: "8a2be2",
2024
+ brown: "a52a2a",
2025
+ burlywood: "deb887",
2026
+ burntsienna: "ea7e5d",
2027
+ cadetblue: "5f9ea0",
2028
+ chartreuse: "7fff00",
2029
+ chocolate: "d2691e",
2030
+ coral: "ff7f50",
2031
+ cornflowerblue: "6495ed",
2032
+ cornsilk: "fff8dc",
2033
+ crimson: "dc143c",
2034
+ cyan: "0ff",
2035
+ darkblue: "00008b",
2036
+ darkcyan: "008b8b",
2037
+ darkgoldenrod: "b8860b",
2038
+ darkgray: "a9a9a9",
2039
+ darkgreen: "006400",
2040
+ darkgrey: "a9a9a9",
2041
+ darkkhaki: "bdb76b",
2042
+ darkmagenta: "8b008b",
2043
+ darkolivegreen: "556b2f",
2044
+ darkorange: "ff8c00",
2045
+ darkorchid: "9932cc",
2046
+ darkred: "8b0000",
2047
+ darksalmon: "e9967a",
2048
+ darkseagreen: "8fbc8f",
2049
+ darkslateblue: "483d8b",
2050
+ darkslategray: "2f4f4f",
2051
+ darkslategrey: "2f4f4f",
2052
+ darkturquoise: "00ced1",
2053
+ darkviolet: "9400d3",
2054
+ deeppink: "ff1493",
2055
+ deepskyblue: "00bfff",
2056
+ dimgray: "696969",
2057
+ dimgrey: "696969",
2058
+ dodgerblue: "1e90ff",
2059
+ firebrick: "b22222",
2060
+ floralwhite: "fffaf0",
2061
+ forestgreen: "228b22",
2062
+ fuchsia: "f0f",
2063
+ gainsboro: "dcdcdc",
2064
+ ghostwhite: "f8f8ff",
2065
+ gold: "ffd700",
2066
+ goldenrod: "daa520",
2067
+ gray: "808080",
2068
+ green: "008000",
2069
+ greenyellow: "adff2f",
2070
+ grey: "808080",
2071
+ honeydew: "f0fff0",
2072
+ hotpink: "ff69b4",
2073
+ indianred: "cd5c5c",
2074
+ indigo: "4b0082",
2075
+ ivory: "fffff0",
2076
+ khaki: "f0e68c",
2077
+ lavender: "e6e6fa",
2078
+ lavenderblush: "fff0f5",
2079
+ lawngreen: "7cfc00",
2080
+ lemonchiffon: "fffacd",
2081
+ lightblue: "add8e6",
2082
+ lightcoral: "f08080",
2083
+ lightcyan: "e0ffff",
2084
+ lightgoldenrodyellow: "fafad2",
2085
+ lightgray: "d3d3d3",
2086
+ lightgreen: "90ee90",
2087
+ lightgrey: "d3d3d3",
2088
+ lightpink: "ffb6c1",
2089
+ lightsalmon: "ffa07a",
2090
+ lightseagreen: "20b2aa",
2091
+ lightskyblue: "87cefa",
2092
+ lightslategray: "789",
2093
+ lightslategrey: "789",
2094
+ lightsteelblue: "b0c4de",
2095
+ lightyellow: "ffffe0",
2096
+ lime: "0f0",
2097
+ limegreen: "32cd32",
2098
+ linen: "faf0e6",
2099
+ magenta: "f0f",
2100
+ maroon: "800000",
2101
+ mediumaquamarine: "66cdaa",
2102
+ mediumblue: "0000cd",
2103
+ mediumorchid: "ba55d3",
2104
+ mediumpurple: "9370db",
2105
+ mediumseagreen: "3cb371",
2106
+ mediumslateblue: "7b68ee",
2107
+ mediumspringgreen: "00fa9a",
2108
+ mediumturquoise: "48d1cc",
2109
+ mediumvioletred: "c71585",
2110
+ midnightblue: "191970",
2111
+ mintcream: "f5fffa",
2112
+ mistyrose: "ffe4e1",
2113
+ moccasin: "ffe4b5",
2114
+ navajowhite: "ffdead",
2115
+ navy: "000080",
2116
+ oldlace: "fdf5e6",
2117
+ olive: "808000",
2118
+ olivedrab: "6b8e23",
2119
+ orange: "ffa500",
2120
+ orangered: "ff4500",
2121
+ orchid: "da70d6",
2122
+ palegoldenrod: "eee8aa",
2123
+ palegreen: "98fb98",
2124
+ paleturquoise: "afeeee",
2125
+ palevioletred: "db7093",
2126
+ papayawhip: "ffefd5",
2127
+ peachpuff: "ffdab9",
2128
+ peru: "cd853f",
2129
+ pink: "ffc0cb",
2130
+ plum: "dda0dd",
2131
+ powderblue: "b0e0e6",
2132
+ purple: "800080",
2133
+ rebeccapurple: "663399",
2134
+ red: "f00",
2135
+ rosybrown: "bc8f8f",
2136
+ royalblue: "4169e1",
2137
+ saddlebrown: "8b4513",
2138
+ salmon: "fa8072",
2139
+ sandybrown: "f4a460",
2140
+ seagreen: "2e8b57",
2141
+ seashell: "fff5ee",
2142
+ sienna: "a0522d",
2143
+ silver: "c0c0c0",
2144
+ skyblue: "87ceeb",
2145
+ slateblue: "6a5acd",
2146
+ slategray: "708090",
2147
+ slategrey: "708090",
2148
+ snow: "fffafa",
2149
+ springgreen: "00ff7f",
2150
+ steelblue: "4682b4",
2151
+ tan: "d2b48c",
2152
+ teal: "008080",
2153
+ thistle: "d8bfd8",
2154
+ tomato: "ff6347",
2155
+ turquoise: "40e0d0",
2156
+ violet: "ee82ee",
2157
+ wheat: "f5deb3",
2158
+ white: "fff",
2159
+ whitesmoke: "f5f5f5",
2160
+ yellow: "ff0",
2161
+ yellowgreen: "9acd32"
2162
+ };
2163
+
2164
+ // Make it easy to access colors via `hexNames[hex]`
2165
+ var hexNames = tinycolor.hexNames = flip(names);
2166
+
2167
+
2168
+ // Utilities
2169
+ // ---------
2170
+
2171
+ // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`
2172
+ function flip(o) {
2173
+ var flipped = { };
2174
+ for (var i in o) {
2175
+ if (o.hasOwnProperty(i)) {
2176
+ flipped[o[i]] = i;
2177
+ }
2178
+ }
2179
+ return flipped;
2180
+ }
2181
+
2182
+ // Return a valid alpha value [0,1] with all invalid values being set to 1
2183
+ function boundAlpha(a) {
2184
+ a = parseFloat(a);
2185
+
2186
+ if (isNaN(a) || a < 0 || a > 1) {
2187
+ a = 1;
2188
+ }
2189
+
2190
+ return a;
2191
+ }
2192
+
2193
+ // Take input from [0, n] and return it as [0, 1]
2194
+ function bound01(n, max) {
2195
+ if (isOnePointZero(n)) { n = "100%"; }
2196
+
2197
+ var processPercent = isPercentage(n);
2198
+ n = mathMin(max, mathMax(0, parseFloat(n)));
2199
+
2200
+ // Automatically convert percentage into number
2201
+ if (processPercent) {
2202
+ n = parseInt(n * max, 10) / 100;
2203
+ }
2204
+
2205
+ // Handle floating point rounding errors
2206
+ if ((math.abs(n - max) < 0.000001)) {
2207
+ return 1;
2208
+ }
2209
+
2210
+ // Convert into [0, 1] range if it isn't already
2211
+ return (n % max) / parseFloat(max);
2212
+ }
2213
+
2214
+ // Force a number between 0 and 1
2215
+ function clamp01(val) {
2216
+ return mathMin(1, mathMax(0, val));
2217
+ }
2218
+
2219
+ // Parse a base-16 hex value into a base-10 integer
2220
+ function parseIntFromHex(val) {
2221
+ return parseInt(val, 16);
2222
+ }
2223
+
2224
+ // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
2225
+ // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
2226
+ function isOnePointZero(n) {
2227
+ return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1;
2228
+ }
2229
+
2230
+ // Check to see if string passed in is a percentage
2231
+ function isPercentage(n) {
2232
+ return typeof n === "string" && n.indexOf('%') != -1;
2233
+ }
2234
+
2235
+ // Force a hex value to have 2 characters
2236
+ function pad2(c) {
2237
+ return c.length == 1 ? '0' + c : '' + c;
2238
+ }
2239
+
2240
+ // Replace a decimal with it's percentage value
2241
+ function convertToPercentage(n) {
2242
+ if (n <= 1) {
2243
+ n = (n * 100) + "%";
2244
+ }
2245
+
2246
+ return n;
2247
+ }
2248
+
2249
+ // Converts a decimal to a hex value
2250
+ function convertDecimalToHex(d) {
2251
+ return Math.round(parseFloat(d) * 255).toString(16);
2252
+ }
2253
+ // Converts a hex value to a decimal
2254
+ function convertHexToDecimal(h) {
2255
+ return (parseIntFromHex(h) / 255);
2256
+ }
2257
+
2258
+ var matchers = (function() {
2259
+
2260
+ // <http://www.w3.org/TR/css3-values/#integers>
2261
+ var CSS_INTEGER = "[-\\+]?\\d+%?";
2262
+
2263
+ // <http://www.w3.org/TR/css3-values/#number-value>
2264
+ var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
2265
+
2266
+ // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.
2267
+ var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";
2268
+
2269
+ // Actual matching.
2270
+ // Parentheses and commas are optional, but not required.
2271
+ // Whitespace can take the place of commas or opening paren
2272
+ var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
2273
+ var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
2274
+
2275
+ return {
2276
+ rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
2277
+ rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
2278
+ hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
2279
+ hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
2280
+ hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
2281
+ hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
2282
+ hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
2283
+ hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
2284
+ hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
2285
+ };
2286
+ })();
2287
+
2288
+ // `stringInputToObject`
2289
+ // Permissive string parsing. Take in a number of formats, and output an object
2290
+ // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`
2291
+ function stringInputToObject(color) {
2292
+
2293
+ color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();
2294
+ var named = false;
2295
+ if (names[color]) {
2296
+ color = names[color];
2297
+ named = true;
2298
+ }
2299
+ else if (color == 'transparent') {
2300
+ return { r: 0, g: 0, b: 0, a: 0, format: "name" };
2301
+ }
2302
+
2303
+ // Try to match string input using regular expressions.
2304
+ // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]
2305
+ // Just return an object and let the conversion functions handle that.
2306
+ // This way the result will be the same whether the tinycolor is initialized with string or object.
2307
+ var match;
2308
+ if ((match = matchers.rgb.exec(color))) {
2309
+ return { r: match[1], g: match[2], b: match[3] };
2310
+ }
2311
+ if ((match = matchers.rgba.exec(color))) {
2312
+ return { r: match[1], g: match[2], b: match[3], a: match[4] };
2313
+ }
2314
+ if ((match = matchers.hsl.exec(color))) {
2315
+ return { h: match[1], s: match[2], l: match[3] };
2316
+ }
2317
+ if ((match = matchers.hsla.exec(color))) {
2318
+ return { h: match[1], s: match[2], l: match[3], a: match[4] };
2319
+ }
2320
+ if ((match = matchers.hsv.exec(color))) {
2321
+ return { h: match[1], s: match[2], v: match[3] };
2322
+ }
2323
+ if ((match = matchers.hsva.exec(color))) {
2324
+ return { h: match[1], s: match[2], v: match[3], a: match[4] };
2325
+ }
2326
+ if ((match = matchers.hex8.exec(color))) {
2327
+ return {
2328
+ a: convertHexToDecimal(match[1]),
2329
+ r: parseIntFromHex(match[2]),
2330
+ g: parseIntFromHex(match[3]),
2331
+ b: parseIntFromHex(match[4]),
2332
+ format: named ? "name" : "hex8"
2333
+ };
2334
+ }
2335
+ if ((match = matchers.hex6.exec(color))) {
2336
+ return {
2337
+ r: parseIntFromHex(match[1]),
2338
+ g: parseIntFromHex(match[2]),
2339
+ b: parseIntFromHex(match[3]),
2340
+ format: named ? "name" : "hex"
2341
+ };
2342
+ }
2343
+ if ((match = matchers.hex3.exec(color))) {
2344
+ return {
2345
+ r: parseIntFromHex(match[1] + '' + match[1]),
2346
+ g: parseIntFromHex(match[2] + '' + match[2]),
2347
+ b: parseIntFromHex(match[3] + '' + match[3]),
2348
+ format: named ? "name" : "hex"
2349
+ };
2350
+ }
2351
+
2352
+ return false;
2353
+ }
2354
+
2355
+ window.tinycolor = tinycolor;
2356
+ })();
2357
+
2358
+ $(function () {
2359
+ if ($.fn.spectrum.load) {
2360
+ $.fn.spectrum.processNativeColorInputs();
2361
+ }
2362
+ });
2363
+
2364
+ });
2365
+
2366
+
2367
+ /* ================== admin/assets/js/src/plugins/visual-select.js =================== */
2368
 
2369
 
2370
  /*!
2371
+ * Radio image select
2372
+ **/
2373
+ (function($) {
2374
+ // Register jQuery plugin.
2375
+ $.fn.radioImageSelect = function(options) {
2376
+ // Default var for options.
2377
+ var defaults = {
2378
+ // Img class.
2379
+ imgItemClass: 'radio-img-item',
2380
+ // Img Checked class.
2381
+ imgItemCheckedClass: 'item-checked',
2382
+ // Is need hide label connected?
2383
+ hideLabel: true
2384
+ },
2385
+
2386
+ /**
2387
+ * Method firing when need to update classes.
2388
+ */
2389
+ syncClassChecked = function(img) {
2390
+ var radioName = img.prev('input[type="radio"]').attr('name');
2391
+
2392
+ $('input[name="' + radioName + '"]').each(function() {
2393
+ // Define img by radio name.
2394
+ var myImg = $(this).next('img');
2395
+
2396
+ // Add / Remove Checked class.
2397
+ if ($(this).prop('checked')) {
2398
+ myImg.addClass(options.imgItemCheckedClass);
2399
+ } else {
2400
+ myImg.removeClass(options.imgItemCheckedClass);
2401
+ }
2402
+ });
2403
+ };
2404
+
2405
+ // Parse args..
2406
+ options = $.extend(defaults, options);
2407
+
2408
+ // Start jQuery loop on elements..
2409
+ return this.each(function() {
2410
+ $(this)
2411
+ // First all we are need to hide the radio input.
2412
+ .hide()
2413
+ // And add new img element by data-image source.
2414
+ .after('<img src="' + $(this).data('image') + '" alt="radio image" />');
2415
+
2416
+ // Define the new img element.
2417
+ var img = $(this).next('img');
2418
+ // Add item class.
2419
+ img.addClass(options.imgItemClass);
2420
+
2421
+ // Check if need to hide label connected.
2422
+ if (options.hideLabel) {
2423
+ $('label[for=' + $(this).attr('id') + ']').hide();
2424
+ }
2425
+
2426
+ // When we are created the img and radio get checked, we need add checked class.
2427
+ if ($(this).prop('checked')) {
2428
+ img.addClass(options.imgItemCheckedClass);
2429
+ }
2430
+
2431
+ // Create click event on img element.
2432
+ img.on('click', function(e) {
2433
+ $(this)
2434
+ // Prev to current radio input.
2435
+ .prev('input[type="radio"]')
2436
+ // Set checked attr.
2437
+ .prop('checked', true)
2438
+ // Run change event for radio element.
2439
+ .trigger('change');
2440
 
2441
+ // Firing the sync classes.
2442
+ syncClassChecked($(this));
2443
+ });
2444
+ });
2445
+ }
2446
+ })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/scripts.js ADDED
@@ -0,0 +1,435 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! WP ULike - v3.5.0
2
+ * https://wpulike.com
3
+ * Alimir 2018;
4
+ */
5
+
6
+
7
+ /* ================== admin/assets/js/src/settings.js =================== */
8
+
9
+
10
+ /*!
11
+ * Settings scripts
12
+ **/
13
+ (function( $ ) {
14
+
15
+ $(function(){
16
+
17
+ var form = $('form.wrap'),
18
+ page = $('input[name="option_page"]', form).val(),
19
+ tabs = $('.wp-ulike-settings-tabs', form),
20
+ current = parseInt(sessionStorage.getItem(page + '_current_tab'), 10) || 0;
21
+ $('.wp-ulike-settings-section', form).each(function(i, el) {
22
+ var setting = $(el).val(),
23
+ title = $(el).prev('h2'),
24
+ section = $('<div>').attr('id', page + '_' + setting);
25
+ $(el).nextAll().each(function() {
26
+ var tag = $(this).prop('tagName');
27
+ if (tag === 'H2' || tag === 'INPUT') {
28
+ return false;
29
+ }
30
+ $(this).appendTo(section);
31
+ });
32
+ if (tabs.length && title.length) {
33
+ section.addClass('wp-ulike-settings-tab').hide();
34
+ title.appendTo(tabs).click(function(e) {
35
+ e.preventDefault();
36
+ if (!title.hasClass('active')) {
37
+ $('.wp-ulike-settings-tab.active', form).fadeOut('fast', function() {
38
+ $('.active', form).removeClass('active');
39
+ title.addClass('active');
40
+ section.fadeIn('fast').addClass('active');
41
+ });
42
+ sessionStorage.setItem(page + '_current_tab', i);
43
+ }
44
+ });
45
+ if (current === i) {
46
+ title.addClass('active');
47
+ section.show().addClass('active');
48
+ }
49
+ tabs.after(section);
50
+ } else {
51
+ title.prependTo(section);
52
+ $(el).after(section);
53
+ }
54
+ });
55
+ $('label[for="hidden"]', form).each(function() {
56
+ $(this).parents('tr').addClass('hide-label');
57
+ });
58
+ $('.wp-ulike-settings-media', form).each(function() {
59
+ var frame,
60
+ select = $('.wp-ulike-select-media', this),
61
+ remove = $('.wp-ulike-remove-media', this),
62
+ input = $('input', this),
63
+ preview = $('img', this),
64
+ title = select.attr('title'),
65
+ text = select.text();
66
+ if (input.val() < 1) {
67
+ preview = $('<img class="attachment-medium">');
68
+ preview.prependTo(this).hide();
69
+ remove.hide();
70
+ }
71
+ select.click(function(e) {
72
+ e.preventDefault();
73
+ if (frame) {
74
+ frame.open();
75
+ return;
76
+ }
77
+ frame = wp.media({
78
+ title: title,
79
+ button: {
80
+ text: text
81
+ },
82
+ multiple: false
83
+ });
84
+ frame.on('select', function() {
85
+ var attachment = frame.state().get('selection').first().toJSON(),
86
+ thumb;
87
+ input.val(attachment.id);
88
+ thumb = attachment.sizes.medium || attachment.sizes.full;
89
+ preview.attr({
90
+ src: thumb.url,
91
+ width: thumb.width,
92
+ height: thumb.height
93
+ });
94
+ preview.show();
95
+ remove.show();
96
+ });
97
+ frame.open();
98
+ });
99
+ remove.click(function(e) {
100
+ e.preventDefault();
101
+ input.val('');
102
+ preview.hide();
103
+ remove.hide();
104
+ });
105
+ });
106
+ $('.wp-ulike-settings-action', form).each(function() {
107
+ var submit = $('[type="button"]', this),
108
+ spinner = $('<img>').attr({
109
+ src: wp_ulike_admin.spinner,
110
+ alt: 'loading'
111
+ }).insertAfter(submit).hide(),
112
+ notice = $('<div>').addClass('settings-error').insertBefore(submit).hide(),
113
+ action = {
114
+ data: {
115
+ action: submit.attr('id')
116
+ },
117
+ dataType: 'json',
118
+ type: 'POST',
119
+ url: ajaxurl,
120
+ beforeSend: function() {
121
+ spinner.fadeIn('fast');
122
+ submit.hide();
123
+ },
124
+ success: function(r) {
125
+ var noticeClass = 'error',
126
+ showNotice = function(msg) {
127
+ notice.html('<p>' + String(msg) + '</p>').addClass(noticeClass).show();
128
+ };
129
+ if (typeof r === 'object') {
130
+ if (r.hasOwnProperty('success') && r.success) {
131
+ noticeClass = 'updated';
132
+ }
133
+ if (r.hasOwnProperty('data') && r.data) {
134
+ if (typeof r.data === 'object') {
135
+ if (r.data.hasOwnProperty('reload') && r.data.reload) {
136
+ document.location.reload();
137
+ return;
138
+ }
139
+ if (r.data.hasOwnProperty('message') && r.data.message) {
140
+ showNotice(r.data.message);
141
+ }
142
+ } else {
143
+ showNotice(r.data);
144
+ }
145
+ }
146
+ } else if (r) {
147
+ showNotice(r);
148
+ }
149
+ spinner.hide();
150
+ submit.fadeIn('fast');
151
+ notice.show('fast');
152
+ },
153
+ error: function(jqXHR, textStatus, errorThrown) {
154
+ notice.addClass('error').append('<p>' + jqXHR.responseText + '</p>').show('fast');
155
+ console.log(textStatus, jqXHR, errorThrown);
156
+ }
157
+ };
158
+ submit.click(function(e) {
159
+ e.preventDefault();
160
+ notice.hide('fast', function() {
161
+ var r = confirm('You Are About To Delete Ulike Data/Logs.\nThis Action Is Not Reversible.\n\n Choose \'Cancel\' to stop, \'OK\' to delete.');
162
+ if (r == true) {
163
+ notice.removeClass('error updated').empty();
164
+ $.ajax(action);
165
+ }
166
+ });
167
+ });
168
+ });
169
+
170
+ $('.wp-ulike-visual-select input').radioImageSelect();
171
+
172
+ $('.wp-ulike-settings-color').spectrum({
173
+ allowEmpty: true,
174
+ showInput: true,
175
+ showAlpha: true,
176
+ disabled: false,
177
+
178
+ showSelectionPalette: true,
179
+ showPalette:true,
180
+ hideAfterPaletteSelect:true,
181
+ palette: [
182
+ ['black', 'white', ' ']
183
+ ],
184
+ clickoutFiresChange: true,
185
+ showInitial: true,
186
+ containerClassName: 'wp-ulike-sp-wrapper',
187
+ localStorageKey: "wpulike.spectrum",
188
+ preferredFormat: "hex6",
189
+ change: function(color) {
190
+ if( color === null) {
191
+ $(this).val('');
192
+ } else {
193
+ $(this).val( color.toString() );
194
+ }
195
+ }
196
+ });
197
+
198
+ $('#wp-ulike-settings_wp_ulike_customize tr:not(:first-child)').addClass('custom-style-show');
199
+
200
+ function evaluate() {
201
+ var item = $(this);
202
+ var relatedItem = $('.custom-style-show');
203
+
204
+ if (item.is(":checked")) {
205
+ relatedItem.fadeIn();
206
+ } else {
207
+ relatedItem.fadeOut();
208
+ }
209
+ }
210
+
211
+ $('.wp_ulike_custom_style_activation').click(evaluate).each(evaluate);
212
+
213
+ $('#wp-ulike-settings_wp_ulike_general tr:nth-child(2), #wp-ulike-settings_wp_ulike_general tr:nth-child(3)').addClass('button-text-show');
214
+ $('#wp-ulike-settings_wp_ulike_general tr:nth-child(4), #wp-ulike-settings_wp_ulike_general tr:nth-child(5)').addClass('button-icon-show');
215
+
216
+ if (!$(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
217
+ $('.button-text-show').hide();
218
+ }
219
+ if (!$(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
220
+ $('.button-icon-show').hide();
221
+ }
222
+
223
+ $(".wp_ulike_check_text, .wp_ulike_check_image").next('img').click(function() {
224
+ if ($(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
225
+ $('.button-text-show').fadeIn();
226
+ }
227
+ if (!$(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
228
+ $('.button-text-show').hide();
229
+ }
230
+ if ($(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
231
+ $('.button-icon-show').fadeIn();
232
+ }
233
+ if (!$(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
234
+ $('.button-icon-show').hide();
235
+ }
236
+ });
237
+
238
+ });
239
+
240
+ })( jQuery );
241
+
242
+
243
+ /* ================== admin/assets/js/src/statistics.js =================== */
244
+
245
+
246
+ (function( $ ) {
247
+
248
+ $('.wp_ulike_delete').click(function(e) {
249
+ e.preventDefault();
250
+ var parent = $(this).closest('tr');
251
+ var value = $(this).data('id');
252
+ var table = $(this).data('table');
253
+ var nonce = $(this).data('nonce');
254
+ var r = confirm(wp_ulike_admin.logs_notif);
255
+ if (r === true) {
256
+ jQuery.ajax({
257
+ type:'POST',
258
+ url: ajaxurl,
259
+ data:{
260
+ action:'ulikelogs',
261
+ id : value,
262
+ nonce : nonce,
263
+ table : table
264
+ },
265
+ beforeSend:function(){
266
+ parent.css("background-color","#fff59d");
267
+ },
268
+ success: function( response ) {
269
+ if( response.success ) {
270
+ parent.fadeOut(300);
271
+ } else {
272
+ parent.css("background-color","#ef9a9a");
273
+ }
274
+ }
275
+ });
276
+ }
277
+ });
278
+
279
+ // Charts stack array to save data
280
+ window.wpUlikechartsInfo = [];
281
+
282
+ $.fn.WpUlikeAjaxStats = function( method, value ){
283
+ // local var
284
+ var theResponse = null;
285
+ // returnValue = $.isPlainObject( value ) ? $.parseJSON( value ) : value;
286
+
287
+ // jQuery ajax
288
+ $.ajax({
289
+ type :'POST',
290
+ dataType : 'json',
291
+ url : ajaxurl,
292
+ async : false,
293
+ data :{
294
+ action: 'wp_ulike_ajax_stats',
295
+ method: method,
296
+ value : value,
297
+ nonce : wp_ulike_admin.nonce_field
298
+ },
299
+ success : function( response ){
300
+ if( response.success ) {
301
+ theResponse = JSON.parse( response.data );
302
+ } else {
303
+ theResponse = 0;
304
+ }
305
+ }
306
+ });
307
+ // Return the response text
308
+ return theResponse;
309
+ };
310
+
311
+ if( wp_ulike_admin.hook_address.indexOf("wp-ulike-statistics") !== -1 ) {
312
+ // Get single var component
313
+ Vue.component('get-var', {
314
+ props: ['callback', 'args'],
315
+ data: function () {
316
+ return {
317
+ output : '...'
318
+ }
319
+ },
320
+ mounted() {
321
+ this.output = this.fetchData();
322
+ // Remove spinner class
323
+ this.$nextTick(function () {
324
+ this.removeClass( this.$el.offsetParent );
325
+ });
326
+ },
327
+ methods:{
328
+ fetchData () {
329
+ return $.fn.WpUlikeAjaxStats( this.callback, this.args )
330
+ },
331
+ removeClass( element ){
332
+ element.classList.remove( 'wp-ulike-is-loading' );
333
+ }
334
+ }
335
+ });
336
+ // Get charts object component
337
+ Vue.component('get-chart', {
338
+ props: ['callback', 'args', 'identify', 'type'],
339
+ mounted() {
340
+ if( this.type == 'line' ) {
341
+ this.planetChartData = this.fetchData();
342
+ this.createLineChart( this.planetChartData );
343
+ } else {
344
+ this.createPieChart();
345
+ }
346
+ // Remove spinner class
347
+ this.$nextTick(function () {
348
+ this.removeClass( this.$el.offsetParent );
349
+ });
350
+ },
351
+ methods:{
352
+ fetchData () {
353
+ return $.fn.WpUlikeAjaxStats( this.callback, this.args );
354
+ },
355
+ createLineChart( chartData ) {
356
+ // Push data stats in dataset options
357
+ chartData.options['data'] = chartData.data;
358
+ // And finally draw it
359
+ this.drawChart({
360
+ // The type of chart we want to create
361
+ type: 'line',
362
+ // The data for our dataset
363
+ data: {
364
+ labels : chartData.label,
365
+ datasets: [
366
+ chartData.options
367
+ ]
368
+ }
369
+ });
370
+ // Set info for this canvas
371
+ this.setInfo( chartData );
372
+ },
373
+ createPieChart() {
374
+ // Define stack variables
375
+ var pieData = [],
376
+ pieBackground = [],
377
+ pieLabels = [];
378
+ // Get the info of each chart
379
+ window.wpUlikechartsInfo.forEach(function( value, key ){
380
+ pieData.push( value.sum );
381
+ pieBackground.push( value.background );
382
+ pieLabels.push( value.label );
383
+ });
384
+ // And finally draw it
385
+ this.drawChart({
386
+ // The type of chart we want to create
387
+ type: 'pie',
388
+ // The data for our dataset
389
+ data: {
390
+ datasets: [{
391
+ data : pieData,
392
+ backgroundColor: pieBackground,
393
+ }],
394
+ // These labels appear in the legend and in the tooltips when hovering different arcs
395
+ labels: pieLabels
396
+ }
397
+ });
398
+ },
399
+ drawChart( chartArgs ){
400
+ // Get canvas element
401
+ const ctx = document.getElementById( this.identify );
402
+ // Draw Chart
403
+ const chart = new Chart( ctx, chartArgs );
404
+ },
405
+ setInfo( chartData ){
406
+ var sumStack = 0;
407
+ // Get the sum of total likes
408
+ chartData.data.forEach(function( num ){
409
+ sumStack += parseFloat( num ) || 0;
410
+ });
411
+ // Upgrade wpUlikechartsInfo array
412
+ window.wpUlikechartsInfo.push({
413
+ type : this.identify,
414
+ sum : sumStack,
415
+ label : chartData.options.label,
416
+ background: chartData.options.backgroundColor
417
+ });
418
+ },
419
+ removeClass( element ){
420
+ element.classList.remove( 'wp-ulike-is-loading' );
421
+ }
422
+ }
423
+ });
424
+
425
+ new Vue({
426
+ el: '#wp-ulike-stats-app',
427
+ });
428
+ }
429
+
430
+ // on document ready
431
+ $(function(){
432
+ $('.wp-ulike-match-height').matchHeight();
433
+ });
434
+
435
+ })( jQuery );
admin/assets/js/settings.js DELETED
@@ -1,294 +0,0 @@
1
- /*! WP ULike - v3.4
2
- * https://wpulike.com
3
- * Alimir 2018;
4
- */
5
-
6
-
7
- /* ================== admin/assets/js/src/settings/visual-select.js =================== */
8
-
9
-
10
- /*!
11
- * Radio image select
12
- **/
13
- (function($) {
14
- // Register jQuery plugin.
15
- $.fn.radioImageSelect = function(options) {
16
- // Default var for options.
17
- var defaults = {
18
- // Img class.
19
- imgItemClass: 'radio-img-item',
20
- // Img Checked class.
21
- imgItemCheckedClass: 'item-checked',
22
- // Is need hide label connected?
23
- hideLabel: true
24
- },
25
-
26
- /**
27
- * Method firing when need to update classes.
28
- */
29
- syncClassChecked = function(img) {
30
- var radioName = img.prev('input[type="radio"]').attr('name');
31
-
32
- $('input[name="' + radioName + '"]').each(function() {
33
- // Define img by radio name.
34
- var myImg = $(this).next('img');
35
-
36
- // Add / Remove Checked class.
37
- if ($(this).prop('checked')) {
38
- myImg.addClass(options.imgItemCheckedClass);
39
- } else {
40
- myImg.removeClass(options.imgItemCheckedClass);
41
- }
42
- });
43
- };
44
-
45
- // Parse args..
46
- options = $.extend(defaults, options);
47
-
48
- // Start jQuery loop on elements..
49
- return this.each(function() {
50
- $(this)
51
- // First all we are need to hide the radio input.
52
- .hide()
53
- // And add new img element by data-image source.
54
- .after('<img src="' + $(this).data('image') + '" alt="radio image" />');
55
-
56
- // Define the new img element.
57
- var img = $(this).next('img');
58
- // Add item class.
59
- img.addClass(options.imgItemClass);
60
-
61
- // Check if need to hide label connected.
62
- if (options.hideLabel) {
63
- $('label[for=' + $(this).attr('id') + ']').hide();
64
- }
65
-
66
- // When we are created the img and radio get checked, we need add checked class.
67
- if ($(this).prop('checked')) {
68
- img.addClass(options.imgItemCheckedClass);
69
- }
70
-
71
- // Create click event on img element.
72
- img.on('click', function(e) {
73
- $(this)
74
- // Prev to current radio input.
75
- .prev('input[type="radio"]')
76
- // Set checked attr.
77
- .prop('checked', true)
78
- // Run change event for radio element.
79
- .trigger('change');
80
-
81
- // Firing the sync classes.
82
- syncClassChecked($(this));
83
- });
84
- });
85
- }
86
- })(jQuery);
87
-
88
-
89
- /* ================== admin/assets/js/src/settings/panel.js =================== */
90
-
91
-
92
- /*!
93
- * Settings scripts
94
- **/
95
- jQuery(document).ready(function($) {
96
- 'use strict';
97
- var form = $('form.wrap'),
98
- page = $('input[name="option_page"]', form).val(),
99
- tabs = $('.wp-ulike-settings-tabs', form),
100
- current = parseInt(sessionStorage.getItem(page + '_current_tab'), 10) || 0;
101
- $('.wp-ulike-settings-section', form).each(function(i, el) {
102
- var setting = $(el).val(),
103
- title = $(el).prev('h2'),
104
- section = $('<div>').attr('id', page + '_' + setting);
105
- $(el).nextAll().each(function() {
106
- var tag = $(this).prop('tagName');
107
- if (tag === 'H2' || tag === 'INPUT') {
108
- return false;
109
- }
110
- $(this).appendTo(section);
111
- });
112
- if (tabs.length && title.length) {
113
- section.addClass('wp-ulike-settings-tab').hide();
114
- title.appendTo(tabs).click(function(e) {
115
- e.preventDefault();
116
- if (!title.hasClass('active')) {
117
- $('.wp-ulike-settings-tab.active', form).fadeOut('fast', function() {
118
- $('.active', form).removeClass('active');
119
- title.addClass('active');
120
- section.fadeIn('fast').addClass('active');
121
- });
122
- sessionStorage.setItem(page + '_current_tab', i);
123
- }
124
- });
125
- if (current === i) {
126
- title.addClass('active');
127
- section.show().addClass('active');
128
- }
129
- tabs.after(section);
130
- } else {
131
- title.prependTo(section);
132
- $(el).after(section);
133
- }
134
- });
135
- $('label[for="hidden"]', form).each(function() {
136
- $(this).parents('tr').addClass('hide-label');
137
- });
138
- $('.wp-ulike-settings-media', form).each(function() {
139
- var frame,
140
- select = $('.wp-ulike-select-media', this),
141
- remove = $('.wp-ulike-remove-media', this),
142
- input = $('input', this),
143
- preview = $('img', this),
144
- title = select.attr('title'),
145
- text = select.text();
146
- if (input.val() < 1) {
147
- preview = $('<img class="attachment-medium">');
148
- preview.prependTo(this).hide();
149
- remove.hide();
150
- }
151
- select.click(function(e) {
152
- e.preventDefault();
153
- if (frame) {
154
- frame.open();
155
- return;
156
- }
157
- frame = wp.media({
158
- title: title,
159
- button: {
160
- text: text
161
- },
162
- multiple: false
163
- });
164
- frame.on('select', function() {
165
- var attachment = frame.state().get('selection').first().toJSON(),
166
- thumb;
167
- input.val(attachment.id);
168
- thumb = attachment.sizes.medium || attachment.sizes.full;
169
- preview.attr({
170
- src: thumb.url,
171
- width: thumb.width,
172
- height: thumb.height
173
- });
174
- preview.show();
175
- remove.show();
176
- });
177
- frame.open();
178
- });
179
- remove.click(function(e) {
180
- e.preventDefault();
181
- input.val('');
182
- preview.hide();
183
- remove.hide();
184
- });
185
- });
186
- $('.wp-ulike-settings-action', form).each(function() {
187
- var submit = $('[type="button"]', this),
188
- spinner = $('<img>').attr({
189
- src: ajax.spinner,
190
- alt: 'loading'
191
- }).insertAfter(submit).hide(),
192
- notice = $('<div>').addClass('settings-error').insertBefore(submit).hide(),
193
- action = {
194
- data: {
195
- action: submit.attr('id')
196
- },
197
- dataType: 'json',
198
- type: 'POST',
199
- url: ajax.url,
200
- beforeSend: function() {
201
- spinner.fadeIn('fast');
202
- submit.hide();
203
- },
204
- success: function(r) {
205
- var noticeClass = 'error',
206
- showNotice = function(msg) {
207
- notice.html('<p>' + String(msg) + '</p>').addClass(noticeClass).show();
208
- };
209
- if (typeof r === 'object') {
210
- if (r.hasOwnProperty('success') && r.success) {
211
- noticeClass = 'updated';
212
- }
213
- if (r.hasOwnProperty('data') && r.data) {
214
- if (typeof r.data === 'object') {
215
- if (r.data.hasOwnProperty('reload') && r.data.reload) {
216
- document.location.reload();
217
- return;
218
- }
219
- if (r.data.hasOwnProperty('message') && r.data.message) {
220
- showNotice(r.data.message);
221
- }
222
- } else {
223
- showNotice(r.data);
224
- }
225
- }
226
- } else if (r) {
227
- showNotice(r);
228
- }
229
- spinner.hide();
230
- submit.fadeIn('fast');
231
- notice.show('fast');
232
- },
233
- error: function(jqXHR, textStatus, errorThrown) {
234
- notice.addClass('error').append('<p>' + jqXHR.responseText + '</p>').show('fast');
235
- console.log(textStatus, jqXHR, errorThrown);
236
- }
237
- };
238
- submit.click(function(e) {
239
- e.preventDefault();
240
- notice.hide('fast', function() {
241
- var r = confirm('You Are About To Delete Ulike Data/Logs.\nThis Action Is Not Reversible.\n\n Choose \'Cancel\' to stop, \'OK\' to delete.');
242
- if (r == true) {
243
- notice.removeClass('error updated').empty();
244
- $.ajax(action);
245
- }
246
- });
247
- });
248
- });
249
-
250
- $('.wp-ulike-visual-select input').radioImageSelect();
251
-
252
- $('.wp-ulike-settings-color').wpColorPicker();
253
-
254
- $('#wp-ulike-settings_wp_ulike_customize tr:not(:first-child)').addClass('custom-style-show');
255
-
256
- function evaluate() {
257
- var item = $(this);
258
- var relatedItem = $('.custom-style-show');
259
-
260
- if (item.is(":checked")) {
261
- relatedItem.fadeIn();
262
- } else {
263
- relatedItem.fadeOut();
264
- }
265
- }
266
-
267
- $('.wp_ulike_custom_style_activation').click(evaluate).each(evaluate);
268
-
269
- $('#wp-ulike-settings_wp_ulike_general tr:nth-child(2), #wp-ulike-settings_wp_ulike_general tr:nth-child(3)').addClass('button-text-show');
270
- $('#wp-ulike-settings_wp_ulike_general tr:nth-child(4), #wp-ulike-settings_wp_ulike_general tr:nth-child(5)').addClass('button-icon-show');
271
-
272
- if (!$(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
273
- $('.button-text-show').hide();
274
- }
275
- if (!$(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
276
- $('.button-icon-show').hide();
277
- }
278
-
279
- $(".wp_ulike_check_text, .wp_ulike_check_image").next('img').click(function() {
280
- if ($(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
281
- $('.button-text-show').fadeIn();
282
- }
283
- if (!$(".wp_ulike_check_text").next('img').hasClass("item-checked")) {
284
- $('.button-text-show').hide();
285
- }
286
- if ($(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
287
- $('.button-icon-show').fadeIn();
288
- }
289
- if (!$(".wp_ulike_check_image").next('img').hasClass("item-checked")) {
290
- $('.button-icon-show').hide();
291
- }
292
- });
293
-
294
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/solo/vue/vue.js ADDED
@@ -0,0 +1,10947 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Vue.js v2.5.16
3
+ * (c) 2014-2018 Evan You
4
+ * Released under the MIT License.
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8
+ typeof define === 'function' && define.amd ? define(factory) :
9
+ (global.Vue = factory());
10
+ }(this, (function () { 'use strict';
11
+
12
+ /* */
13
+
14
+ var emptyObject = Object.freeze({});
15
+
16
+ // these helpers produces better vm code in JS engines due to their
17
+ // explicitness and function inlining
18
+ function isUndef (v) {
19
+ return v === undefined || v === null
20
+ }
21
+
22
+ function isDef (v) {
23
+ return v !== undefined && v !== null
24
+ }
25
+
26
+ function isTrue (v) {
27
+ return v === true
28
+ }
29
+
30
+ function isFalse (v) {
31
+ return v === false
32
+ }
33
+
34
+ /**
35
+ * Check if value is primitive
36
+ */
37
+ function isPrimitive (value) {
38
+ return (
39
+ typeof value === 'string' ||
40
+ typeof value === 'number' ||
41
+ // $flow-disable-line
42
+ typeof value === 'symbol' ||
43
+ typeof value === 'boolean'
44
+ )
45
+ }
46
+
47
+ /**
48
+ * Quick object check - this is primarily used to tell
49
+ * Objects from primitive values when we know the value
50
+ * is a JSON-compliant type.
51
+ */
52
+ function isObject (obj) {
53
+ return obj !== null && typeof obj === 'object'
54
+ }
55
+
56
+ /**
57
+ * Get the raw type string of a value e.g. [object Object]
58
+ */
59
+ var _toString = Object.prototype.toString;
60
+
61
+ function toRawType (value) {
62
+ return _toString.call(value).slice(8, -1)
63
+ }
64
+
65
+ /**
66
+ * Strict object type check. Only returns true
67
+ * for plain JavaScript objects.
68
+ */
69
+ function isPlainObject (obj) {
70
+ return _toString.call(obj) === '[object Object]'
71
+ }
72
+
73
+ function isRegExp (v) {
74
+ return _toString.call(v) === '[object RegExp]'
75
+ }
76
+
77
+ /**
78
+ * Check if val is a valid array index.
79
+ */
80
+ function isValidArrayIndex (val) {
81
+ var n = parseFloat(String(val));
82
+ return n >= 0 && Math.floor(n) === n && isFinite(val)
83
+ }
84
+
85
+ /**
86
+ * Convert a value to a string that is actually rendered.
87
+ */
88
+ function toString (val) {
89
+ return val == null
90
+ ? ''
91
+ : typeof val === 'object'
92
+ ? JSON.stringify(val, null, 2)
93
+ : String(val)
94
+ }
95
+
96
+ /**
97
+ * Convert a input value to a number for persistence.
98
+ * If the conversion fails, return original string.
99
+ */
100
+ function toNumber (val) {
101
+ var n = parseFloat(val);
102
+ return isNaN(n) ? val : n
103
+ }
104
+
105
+ /**
106
+ * Make a map and return a function for checking if a key
107
+ * is in that map.
108
+ */
109
+ function makeMap (
110
+ str,
111
+ expectsLowerCase
112
+ ) {
113
+ var map = Object.create(null);
114
+ var list = str.split(',');
115
+ for (var i = 0; i < list.length; i++) {
116
+ map[list[i]] = true;
117
+ }
118
+ return expectsLowerCase
119
+ ? function (val) { return map[val.toLowerCase()]; }
120
+ : function (val) { return map[val]; }
121
+ }
122
+
123
+ /**
124
+ * Check if a tag is a built-in tag.
125
+ */
126
+ var isBuiltInTag = makeMap('slot,component', true);
127
+
128
+ /**
129
+ * Check if a attribute is a reserved attribute.
130
+ */
131
+ var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
132
+
133
+ /**
134
+ * Remove an item from an array
135
+ */
136
+ function remove (arr, item) {
137
+ if (arr.length) {
138
+ var index = arr.indexOf(item);
139
+ if (index > -1) {
140
+ return arr.splice(index, 1)
141
+ }
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Check whether the object has the property.
147
+ */
148
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
149
+ function hasOwn (obj, key) {
150
+ return hasOwnProperty.call(obj, key)
151
+ }
152
+
153
+ /**
154
+ * Create a cached version of a pure function.
155
+ */
156
+ function cached (fn) {
157
+ var cache = Object.create(null);
158
+ return (function cachedFn (str) {
159
+ var hit = cache[str];
160
+ return hit || (cache[str] = fn(str))
161
+ })
162
+ }
163
+
164
+ /**
165
+ * Camelize a hyphen-delimited string.
166
+ */
167
+ var camelizeRE = /-(\w)/g;
168
+ var camelize = cached(function (str) {
169
+ return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
170
+ });
171
+
172
+ /**
173
+ * Capitalize a string.
174
+ */
175
+ var capitalize = cached(function (str) {
176
+ return str.charAt(0).toUpperCase() + str.slice(1)
177
+ });
178
+
179
+ /**
180
+ * Hyphenate a camelCase string.
181
+ */
182
+ var hyphenateRE = /\B([A-Z])/g;
183
+ var hyphenate = cached(function (str) {
184
+ return str.replace(hyphenateRE, '-$1').toLowerCase()
185
+ });
186
+
187
+ /**
188
+ * Simple bind polyfill for environments that do not support it... e.g.
189
+ * PhantomJS 1.x. Technically we don't need this anymore since native bind is
190
+ * now more performant in most browsers, but removing it would be breaking for
191
+ * code that was able to run in PhantomJS 1.x, so this must be kept for
192
+ * backwards compatibility.
193
+ */
194
+
195
+ /* istanbul ignore next */
196
+ function polyfillBind (fn, ctx) {
197
+ function boundFn (a) {
198
+ var l = arguments.length;
199
+ return l
200
+ ? l > 1
201
+ ? fn.apply(ctx, arguments)
202
+ : fn.call(ctx, a)
203
+ : fn.call(ctx)
204
+ }
205
+
206
+ boundFn._length = fn.length;
207
+ return boundFn
208
+ }
209
+
210
+ function nativeBind (fn, ctx) {
211
+ return fn.bind(ctx)
212
+ }
213
+
214
+ var bind = Function.prototype.bind
215
+ ? nativeBind
216
+ : polyfillBind;
217
+
218
+ /**
219
+ * Convert an Array-like object to a real Array.
220
+ */
221
+ function toArray (list, start) {
222
+ start = start || 0;
223
+ var i = list.length - start;
224
+ var ret = new Array(i);
225
+ while (i--) {
226
+ ret[i] = list[i + start];
227
+ }
228
+ return ret
229
+ }
230
+
231
+ /**
232
+ * Mix properties into target object.
233
+ */
234
+ function extend (to, _from) {
235
+ for (var key in _from) {
236
+ to[key] = _from[key];
237
+ }
238
+ return to
239
+ }
240
+
241
+ /**
242
+ * Merge an Array of Objects into a single Object.
243
+ */
244
+ function toObject (arr) {
245
+ var res = {};
246
+ for (var i = 0; i < arr.length; i++) {
247
+ if (arr[i]) {
248
+ extend(res, arr[i]);
249
+ }
250
+ }
251
+ return res
252
+ }
253
+
254
+ /**
255
+ * Perform no operation.
256
+ * Stubbing args to make Flow happy without leaving useless transpiled code
257
+ * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
258
+ */
259
+ function noop (a, b, c) {}
260
+
261
+ /**
262
+ * Always return false.
263
+ */
264
+ var no = function (a, b, c) { return false; };
265
+
266
+ /**
267
+ * Return same value
268
+ */
269
+ var identity = function (_) { return _; };
270
+
271
+ /**
272
+ * Generate a static keys string from compiler modules.
273
+ */
274
+ function genStaticKeys (modules) {
275
+ return modules.reduce(function (keys, m) {
276
+ return keys.concat(m.staticKeys || [])
277
+ }, []).join(',')
278
+ }
279
+
280
+ /**
281
+ * Check if two values are loosely equal - that is,
282
+ * if they are plain objects, do they have the same shape?
283
+ */
284
+ function looseEqual (a, b) {
285
+ if (a === b) { return true }
286
+ var isObjectA = isObject(a);
287
+ var isObjectB = isObject(b);
288
+ if (isObjectA && isObjectB) {
289
+ try {
290
+ var isArrayA = Array.isArray(a);
291
+ var isArrayB = Array.isArray(b);
292
+ if (isArrayA && isArrayB) {
293
+ return a.length === b.length && a.every(function (e, i) {
294
+ return looseEqual(e, b[i])
295
+ })
296
+ } else if (!isArrayA && !isArrayB) {
297
+ var keysA = Object.keys(a);
298
+ var keysB = Object.keys(b);
299
+ return keysA.length === keysB.length && keysA.every(function (key) {
300
+ return looseEqual(a[key], b[key])
301
+ })
302
+ } else {
303
+ /* istanbul ignore next */
304
+ return false
305
+ }
306
+ } catch (e) {
307
+ /* istanbul ignore next */
308
+ return false
309
+ }
310
+ } else if (!isObjectA && !isObjectB) {
311
+ return String(a) === String(b)
312
+ } else {
313
+ return false
314
+ }
315
+ }
316
+
317
+ function looseIndexOf (arr, val) {
318
+ for (var i = 0; i < arr.length; i++) {
319
+ if (looseEqual(arr[i], val)) { return i }
320
+ }
321
+ return -1
322
+ }
323
+
324
+ /**
325
+ * Ensure a function is called only once.
326
+ */
327
+ function once (fn) {
328
+ var called = false;
329
+ return function () {
330
+ if (!called) {
331
+ called = true;
332
+ fn.apply(this, arguments);
333
+ }
334
+ }
335
+ }
336
+
337
+ var SSR_ATTR = 'data-server-rendered';
338
+
339
+ var ASSET_TYPES = [
340
+ 'component',
341
+ 'directive',
342
+ 'filter'
343
+ ];
344
+
345
+ var LIFECYCLE_HOOKS = [
346
+ 'beforeCreate',
347
+ 'created',
348
+ 'beforeMount',
349
+ 'mounted',
350
+ 'beforeUpdate',
351
+ 'updated',
352
+ 'beforeDestroy',
353
+ 'destroyed',
354
+ 'activated',
355
+ 'deactivated',
356
+ 'errorCaptured'
357
+ ];
358
+
359
+ /* */
360
+
361
+ var config = ({
362
+ /**
363
+ * Option merge strategies (used in core/util/options)
364
+ */
365
+ // $flow-disable-line
366
+ optionMergeStrategies: Object.create(null),
367
+
368
+ /**
369
+ * Whether to suppress warnings.
370
+ */
371
+ silent: false,
372
+
373
+ /**
374
+ * Show production mode tip message on boot?
375
+ */
376
+ productionTip: "development" !== 'production',
377
+
378
+ /**
379
+ * Whether to enable devtools
380
+ */
381
+ devtools: "development" !== 'production',
382
+
383
+ /**
384
+ * Whether to record perf
385
+ */
386
+ performance: false,
387
+
388
+ /**
389
+ * Error handler for watcher errors
390
+ */
391
+ errorHandler: null,
392
+
393
+ /**
394
+ * Warn handler for watcher warns
395
+ */
396
+ warnHandler: null,
397
+
398
+ /**
399
+ * Ignore certain custom elements
400
+ */
401
+ ignoredElements: [],
402
+
403
+ /**
404
+ * Custom user key aliases for v-on
405
+ */
406
+ // $flow-disable-line
407
+ keyCodes: Object.create(null),
408
+
409
+ /**
410
+ * Check if a tag is reserved so that it cannot be registered as a
411
+ * component. This is platform-dependent and may be overwritten.
412
+ */
413
+ isReservedTag: no,
414
+
415
+ /**
416
+ * Check if an attribute is reserved so that it cannot be used as a component
417
+ * prop. This is platform-dependent and may be overwritten.
418
+ */
419
+ isReservedAttr: no,
420
+
421
+ /**
422
+ * Check if a tag is an unknown element.
423
+ * Platform-dependent.
424
+ */
425
+ isUnknownElement: no,
426
+
427
+ /**
428
+ * Get the namespace of an element
429
+ */
430
+ getTagNamespace: noop,
431
+
432
+ /**
433
+ * Parse the real tag name for the specific platform.
434
+ */
435
+ parsePlatformTagName: identity,
436
+
437
+ /**
438
+ * Check if an attribute must be bound using property, e.g. value
439
+ * Platform-dependent.
440
+ */
441
+ mustUseProp: no,
442
+
443
+ /**
444
+ * Exposed for legacy reasons
445
+ */
446
+ _lifecycleHooks: LIFECYCLE_HOOKS
447
+ })
448
+
449
+ /* */
450
+
451
+ /**
452
+ * Check if a string starts with $ or _
453
+ */
454
+ function isReserved (str) {
455
+ var c = (str + '').charCodeAt(0);
456
+ return c === 0x24 || c === 0x5F
457
+ }
458
+
459
+ /**
460
+ * Define a property.
461
+ */
462
+ function def (obj, key, val, enumerable) {
463
+ Object.defineProperty(obj, key, {
464
+ value: val,
465
+ enumerable: !!enumerable,
466
+ writable: true,
467
+ configurable: true
468
+ });
469
+ }
470
+
471
+ /**
472
+ * Parse simple path.
473
+ */
474
+ var bailRE = /[^\w.$]/;
475
+ function parsePath (path) {
476
+ if (bailRE.test(path)) {
477
+ return
478
+ }
479
+ var segments = path.split('.');
480
+ return function (obj) {
481
+ for (var i = 0; i < segments.length; i++) {
482
+ if (!obj) { return }
483
+ obj = obj[segments[i]];
484
+ }
485
+ return obj
486
+ }
487
+ }
488
+
489
+ /* */
490
+
491
+ // can we use __proto__?
492
+ var hasProto = '__proto__' in {};
493
+
494
+ // Browser environment sniffing
495
+ var inBrowser = typeof window !== 'undefined';
496
+ var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
497
+ var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
498
+ var UA = inBrowser && window.navigator.userAgent.toLowerCase();
499
+ var isIE = UA && /msie|trident/.test(UA);
500
+ var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
501
+ var isEdge = UA && UA.indexOf('edge/') > 0;
502
+ var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
503
+ var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
504
+ var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
505
+
506
+ // Firefox has a "watch" function on Object.prototype...
507
+ var nativeWatch = ({}).watch;
508
+
509
+ var supportsPassive = false;
510
+ if (inBrowser) {
511
+ try {
512
+ var opts = {};
513
+ Object.defineProperty(opts, 'passive', ({
514
+ get: function get () {
515
+ /* istanbul ignore next */
516
+ supportsPassive = true;
517
+ }
518
+ })); // https://github.com/facebook/flow/issues/285
519
+ window.addEventListener('test-passive', null, opts);
520
+ } catch (e) {}
521
+ }
522
+
523
+ // this needs to be lazy-evaled because vue may be required before
524
+ // vue-server-renderer can set VUE_ENV
525
+ var _isServer;
526
+ var isServerRendering = function () {
527
+ if (_isServer === undefined) {
528
+ /* istanbul ignore if */
529
+ if (!inBrowser && !inWeex && typeof global !== 'undefined') {
530
+ // detect presence of vue-server-renderer and avoid
531
+ // Webpack shimming the process
532
+ _isServer = global['process'].env.VUE_ENV === 'server';
533
+ } else {
534
+ _isServer = false;
535
+ }
536
+ }
537
+ return _isServer
538
+ };
539
+
540
+ // detect devtools
541
+ var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
542
+
543
+ /* istanbul ignore next */
544
+ function isNative (Ctor) {
545
+ return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
546
+ }
547
+
548
+ var hasSymbol =
549
+ typeof Symbol !== 'undefined' && isNative(Symbol) &&
550
+ typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
551
+
552
+ var _Set;
553
+ /* istanbul ignore if */ // $flow-disable-line
554
+ if (typeof Set !== 'undefined' && isNative(Set)) {
555
+ // use native Set when available.
556
+ _Set = Set;
557
+ } else {
558
+ // a non-standard Set polyfill that only works with primitive keys.
559
+ _Set = (function () {
560
+ function Set () {
561
+ this.set = Object.create(null);
562
+ }
563
+ Set.prototype.has = function has (key) {
564
+ return this.set[key] === true
565
+ };
566
+ Set.prototype.add = function add (key) {
567
+ this.set[key] = true;
568
+ };
569
+ Set.prototype.clear = function clear () {
570
+ this.set = Object.create(null);
571
+ };
572
+
573
+ return Set;
574
+ }());
575
+ }
576
+
577
+ /* */
578
+
579
+ var warn = noop;
580
+ var tip = noop;
581
+ var generateComponentTrace = (noop); // work around flow check
582
+ var formatComponentName = (noop);
583
+
584
+ {
585
+ var hasConsole = typeof console !== 'undefined';
586
+ var classifyRE = /(?:^|[-_])(\w)/g;
587
+ var classify = function (str) { return str
588
+ .replace(classifyRE, function (c) { return c.toUpperCase(); })
589
+ .replace(/[-_]/g, ''); };
590
+
591
+ warn = function (msg, vm) {
592
+ var trace = vm ? generateComponentTrace(vm) : '';
593
+
594
+ if (config.warnHandler) {
595
+ config.warnHandler.call(null, msg, vm, trace);
596
+ } else if (hasConsole && (!config.silent)) {
597
+ console.error(("[Vue warn]: " + msg + trace));
598
+ }
599
+ };
600
+
601
+ tip = function (msg, vm) {
602
+ if (hasConsole && (!config.silent)) {
603
+ console.warn("[Vue tip]: " + msg + (
604
+ vm ? generateComponentTrace(vm) : ''
605
+ ));
606
+ }
607
+ };
608
+
609
+ formatComponentName = function (vm, includeFile) {
610
+ if (vm.$root === vm) {
611
+ return '<Root>'
612
+ }
613
+ var options = typeof vm === 'function' && vm.cid != null
614
+ ? vm.options
615
+ : vm._isVue
616
+ ? vm.$options || vm.constructor.options
617
+ : vm || {};
618
+ var name = options.name || options._componentTag;
619
+ var file = options.__file;
620
+ if (!name && file) {
621
+ var match = file.match(/([^/\\]+)\.vue$/);
622
+ name = match && match[1];
623
+ }
624
+
625
+ return (
626
+ (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
627
+ (file && includeFile !== false ? (" at " + file) : '')
628
+ )
629
+ };
630
+
631
+ var repeat = function (str, n) {
632
+ var res = '';
633
+ while (n) {
634
+ if (n % 2 === 1) { res += str; }
635
+ if (n > 1) { str += str; }
636
+ n >>= 1;
637
+ }
638
+ return res
639
+ };
640
+
641
+ generateComponentTrace = function (vm) {
642
+ if (vm._isVue && vm.$parent) {
643
+ var tree = [];
644
+ var currentRecursiveSequence = 0;
645
+ while (vm) {
646
+ if (tree.length > 0) {
647
+ var last = tree[tree.length - 1];
648
+ if (last.constructor === vm.constructor) {
649
+ currentRecursiveSequence++;
650
+ vm = vm.$parent;
651
+ continue
652
+ } else if (currentRecursiveSequence > 0) {
653
+ tree[tree.length - 1] = [last, currentRecursiveSequence];
654
+ currentRecursiveSequence = 0;
655
+ }
656
+ }
657
+ tree.push(vm);
658
+ vm = vm.$parent;
659
+ }
660
+ return '\n\nfound in\n\n' + tree
661
+ .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
662
+ ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
663
+ : formatComponentName(vm))); })
664
+ .join('\n')
665
+ } else {
666
+ return ("\n\n(found in " + (formatComponentName(vm)) + ")")
667
+ }
668
+ };
669
+ }
670
+
671
+ /* */
672
+
673
+
674
+ var uid = 0;
675
+
676
+ /**
677
+ * A dep is an observable that can have multiple
678
+ * directives subscribing to it.
679
+ */
680
+ var Dep = function Dep () {
681
+ this.id = uid++;
682
+ this.subs = [];
683
+ };
684
+
685
+ Dep.prototype.addSub = function addSub (sub) {
686
+ this.subs.push(sub);
687
+ };
688
+
689
+ Dep.prototype.removeSub = function removeSub (sub) {
690
+ remove(this.subs, sub);
691
+ };
692
+
693
+ Dep.prototype.depend = function depend () {
694
+ if (Dep.target) {
695
+ Dep.target.addDep(this);
696
+ }
697
+ };
698
+
699
+ Dep.prototype.notify = function notify () {
700
+ // stabilize the subscriber list first
701
+ var subs = this.subs.slice();
702
+ for (var i = 0, l = subs.length; i < l; i++) {
703
+ subs[i].update();
704
+ }
705
+ };
706
+
707
+ // the current target watcher being evaluated.
708
+ // this is globally unique because there could be only one
709
+ // watcher being evaluated at any time.
710
+ Dep.target = null;
711
+ var targetStack = [];
712
+
713
+ function pushTarget (_target) {
714
+ if (Dep.target) { targetStack.push(Dep.target); }
715
+ Dep.target = _target;
716
+ }
717
+
718
+ function popTarget () {
719
+ Dep.target = targetStack.pop();
720
+ }
721
+
722
+ /* */
723
+
724
+ var VNode = function VNode (
725
+ tag,
726
+ data,
727
+ children,
728
+ text,
729
+ elm,
730
+ context,
731
+ componentOptions,
732
+ asyncFactory
733
+ ) {
734
+ this.tag = tag;
735
+ this.data = data;
736
+ this.children = children;
737
+ this.text = text;
738
+ this.elm = elm;
739
+ this.ns = undefined;
740
+ this.context = context;
741
+ this.fnContext = undefined;
742
+ this.fnOptions = undefined;
743
+ this.fnScopeId = undefined;
744
+ this.key = data && data.key;
745
+ this.componentOptions = componentOptions;
746
+ this.componentInstance = undefined;
747
+ this.parent = undefined;
748
+ this.raw = false;
749
+ this.isStatic = false;
750
+ this.isRootInsert = true;
751
+ this.isComment = false;
752
+ this.isCloned = false;
753
+ this.isOnce = false;
754
+ this.asyncFactory = asyncFactory;
755
+ this.asyncMeta = undefined;
756
+ this.isAsyncPlaceholder = false;
757
+ };
758
+
759
+ var prototypeAccessors = { child: { configurable: true } };
760
+
761
+ // DEPRECATED: alias for componentInstance for backwards compat.
762
+ /* istanbul ignore next */
763
+ prototypeAccessors.child.get = function () {
764
+ return this.componentInstance
765
+ };
766
+
767
+ Object.defineProperties( VNode.prototype, prototypeAccessors );
768
+
769
+ var createEmptyVNode = function (text) {
770
+ if ( text === void 0 ) text = '';
771
+
772
+ var node = new VNode();
773
+ node.text = text;
774
+ node.isComment = true;
775
+ return node
776
+ };
777
+
778
+ function createTextVNode (val) {
779
+ return new VNode(undefined, undefined, undefined, String(val))
780
+ }
781
+
782
+ // optimized shallow clone
783
+ // used for static nodes and slot nodes because they may be reused across
784
+ // multiple renders, cloning them avoids errors when DOM manipulations rely
785
+ // on their elm reference.
786
+ function cloneVNode (vnode) {
787
+ var cloned = new VNode(
788
+ vnode.tag,
789
+ vnode.data,
790
+ vnode.children,
791
+ vnode.text,
792
+ vnode.elm,
793
+ vnode.context,
794
+ vnode.componentOptions,
795
+ vnode.asyncFactory
796
+ );
797
+ cloned.ns = vnode.ns;
798
+ cloned.isStatic = vnode.isStatic;
799
+ cloned.key = vnode.key;
800
+ cloned.isComment = vnode.isComment;
801
+ cloned.fnContext = vnode.fnContext;
802
+ cloned.fnOptions = vnode.fnOptions;
803
+ cloned.fnScopeId = vnode.fnScopeId;
804
+ cloned.isCloned = true;
805
+ return cloned
806
+ }
807
+
808
+ /*
809
+ * not type checking this file because flow doesn't play well with
810
+ * dynamically accessing methods on Array prototype
811
+ */
812
+
813
+ var arrayProto = Array.prototype;
814
+ var arrayMethods = Object.create(arrayProto);
815
+
816
+ var methodsToPatch = [
817
+ 'push',
818
+ 'pop',
819
+ 'shift',
820
+ 'unshift',
821
+ 'splice',
822
+ 'sort',
823
+ 'reverse'
824
+ ];
825
+
826
+ /**
827
+ * Intercept mutating methods and emit events
828
+ */
829
+ methodsToPatch.forEach(function (method) {
830
+ // cache original method
831
+ var original = arrayProto[method];
832
+ def(arrayMethods, method, function mutator () {
833
+ var args = [], len = arguments.length;
834
+ while ( len-- ) args[ len ] = arguments[ len ];
835
+
836
+ var result = original.apply(this, args);
837
+ var ob = this.__ob__;
838
+ var inserted;
839
+ switch (method) {
840
+ case 'push':
841
+ case 'unshift':
842
+ inserted = args;
843
+ break
844
+ case 'splice':
845
+ inserted = args.slice(2);
846
+ break
847
+ }
848
+ if (inserted) { ob.observeArray(inserted); }
849
+ // notify change
850
+ ob.dep.notify();
851
+ return result
852
+ });
853
+ });
854
+
855
+ /* */
856
+
857
+ var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
858
+
859
+ /**
860
+ * In some cases we may want to disable observation inside a component's
861
+ * update computation.
862
+ */
863
+ var shouldObserve = true;
864
+
865
+ function toggleObserving (value) {
866
+ shouldObserve = value;
867
+ }
868
+
869
+ /**
870
+ * Observer class that is attached to each observed
871
+ * object. Once attached, the observer converts the target
872
+ * object's property keys into getter/setters that
873
+ * collect dependencies and dispatch updates.
874
+ */
875
+ var Observer = function Observer (value) {
876
+ this.value = value;
877
+ this.dep = new Dep();
878
+ this.vmCount = 0;
879
+ def(value, '__ob__', this);
880
+ if (Array.isArray(value)) {
881
+ var augment = hasProto
882
+ ? protoAugment
883
+ : copyAugment;
884
+ augment(value, arrayMethods, arrayKeys);
885
+ this.observeArray(value);
886
+ } else {
887
+ this.walk(value);
888
+ }
889
+ };
890
+
891
+ /**
892
+ * Walk through each property and convert them into
893
+ * getter/setters. This method should only be called when
894
+ * value type is Object.
895
+ */
896
+ Observer.prototype.walk = function walk (obj) {
897
+ var keys = Object.keys(obj);
898
+ for (var i = 0; i < keys.length; i++) {
899
+ defineReactive(obj, keys[i]);
900
+ }
901
+ };
902
+
903
+ /**
904
+ * Observe a list of Array items.
905
+ */
906
+ Observer.prototype.observeArray = function observeArray (items) {
907
+ for (var i = 0, l = items.length; i < l; i++) {
908
+ observe(items[i]);
909
+ }
910
+ };
911
+
912
+ // helpers
913
+
914
+ /**
915
+ * Augment an target Object or Array by intercepting
916
+ * the prototype chain using __proto__
917
+ */
918
+ function protoAugment (target, src, keys) {
919
+ /* eslint-disable no-proto */
920
+ target.__proto__ = src;
921
+ /* eslint-enable no-proto */
922
+ }
923
+
924
+ /**
925
+ * Augment an target Object or Array by defining
926
+ * hidden properties.
927
+ */
928
+ /* istanbul ignore next */
929
+ function copyAugment (target, src, keys) {
930
+ for (var i = 0, l = keys.length; i < l; i++) {
931
+ var key = keys[i];
932
+ def(target, key, src[key]);
933
+ }
934
+ }
935
+
936
+ /**
937
+ * Attempt to create an observer instance for a value,
938
+ * returns the new observer if successfully observed,
939
+ * or the existing observer if the value already has one.
940
+ */
941
+ function observe (value, asRootData) {
942
+ if (!isObject(value) || value instanceof VNode) {
943
+ return
944
+ }
945
+ var ob;
946
+ if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
947
+ ob = value.__ob__;
948
+ } else if (
949
+ shouldObserve &&
950
+ !isServerRendering() &&
951
+ (Array.isArray(value) || isPlainObject(value)) &&
952
+ Object.isExtensible(value) &&
953
+ !value._isVue
954
+ ) {
955
+ ob = new Observer(value);
956
+ }
957
+ if (asRootData && ob) {
958
+ ob.vmCount++;
959
+ }
960
+ return ob
961
+ }
962
+
963
+ /**
964
+ * Define a reactive property on an Object.
965
+ */
966
+ function defineReactive (
967
+ obj,
968
+ key,
969
+ val,
970
+ customSetter,
971
+ shallow
972
+ ) {
973
+ var dep = new Dep();
974
+
975
+ var property = Object.getOwnPropertyDescriptor(obj, key);
976
+ if (property && property.configurable === false) {
977
+ return
978
+ }
979
+
980
+ // cater for pre-defined getter/setters
981
+ var getter = property && property.get;
982
+ if (!getter && arguments.length === 2) {
983
+ val = obj[key];
984
+ }
985
+ var setter = property && property.set;
986
+
987
+ var childOb = !shallow && observe(val);
988
+ Object.defineProperty(obj, key, {
989
+ enumerable: true,
990
+ configurable: true,
991
+ get: function reactiveGetter () {
992
+ var value = getter ? getter.call(obj) : val;
993
+ if (Dep.target) {
994
+ dep.depend();
995
+ if (childOb) {
996
+ childOb.dep.depend();
997
+ if (Array.isArray(value)) {
998
+ dependArray(value);
999
+ }
1000
+ }
1001
+ }
1002
+ return value
1003
+ },
1004
+ set: function reactiveSetter (newVal) {
1005
+ var value = getter ? getter.call(obj) : val;
1006
+ /* eslint-disable no-self-compare */
1007
+ if (newVal === value || (newVal !== newVal && value !== value)) {
1008
+ return
1009
+ }
1010
+ /* eslint-enable no-self-compare */
1011
+ if ("development" !== 'production' && customSetter) {
1012
+ customSetter();
1013
+ }
1014
+ if (setter) {
1015
+ setter.call(obj, newVal);
1016
+ } else {
1017
+ val = newVal;
1018
+ }
1019
+ childOb = !shallow && observe(newVal);
1020
+ dep.notify();
1021
+ }
1022
+ });
1023
+ }
1024
+
1025
+ /**
1026
+ * Set a property on an object. Adds the new property and
1027
+ * triggers change notification if the property doesn't
1028
+ * already exist.
1029
+ */
1030
+ function set (target, key, val) {
1031
+ if ("development" !== 'production' &&
1032
+ (isUndef(target) || isPrimitive(target))
1033
+ ) {
1034
+ warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
1035
+ }
1036
+ if (Array.isArray(target) && isValidArrayIndex(key)) {
1037
+ target.length = Math.max(target.length, key);
1038
+ target.splice(key, 1, val);
1039
+ return val
1040
+ }
1041
+ if (key in target && !(key in Object.prototype)) {
1042
+ target[key] = val;
1043
+ return val
1044
+ }
1045
+ var ob = (target).__ob__;
1046
+ if (target._isVue || (ob && ob.vmCount)) {
1047
+ "development" !== 'production' && warn(
1048
+ 'Avoid adding reactive properties to a Vue instance or its root $data ' +
1049
+ 'at runtime - declare it upfront in the data option.'
1050
+ );
1051
+ return val
1052
+ }
1053
+ if (!ob) {
1054
+ target[key] = val;
1055
+ return val
1056
+ }
1057
+ defineReactive(ob.value, key, val);
1058
+ ob.dep.notify();
1059
+ return val
1060
+ }
1061
+
1062
+ /**
1063
+ * Delete a property and trigger change if necessary.
1064
+ */
1065
+ function del (target, key) {
1066
+ if ("development" !== 'production' &&
1067
+ (isUndef(target) || isPrimitive(target))
1068
+ ) {
1069
+ warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
1070
+ }
1071
+ if (Array.isArray(target) && isValidArrayIndex(key)) {
1072
+ target.splice(key, 1);
1073
+ return
1074
+ }
1075
+ var ob = (target).__ob__;
1076
+ if (target._isVue || (ob && ob.vmCount)) {
1077
+ "development" !== 'production' && warn(
1078
+ 'Avoid deleting properties on a Vue instance or its root $data ' +
1079
+ '- just set it to null.'
1080
+ );
1081
+ return
1082
+ }
1083
+ if (!hasOwn(target, key)) {
1084
+ return
1085
+ }
1086
+ delete target[key];
1087
+ if (!ob) {
1088
+ return
1089
+ }
1090
+ ob.dep.notify();
1091
+ }
1092
+
1093
+ /**
1094
+ * Collect dependencies on array elements when the array is touched, since
1095
+ * we cannot intercept array element access like property getters.
1096
+ */
1097
+ function dependArray (value) {
1098
+ for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
1099
+ e = value[i];
1100
+ e && e.__ob__ && e.__ob__.dep.depend();
1101
+ if (Array.isArray(e)) {
1102
+ dependArray(e);
1103
+ }
1104
+ }
1105
+ }
1106
+
1107
+ /* */
1108
+
1109
+ /**
1110
+ * Option overwriting strategies are functions that handle
1111
+ * how to merge a parent option value and a child option
1112
+ * value into the final value.
1113
+ */
1114
+ var strats = config.optionMergeStrategies;
1115
+
1116
+ /**
1117
+ * Options with restrictions
1118
+ */
1119
+ {
1120
+ strats.el = strats.propsData = function (parent, child, vm, key) {
1121
+ if (!vm) {
1122
+ warn(
1123
+ "option \"" + key + "\" can only be used during instance " +
1124
+ 'creation with the `new` keyword.'
1125
+ );
1126
+ }
1127
+ return defaultStrat(parent, child)
1128
+ };
1129
+ }
1130
+
1131
+ /**
1132
+ * Helper that recursively merges two data objects together.
1133
+ */
1134
+ function mergeData (to, from) {
1135
+ if (!from) { return to }
1136
+ var key, toVal, fromVal;
1137
+ var keys = Object.keys(from);
1138
+ for (var i = 0; i < keys.length; i++) {
1139
+ key = keys[i];
1140
+ toVal = to[key];
1141
+ fromVal = from[key];
1142
+ if (!hasOwn(to, key)) {
1143
+ set(to, key, fromVal);
1144
+ } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
1145
+ mergeData(toVal, fromVal);
1146
+ }
1147
+ }
1148
+ return to
1149
+ }
1150
+
1151
+ /**
1152
+ * Data
1153
+ */
1154
+ function mergeDataOrFn (
1155
+ parentVal,
1156
+ childVal,
1157
+ vm
1158
+ ) {
1159
+ if (!vm) {
1160
+ // in a Vue.extend merge, both should be functions
1161
+ if (!childVal) {
1162
+ return parentVal
1163
+ }
1164
+ if (!parentVal) {
1165
+ return childVal
1166
+ }
1167
+ // when parentVal & childVal are both present,
1168
+ // we need to return a function that returns the
1169
+ // merged result of both functions... no need to
1170
+ // check if parentVal is a function here because
1171
+ // it has to be a function to pass previous merges.
1172
+ return function mergedDataFn () {
1173
+ return mergeData(
1174
+ typeof childVal === 'function' ? childVal.call(this, this) : childVal,
1175
+ typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
1176
+ )
1177
+ }
1178
+ } else {
1179
+ return function mergedInstanceDataFn () {
1180
+ // instance merge
1181
+ var instanceData = typeof childVal === 'function'
1182
+ ? childVal.call(vm, vm)
1183
+ : childVal;
1184
+ var defaultData = typeof parentVal === 'function'
1185
+ ? parentVal.call(vm, vm)
1186
+ : parentVal;
1187
+ if (instanceData) {
1188
+ return mergeData(instanceData, defaultData)
1189
+ } else {
1190
+ return defaultData
1191
+ }
1192
+ }
1193
+ }
1194
+ }
1195
+
1196
+ strats.data = function (
1197
+ parentVal,
1198
+ childVal,
1199
+ vm
1200
+ ) {
1201
+ if (!vm) {
1202
+ if (childVal && typeof childVal !== 'function') {
1203
+ "development" !== 'production' && warn(
1204
+ 'The "data" option should be a function ' +
1205
+ 'that returns a per-instance value in component ' +
1206
+ 'definitions.',
1207
+ vm
1208
+ );
1209
+
1210
+ return parentVal
1211
+ }
1212
+ return mergeDataOrFn(parentVal, childVal)
1213
+ }
1214
+
1215
+ return mergeDataOrFn(parentVal, childVal, vm)
1216
+ };
1217
+
1218
+ /**
1219
+ * Hooks and props are merged as arrays.
1220
+ */
1221
+ function mergeHook (
1222
+ parentVal,
1223
+ childVal
1224
+ ) {
1225
+ return childVal
1226
+ ? parentVal
1227
+ ? parentVal.concat(childVal)
1228
+ : Array.isArray(childVal)
1229
+ ? childVal
1230
+ : [childVal]
1231
+ : parentVal
1232
+ }
1233
+
1234
+ LIFECYCLE_HOOKS.forEach(function (hook) {
1235
+ strats[hook] = mergeHook;
1236
+ });
1237
+
1238
+ /**
1239
+ * Assets
1240
+ *
1241
+ * When a vm is present (instance creation), we need to do
1242
+ * a three-way merge between constructor options, instance
1243
+ * options and parent options.
1244
+ */
1245
+ function mergeAssets (
1246
+ parentVal,
1247
+ childVal,
1248
+ vm,
1249
+ key
1250
+ ) {
1251
+ var res = Object.create(parentVal || null);
1252
+ if (childVal) {
1253
+ "development" !== 'production' && assertObjectType(key, childVal, vm);
1254
+ return extend(res, childVal)
1255
+ } else {
1256
+ return res
1257
+ }
1258
+ }
1259
+
1260
+ ASSET_TYPES.forEach(function (type) {
1261
+ strats[type + 's'] = mergeAssets;
1262
+ });
1263
+
1264
+ /**
1265
+ * Watchers.
1266
+ *
1267
+ * Watchers hashes should not overwrite one
1268
+ * another, so we merge them as arrays.
1269
+ */
1270
+ strats.watch = function (
1271
+ parentVal,
1272
+ childVal,
1273
+ vm,
1274
+ key
1275
+ ) {
1276
+ // work around Firefox's Object.prototype.watch...
1277
+ if (parentVal === nativeWatch) { parentVal = undefined; }
1278
+ if (childVal === nativeWatch) { childVal = undefined; }
1279
+ /* istanbul ignore if */
1280
+ if (!childVal) { return Object.create(parentVal || null) }
1281
+ {
1282
+ assertObjectType(key, childVal, vm);
1283
+ }
1284
+ if (!parentVal) { return childVal }
1285
+ var ret = {};
1286
+ extend(ret, parentVal);
1287
+ for (var key$1 in childVal) {
1288
+ var parent = ret[key$1];
1289
+ var child = childVal[key$1];
1290
+ if (parent && !Array.isArray(parent)) {
1291
+ parent = [parent];
1292
+ }
1293
+ ret[key$1] = parent
1294
+ ? parent.concat(child)
1295
+ : Array.isArray(child) ? child : [child];
1296
+ }
1297
+ return ret
1298
+ };
1299
+
1300
+ /**
1301
+ * Other object hashes.
1302
+ */
1303
+ strats.props =
1304
+ strats.methods =
1305
+ strats.inject =
1306
+ strats.computed = function (
1307
+ parentVal,
1308
+ childVal,
1309
+ vm,
1310
+ key
1311
+ ) {
1312
+ if (childVal && "development" !== 'production') {
1313
+ assertObjectType(key, childVal, vm);
1314
+ }
1315
+ if (!parentVal) { return childVal }
1316
+ var ret = Object.create(null);
1317
+ extend(ret, parentVal);
1318
+ if (childVal) { extend(ret, childVal); }
1319
+ return ret
1320
+ };
1321
+ strats.provide = mergeDataOrFn;
1322
+
1323
+ /**
1324
+ * Default strategy.
1325
+ */
1326
+ var defaultStrat = function (parentVal, childVal) {
1327
+ return childVal === undefined
1328
+ ? parentVal
1329
+ : childVal
1330
+ };
1331
+
1332
+ /**
1333
+ * Validate component names
1334
+ */
1335
+ function checkComponents (options) {
1336
+ for (var key in options.components) {
1337
+ validateComponentName(key);
1338
+ }
1339
+ }
1340
+
1341
+ function validateComponentName (name) {
1342
+ if (!/^[a-zA-Z][\w-]*$/.test(name)) {
1343
+ warn(
1344
+ 'Invalid component name: "' + name + '". Component names ' +
1345
+ 'can only contain alphanumeric characters and the hyphen, ' +
1346
+ 'and must start with a letter.'
1347
+ );
1348
+ }
1349
+ if (isBuiltInTag(name) || config.isReservedTag(name)) {
1350
+ warn(
1351
+ 'Do not use built-in or reserved HTML elements as component ' +
1352
+ 'id: ' + name
1353
+ );
1354
+ }
1355
+ }
1356
+
1357
+ /**
1358
+ * Ensure all props option syntax are normalized into the
1359
+ * Object-based format.
1360
+ */
1361
+ function normalizeProps (options, vm) {
1362
+ var props = options.props;
1363
+ if (!props) { return }
1364
+ var res = {};
1365
+ var i, val, name;
1366
+ if (Array.isArray(props)) {
1367
+ i = props.length;
1368
+ while (i--) {
1369
+ val = props[i];
1370
+ if (typeof val === 'string') {
1371
+ name = camelize(val);
1372
+ res[name] = { type: null };
1373
+ } else {
1374
+ warn('props must be strings when using array syntax.');
1375
+ }
1376
+ }
1377
+ } else if (isPlainObject(props)) {
1378
+ for (var key in props) {
1379
+ val = props[key];
1380
+ name = camelize(key);
1381
+ res[name] = isPlainObject(val)
1382
+ ? val
1383
+ : { type: val };
1384
+ }
1385
+ } else {
1386
+ warn(
1387
+ "Invalid value for option \"props\": expected an Array or an Object, " +
1388
+ "but got " + (toRawType(props)) + ".",
1389
+ vm
1390
+ );
1391
+ }
1392
+ options.props = res;
1393
+ }
1394
+
1395
+ /**
1396
+ * Normalize all injections into Object-based format
1397
+ */
1398
+ function normalizeInject (options, vm) {
1399
+ var inject = options.inject;
1400
+ if (!inject) { return }
1401
+ var normalized = options.inject = {};
1402
+ if (Array.isArray(inject)) {
1403
+ for (var i = 0; i < inject.length; i++) {
1404
+ normalized[inject[i]] = { from: inject[i] };
1405
+ }
1406
+ } else if (isPlainObject(inject)) {
1407
+ for (var key in inject) {
1408
+ var val = inject[key];
1409
+ normalized[key] = isPlainObject(val)
1410
+ ? extend({ from: key }, val)
1411
+ : { from: val };
1412
+ }
1413
+ } else {
1414
+ warn(
1415
+ "Invalid value for option \"inject\": expected an Array or an Object, " +
1416
+ "but got " + (toRawType(inject)) + ".",
1417
+ vm
1418
+ );
1419
+ }
1420
+ }
1421
+
1422
+ /**
1423
+ * Normalize raw function directives into object format.
1424
+ */
1425
+ function normalizeDirectives (options) {
1426
+ var dirs = options.directives;
1427
+ if (dirs) {
1428
+ for (var key in dirs) {
1429
+ var def = dirs[key];
1430
+ if (typeof def === 'function') {
1431
+ dirs[key] = { bind: def, update: def };
1432
+ }
1433
+ }
1434
+ }
1435
+ }
1436
+
1437
+ function assertObjectType (name, value, vm) {
1438
+ if (!isPlainObject(value)) {
1439
+ warn(
1440
+ "Invalid value for option \"" + name + "\": expected an Object, " +
1441
+ "but got " + (toRawType(value)) + ".",
1442
+ vm
1443
+ );
1444
+ }
1445
+ }
1446
+
1447
+ /**
1448
+ * Merge two option objects into a new one.
1449
+ * Core utility used in both instantiation and inheritance.
1450
+ */
1451
+ function mergeOptions (
1452
+ parent,
1453
+ child,
1454
+ vm
1455
+ ) {
1456
+ {
1457
+ checkComponents(child);
1458
+ }
1459
+
1460
+ if (typeof child === 'function') {
1461
+ child = child.options;
1462
+ }
1463
+
1464
+ normalizeProps(child, vm);
1465
+ normalizeInject(child, vm);
1466
+ normalizeDirectives(child);
1467
+ var extendsFrom = child.extends;
1468
+ if (extendsFrom) {
1469
+ parent = mergeOptions(parent, extendsFrom, vm);
1470
+ }
1471
+ if (child.mixins) {
1472
+ for (var i = 0, l = child.mixins.length; i < l; i++) {
1473
+ parent = mergeOptions(parent, child.mixins[i], vm);
1474
+ }
1475
+ }
1476
+ var options = {};
1477
+ var key;
1478
+ for (key in parent) {
1479
+ mergeField(key);
1480
+ }
1481
+ for (key in child) {
1482
+ if (!hasOwn(parent, key)) {
1483
+ mergeField(key);
1484
+ }
1485
+ }
1486
+ function mergeField (key) {
1487
+ var strat = strats[key] || defaultStrat;
1488
+ options[key] = strat(parent[key], child[key], vm, key);
1489
+ }
1490
+ return options
1491
+ }
1492
+
1493
+ /**
1494
+ * Resolve an asset.
1495
+ * This function is used because child instances need access
1496
+ * to assets defined in its ancestor chain.
1497
+ */
1498
+ function resolveAsset (
1499
+ options,
1500
+ type,
1501
+ id,
1502
+ warnMissing
1503
+ ) {
1504
+ /* istanbul ignore if */
1505
+ if (typeof id !== 'string') {
1506
+ return
1507
+ }
1508
+ var assets = options[type];
1509
+ // check local registration variations first
1510
+ if (hasOwn(assets, id)) { return assets[id] }
1511
+ var camelizedId = camelize(id);
1512
+ if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
1513
+ var PascalCaseId = capitalize(camelizedId);
1514
+ if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
1515
+ // fallback to prototype chain
1516
+ var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
1517
+ if ("development" !== 'production' && warnMissing && !res) {
1518
+ warn(
1519
+ 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
1520
+ options
1521
+ );
1522
+ }
1523
+ return res
1524
+ }
1525
+
1526
+ /* */
1527
+
1528
+ function validateProp (
1529
+ key,
1530
+ propOptions,
1531
+ propsData,
1532
+ vm
1533
+ ) {
1534
+ var prop = propOptions[key];
1535
+ var absent = !hasOwn(propsData, key);
1536
+ var value = propsData[key];
1537
+ // boolean casting
1538
+ var booleanIndex = getTypeIndex(Boolean, prop.type);
1539
+ if (booleanIndex > -1) {
1540
+ if (absent && !hasOwn(prop, 'default')) {
1541
+ value = false;
1542
+ } else if (value === '' || value === hyphenate(key)) {
1543
+ // only cast empty string / same name to boolean if
1544
+ // boolean has higher priority
1545
+ var stringIndex = getTypeIndex(String, prop.type);
1546
+ if (stringIndex < 0 || booleanIndex < stringIndex) {
1547
+ value = true;
1548
+ }
1549
+ }
1550
+ }
1551
+ // check default value
1552
+ if (value === undefined) {
1553
+ value = getPropDefaultValue(vm, prop, key);
1554
+ // since the default value is a fresh copy,
1555
+ // make sure to observe it.
1556
+ var prevShouldObserve = shouldObserve;
1557
+ toggleObserving(true);
1558
+ observe(value);
1559
+ toggleObserving(prevShouldObserve);
1560
+ }
1561
+ {
1562
+ assertProp(prop, key, value, vm, absent);
1563
+ }
1564
+ return value
1565
+ }
1566
+
1567
+ /**
1568
+ * Get the default value of a prop.
1569
+ */
1570
+ function getPropDefaultValue (vm, prop, key) {
1571
+ // no default, return undefined
1572
+ if (!hasOwn(prop, 'default')) {
1573
+ return undefined
1574
+ }
1575
+ var def = prop.default;
1576
+ // warn against non-factory defaults for Object & Array
1577
+ if ("development" !== 'production' && isObject(def)) {
1578
+ warn(
1579
+ 'Invalid default value for prop "' + key + '": ' +
1580
+ 'Props with type Object/Array must use a factory function ' +
1581
+ 'to return the default value.',
1582
+ vm
1583
+ );
1584
+ }
1585
+ // the raw prop value was also undefined from previous render,
1586
+ // return previous default value to avoid unnecessary watcher trigger
1587
+ if (vm && vm.$options.propsData &&
1588
+ vm.$options.propsData[key] === undefined &&
1589
+ vm._props[key] !== undefined
1590
+ ) {
1591
+ return vm._props[key]
1592
+ }
1593
+ // call factory function for non-Function types
1594
+ // a value is Function if its prototype is function even across different execution context
1595
+ return typeof def === 'function' && getType(prop.type) !== 'Function'
1596
+ ? def.call(vm)
1597
+ : def
1598
+ }
1599
+
1600
+ /**
1601
+ * Assert whether a prop is valid.
1602
+ */
1603
+ function assertProp (
1604
+ prop,
1605
+ name,
1606
+ value,
1607
+ vm,
1608
+ absent
1609
+ ) {
1610
+ if (prop.required && absent) {
1611
+ warn(
1612
+ 'Missing required prop: "' + name + '"',
1613
+ vm
1614
+ );
1615
+ return
1616
+ }
1617
+ if (value == null && !prop.required) {
1618
+ return
1619
+ }
1620
+ var type = prop.type;
1621
+ var valid = !type || type === true;
1622
+ var expectedTypes = [];
1623
+ if (type) {
1624
+ if (!Array.isArray(type)) {
1625
+ type = [type];
1626
+ }
1627
+ for (var i = 0; i < type.length && !valid; i++) {
1628
+ var assertedType = assertType(value, type[i]);
1629
+ expectedTypes.push(assertedType.expectedType || '');
1630
+ valid = assertedType.valid;
1631
+ }
1632
+ }
1633
+ if (!valid) {
1634
+ warn(
1635
+ "Invalid prop: type check failed for prop \"" + name + "\"." +
1636
+ " Expected " + (expectedTypes.map(capitalize).join(', ')) +
1637
+ ", got " + (toRawType(value)) + ".",
1638
+ vm
1639
+ );
1640
+ return
1641
+ }
1642
+ var validator = prop.validator;
1643
+ if (validator) {
1644
+ if (!validator(value)) {
1645
+ warn(
1646
+ 'Invalid prop: custom validator check failed for prop "' + name + '".',
1647
+ vm
1648
+ );
1649
+ }
1650
+ }
1651
+ }
1652
+
1653
+ var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
1654
+
1655
+ function assertType (value, type) {
1656
+ var valid;
1657
+ var expectedType = getType(type);
1658
+ if (simpleCheckRE.test(expectedType)) {
1659
+ var t = typeof value;
1660
+ valid = t === expectedType.toLowerCase();
1661
+ // for primitive wrapper objects
1662
+ if (!valid && t === 'object') {
1663
+ valid = value instanceof type;
1664
+ }
1665
+ } else if (expectedType === 'Object') {
1666
+ valid = isPlainObject(value);
1667
+ } else if (expectedType === 'Array') {
1668
+ valid = Array.isArray(value);
1669
+ } else {
1670
+ valid = value instanceof type;
1671
+ }
1672
+ return {
1673
+ valid: valid,
1674
+ expectedType: expectedType
1675
+ }
1676
+ }
1677
+
1678
+ /**
1679
+ * Use function string name to check built-in types,
1680
+ * because a simple equality check will fail when running
1681
+ * across different vms / iframes.
1682
+ */
1683
+ function getType (fn) {
1684
+ var match = fn && fn.toString().match(/^\s*function (\w+)/);
1685
+ return match ? match[1] : ''
1686
+ }
1687
+
1688
+ function isSameType (a, b) {
1689
+ return getType(a) === getType(b)
1690
+ }
1691
+
1692
+ function getTypeIndex (type, expectedTypes) {
1693
+ if (!Array.isArray(expectedTypes)) {
1694
+ return isSameType(expectedTypes, type) ? 0 : -1
1695
+ }
1696
+ for (var i = 0, len = expectedTypes.length; i < len; i++) {
1697
+ if (isSameType(expectedTypes[i], type)) {
1698
+ return i
1699
+ }
1700
+ }
1701
+ return -1
1702
+ }
1703
+
1704
+ /* */
1705
+
1706
+ function handleError (err, vm, info) {
1707
+ if (vm) {
1708
+ var cur = vm;
1709
+ while ((cur = cur.$parent)) {
1710
+ var hooks = cur.$options.errorCaptured;
1711
+ if (hooks) {
1712
+ for (var i = 0; i < hooks.length; i++) {
1713
+ try {
1714
+ var capture = hooks[i].call(cur, err, vm, info) === false;
1715
+ if (capture) { return }
1716
+ } catch (e) {
1717
+ globalHandleError(e, cur, 'errorCaptured hook');
1718
+ }
1719
+ }
1720
+ }
1721
+ }
1722
+ }
1723
+ globalHandleError(err, vm, info);
1724
+ }
1725
+
1726
+ function globalHandleError (err, vm, info) {
1727
+ if (config.errorHandler) {
1728
+ try {
1729
+ return config.errorHandler.call(null, err, vm, info)
1730
+ } catch (e) {
1731
+ logError(e, null, 'config.errorHandler');
1732
+ }
1733
+ }
1734
+ logError(err, vm, info);
1735
+ }
1736
+
1737
+ function logError (err, vm, info) {
1738
+ {
1739
+ warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
1740
+ }
1741
+ /* istanbul ignore else */
1742
+ if ((inBrowser || inWeex) && typeof console !== 'undefined') {
1743
+ console.error(err);
1744
+ } else {
1745
+ throw err
1746
+ }
1747
+ }
1748
+
1749
+ /* */
1750
+ /* globals MessageChannel */
1751
+
1752
+ var callbacks = [];
1753
+ var pending = false;
1754
+
1755
+ function flushCallbacks () {
1756
+ pending = false;
1757
+ var copies = callbacks.slice(0);
1758
+ callbacks.length = 0;
1759
+ for (var i = 0; i < copies.length; i++) {
1760
+ copies[i]();
1761
+ }
1762
+ }
1763
+
1764
+ // Here we have async deferring wrappers using both microtasks and (macro) tasks.
1765
+ // In < 2.4 we used microtasks everywhere, but there are some scenarios where
1766
+ // microtasks have too high a priority and fire in between supposedly
1767
+ // sequential events (e.g. #4521, #6690) or even between bubbling of the same
1768
+ // event (#6566). However, using (macro) tasks everywhere also has subtle problems
1769
+ // when state is changed right before repaint (e.g. #6813, out-in transitions).
1770
+ // Here we use microtask by default, but expose a way to force (macro) task when
1771
+ // needed (e.g. in event handlers attached by v-on).
1772
+ var microTimerFunc;
1773
+ var macroTimerFunc;
1774
+ var useMacroTask = false;
1775
+
1776
+ // Determine (macro) task defer implementation.
1777
+ // Technically setImmediate should be the ideal choice, but it's only available
1778
+ // in IE. The only polyfill that consistently queues the callback after all DOM
1779
+ // events triggered in the same loop is by using MessageChannel.
1780
+ /* istanbul ignore if */
1781
+ if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
1782
+ macroTimerFunc = function () {
1783
+ setImmediate(flushCallbacks);
1784
+ };
1785
+ } else if (typeof MessageChannel !== 'undefined' && (
1786
+ isNative(MessageChannel) ||
1787
+ // PhantomJS
1788
+ MessageChannel.toString() === '[object MessageChannelConstructor]'
1789
+ )) {
1790
+ var channel = new MessageChannel();
1791
+ var port = channel.port2;
1792
+ channel.port1.onmessage = flushCallbacks;
1793
+ macroTimerFunc = function () {
1794
+ port.postMessage(1);
1795
+ };
1796
+ } else {
1797
+ /* istanbul ignore next */
1798
+ macroTimerFunc = function () {
1799
+ setTimeout(flushCallbacks, 0);
1800
+ };
1801
+ }
1802
+
1803
+ // Determine microtask defer implementation.
1804
+ /* istanbul ignore next, $flow-disable-line */
1805
+ if (typeof Promise !== 'undefined' && isNative(Promise)) {
1806
+ var p = Promise.resolve();
1807
+ microTimerFunc = function () {
1808
+ p.then(flushCallbacks);
1809
+ // in problematic UIWebViews, Promise.then doesn't completely break, but
1810
+ // it can get stuck in a weird state where callbacks are pushed into the
1811
+ // microtask queue but the queue isn't being flushed, until the browser
1812
+ // needs to do some other work, e.g. handle a timer. Therefore we can
1813
+ // "force" the microtask queue to be flushed by adding an empty timer.
1814
+ if (isIOS) { setTimeout(noop); }
1815
+ };
1816
+ } else {
1817
+ // fallback to macro
1818
+ microTimerFunc = macroTimerFunc;
1819
+ }
1820
+
1821
+ /**
1822
+ * Wrap a function so that if any code inside triggers state change,
1823
+ * the changes are queued using a (macro) task instead of a microtask.
1824
+ */
1825
+ function withMacroTask (fn) {
1826
+ return fn._withTask || (fn._withTask = function () {
1827
+ useMacroTask = true;
1828
+ var res = fn.apply(null, arguments);
1829
+ useMacroTask = false;
1830
+ return res
1831
+ })
1832
+ }
1833
+
1834
+ function nextTick (cb, ctx) {
1835
+ var _resolve;
1836
+ callbacks.push(function () {
1837
+ if (cb) {
1838
+ try {
1839
+ cb.call(ctx);
1840
+ } catch (e) {
1841
+ handleError(e, ctx, 'nextTick');
1842
+ }
1843
+ } else if (_resolve) {
1844
+ _resolve(ctx);
1845
+ }
1846
+ });
1847
+ if (!pending) {
1848
+ pending = true;
1849
+ if (useMacroTask) {
1850
+ macroTimerFunc();
1851
+ } else {
1852
+ microTimerFunc();
1853
+ }
1854
+ }
1855
+ // $flow-disable-line
1856
+ if (!cb && typeof Promise !== 'undefined') {
1857
+ return new Promise(function (resolve) {
1858
+ _resolve = resolve;
1859
+ })
1860
+ }
1861
+ }
1862
+
1863
+ /* */
1864
+
1865
+ var mark;
1866
+ var measure;
1867
+
1868
+ {
1869
+ var perf = inBrowser && window.performance;
1870
+ /* istanbul ignore if */
1871
+ if (
1872
+ perf &&
1873
+ perf.mark &&
1874
+ perf.measure &&
1875
+ perf.clearMarks &&
1876
+ perf.clearMeasures
1877
+ ) {
1878
+ mark = function (tag) { return perf.mark(tag); };
1879
+ measure = function (name, startTag, endTag) {
1880
+ perf.measure(name, startTag, endTag);
1881
+ perf.clearMarks(startTag);
1882
+ perf.clearMarks(endTag);
1883
+ perf.clearMeasures(name);
1884
+ };
1885
+ }
1886
+ }
1887
+
1888
+ /* not type checking this file because flow doesn't play well with Proxy */
1889
+
1890
+ var initProxy;
1891
+
1892
+ {
1893
+ var allowedGlobals = makeMap(
1894
+ 'Infinity,undefined,NaN,isFinite,isNaN,' +
1895
+ 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
1896
+ 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
1897
+ 'require' // for Webpack/Browserify
1898
+ );
1899
+
1900
+ var warnNonPresent = function (target, key) {
1901
+ warn(
1902
+ "Property or method \"" + key + "\" is not defined on the instance but " +
1903
+ 'referenced during render. Make sure that this property is reactive, ' +
1904
+ 'either in the data option, or for class-based components, by ' +
1905
+ 'initializing the property. ' +
1906
+ 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
1907
+ target
1908
+ );
1909
+ };
1910
+
1911
+ var hasProxy =
1912
+ typeof Proxy !== 'undefined' && isNative(Proxy);
1913
+
1914
+ if (hasProxy) {
1915
+ var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
1916
+ config.keyCodes = new Proxy(config.keyCodes, {
1917
+ set: function set (target, key, value) {
1918
+ if (isBuiltInModifier(key)) {
1919
+ warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
1920
+ return false
1921
+ } else {
1922
+ target[key] = value;
1923
+ return true
1924
+ }
1925
+ }
1926
+ });
1927
+ }
1928
+
1929
+ var hasHandler = {
1930
+ has: function has (target, key) {
1931
+ var has = key in target;
1932
+ var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
1933
+ if (!has && !isAllowed) {
1934
+ warnNonPresent(target, key);
1935
+ }
1936
+ return has || !isAllowed
1937
+ }
1938
+ };
1939
+
1940
+ var getHandler = {
1941
+ get: function get (target, key) {
1942
+ if (typeof key === 'string' && !(key in target)) {
1943
+ warnNonPresent(target, key);
1944
+ }
1945
+ return target[key]
1946
+ }
1947
+ };
1948
+
1949
+ initProxy = function initProxy (vm) {
1950
+ if (hasProxy) {
1951
+ // determine which proxy handler to use
1952
+ var options = vm.$options;
1953
+ var handlers = options.render && options.render._withStripped
1954
+ ? getHandler
1955
+ : hasHandler;
1956
+ vm._renderProxy = new Proxy(vm, handlers);
1957
+ } else {
1958
+ vm._renderProxy = vm;
1959
+ }
1960
+ };
1961
+ }
1962
+
1963
+ /* */
1964
+
1965
+ var seenObjects = new _Set();
1966
+
1967
+ /**
1968
+ * Recursively traverse an object to evoke all converted
1969
+ * getters, so that every nested property inside the object
1970
+ * is collected as a "deep" dependency.
1971
+ */
1972
+ function traverse (val) {
1973
+ _traverse(val, seenObjects);
1974
+ seenObjects.clear();
1975
+ }
1976
+
1977
+ function _traverse (val, seen) {
1978
+ var i, keys;
1979
+ var isA = Array.isArray(val);
1980
+ if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
1981
+ return
1982
+ }
1983
+ if (val.__ob__) {
1984
+ var depId = val.__ob__.dep.id;
1985
+ if (seen.has(depId)) {
1986
+ return
1987
+ }
1988
+ seen.add(depId);
1989
+ }
1990
+ if (isA) {
1991
+ i = val.length;
1992
+ while (i--) { _traverse(val[i], seen); }
1993
+ } else {
1994
+ keys = Object.keys(val);
1995
+ i = keys.length;
1996
+ while (i--) { _traverse(val[keys[i]], seen); }
1997
+ }
1998
+ }
1999
+
2000
+ /* */
2001
+
2002
+ var normalizeEvent = cached(function (name) {
2003
+ var passive = name.charAt(0) === '&';
2004
+ name = passive ? name.slice(1) : name;
2005
+ var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
2006
+ name = once$$1 ? name.slice(1) : name;
2007
+ var capture = name.charAt(0) === '!';
2008
+ name = capture ? name.slice(1) : name;
2009
+ return {
2010
+ name: name,
2011
+ once: once$$1,
2012
+ capture: capture,
2013
+ passive: passive
2014
+ }
2015
+ });
2016
+
2017
+ function createFnInvoker (fns) {
2018
+ function invoker () {
2019
+ var arguments$1 = arguments;
2020
+
2021
+ var fns = invoker.fns;
2022
+ if (Array.isArray(fns)) {
2023
+ var cloned = fns.slice();
2024
+ for (var i = 0; i < cloned.length; i++) {
2025
+ cloned[i].apply(null, arguments$1);
2026
+ }
2027
+ } else {
2028
+ // return handler return value for single handlers
2029
+ return fns.apply(null, arguments)
2030
+ }
2031
+ }
2032
+ invoker.fns = fns;
2033
+ return invoker
2034
+ }
2035
+
2036
+ function updateListeners (
2037
+ on,
2038
+ oldOn,
2039
+ add,
2040
+ remove$$1,
2041
+ vm
2042
+ ) {
2043
+ var name, def, cur, old, event;
2044
+ for (name in on) {
2045
+ def = cur = on[name];
2046
+ old = oldOn[name];
2047
+ event = normalizeEvent(name);
2048
+ /* istanbul ignore if */
2049
+ if (isUndef(cur)) {
2050
+ "development" !== 'production' && warn(
2051
+ "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
2052
+ vm
2053
+ );
2054
+ } else if (isUndef(old)) {
2055
+ if (isUndef(cur.fns)) {
2056
+ cur = on[name] = createFnInvoker(cur);
2057
+ }
2058
+ add(event.name, cur, event.once, event.capture, event.passive, event.params);
2059
+ } else if (cur !== old) {
2060
+ old.fns = cur;
2061
+ on[name] = old;
2062
+ }
2063
+ }
2064
+ for (name in oldOn) {
2065
+ if (isUndef(on[name])) {
2066
+ event = normalizeEvent(name);
2067
+ remove$$1(event.name, oldOn[name], event.capture);
2068
+ }
2069
+ }
2070
+ }
2071
+
2072
+ /* */
2073
+
2074
+ function mergeVNodeHook (def, hookKey, hook) {
2075
+ if (def instanceof VNode) {
2076
+ def = def.data.hook || (def.data.hook = {});
2077
+ }
2078
+ var invoker;
2079
+ var oldHook = def[hookKey];
2080
+
2081
+ function wrappedHook () {
2082
+ hook.apply(this, arguments);
2083
+ // important: remove merged hook to ensure it's called only once
2084
+ // and prevent memory leak
2085
+ remove(invoker.fns, wrappedHook);
2086
+ }
2087
+
2088
+ if (isUndef(oldHook)) {
2089
+ // no existing hook
2090
+ invoker = createFnInvoker([wrappedHook]);
2091
+ } else {
2092
+ /* istanbul ignore if */
2093
+ if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
2094
+ // already a merged invoker
2095
+ invoker = oldHook;
2096
+ invoker.fns.push(wrappedHook);
2097
+ } else {
2098
+ // existing plain hook
2099
+ invoker = createFnInvoker([oldHook, wrappedHook]);
2100
+ }
2101
+ }
2102
+
2103
+ invoker.merged = true;
2104
+ def[hookKey] = invoker;
2105
+ }
2106
+
2107
+ /* */
2108
+
2109
+ function extractPropsFromVNodeData (
2110
+ data,
2111
+ Ctor,
2112
+ tag
2113
+ ) {
2114
+ // we are only extracting raw values here.
2115
+ // validation and default values are handled in the child
2116
+ // component itself.
2117
+ var propOptions = Ctor.options.props;
2118
+ if (isUndef(propOptions)) {
2119
+ return
2120
+ }
2121
+ var res = {};
2122
+ var attrs = data.attrs;
2123
+ var props = data.props;
2124
+ if (isDef(attrs) || isDef(props)) {
2125
+ for (var key in propOptions) {
2126
+ var altKey = hyphenate(key);
2127
+ {
2128
+ var keyInLowerCase = key.toLowerCase();
2129
+ if (
2130
+ key !== keyInLowerCase &&
2131
+ attrs && hasOwn(attrs, keyInLowerCase)
2132
+ ) {
2133
+ tip(
2134
+ "Prop \"" + keyInLowerCase + "\" is passed to component " +
2135
+ (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
2136
+ " \"" + key + "\". " +
2137
+ "Note that HTML attributes are case-insensitive and camelCased " +
2138
+ "props need to use their kebab-case equivalents when using in-DOM " +
2139
+ "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
2140
+ );
2141
+ }
2142
+ }
2143
+ checkProp(res, props, key, altKey, true) ||
2144
+ checkProp(res, attrs, key, altKey, false);
2145
+ }
2146
+ }
2147
+ return res
2148
+ }
2149
+
2150
+ function checkProp (
2151
+ res,
2152
+ hash,
2153
+ key,
2154
+ altKey,
2155
+ preserve
2156
+ ) {
2157
+ if (isDef(hash)) {
2158
+ if (hasOwn(hash, key)) {
2159
+ res[key] = hash[key];
2160
+ if (!preserve) {
2161
+ delete hash[key];
2162
+ }
2163
+ return true
2164
+ } else if (hasOwn(hash, altKey)) {
2165
+ res[key] = hash[altKey];
2166
+ if (!preserve) {
2167
+ delete hash[altKey];
2168
+ }
2169
+ return true
2170
+ }
2171
+ }
2172
+ return false
2173
+ }
2174
+
2175
+ /* */
2176
+
2177
+ // The template compiler attempts to minimize the need for normalization by
2178
+ // statically analyzing the template at compile time.
2179
+ //
2180
+ // For plain HTML markup, normalization can be completely skipped because the
2181
+ // generated render function is guaranteed to return Array<VNode>. There are
2182
+ // two cases where extra normalization is needed:
2183
+
2184
+ // 1. When the children contains components - because a functional component
2185
+ // may return an Array instead of a single root. In this case, just a simple
2186
+ // normalization is needed - if any child is an Array, we flatten the whole
2187
+ // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
2188
+ // because functional components already normalize their own children.
2189
+ function simpleNormalizeChildren (children) {
2190
+ for (var i = 0; i < children.length; i++) {
2191
+ if (Array.isArray(children[i])) {
2192
+ return Array.prototype.concat.apply([], children)
2193
+ }
2194
+ }
2195
+ return children
2196
+ }
2197
+
2198
+ // 2. When the children contains constructs that always generated nested Arrays,
2199
+ // e.g. <template>, <slot>, v-for, or when the children is provided by user
2200
+ // with hand-written render functions / JSX. In such cases a full normalization
2201
+ // is needed to cater to all possible types of children values.
2202
+ function normalizeChildren (children) {
2203
+ return isPrimitive(children)
2204
+ ? [createTextVNode(children)]
2205
+ : Array.isArray(children)
2206
+ ? normalizeArrayChildren(children)
2207
+ : undefined
2208
+ }
2209
+
2210
+ function isTextNode (node) {
2211
+ return isDef(node) && isDef(node.text) && isFalse(node.isComment)
2212
+ }
2213
+
2214
+ function normalizeArrayChildren (children, nestedIndex) {
2215
+ var res = [];
2216
+ var i, c, lastIndex, last;
2217
+ for (i = 0; i < children.length; i++) {
2218
+ c = children[i];
2219
+ if (isUndef(c) || typeof c === 'boolean') { continue }
2220
+ lastIndex = res.length - 1;
2221
+ last = res[lastIndex];
2222
+ // nested
2223
+ if (Array.isArray(c)) {
2224
+ if (c.length > 0) {
2225
+ c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
2226
+ // merge adjacent text nodes
2227
+ if (isTextNode(c[0]) && isTextNode(last)) {
2228
+ res[lastIndex] = createTextVNode(last.text + (c[0]).text);
2229
+ c.shift();
2230
+ }
2231
+ res.push.apply(res, c);
2232
+ }
2233
+ } else if (isPrimitive(c)) {
2234
+ if (isTextNode(last)) {
2235
+ // merge adjacent text nodes
2236
+ // this is necessary for SSR hydration because text nodes are
2237
+ // essentially merged when rendered to HTML strings
2238
+ res[lastIndex] = createTextVNode(last.text + c);
2239
+ } else if (c !== '') {
2240
+ // convert primitive to vnode
2241
+ res.push(createTextVNode(c));
2242
+ }
2243
+ } else {
2244
+ if (isTextNode(c) && isTextNode(last)) {
2245
+ // merge adjacent text nodes
2246
+ res[lastIndex] = createTextVNode(last.text + c.text);
2247
+ } else {
2248
+ // default key for nested array children (likely generated by v-for)
2249
+ if (isTrue(children._isVList) &&
2250
+ isDef(c.tag) &&
2251
+ isUndef(c.key) &&
2252
+ isDef(nestedIndex)) {
2253
+ c.key = "__vlist" + nestedIndex + "_" + i + "__";
2254
+ }
2255
+ res.push(c);
2256
+ }
2257
+ }
2258
+ }
2259
+ return res
2260
+ }
2261
+
2262
+ /* */
2263
+
2264
+ function ensureCtor (comp, base) {
2265
+ if (
2266
+ comp.__esModule ||
2267
+ (hasSymbol && comp[Symbol.toStringTag] === 'Module')
2268
+ ) {
2269
+ comp = comp.default;
2270
+ }
2271
+ return isObject(comp)
2272
+ ? base.extend(comp)
2273
+ : comp
2274
+ }
2275
+
2276
+ function createAsyncPlaceholder (
2277
+ factory,
2278
+ data,
2279
+ context,
2280
+ children,
2281
+ tag
2282
+ ) {
2283
+ var node = createEmptyVNode();
2284
+ node.asyncFactory = factory;
2285
+ node.asyncMeta = { data: data, context: context, children: children, tag: tag };
2286
+ return node
2287
+ }
2288
+
2289
+ function resolveAsyncComponent (
2290
+ factory,
2291
+ baseCtor,
2292
+ context
2293
+ ) {
2294
+ if (isTrue(factory.error) && isDef(factory.errorComp)) {
2295
+ return factory.errorComp
2296
+ }
2297
+
2298
+ if (isDef(factory.resolved)) {
2299
+ return factory.resolved
2300
+ }
2301
+
2302
+ if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
2303
+ return factory.loadingComp
2304
+ }
2305
+
2306
+ if (isDef(factory.contexts)) {
2307
+ // already pending
2308
+ factory.contexts.push(context);
2309
+ } else {
2310
+ var contexts = factory.contexts = [context];
2311
+ var sync = true;
2312
+
2313
+ var forceRender = function () {
2314
+ for (var i = 0, l = contexts.length; i < l; i++) {
2315
+ contexts[i].$forceUpdate();
2316
+ }
2317
+ };
2318
+
2319
+ var resolve = once(function (res) {
2320
+ // cache resolved
2321
+ factory.resolved = ensureCtor(res, baseCtor);
2322
+ // invoke callbacks only if this is not a synchronous resolve
2323
+ // (async resolves are shimmed as synchronous during SSR)
2324
+ if (!sync) {
2325
+ forceRender();
2326
+ }
2327
+ });
2328
+
2329
+ var reject = once(function (reason) {
2330
+ "development" !== 'production' && warn(
2331
+ "Failed to resolve async component: " + (String(factory)) +
2332
+ (reason ? ("\nReason: " + reason) : '')
2333
+ );
2334
+ if (isDef(factory.errorComp)) {
2335
+ factory.error = true;
2336
+ forceRender();
2337
+ }
2338
+ });
2339
+
2340
+ var res = factory(resolve, reject);
2341
+
2342
+ if (isObject(res)) {
2343
+ if (typeof res.then === 'function') {
2344
+ // () => Promise
2345
+ if (isUndef(factory.resolved)) {
2346
+ res.then(resolve, reject);
2347
+ }
2348
+ } else if (isDef(res.component) && typeof res.component.then === 'function') {
2349
+ res.component.then(resolve, reject);
2350
+
2351
+ if (isDef(res.error)) {
2352
+ factory.errorComp = ensureCtor(res.error, baseCtor);
2353
+ }
2354
+
2355
+ if (isDef(res.loading)) {
2356
+ factory.loadingComp = ensureCtor(res.loading, baseCtor);
2357
+ if (res.delay === 0) {
2358
+ factory.loading = true;
2359
+ } else {
2360
+ setTimeout(function () {
2361
+ if (isUndef(factory.resolved) && isUndef(factory.error)) {
2362
+ factory.loading = true;
2363
+ forceRender();
2364
+ }
2365
+ }, res.delay || 200);
2366
+ }
2367
+ }
2368
+
2369
+ if (isDef(res.timeout)) {
2370
+ setTimeout(function () {
2371
+ if (isUndef(factory.resolved)) {
2372
+ reject(
2373
+ "timeout (" + (res.timeout) + "ms)"
2374
+ );
2375
+ }
2376
+ }, res.timeout);
2377
+ }
2378
+ }
2379
+ }
2380
+
2381
+ sync = false;
2382
+ // return in case resolved synchronously
2383
+ return factory.loading
2384
+ ? factory.loadingComp
2385
+ : factory.resolved
2386
+ }
2387
+ }
2388
+
2389
+ /* */
2390
+
2391
+ function isAsyncPlaceholder (node) {
2392
+ return node.isComment && node.asyncFactory
2393
+ }
2394
+
2395
+ /* */
2396
+
2397
+ function getFirstComponentChild (children) {
2398
+ if (Array.isArray(children)) {
2399
+ for (var i = 0; i < children.length; i++) {
2400
+ var c = children[i];
2401
+ if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
2402
+ return c
2403
+ }
2404
+ }
2405
+ }
2406
+ }
2407
+
2408
+ /* */
2409
+
2410
+ /* */
2411
+
2412
+ function initEvents (vm) {
2413
+ vm._events = Object.create(null);
2414
+ vm._hasHookEvent = false;
2415
+ // init parent attached events
2416
+ var listeners = vm.$options._parentListeners;
2417
+ if (listeners) {
2418
+ updateComponentListeners(vm, listeners);
2419
+ }
2420
+ }
2421
+
2422
+ var target;
2423
+
2424
+ function add (event, fn, once) {
2425
+ if (once) {
2426
+ target.$once(event, fn);
2427
+ } else {
2428
+ target.$on(event, fn);
2429
+ }
2430
+ }
2431
+
2432
+ function remove$1 (event, fn) {
2433
+ target.$off(event, fn);
2434
+ }
2435
+
2436
+ function updateComponentListeners (
2437
+ vm,
2438
+ listeners,
2439
+ oldListeners
2440
+ ) {
2441
+ target = vm;
2442
+ updateListeners(listeners, oldListeners || {}, add, remove$1, vm);
2443
+ target = undefined;
2444
+ }
2445
+
2446
+ function eventsMixin (Vue) {
2447
+ var hookRE = /^hook:/;
2448
+ Vue.prototype.$on = function (event, fn) {
2449
+ var this$1 = this;
2450
+
2451
+ var vm = this;
2452
+ if (Array.isArray(event)) {
2453
+ for (var i = 0, l = event.length; i < l; i++) {
2454
+ this$1.$on(event[i], fn);
2455
+ }
2456
+ } else {
2457
+ (vm._events[event] || (vm._events[event] = [])).push(fn);
2458
+ // optimize hook:event cost by using a boolean flag marked at registration
2459
+ // instead of a hash lookup
2460
+ if (hookRE.test(event)) {
2461
+ vm._hasHookEvent = true;
2462
+ }
2463
+ }
2464
+ return vm
2465
+ };
2466
+
2467
+ Vue.prototype.$once = function (event, fn) {
2468
+ var vm = this;
2469
+ function on () {
2470
+ vm.$off(event, on);
2471
+ fn.apply(vm, arguments);
2472
+ }
2473
+ on.fn = fn;
2474
+ vm.$on(event, on);
2475
+ return vm
2476
+ };
2477
+
2478
+ Vue.prototype.$off = function (event, fn) {
2479
+ var this$1 = this;
2480
+
2481
+ var vm = this;
2482
+ // all
2483
+ if (!arguments.length) {
2484
+ vm._events = Object.create(null);
2485
+ return vm
2486
+ }
2487
+ // array of events
2488
+ if (Array.isArray(event)) {
2489
+ for (var i = 0, l = event.length; i < l; i++) {
2490
+ this$1.$off(event[i], fn);
2491
+ }
2492
+ return vm
2493
+ }
2494
+ // specific event
2495
+ var cbs = vm._events[event];
2496
+ if (!cbs) {
2497
+ return vm
2498
+ }
2499
+ if (!fn) {
2500
+ vm._events[event] = null;
2501
+ return vm
2502
+ }
2503
+ if (fn) {
2504
+ // specific handler
2505
+ var cb;
2506
+ var i$1 = cbs.length;
2507
+ while (i$1--) {
2508
+ cb = cbs[i$1];
2509
+ if (cb === fn || cb.fn === fn) {
2510
+ cbs.splice(i$1, 1);
2511
+ break
2512
+ }
2513
+ }
2514
+ }
2515
+ return vm
2516
+ };
2517
+
2518
+ Vue.prototype.$emit = function (event) {
2519
+ var vm = this;
2520
+ {
2521
+ var lowerCaseEvent = event.toLowerCase();
2522
+ if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
2523
+ tip(
2524
+ "Event \"" + lowerCaseEvent + "\" is emitted in component " +
2525
+ (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
2526
+ "Note that HTML attributes are case-insensitive and you cannot use " +
2527
+ "v-on to listen to camelCase events when using in-DOM templates. " +
2528
+ "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
2529
+ );
2530
+ }
2531
+ }
2532
+ var cbs = vm._events[event];
2533
+ if (cbs) {
2534
+ cbs = cbs.length > 1 ? toArray(cbs) : cbs;
2535
+ var args = toArray(arguments, 1);
2536
+ for (var i = 0, l = cbs.length; i < l; i++) {
2537
+ try {
2538
+ cbs[i].apply(vm, args);
2539
+ } catch (e) {
2540
+ handleError(e, vm, ("event handler for \"" + event + "\""));
2541
+ }
2542
+ }
2543
+ }
2544
+ return vm
2545
+ };
2546
+ }
2547
+
2548
+ /* */
2549
+
2550
+
2551
+
2552
+ /**
2553
+ * Runtime helper for resolving raw children VNodes into a slot object.
2554
+ */
2555
+ function resolveSlots (
2556
+ children,
2557
+ context
2558
+ ) {
2559
+ var slots = {};
2560
+ if (!children) {
2561
+ return slots
2562
+ }
2563
+ for (var i = 0, l = children.length; i < l; i++) {
2564
+ var child = children[i];
2565
+ var data = child.data;
2566
+ // remove slot attribute if the node is resolved as a Vue slot node
2567
+ if (data && data.attrs && data.attrs.slot) {
2568
+ delete data.attrs.slot;
2569
+ }
2570
+ // named slots should only be respected if the vnode was rendered in the
2571
+ // same context.
2572
+ if ((child.context === context || child.fnContext === context) &&
2573
+ data && data.slot != null
2574
+ ) {
2575
+ var name = data.slot;
2576
+ var slot = (slots[name] || (slots[name] = []));
2577
+ if (child.tag === 'template') {
2578
+ slot.push.apply(slot, child.children || []);
2579
+ } else {
2580
+ slot.push(child);
2581
+ }
2582
+ } else {
2583
+ (slots.default || (slots.default = [])).push(child);
2584
+ }
2585
+ }
2586
+ // ignore slots that contains only whitespace
2587
+ for (var name$1 in slots) {
2588
+ if (slots[name$1].every(isWhitespace)) {
2589
+ delete slots[name$1];
2590
+ }
2591
+ }
2592
+ return slots
2593
+ }
2594
+
2595
+ function isWhitespace (node) {
2596
+ return (node.isComment && !node.asyncFactory) || node.text === ' '
2597
+ }
2598
+
2599
+ function resolveScopedSlots (
2600
+ fns, // see flow/vnode
2601
+ res
2602
+ ) {
2603
+ res = res || {};
2604
+ for (var i = 0; i < fns.length; i++) {
2605
+ if (Array.isArray(fns[i])) {
2606
+ resolveScopedSlots(fns[i], res);
2607
+ } else {
2608
+ res[fns[i].key] = fns[i].fn;
2609
+ }
2610
+ }
2611
+ return res
2612
+ }
2613
+
2614
+ /* */
2615
+
2616
+ var activeInstance = null;
2617
+ var isUpdatingChildComponent = false;
2618
+
2619
+ function initLifecycle (vm) {
2620
+ var options = vm.$options;
2621
+
2622
+ // locate first non-abstract parent
2623
+ var parent = options.parent;
2624
+ if (parent && !options.abstract) {
2625
+ while (parent.$options.abstract && parent.$parent) {
2626
+ parent = parent.$parent;
2627
+ }
2628
+ parent.$children.push(vm);
2629
+ }
2630
+
2631
+ vm.$parent = parent;
2632
+ vm.$root = parent ? parent.$root : vm;
2633
+
2634
+ vm.$children = [];
2635
+ vm.$refs = {};
2636
+
2637
+ vm._watcher = null;
2638
+ vm._inactive = null;
2639
+ vm._directInactive = false;
2640
+ vm._isMounted = false;
2641
+ vm._isDestroyed = false;
2642
+ vm._isBeingDestroyed = false;
2643
+ }
2644
+
2645
+ function lifecycleMixin (Vue) {
2646
+ Vue.prototype._update = function (vnode, hydrating) {
2647
+ var vm = this;
2648
+ if (vm._isMounted) {
2649
+ callHook(vm, 'beforeUpdate');
2650
+ }
2651
+ var prevEl = vm.$el;
2652
+ var prevVnode = vm._vnode;
2653
+ var prevActiveInstance = activeInstance;
2654
+ activeInstance = vm;
2655
+ vm._vnode = vnode;
2656
+ // Vue.prototype.__patch__ is injected in entry points
2657
+ // based on the rendering backend used.
2658
+ if (!prevVnode) {
2659
+ // initial render
2660
+ vm.$el = vm.__patch__(
2661
+ vm.$el, vnode, hydrating, false /* removeOnly */,
2662
+ vm.$options._parentElm,
2663
+ vm.$options._refElm
2664
+ );
2665
+ // no need for the ref nodes after initial patch
2666
+ // this prevents keeping a detached DOM tree in memory (#5851)
2667
+ vm.$options._parentElm = vm.$options._refElm = null;
2668
+ } else {
2669
+ // updates
2670
+ vm.$el = vm.__patch__(prevVnode, vnode);
2671
+ }
2672
+ activeInstance = prevActiveInstance;
2673
+ // update __vue__ reference
2674
+ if (prevEl) {
2675
+ prevEl.__vue__ = null;
2676
+ }
2677
+ if (vm.$el) {
2678
+ vm.$el.__vue__ = vm;
2679
+ }
2680
+ // if parent is an HOC, update its $el as well
2681
+ if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
2682
+ vm.$parent.$el = vm.$el;
2683
+ }
2684
+ // updated hook is called by the scheduler to ensure that children are
2685
+ // updated in a parent's updated hook.
2686
+ };
2687
+
2688
+ Vue.prototype.$forceUpdate = function () {
2689
+ var vm = this;
2690
+ if (vm._watcher) {
2691
+ vm._watcher.update();
2692
+ }
2693
+ };
2694
+
2695
+ Vue.prototype.$destroy = function () {
2696
+ var vm = this;
2697
+ if (vm._isBeingDestroyed) {
2698
+ return
2699
+ }
2700
+ callHook(vm, 'beforeDestroy');
2701
+ vm._isBeingDestroyed = true;
2702
+ // remove self from parent
2703
+ var parent = vm.$parent;
2704
+ if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
2705
+ remove(parent.$children, vm);
2706
+ }
2707
+ // teardown watchers
2708
+ if (vm._watcher) {
2709
+ vm._watcher.teardown();
2710
+ }
2711
+ var i = vm._watchers.length;
2712
+ while (i--) {
2713
+ vm._watchers[i].teardown();
2714
+ }
2715
+ // remove reference from data ob
2716
+ // frozen object may not have observer.
2717
+ if (vm._data.__ob__) {
2718
+ vm._data.__ob__.vmCount--;
2719
+ }
2720
+ // call the last hook...
2721
+ vm._isDestroyed = true;
2722
+ // invoke destroy hooks on current rendered tree
2723
+ vm.__patch__(vm._vnode, null);
2724
+ // fire destroyed hook
2725
+ callHook(vm, 'destroyed');
2726
+ // turn off all instance listeners.
2727
+ vm.$off();
2728
+ // remove __vue__ reference
2729
+ if (vm.$el) {
2730
+ vm.$el.__vue__ = null;
2731
+ }
2732
+ // release circular reference (#6759)
2733
+ if (vm.$vnode) {
2734
+ vm.$vnode.parent = null;
2735
+ }
2736
+ };
2737
+ }
2738
+
2739
+ function mountComponent (
2740
+ vm,
2741
+ el,
2742
+ hydrating
2743
+ ) {
2744
+ vm.$el = el;
2745
+ if (!vm.$options.render) {
2746
+ vm.$options.render = createEmptyVNode;
2747
+ {
2748
+ /* istanbul ignore if */
2749
+ if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
2750
+ vm.$options.el || el) {
2751
+ warn(
2752
+ 'You are using the runtime-only build of Vue where the template ' +
2753
+ 'compiler is not available. Either pre-compile the templates into ' +
2754
+ 'render functions, or use the compiler-included build.',
2755
+ vm
2756
+ );
2757
+ } else {
2758
+ warn(
2759
+ 'Failed to mount component: template or render function not defined.',
2760
+ vm
2761
+ );
2762
+ }
2763
+ }
2764
+ }
2765
+ callHook(vm, 'beforeMount');
2766
+
2767
+ var updateComponent;
2768
+ /* istanbul ignore if */
2769
+ if ("development" !== 'production' && config.performance && mark) {
2770
+ updateComponent = function () {
2771
+ var name = vm._name;
2772
+ var id = vm._uid;
2773
+ var startTag = "vue-perf-start:" + id;
2774
+ var endTag = "vue-perf-end:" + id;
2775
+
2776
+ mark(startTag);
2777
+ var vnode = vm._render();
2778
+ mark(endTag);
2779
+ measure(("vue " + name + " render"), startTag, endTag);
2780
+
2781
+ mark(startTag);
2782
+ vm._update(vnode, hydrating);
2783
+ mark(endTag);
2784
+ measure(("vue " + name + " patch"), startTag, endTag);
2785
+ };
2786
+ } else {
2787
+ updateComponent = function () {
2788
+ vm._update(vm._render(), hydrating);
2789
+ };
2790
+ }
2791
+
2792
+ // we set this to vm._watcher inside the watcher's constructor
2793
+ // since the watcher's initial patch may call $forceUpdate (e.g. inside child
2794
+ // component's mounted hook), which relies on vm._watcher being already defined
2795
+ new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);
2796
+ hydrating = false;
2797
+
2798
+ // manually mounted instance, call mounted on self
2799
+ // mounted is called for render-created child components in its inserted hook
2800
+ if (vm.$vnode == null) {
2801
+ vm._isMounted = true;
2802
+ callHook(vm, 'mounted');
2803
+ }
2804
+ return vm
2805
+ }
2806
+
2807
+ function updateChildComponent (
2808
+ vm,
2809
+ propsData,
2810
+ listeners,
2811
+ parentVnode,
2812
+ renderChildren
2813
+ ) {
2814
+ {
2815
+ isUpdatingChildComponent = true;
2816
+ }
2817
+
2818
+ // determine whether component has slot children
2819
+ // we need to do this before overwriting $options._renderChildren
2820
+ var hasChildren = !!(
2821
+ renderChildren || // has new static slots
2822
+ vm.$options._renderChildren || // has old static slots
2823
+ parentVnode.data.scopedSlots || // has new scoped slots
2824
+ vm.$scopedSlots !== emptyObject // has old scoped slots
2825
+ );
2826
+
2827
+ vm.$options._parentVnode = parentVnode;
2828
+ vm.$vnode = parentVnode; // update vm's placeholder node without re-render
2829
+
2830
+ if (vm._vnode) { // update child tree's parent
2831
+ vm._vnode.parent = parentVnode;
2832
+ }
2833
+ vm.$options._renderChildren = renderChildren;
2834
+
2835
+ // update $attrs and $listeners hash
2836
+ // these are also reactive so they may trigger child update if the child
2837
+ // used them during render
2838
+ vm.$attrs = parentVnode.data.attrs || emptyObject;
2839
+ vm.$listeners = listeners || emptyObject;
2840
+
2841
+ // update props
2842
+ if (propsData && vm.$options.props) {
2843
+ toggleObserving(false);
2844
+ var props = vm._props;
2845
+ var propKeys = vm.$options._propKeys || [];
2846
+ for (var i = 0; i < propKeys.length; i++) {
2847
+ var key = propKeys[i];
2848
+ var propOptions = vm.$options.props; // wtf flow?
2849
+ props[key] = validateProp(key, propOptions, propsData, vm);
2850
+ }
2851
+ toggleObserving(true);
2852
+ // keep a copy of raw propsData
2853
+ vm.$options.propsData = propsData;
2854
+ }
2855
+
2856
+ // update listeners
2857
+ listeners = listeners || emptyObject;
2858
+ var oldListeners = vm.$options._parentListeners;
2859
+ vm.$options._parentListeners = listeners;
2860
+ updateComponentListeners(vm, listeners, oldListeners);
2861
+
2862
+ // resolve slots + force update if has children
2863
+ if (hasChildren) {
2864
+ vm.$slots = resolveSlots(renderChildren, parentVnode.context);
2865
+ vm.$forceUpdate();
2866
+ }
2867
+
2868
+ {
2869
+ isUpdatingChildComponent = false;
2870
+ }
2871
+ }
2872
+
2873
+ function isInInactiveTree (vm) {
2874
+ while (vm && (vm = vm.$parent)) {
2875
+ if (vm._inactive) { return true }
2876
+ }
2877
+ return false
2878
+ }
2879
+
2880
+ function activateChildComponent (vm, direct) {
2881
+ if (direct) {
2882
+ vm._directInactive = false;
2883
+ if (isInInactiveTree(vm)) {
2884
+ return
2885
+ }
2886
+ } else if (vm._directInactive) {
2887
+ return
2888
+ }
2889
+ if (vm._inactive || vm._inactive === null) {
2890
+ vm._inactive = false;
2891
+ for (var i = 0; i < vm.$children.length; i++) {
2892
+ activateChildComponent(vm.$children[i]);
2893
+ }
2894
+ callHook(vm, 'activated');
2895
+ }
2896
+ }
2897
+
2898
+ function deactivateChildComponent (vm, direct) {
2899
+ if (direct) {
2900
+ vm._directInactive = true;
2901
+ if (isInInactiveTree(vm)) {
2902
+ return
2903
+ }
2904
+ }
2905
+ if (!vm._inactive) {
2906
+ vm._inactive = true;
2907
+ for (var i = 0; i < vm.$children.length; i++) {
2908
+ deactivateChildComponent(vm.$children[i]);
2909
+ }
2910
+ callHook(vm, 'deactivated');
2911
+ }
2912
+ }
2913
+
2914
+ function callHook (vm, hook) {
2915
+ // #7573 disable dep collection when invoking lifecycle hooks
2916
+ pushTarget();
2917
+ var handlers = vm.$options[hook];
2918
+ if (handlers) {
2919
+ for (var i = 0, j = handlers.length; i < j; i++) {
2920
+ try {
2921
+ handlers[i].call(vm);
2922
+ } catch (e) {
2923
+ handleError(e, vm, (hook + " hook"));
2924
+ }
2925
+ }
2926
+ }
2927
+ if (vm._hasHookEvent) {
2928
+ vm.$emit('hook:' + hook);
2929
+ }
2930
+ popTarget();
2931
+ }
2932
+
2933
+ /* */
2934
+
2935
+
2936
+ var MAX_UPDATE_COUNT = 100;
2937
+
2938
+ var queue = [];
2939
+ var activatedChildren = [];
2940
+ var has = {};
2941
+ var circular = {};
2942
+ var waiting = false;
2943
+ var flushing = false;
2944
+ var index = 0;
2945
+
2946
+ /**
2947
+ * Reset the scheduler's state.
2948
+ */
2949
+ function resetSchedulerState () {
2950
+ index = queue.length = activatedChildren.length = 0;
2951
+ has = {};
2952
+ {
2953
+ circular = {};
2954
+ }
2955
+ waiting = flushing = false;
2956
+ }
2957
+
2958
+ /**
2959
+ * Flush both queues and run the watchers.
2960
+ */
2961
+ function flushSchedulerQueue () {
2962
+ flushing = true;
2963
+ var watcher, id;
2964
+
2965
+ // Sort queue before flush.
2966
+ // This ensures that:
2967
+ // 1. Components are updated from parent to child. (because parent is always
2968
+ // created before the child)
2969
+ // 2. A component's user watchers are run before its render watcher (because
2970
+ // user watchers are created before the render watcher)
2971
+ // 3. If a component is destroyed during a parent component's watcher run,
2972
+ // its watchers can be skipped.
2973
+ queue.sort(function (a, b) { return a.id - b.id; });
2974
+
2975
+ // do not cache length because more watchers might be pushed
2976
+ // as we run existing watchers
2977
+ for (index = 0; index < queue.length; index++) {
2978
+ watcher = queue[index];
2979
+ id = watcher.id;
2980
+ has[id] = null;
2981
+ watcher.run();
2982
+ // in dev build, check and stop circular updates.
2983
+ if ("development" !== 'production' && has[id] != null) {
2984
+ circular[id] = (circular[id] || 0) + 1;
2985
+ if (circular[id] > MAX_UPDATE_COUNT) {
2986
+ warn(
2987
+ 'You may have an infinite update loop ' + (
2988
+ watcher.user
2989
+ ? ("in watcher with expression \"" + (watcher.expression) + "\"")
2990
+ : "in a component render function."
2991
+ ),
2992
+ watcher.vm
2993
+ );
2994
+ break
2995
+ }
2996
+ }
2997
+ }
2998
+
2999
+ // keep copies of post queues before resetting state
3000
+ var activatedQueue = activatedChildren.slice();
3001
+ var updatedQueue = queue.slice();
3002
+
3003
+ resetSchedulerState();
3004
+
3005
+ // call component updated and activated hooks
3006
+ callActivatedHooks(activatedQueue);
3007
+ callUpdatedHooks(updatedQueue);
3008
+
3009
+ // devtool hook
3010
+ /* istanbul ignore if */
3011
+ if (devtools && config.devtools) {
3012
+ devtools.emit('flush');
3013
+ }
3014
+ }
3015
+
3016
+ function callUpdatedHooks (queue) {
3017
+ var i = queue.length;
3018
+ while (i--) {
3019
+ var watcher = queue[i];
3020
+ var vm = watcher.vm;
3021
+ if (vm._watcher === watcher && vm._isMounted) {
3022
+ callHook(vm, 'updated');
3023
+ }
3024
+ }
3025
+ }
3026
+
3027
+ /**
3028
+ * Queue a kept-alive component that was activated during patch.
3029
+ * The queue will be processed after the entire tree has been patched.
3030
+ */
3031
+ function queueActivatedComponent (vm) {
3032
+ // setting _inactive to false here so that a render function can
3033
+ // rely on checking whether it's in an inactive tree (e.g. router-view)
3034
+ vm._inactive = false;
3035
+ activatedChildren.push(vm);
3036
+ }
3037
+
3038
+ function callActivatedHooks (queue) {
3039
+ for (var i = 0; i < queue.length; i++) {
3040
+ queue[i]._inactive = true;
3041
+ activateChildComponent(queue[i], true /* true */);
3042
+ }
3043
+ }
3044
+
3045
+ /**
3046
+ * Push a watcher into the watcher queue.
3047
+ * Jobs with duplicate IDs will be skipped unless it's
3048
+ * pushed when the queue is being flushed.
3049
+ */
3050
+ function queueWatcher (watcher) {
3051
+ var id = watcher.id;
3052
+ if (has[id] == null) {
3053
+ has[id] = true;
3054
+ if (!flushing) {
3055
+ queue.push(watcher);
3056
+ } else {
3057
+ // if already flushing, splice the watcher based on its id
3058
+ // if already past its id, it will be run next immediately.
3059
+ var i = queue.length - 1;
3060
+ while (i > index && queue[i].id > watcher.id) {
3061
+ i--;
3062
+ }
3063
+ queue.splice(i + 1, 0, watcher);
3064
+ }
3065
+ // queue the flush
3066
+ if (!waiting) {
3067
+ waiting = true;
3068
+ nextTick(flushSchedulerQueue);
3069
+ }
3070
+ }
3071
+ }
3072
+
3073
+ /* */
3074
+
3075
+ var uid$1 = 0;
3076
+
3077
+ /**
3078
+ * A watcher parses an expression, collects dependencies,
3079
+ * and fires callback when the expression value changes.
3080
+ * This is used for both the $watch() api and directives.
3081
+ */
3082
+ var Watcher = function Watcher (
3083
+ vm,
3084
+ expOrFn,
3085
+ cb,
3086
+ options,
3087
+ isRenderWatcher
3088
+ ) {
3089
+ this.vm = vm;
3090
+ if (isRenderWatcher) {
3091
+ vm._watcher = this;
3092
+ }
3093
+ vm._watchers.push(this);
3094
+ // options
3095
+ if (options) {
3096
+ this.deep = !!options.deep;
3097
+ this.user = !!options.user;
3098
+ this.lazy = !!options.lazy;
3099
+ this.sync = !!options.sync;
3100
+ } else {
3101
+ this.deep = this.user = this.lazy = this.sync = false;
3102
+ }
3103
+ this.cb = cb;
3104
+ this.id = ++uid$1; // uid for batching
3105
+ this.active = true;
3106
+ this.dirty = this.lazy; // for lazy watchers
3107
+ this.deps = [];
3108
+ this.newDeps = [];
3109
+ this.depIds = new _Set();
3110
+ this.newDepIds = new _Set();
3111
+ this.expression = expOrFn.toString();
3112
+ // parse expression for getter
3113
+ if (typeof expOrFn === 'function') {
3114
+ this.getter = expOrFn;
3115
+ } else {
3116
+ this.getter = parsePath(expOrFn);
3117
+ if (!this.getter) {
3118
+ this.getter = function () {};
3119
+ "development" !== 'production' && warn(
3120
+ "Failed watching path: \"" + expOrFn + "\" " +
3121
+ 'Watcher only accepts simple dot-delimited paths. ' +
3122
+ 'For full control, use a function instead.',
3123
+ vm
3124
+ );
3125
+ }
3126
+ }
3127
+ this.value = this.lazy
3128
+ ? undefined
3129
+ : this.get();
3130
+ };
3131
+
3132
+ /**
3133
+ * Evaluate the getter, and re-collect dependencies.
3134
+ */
3135
+ Watcher.prototype.get = function get () {
3136
+ pushTarget(this);
3137
+ var value;
3138
+ var vm = this.vm;
3139
+ try {
3140
+ value = this.getter.call(vm, vm);
3141
+ } catch (e) {
3142
+ if (this.user) {
3143
+ handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
3144
+ } else {
3145
+ throw e
3146
+ }
3147
+ } finally {
3148
+ // "touch" every property so they are all tracked as
3149
+ // dependencies for deep watching
3150
+ if (this.deep) {
3151
+ traverse(value);
3152
+ }
3153
+ popTarget();
3154
+ this.cleanupDeps();
3155
+ }
3156
+ return value
3157
+ };
3158
+
3159
+ /**
3160
+ * Add a dependency to this directive.
3161
+ */
3162
+ Watcher.prototype.addDep = function addDep (dep) {
3163
+ var id = dep.id;
3164
+ if (!this.newDepIds.has(id)) {
3165
+ this.newDepIds.add(id);
3166
+ this.newDeps.push(dep);
3167
+ if (!this.depIds.has(id)) {
3168
+ dep.addSub(this);
3169
+ }
3170
+ }
3171
+ };
3172
+
3173
+ /**
3174
+ * Clean up for dependency collection.
3175
+ */
3176
+ Watcher.prototype.cleanupDeps = function cleanupDeps () {
3177
+ var this$1 = this;
3178
+
3179
+ var i = this.deps.length;
3180
+ while (i--) {
3181
+ var dep = this$1.deps[i];
3182
+ if (!this$1.newDepIds.has(dep.id)) {
3183
+ dep.removeSub(this$1);
3184
+ }
3185
+ }
3186
+ var tmp = this.depIds;
3187
+ this.depIds = this.newDepIds;
3188
+ this.newDepIds = tmp;
3189
+ this.newDepIds.clear();
3190
+ tmp = this.deps;
3191
+ this.deps = this.newDeps;
3192
+ this.newDeps = tmp;
3193
+ this.newDeps.length = 0;
3194
+ };
3195
+
3196
+ /**
3197
+ * Subscriber interface.
3198
+ * Will be called when a dependency changes.
3199
+ */
3200
+ Watcher.prototype.update = function update () {
3201
+ /* istanbul ignore else */
3202
+ if (this.lazy) {
3203
+ this.dirty = true;
3204
+ } else if (this.sync) {
3205
+ this.run();
3206
+ } else {
3207
+ queueWatcher(this);
3208
+ }
3209
+ };
3210
+
3211
+ /**
3212
+ * Scheduler job interface.
3213
+ * Will be called by the scheduler.
3214
+ */
3215
+ Watcher.prototype.run = function run () {
3216
+ if (this.active) {
3217
+ var value = this.get();
3218
+ if (
3219
+ value !== this.value ||
3220
+ // Deep watchers and watchers on Object/Arrays should fire even
3221
+ // when the value is the same, because the value may
3222
+ // have mutated.
3223
+ isObject(value) ||
3224
+ this.deep
3225
+ ) {
3226
+ // set new value
3227
+ var oldValue = this.value;
3228
+ this.value = value;
3229
+ if (this.user) {
3230
+ try {
3231
+ this.cb.call(this.vm, value, oldValue);
3232
+ } catch (e) {
3233
+ handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
3234
+ }
3235
+ } else {
3236
+ this.cb.call(this.vm, value, oldValue);
3237
+ }
3238
+ }
3239
+ }
3240
+ };
3241
+
3242
+ /**
3243
+ * Evaluate the value of the watcher.
3244
+ * This only gets called for lazy watchers.
3245
+ */
3246
+ Watcher.prototype.evaluate = function evaluate () {
3247
+ this.value = this.get();
3248
+ this.dirty = false;
3249
+ };
3250
+
3251
+ /**
3252
+ * Depend on all deps collected by this watcher.
3253
+ */
3254
+ Watcher.prototype.depend = function depend () {
3255
+ var this$1 = this;
3256
+
3257
+ var i = this.deps.length;
3258
+ while (i--) {
3259
+ this$1.deps[i].depend();
3260
+ }
3261
+ };
3262
+
3263
+ /**
3264
+ * Remove self from all dependencies' subscriber list.
3265
+ */
3266
+ Watcher.prototype.teardown = function teardown () {
3267
+ var this$1 = this;
3268
+
3269
+ if (this.active) {
3270
+ // remove self from vm's watcher list
3271
+ // this is a somewhat expensive operation so we skip it
3272
+ // if the vm is being destroyed.
3273
+ if (!this.vm._isBeingDestroyed) {
3274
+ remove(this.vm._watchers, this);
3275
+ }
3276
+ var i = this.deps.length;
3277
+ while (i--) {
3278
+ this$1.deps[i].removeSub(this$1);
3279
+ }
3280
+ this.active = false;
3281
+ }
3282
+ };
3283
+
3284
+ /* */
3285
+
3286
+ var sharedPropertyDefinition = {
3287
+ enumerable: true,
3288
+ configurable: true,
3289
+ get: noop,
3290
+ set: noop
3291
+ };
3292
+
3293
+ function proxy (target, sourceKey, key) {
3294
+ sharedPropertyDefinition.get = function proxyGetter () {
3295
+ return this[sourceKey][key]
3296
+ };
3297
+ sharedPropertyDefinition.set = function proxySetter (val) {
3298
+ this[sourceKey][key] = val;
3299
+ };
3300
+ Object.defineProperty(target, key, sharedPropertyDefinition);
3301
+ }
3302
+
3303
+ function initState (vm) {
3304
+ vm._watchers = [];
3305
+ var opts = vm.$options;
3306
+ if (opts.props) { initProps(vm, opts.props); }
3307
+ if (opts.methods) { initMethods(vm, opts.methods); }
3308
+ if (opts.data) {
3309
+ initData(vm);
3310
+ } else {
3311
+ observe(vm._data = {}, true /* asRootData */);
3312
+ }
3313
+ if (opts.computed) { initComputed(vm, opts.computed); }
3314
+ if (opts.watch && opts.watch !== nativeWatch) {
3315
+ initWatch(vm, opts.watch);
3316
+ }
3317
+ }
3318
+
3319
+ function initProps (vm, propsOptions) {
3320
+ var propsData = vm.$options.propsData || {};
3321
+ var props = vm._props = {};
3322
+ // cache prop keys so that future props updates can iterate using Array
3323
+ // instead of dynamic object key enumeration.
3324
+ var keys = vm.$options._propKeys = [];
3325
+ var isRoot = !vm.$parent;
3326
+ // root instance props should be converted
3327
+ if (!isRoot) {
3328
+ toggleObserving(false);
3329
+ }
3330
+ var loop = function ( key ) {
3331
+ keys.push(key);
3332
+ var value = validateProp(key, propsOptions, propsData, vm);
3333
+ /* istanbul ignore else */
3334
+ {
3335
+ var hyphenatedKey = hyphenate(key);
3336
+ if (isReservedAttribute(hyphenatedKey) ||
3337
+ config.isReservedAttr(hyphenatedKey)) {
3338
+ warn(
3339
+ ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
3340
+ vm
3341
+ );
3342
+ }
3343
+ defineReactive(props, key, value, function () {
3344
+ if (vm.$parent && !isUpdatingChildComponent) {
3345
+ warn(
3346
+ "Avoid mutating a prop directly since the value will be " +
3347
+ "overwritten whenever the parent component re-renders. " +
3348
+ "Instead, use a data or computed property based on the prop's " +
3349
+ "value. Prop being mutated: \"" + key + "\"",
3350
+ vm
3351
+ );
3352
+ }
3353
+ });
3354
+ }
3355
+ // static props are already proxied on the component's prototype
3356
+ // during Vue.extend(). We only need to proxy props defined at
3357
+ // instantiation here.
3358
+ if (!(key in vm)) {
3359
+ proxy(vm, "_props", key);
3360
+ }
3361
+ };
3362
+
3363
+ for (var key in propsOptions) loop( key );
3364
+ toggleObserving(true);
3365
+ }
3366
+
3367
+ function initData (vm) {
3368
+ var data = vm.$options.data;
3369
+ data = vm._data = typeof data === 'function'
3370
+ ? getData(data, vm)
3371
+ : data || {};
3372
+ if (!isPlainObject(data)) {
3373
+ data = {};
3374
+ "development" !== 'production' && warn(
3375
+ 'data functions should return an object:\n' +
3376
+ 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
3377
+ vm
3378
+ );
3379
+ }
3380
+ // proxy data on instance
3381
+ var keys = Object.keys(data);
3382
+ var props = vm.$options.props;
3383
+ var methods = vm.$options.methods;
3384
+ var i = keys.length;
3385
+ while (i--) {
3386
+ var key = keys[i];
3387
+ {
3388
+ if (methods && hasOwn(methods, key)) {
3389
+ warn(
3390
+ ("Method \"" + key + "\" has already been defined as a data property."),
3391
+ vm
3392
+ );
3393
+ }
3394
+ }
3395
+ if (props && hasOwn(props, key)) {
3396
+ "development" !== 'production' && warn(
3397
+ "The data property \"" + key + "\" is already declared as a prop. " +
3398
+ "Use prop default value instead.",
3399
+ vm
3400
+ );
3401
+ } else if (!isReserved(key)) {
3402
+ proxy(vm, "_data", key);
3403
+ }
3404
+ }
3405
+ // observe data
3406
+ observe(data, true /* asRootData */);
3407
+ }
3408
+
3409
+ function getData (data, vm) {
3410
+ // #7573 disable dep collection when invoking data getters
3411
+ pushTarget();
3412
+ try {
3413
+ return data.call(vm, vm)
3414
+ } catch (e) {
3415
+ handleError(e, vm, "data()");
3416
+ return {}
3417
+ } finally {
3418
+ popTarget();
3419
+ }
3420
+ }
3421
+
3422
+ var computedWatcherOptions = { lazy: true };
3423
+
3424
+ function initComputed (vm, computed) {
3425
+ // $flow-disable-line
3426
+ var watchers = vm._computedWatchers = Object.create(null);
3427
+ // computed properties are just getters during SSR
3428
+ var isSSR = isServerRendering();
3429
+
3430
+ for (var key in computed) {
3431
+ var userDef = computed[key];
3432
+ var getter = typeof userDef === 'function' ? userDef : userDef.get;
3433
+ if ("development" !== 'production' && getter == null) {
3434
+ warn(
3435
+ ("Getter is missing for computed property \"" + key + "\"."),
3436
+ vm
3437
+ );
3438
+ }
3439
+
3440
+ if (!isSSR) {
3441
+ // create internal watcher for the computed property.
3442
+ watchers[key] = new Watcher(
3443
+ vm,
3444
+ getter || noop,
3445
+ noop,
3446
+ computedWatcherOptions
3447
+ );
3448
+ }
3449
+
3450
+ // component-defined computed properties are already defined on the
3451
+ // component prototype. We only need to define computed properties defined
3452
+ // at instantiation here.
3453
+ if (!(key in vm)) {
3454
+ defineComputed(vm, key, userDef);
3455
+ } else {
3456
+ if (key in vm.$data) {
3457
+ warn(("The computed property \"" + key + "\" is already defined in data."), vm);
3458
+ } else if (vm.$options.props && key in vm.$options.props) {
3459
+ warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
3460
+ }
3461
+ }
3462
+ }
3463
+ }
3464
+
3465
+ function defineComputed (
3466
+ target,
3467
+ key,
3468
+ userDef
3469
+ ) {
3470
+ var shouldCache = !isServerRendering();
3471
+ if (typeof userDef === 'function') {
3472
+ sharedPropertyDefinition.get = shouldCache
3473
+ ? createComputedGetter(key)
3474
+ : userDef;
3475
+ sharedPropertyDefinition.set = noop;
3476
+ } else {
3477
+ sharedPropertyDefinition.get = userDef.get
3478
+ ? shouldCache && userDef.cache !== false
3479
+ ? createComputedGetter(key)
3480
+ : userDef.get
3481
+ : noop;
3482
+ sharedPropertyDefinition.set = userDef.set
3483
+ ? userDef.set
3484
+ : noop;
3485
+ }
3486
+ if ("development" !== 'production' &&
3487
+ sharedPropertyDefinition.set === noop) {
3488
+ sharedPropertyDefinition.set = function () {
3489
+ warn(
3490
+ ("Computed property \"" + key + "\" was assigned to but it has no setter."),
3491
+ this
3492
+ );
3493
+ };
3494
+ }
3495
+ Object.defineProperty(target, key, sharedPropertyDefinition);
3496
+ }
3497
+
3498
+ function createComputedGetter (key) {
3499
+ return function computedGetter () {
3500
+ var watcher = this._computedWatchers && this._computedWatchers[key];
3501
+ if (watcher) {
3502
+ if (watcher.dirty) {
3503
+ watcher.evaluate();
3504
+ }
3505
+ if (Dep.target) {
3506
+ watcher.depend();
3507
+ }
3508
+ return watcher.value
3509
+ }
3510
+ }
3511
+ }
3512
+
3513
+ function initMethods (vm, methods) {
3514
+ var props = vm.$options.props;
3515
+ for (var key in methods) {
3516
+ {
3517
+ if (methods[key] == null) {
3518
+ warn(
3519
+ "Method \"" + key + "\" has an undefined value in the component definition. " +
3520
+ "Did you reference the function correctly?",
3521
+ vm
3522
+ );
3523
+ }
3524
+ if (props && hasOwn(props, key)) {
3525
+ warn(
3526
+ ("Method \"" + key + "\" has already been defined as a prop."),
3527
+ vm
3528
+ );
3529
+ }
3530
+ if ((key in vm) && isReserved(key)) {
3531
+ warn(
3532
+ "Method \"" + key + "\" conflicts with an existing Vue instance method. " +
3533
+ "Avoid defining component methods that start with _ or $."
3534
+ );
3535
+ }
3536
+ }
3537
+ vm[key] = methods[key] == null ? noop : bind(methods[key], vm);
3538
+ }
3539
+ }
3540
+
3541
+ function initWatch (vm, watch) {
3542
+ for (var key in watch) {
3543
+ var handler = watch[key];
3544
+ if (Array.isArray(handler)) {
3545
+ for (var i = 0; i < handler.length; i++) {
3546
+ createWatcher(vm, key, handler[i]);
3547
+ }
3548
+ } else {
3549
+ createWatcher(vm, key, handler);
3550
+ }
3551
+ }
3552
+ }
3553
+
3554
+ function createWatcher (
3555
+ vm,
3556
+ expOrFn,
3557
+ handler,
3558
+ options
3559
+ ) {
3560
+ if (isPlainObject(handler)) {
3561
+ options = handler;
3562
+ handler = handler.handler;
3563
+ }
3564
+ if (typeof handler === 'string') {
3565
+ handler = vm[handler];
3566
+ }
3567
+ return vm.$watch(expOrFn, handler, options)
3568
+ }
3569
+
3570
+ function stateMixin (Vue) {
3571
+ // flow somehow has problems with directly declared definition object
3572
+ // when using Object.defineProperty, so we have to procedurally build up
3573
+ // the object here.
3574
+ var dataDef = {};
3575
+ dataDef.get = function () { return this._data };
3576
+ var propsDef = {};
3577
+ propsDef.get = function () { return this._props };
3578
+ {
3579
+ dataDef.set = function (newData) {
3580
+ warn(
3581
+ 'Avoid replacing instance root $data. ' +
3582
+ 'Use nested data properties instead.',
3583
+ this
3584
+ );
3585
+ };
3586
+ propsDef.set = function () {
3587
+ warn("$props is readonly.", this);
3588
+ };
3589
+ }
3590
+ Object.defineProperty(Vue.prototype, '$data', dataDef);
3591
+ Object.defineProperty(Vue.prototype, '$props', propsDef);
3592
+
3593
+ Vue.prototype.$set = set;
3594
+ Vue.prototype.$delete = del;
3595
+
3596
+ Vue.prototype.$watch = function (
3597
+ expOrFn,
3598
+ cb,
3599
+ options
3600
+ ) {
3601
+ var vm = this;
3602
+ if (isPlainObject(cb)) {
3603
+ return createWatcher(vm, expOrFn, cb, options)
3604
+ }
3605
+ options = options || {};
3606
+ options.user = true;
3607
+ var watcher = new Watcher(vm, expOrFn, cb, options);
3608
+ if (options.immediate) {
3609
+ cb.call(vm, watcher.value);
3610
+ }
3611
+ return function unwatchFn () {
3612
+ watcher.teardown();
3613
+ }
3614
+ };
3615
+ }
3616
+
3617
+ /* */
3618
+
3619
+ function initProvide (vm) {
3620
+ var provide = vm.$options.provide;
3621
+ if (provide) {
3622
+ vm._provided = typeof provide === 'function'
3623
+ ? provide.call(vm)
3624
+ : provide;
3625
+ }
3626
+ }
3627
+
3628
+ function initInjections (vm) {
3629
+ var result = resolveInject(vm.$options.inject, vm);
3630
+ if (result) {
3631
+ toggleObserving(false);
3632
+ Object.keys(result).forEach(function (key) {
3633
+ /* istanbul ignore else */
3634
+ {
3635
+ defineReactive(vm, key, result[key], function () {
3636
+ warn(
3637
+ "Avoid mutating an injected value directly since the changes will be " +
3638
+ "overwritten whenever the provided component re-renders. " +
3639
+ "injection being mutated: \"" + key + "\"",
3640
+ vm
3641
+ );
3642
+ });
3643
+ }
3644
+ });
3645
+ toggleObserving(true);
3646
+ }
3647
+ }
3648
+
3649
+ function resolveInject (inject, vm) {
3650
+ if (inject) {
3651
+ // inject is :any because flow is not smart enough to figure out cached
3652
+ var result = Object.create(null);
3653
+ var keys = hasSymbol
3654
+ ? Reflect.ownKeys(inject).filter(function (key) {
3655
+ /* istanbul ignore next */
3656
+ return Object.getOwnPropertyDescriptor(inject, key).enumerable
3657
+ })
3658
+ : Object.keys(inject);
3659
+
3660
+ for (var i = 0; i < keys.length; i++) {
3661
+ var key = keys[i];
3662
+ var provideKey = inject[key].from;
3663
+ var source = vm;
3664
+ while (source) {
3665
+ if (source._provided && hasOwn(source._provided, provideKey)) {
3666
+ result[key] = source._provided[provideKey];
3667
+ break
3668
+ }
3669
+ source = source.$parent;
3670
+ }
3671
+ if (!source) {
3672
+ if ('default' in inject[key]) {
3673
+ var provideDefault = inject[key].default;
3674
+ result[key] = typeof provideDefault === 'function'
3675
+ ? provideDefault.call(vm)
3676
+ : provideDefault;
3677
+ } else {
3678
+ warn(("Injection \"" + key + "\" not found"), vm);
3679
+ }
3680
+ }
3681
+ }
3682
+ return result
3683
+ }
3684
+ }
3685
+
3686
+ /* */
3687
+
3688
+ /**
3689
+ * Runtime helper for rendering v-for lists.
3690
+ */
3691
+ function renderList (
3692
+ val,
3693
+ render
3694
+ ) {
3695
+ var ret, i, l, keys, key;
3696
+ if (Array.isArray(val) || typeof val === 'string') {
3697
+ ret = new Array(val.length);
3698
+ for (i = 0, l = val.length; i < l; i++) {
3699
+ ret[i] = render(val[i], i);
3700
+ }
3701
+ } else if (typeof val === 'number') {
3702
+ ret = new Array(val);
3703
+ for (i = 0; i < val; i++) {
3704
+ ret[i] = render(i + 1, i);
3705
+ }
3706
+ } else if (isObject(val)) {
3707
+ keys = Object.keys(val);
3708
+ ret = new Array(keys.length);
3709
+ for (i = 0, l = keys.length; i < l; i++) {
3710
+ key = keys[i];
3711
+ ret[i] = render(val[key], key, i);
3712
+ }
3713
+ }
3714
+ if (isDef(ret)) {
3715
+ (ret)._isVList = true;
3716
+ }
3717
+ return ret
3718
+ }
3719
+
3720
+ /* */
3721
+
3722
+ /**
3723
+ * Runtime helper for rendering <slot>
3724
+ */
3725
+ function renderSlot (
3726
+ name,
3727
+ fallback,
3728
+ props,
3729
+ bindObject
3730
+ ) {
3731
+ var scopedSlotFn = this.$scopedSlots[name];
3732
+ var nodes;
3733
+ if (scopedSlotFn) { // scoped slot
3734
+ props = props || {};
3735
+ if (bindObject) {
3736
+ if ("development" !== 'production' && !isObject(bindObject)) {
3737
+ warn(
3738
+ 'slot v-bind without argument expects an Object',
3739
+ this
3740
+ );
3741
+ }
3742
+ props = extend(extend({}, bindObject), props);
3743
+ }
3744
+ nodes = scopedSlotFn(props) || fallback;
3745
+ } else {
3746
+ var slotNodes = this.$slots[name];
3747
+ // warn duplicate slot usage
3748
+ if (slotNodes) {
3749
+ if ("development" !== 'production' && slotNodes._rendered) {
3750
+ warn(
3751
+ "Duplicate presence of slot \"" + name + "\" found in the same render tree " +
3752
+ "- this will likely cause render errors.",
3753
+ this
3754
+ );
3755
+ }
3756
+ slotNodes._rendered = true;
3757
+ }
3758
+ nodes = slotNodes || fallback;
3759
+ }
3760
+
3761
+ var target = props && props.slot;
3762
+ if (target) {
3763
+ return this.$createElement('template', { slot: target }, nodes)
3764
+ } else {
3765
+ return nodes
3766
+ }
3767
+ }
3768
+
3769
+ /* */
3770
+
3771
+ /**
3772
+ * Runtime helper for resolving filters
3773
+ */
3774
+ function resolveFilter (id) {
3775
+ return resolveAsset(this.$options, 'filters', id, true) || identity
3776
+ }
3777
+
3778
+ /* */
3779
+
3780
+ function isKeyNotMatch (expect, actual) {
3781
+ if (Array.isArray(expect)) {
3782
+ return expect.indexOf(actual) === -1
3783
+ } else {
3784
+ return expect !== actual
3785
+ }
3786
+ }
3787
+
3788
+ /**
3789
+ * Runtime helper for checking keyCodes from config.
3790
+ * exposed as Vue.prototype._k
3791
+ * passing in eventKeyName as last argument separately for backwards compat
3792
+ */
3793
+ function checkKeyCodes (
3794
+ eventKeyCode,
3795
+ key,
3796
+ builtInKeyCode,
3797
+ eventKeyName,
3798
+ builtInKeyName
3799
+ ) {
3800
+ var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
3801
+ if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
3802
+ return isKeyNotMatch(builtInKeyName, eventKeyName)
3803
+ } else if (mappedKeyCode) {
3804
+ return isKeyNotMatch(mappedKeyCode, eventKeyCode)
3805
+ } else if (eventKeyName) {
3806
+ return hyphenate(eventKeyName) !== key
3807
+ }
3808
+ }
3809
+
3810
+ /* */
3811
+
3812
+ /**
3813
+ * Runtime helper for merging v-bind="object" into a VNode's data.
3814
+ */
3815
+ function bindObjectProps (
3816
+ data,
3817
+ tag,
3818
+ value,
3819
+ asProp,
3820
+ isSync
3821
+ ) {
3822
+ if (value) {
3823
+ if (!isObject(value)) {
3824
+ "development" !== 'production' && warn(
3825
+ 'v-bind without argument expects an Object or Array value',
3826
+ this
3827
+ );
3828
+ } else {
3829
+ if (Array.isArray(value)) {
3830
+ value = toObject(value);
3831
+ }
3832
+ var hash;
3833
+ var loop = function ( key ) {
3834
+ if (
3835
+ key === 'class' ||
3836
+ key === 'style' ||
3837
+ isReservedAttribute(key)
3838
+ ) {
3839
+ hash = data;
3840
+ } else {
3841
+ var type = data.attrs && data.attrs.type;
3842
+ hash = asProp || config.mustUseProp(tag, type, key)
3843
+ ? data.domProps || (data.domProps = {})
3844
+ : data.attrs || (data.attrs = {});
3845
+ }
3846
+ if (!(key in hash)) {
3847
+ hash[key] = value[key];
3848
+
3849
+ if (isSync) {
3850
+ var on = data.on || (data.on = {});
3851
+ on[("update:" + key)] = function ($event) {
3852
+ value[key] = $event;
3853
+ };
3854
+ }
3855
+ }
3856
+ };
3857
+
3858
+ for (var key in value) loop( key );
3859
+ }
3860
+ }
3861
+ return data
3862
+ }
3863
+
3864
+ /* */
3865
+
3866
+ /**
3867
+ * Runtime helper for rendering static trees.
3868
+ */
3869
+ function renderStatic (
3870
+ index,
3871
+ isInFor
3872
+ ) {
3873
+ var cached = this._staticTrees || (this._staticTrees = []);
3874
+ var tree = cached[index];
3875
+ // if has already-rendered static tree and not inside v-for,
3876
+ // we can reuse the same tree.
3877
+ if (tree && !isInFor) {
3878
+ return tree
3879
+ }
3880
+ // otherwise, render a fresh tree.
3881
+ tree = cached[index] = this.$options.staticRenderFns[index].call(
3882
+ this._renderProxy,
3883
+ null,
3884
+ this // for render fns generated for functional component templates
3885
+ );
3886
+ markStatic(tree, ("__static__" + index), false);
3887
+ return tree
3888
+ }
3889
+
3890
+ /**
3891
+ * Runtime helper for v-once.
3892
+ * Effectively it means marking the node as static with a unique key.
3893
+ */
3894
+ function markOnce (
3895
+ tree,
3896
+ index,
3897
+ key
3898
+ ) {
3899
+ markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
3900
+ return tree
3901
+ }
3902
+
3903
+ function markStatic (
3904
+ tree,
3905
+ key,
3906
+ isOnce
3907
+ ) {
3908
+ if (Array.isArray(tree)) {
3909
+ for (var i = 0; i < tree.length; i++) {
3910
+ if (tree[i] && typeof tree[i] !== 'string') {
3911
+ markStaticNode(tree[i], (key + "_" + i), isOnce);
3912
+ }
3913
+ }
3914
+ } else {
3915
+ markStaticNode(tree, key, isOnce);
3916
+ }
3917
+ }
3918
+
3919
+ function markStaticNode (node, key, isOnce) {
3920
+ node.isStatic = true;
3921
+ node.key = key;
3922
+ node.isOnce = isOnce;
3923
+ }
3924
+
3925
+ /* */
3926
+
3927
+ function bindObjectListeners (data, value) {
3928
+ if (value) {
3929
+ if (!isPlainObject(value)) {
3930
+ "development" !== 'production' && warn(
3931
+ 'v-on without argument expects an Object value',
3932
+ this
3933
+ );
3934
+ } else {
3935
+ var on = data.on = data.on ? extend({}, data.on) : {};
3936
+ for (var key in value) {
3937
+ var existing = on[key];
3938
+ var ours = value[key];
3939
+ on[key] = existing ? [].concat(existing, ours) : ours;
3940
+ }
3941
+ }
3942
+ }
3943
+ return data
3944
+ }
3945
+
3946
+ /* */
3947
+
3948
+ function installRenderHelpers (target) {
3949
+ target._o = markOnce;
3950
+ target._n = toNumber;
3951
+ target._s = toString;
3952
+ target._l = renderList;
3953
+ target._t = renderSlot;
3954
+ target._q = looseEqual;
3955
+ target._i = looseIndexOf;
3956
+ target._m = renderStatic;
3957
+ target._f = resolveFilter;
3958
+ target._k = checkKeyCodes;
3959
+ target._b = bindObjectProps;
3960
+ target._v = createTextVNode;
3961
+ target._e = createEmptyVNode;
3962
+ target._u = resolveScopedSlots;
3963
+ target._g = bindObjectListeners;
3964
+ }
3965
+
3966
+ /* */
3967
+
3968
+ function FunctionalRenderContext (
3969
+ data,
3970
+ props,
3971
+ children,
3972
+ parent,
3973
+ Ctor
3974
+ ) {
3975
+ var options = Ctor.options;
3976
+ // ensure the createElement function in functional components
3977
+ // gets a unique context - this is necessary for correct named slot check
3978
+ var contextVm;
3979
+ if (hasOwn(parent, '_uid')) {
3980
+ contextVm = Object.create(parent);
3981
+ // $flow-disable-line
3982
+ contextVm._original = parent;
3983
+ } else {
3984
+ // the context vm passed in is a functional context as well.
3985
+ // in this case we want to make sure we are able to get a hold to the
3986
+ // real context instance.
3987
+ contextVm = parent;
3988
+ // $flow-disable-line
3989
+ parent = parent._original;
3990
+ }
3991
+ var isCompiled = isTrue(options._compiled);
3992
+ var needNormalization = !isCompiled;
3993
+
3994
+ this.data = data;
3995
+ this.props = props;
3996
+ this.children = children;
3997
+ this.parent = parent;
3998
+ this.listeners = data.on || emptyObject;
3999
+ this.injections = resolveInject(options.inject, parent);
4000
+ this.slots = function () { return resolveSlots(children, parent); };
4001
+
4002
+ // support for compiled functional template
4003
+ if (isCompiled) {
4004
+ // exposing $options for renderStatic()
4005
+ this.$options = options;
4006
+ // pre-resolve slots for renderSlot()
4007
+ this.$slots = this.slots();
4008
+ this.$scopedSlots = data.scopedSlots || emptyObject;
4009
+ }
4010
+
4011
+ if (options._scopeId) {
4012
+ this._c = function (a, b, c, d) {
4013
+ var vnode = createElement(contextVm, a, b, c, d, needNormalization);
4014
+ if (vnode && !Array.isArray(vnode)) {
4015
+ vnode.fnScopeId = options._scopeId;
4016
+ vnode.fnContext = parent;
4017
+ }
4018
+ return vnode
4019
+ };
4020
+ } else {
4021
+ this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
4022
+ }
4023
+ }
4024
+
4025
+ installRenderHelpers(FunctionalRenderContext.prototype);
4026
+
4027
+ function createFunctionalComponent (
4028
+ Ctor,
4029
+ propsData,
4030
+ data,
4031
+ contextVm,
4032
+ children
4033
+ ) {
4034
+ var options = Ctor.options;
4035
+ var props = {};
4036
+ var propOptions = options.props;
4037
+ if (isDef(propOptions)) {
4038
+ for (var key in propOptions) {
4039
+ props[key] = validateProp(key, propOptions, propsData || emptyObject);
4040
+ }
4041
+ } else {
4042
+ if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
4043
+ if (isDef(data.props)) { mergeProps(props, data.props); }
4044
+ }
4045
+
4046
+ var renderContext = new FunctionalRenderContext(
4047
+ data,
4048
+ props,
4049
+ children,
4050
+ contextVm,
4051
+ Ctor
4052
+ );
4053
+
4054
+ var vnode = options.render.call(null, renderContext._c, renderContext);
4055
+
4056
+ if (vnode instanceof VNode) {
4057
+ return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)
4058
+ } else if (Array.isArray(vnode)) {
4059
+ var vnodes = normalizeChildren(vnode) || [];
4060
+ var res = new Array(vnodes.length);
4061
+ for (var i = 0; i < vnodes.length; i++) {
4062
+ res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);
4063
+ }
4064
+ return res
4065
+ }
4066
+ }
4067
+
4068
+ function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {
4069
+ // #7817 clone node before setting fnContext, otherwise if the node is reused
4070
+ // (e.g. it was from a cached normal slot) the fnContext causes named slots
4071
+ // that should not be matched to match.
4072
+ var clone = cloneVNode(vnode);
4073
+ clone.fnContext = contextVm;
4074
+ clone.fnOptions = options;
4075
+ if (data.slot) {
4076
+ (clone.data || (clone.data = {})).slot = data.slot;
4077
+ }
4078
+ return clone
4079
+ }
4080
+
4081
+ function mergeProps (to, from) {
4082
+ for (var key in from) {
4083
+ to[camelize(key)] = from[key];
4084
+ }
4085
+ }
4086
+
4087
+ /* */
4088
+
4089
+
4090
+
4091
+
4092
+ // Register the component hook to weex native render engine.
4093
+ // The hook will be triggered by native, not javascript.
4094
+
4095
+
4096
+ // Updates the state of the component to weex native render engine.
4097
+
4098
+ /* */
4099
+
4100
+ // https://github.com/Hanks10100/weex-native-directive/tree/master/component
4101
+
4102
+ // listening on native callback
4103
+
4104
+ /* */
4105
+
4106
+ /* */
4107
+
4108
+ // inline hooks to be invoked on component VNodes during patch
4109
+ var componentVNodeHooks = {
4110
+ init: function init (
4111
+ vnode,
4112
+ hydrating,
4113
+ parentElm,
4114
+ refElm
4115
+ ) {
4116
+ if (
4117
+ vnode.componentInstance &&
4118
+ !vnode.componentInstance._isDestroyed &&
4119
+ vnode.data.keepAlive
4120
+ ) {
4121
+ // kept-alive components, treat as a patch
4122
+ var mountedNode = vnode; // work around flow
4123
+ componentVNodeHooks.prepatch(mountedNode, mountedNode);
4124
+ } else {
4125
+ var child = vnode.componentInstance = createComponentInstanceForVnode(
4126
+ vnode,
4127
+ activeInstance,
4128
+ parentElm,
4129
+ refElm
4130
+ );
4131
+ child.$mount(hydrating ? vnode.elm : undefined, hydrating);
4132
+ }
4133
+ },
4134
+
4135
+ prepatch: function prepatch (oldVnode, vnode) {
4136
+ var options = vnode.componentOptions;
4137
+ var child = vnode.componentInstance = oldVnode.componentInstance;
4138
+ updateChildComponent(
4139
+ child,
4140
+ options.propsData, // updated props
4141
+ options.listeners, // updated listeners
4142
+ vnode, // new parent vnode
4143
+ options.children // new children
4144
+ );
4145
+ },
4146
+
4147
+ insert: function insert (vnode) {
4148
+ var context = vnode.context;
4149
+ var componentInstance = vnode.componentInstance;
4150
+ if (!componentInstance._isMounted) {
4151
+ componentInstance._isMounted = true;
4152
+ callHook(componentInstance, 'mounted');
4153
+ }
4154
+ if (vnode.data.keepAlive) {
4155
+ if (context._isMounted) {
4156
+ // vue-router#1212
4157
+ // During updates, a kept-alive component's child components may
4158
+ // change, so directly walking the tree here may call activated hooks
4159
+ // on incorrect children. Instead we push them into a queue which will
4160
+ // be processed after the whole patch process ended.
4161
+ queueActivatedComponent(componentInstance);
4162
+ } else {
4163
+ activateChildComponent(componentInstance, true /* direct */);
4164
+ }
4165
+ }
4166
+ },
4167
+
4168
+ destroy: function destroy (vnode) {
4169
+ var componentInstance = vnode.componentInstance;
4170
+ if (!componentInstance._isDestroyed) {
4171
+ if (!vnode.data.keepAlive) {
4172
+ componentInstance.$destroy();
4173
+ } else {
4174
+ deactivateChildComponent(componentInstance, true /* direct */);
4175
+ }
4176
+ }
4177
+ }
4178
+ };
4179
+
4180
+ var hooksToMerge = Object.keys(componentVNodeHooks);
4181
+
4182
+ function createComponent (
4183
+ Ctor,
4184
+ data,
4185
+ context,
4186
+ children,
4187
+ tag
4188
+ ) {
4189
+ if (isUndef(Ctor)) {
4190
+ return
4191
+ }
4192
+
4193
+ var baseCtor = context.$options._base;
4194
+
4195
+ // plain options object: turn it into a constructor
4196
+ if (isObject(Ctor)) {
4197
+ Ctor = baseCtor.extend(Ctor);
4198
+ }
4199
+
4200
+ // if at this stage it's not a constructor or an async component factory,
4201
+ // reject.
4202
+ if (typeof Ctor !== 'function') {
4203
+ {
4204
+ warn(("Invalid Component definition: " + (String(Ctor))), context);
4205
+ }
4206
+ return
4207
+ }
4208
+
4209
+ // async component
4210
+ var asyncFactory;
4211
+ if (isUndef(Ctor.cid)) {
4212
+ asyncFactory = Ctor;
4213
+ Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);
4214
+ if (Ctor === undefined) {
4215
+ // return a placeholder node for async component, which is rendered
4216
+ // as a comment node but preserves all the raw information for the node.
4217
+ // the information will be used for async server-rendering and hydration.
4218
+ return createAsyncPlaceholder(
4219
+ asyncFactory,
4220
+ data,
4221
+ context,
4222
+ children,
4223
+ tag
4224
+ )
4225
+ }
4226
+ }
4227
+
4228
+ data = data || {};
4229
+
4230
+ // resolve constructor options in case global mixins are applied after
4231
+ // component constructor creation
4232
+ resolveConstructorOptions(Ctor);
4233
+
4234
+ // transform component v-model data into props & events
4235
+ if (isDef(data.model)) {
4236
+ transformModel(Ctor.options, data);
4237
+ }
4238
+
4239
+ // extract props
4240
+ var propsData = extractPropsFromVNodeData(data, Ctor, tag);
4241
+
4242
+ // functional component
4243
+ if (isTrue(Ctor.options.functional)) {
4244
+ return createFunctionalComponent(Ctor, propsData, data, context, children)
4245
+ }
4246
+
4247
+ // extract listeners, since these needs to be treated as
4248
+ // child component listeners instead of DOM listeners
4249
+ var listeners = data.on;
4250
+ // replace with listeners with .native modifier
4251
+ // so it gets processed during parent component patch.
4252
+ data.on = data.nativeOn;
4253
+
4254
+ if (isTrue(Ctor.options.abstract)) {
4255
+ // abstract components do not keep anything
4256
+ // other than props & listeners & slot
4257
+
4258
+ // work around flow
4259
+ var slot = data.slot;
4260
+ data = {};
4261
+ if (slot) {
4262
+ data.slot = slot;
4263
+ }
4264
+ }
4265
+
4266
+ // install component management hooks onto the placeholder node
4267
+ installComponentHooks(data);
4268
+
4269
+ // return a placeholder vnode
4270
+ var name = Ctor.options.name || tag;
4271
+ var vnode = new VNode(
4272
+ ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
4273
+ data, undefined, undefined, undefined, context,
4274
+ { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
4275
+ asyncFactory
4276
+ );
4277
+
4278
+ // Weex specific: invoke recycle-list optimized @render function for
4279
+ // extracting cell-slot template.
4280
+ // https://github.com/Hanks10100/weex-native-directive/tree/master/component
4281
+ /* istanbul ignore if */
4282
+ return vnode
4283
+ }
4284
+
4285
+ function createComponentInstanceForVnode (
4286
+ vnode, // we know it's MountedComponentVNode but flow doesn't
4287
+ parent, // activeInstance in lifecycle state
4288
+ parentElm,
4289
+ refElm
4290
+ ) {
4291
+ var options = {
4292
+ _isComponent: true,
4293
+ parent: parent,
4294
+ _parentVnode: vnode,
4295
+ _parentElm: parentElm || null,
4296
+ _refElm: refElm || null
4297
+ };
4298
+ // check inline-template render functions
4299
+ var inlineTemplate = vnode.data.inlineTemplate;
4300
+ if (isDef(inlineTemplate)) {
4301
+ options.render = inlineTemplate.render;
4302
+ options.staticRenderFns = inlineTemplate.staticRenderFns;
4303
+ }
4304
+ return new vnode.componentOptions.Ctor(options)
4305
+ }
4306
+
4307
+ function installComponentHooks (data) {
4308
+ var hooks = data.hook || (data.hook = {});
4309
+ for (var i = 0; i < hooksToMerge.length; i++) {
4310
+ var key = hooksToMerge[i];
4311
+ hooks[key] = componentVNodeHooks[key];
4312
+ }
4313
+ }
4314
+
4315
+ // transform component v-model info (value and callback) into
4316
+ // prop and event handler respectively.
4317
+ function transformModel (options, data) {
4318
+ var prop = (options.model && options.model.prop) || 'value';
4319
+ var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;
4320
+ var on = data.on || (data.on = {});
4321
+ if (isDef(on[event])) {
4322
+ on[event] = [data.model.callback].concat(on[event]);
4323
+ } else {
4324
+ on[event] = data.model.callback;
4325
+ }
4326
+ }
4327
+
4328
+ /* */
4329
+
4330
+ var SIMPLE_NORMALIZE = 1;
4331
+ var ALWAYS_NORMALIZE = 2;
4332
+
4333
+ // wrapper function for providing a more flexible interface
4334
+ // without getting yelled at by flow
4335
+ function createElement (
4336
+ context,
4337
+ tag,
4338
+ data,
4339
+ children,
4340
+ normalizationType,
4341
+ alwaysNormalize
4342
+ ) {
4343
+ if (Array.isArray(data) || isPrimitive(data)) {
4344
+ normalizationType = children;
4345
+ children = data;
4346
+ data = undefined;
4347
+ }
4348
+ if (isTrue(alwaysNormalize)) {
4349
+ normalizationType = ALWAYS_NORMALIZE;
4350
+ }
4351
+ return _createElement(context, tag, data, children, normalizationType)
4352
+ }
4353
+
4354
+ function _createElement (
4355
+ context,
4356
+ tag,
4357
+ data,
4358
+ children,
4359
+ normalizationType
4360
+ ) {
4361
+ if (isDef(data) && isDef((data).__ob__)) {
4362
+ "development" !== 'production' && warn(
4363
+ "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
4364
+ 'Always create fresh vnode data objects in each render!',
4365
+ context
4366
+ );
4367
+ return createEmptyVNode()
4368
+ }
4369
+ // object syntax in v-bind
4370
+ if (isDef(data) && isDef(data.is)) {
4371
+ tag = data.is;
4372
+ }
4373
+ if (!tag) {
4374
+ // in case of component :is set to falsy value
4375
+ return createEmptyVNode()
4376
+ }
4377
+ // warn against non-primitive key
4378
+ if ("development" !== 'production' &&
4379
+ isDef(data) && isDef(data.key) && !isPrimitive(data.key)
4380
+ ) {
4381
+ {
4382
+ warn(
4383
+ 'Avoid using non-primitive value as key, ' +
4384
+ 'use string/number value instead.',
4385
+ context
4386
+ );
4387
+ }
4388
+ }
4389
+ // support single function children as default scoped slot
4390
+ if (Array.isArray(children) &&
4391
+ typeof children[0] === 'function'
4392
+ ) {
4393
+ data = data || {};
4394
+ data.scopedSlots = { default: children[0] };
4395
+ children.length = 0;
4396
+ }
4397
+ if (normalizationType === ALWAYS_NORMALIZE) {
4398
+ children = normalizeChildren(children);
4399
+ } else if (normalizationType === SIMPLE_NORMALIZE) {
4400
+ children = simpleNormalizeChildren(children);
4401
+ }
4402
+ var vnode, ns;
4403
+ if (typeof tag === 'string') {
4404
+ var Ctor;
4405
+ ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
4406
+ if (config.isReservedTag(tag)) {
4407
+ // platform built-in elements
4408
+ vnode = new VNode(
4409
+ config.parsePlatformTagName(tag), data, children,
4410
+ undefined, undefined, context
4411
+ );
4412
+ } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
4413
+ // component
4414
+ vnode = createComponent(Ctor, data, context, children, tag);
4415
+ } else {
4416
+ // unknown or unlisted namespaced elements
4417
+ // check at runtime because it may get assigned a namespace when its
4418
+ // parent normalizes children
4419
+ vnode = new VNode(
4420
+ tag, data, children,
4421
+ undefined, undefined, context
4422
+ );
4423
+ }
4424
+ } else {
4425
+ // direct component options / constructor
4426
+ vnode = createComponent(tag, data, context, children);
4427
+ }
4428
+ if (Array.isArray(vnode)) {
4429
+ return vnode
4430
+ } else if (isDef(vnode)) {
4431
+ if (isDef(ns)) { applyNS(vnode, ns); }
4432
+ if (isDef(data)) { registerDeepBindings(data); }
4433
+ return vnode
4434
+ } else {
4435
+ return createEmptyVNode()
4436
+ }
4437
+ }
4438
+
4439
+ function applyNS (vnode, ns, force) {
4440
+ vnode.ns = ns;
4441
+ if (vnode.tag === 'foreignObject') {
4442
+ // use default namespace inside foreignObject
4443
+ ns = undefined;
4444
+ force = true;
4445
+ }
4446
+ if (isDef(vnode.children)) {
4447
+ for (var i = 0, l = vnode.children.length; i < l; i++) {
4448
+ var child = vnode.children[i];
4449
+ if (isDef(child.tag) && (
4450
+ isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
4451
+ applyNS(child, ns, force);
4452
+ }
4453
+ }
4454
+ }
4455
+ }
4456
+
4457
+ // ref #5318
4458
+ // necessary to ensure parent re-render when deep bindings like :style and
4459
+ // :class are used on slot nodes
4460
+ function registerDeepBindings (data) {
4461
+ if (isObject(data.style)) {
4462
+ traverse(data.style);
4463
+ }
4464
+ if (isObject(data.class)) {
4465
+ traverse(data.class);
4466
+ }
4467
+ }
4468
+
4469
+ /* */
4470
+
4471
+ function initRender (vm) {
4472
+ vm._vnode = null; // the root of the child tree
4473
+ vm._staticTrees = null; // v-once cached trees
4474
+ var options = vm.$options;
4475
+ var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
4476
+ var renderContext = parentVnode && parentVnode.context;
4477
+ vm.$slots = resolveSlots(options._renderChildren, renderContext);
4478
+ vm.$scopedSlots = emptyObject;
4479
+ // bind the createElement fn to this instance
4480
+ // so that we get proper render context inside it.
4481
+ // args order: tag, data, children, normalizationType, alwaysNormalize
4482
+ // internal version is used by render functions compiled from templates
4483
+ vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
4484
+ // normalization is always applied for the public version, used in
4485
+ // user-written render functions.
4486
+ vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
4487
+
4488
+ // $attrs & $listeners are exposed for easier HOC creation.
4489
+ // they need to be reactive so that HOCs using them are always updated
4490
+ var parentData = parentVnode && parentVnode.data;
4491
+
4492
+ /* istanbul ignore else */
4493
+ {
4494
+ defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
4495
+ !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
4496
+ }, true);
4497
+ defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {
4498
+ !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
4499
+ }, true);
4500
+ }
4501
+ }
4502
+
4503
+ function renderMixin (Vue) {
4504
+ // install runtime convenience helpers
4505
+ installRenderHelpers(Vue.prototype);
4506
+
4507
+ Vue.prototype.$nextTick = function (fn) {
4508
+ return nextTick(fn, this)
4509
+ };
4510
+
4511
+ Vue.prototype._render = function () {
4512
+ var vm = this;
4513
+ var ref = vm.$options;
4514
+ var render = ref.render;
4515
+ var _parentVnode = ref._parentVnode;
4516
+
4517
+ // reset _rendered flag on slots for duplicate slot check
4518
+ {
4519
+ for (var key in vm.$slots) {
4520
+ // $flow-disable-line
4521
+ vm.$slots[key]._rendered = false;
4522
+ }
4523
+ }
4524
+
4525
+ if (_parentVnode) {
4526
+ vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;
4527
+ }
4528
+
4529
+ // set parent vnode. this allows render functions to have access
4530
+ // to the data on the placeholder node.
4531
+ vm.$vnode = _parentVnode;
4532
+ // render self
4533
+ var vnode;
4534
+ try {
4535
+ vnode = render.call(vm._renderProxy, vm.$createElement);
4536
+ } catch (e) {
4537
+ handleError(e, vm, "render");
4538
+ // return error render result,
4539
+ // or previous vnode to prevent render error causing blank component
4540
+ /* istanbul ignore else */
4541
+ {
4542
+ if (vm.$options.renderError) {
4543
+ try {
4544
+ vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
4545
+ } catch (e) {
4546
+ handleError(e, vm, "renderError");
4547
+ vnode = vm._vnode;
4548
+ }
4549
+ } else {
4550
+ vnode = vm._vnode;
4551
+ }
4552
+ }
4553
+ }
4554
+ // return empty vnode in case the render function errored out
4555
+ if (!(vnode instanceof VNode)) {
4556
+ if ("development" !== 'production' && Array.isArray(vnode)) {
4557
+ warn(
4558
+ 'Multiple root nodes returned from render function. Render function ' +
4559
+ 'should return a single root node.',
4560
+ vm
4561
+ );
4562
+ }
4563
+ vnode = createEmptyVNode();
4564
+ }
4565
+ // set parent
4566
+ vnode.parent = _parentVnode;
4567
+ return vnode
4568
+ };
4569
+ }
4570
+
4571
+ /* */
4572
+
4573
+ var uid$3 = 0;
4574
+
4575
+ function initMixin (Vue) {
4576
+ Vue.prototype._init = function (options) {
4577
+ var vm = this;
4578
+ // a uid
4579
+ vm._uid = uid$3++;
4580
+
4581
+ var startTag, endTag;
4582
+ /* istanbul ignore if */
4583
+ if ("development" !== 'production' && config.performance && mark) {
4584
+ startTag = "vue-perf-start:" + (vm._uid);
4585
+ endTag = "vue-perf-end:" + (vm._uid);
4586
+ mark(startTag);
4587
+ }
4588
+
4589
+ // a flag to avoid this being observed
4590
+ vm._isVue = true;
4591
+ // merge options
4592
+ if (options && options._isComponent) {
4593
+ // optimize internal component instantiation
4594
+ // since dynamic options merging is pretty slow, and none of the
4595
+ // internal component options needs special treatment.
4596
+ initInternalComponent(vm, options);
4597
+ } else {
4598
+ vm.$options = mergeOptions(
4599
+ resolveConstructorOptions(vm.constructor),
4600
+ options || {},
4601
+ vm
4602
+ );
4603
+ }
4604
+ /* istanbul ignore else */
4605
+ {
4606
+ initProxy(vm);
4607
+ }
4608
+ // expose real self
4609
+ vm._self = vm;
4610
+ initLifecycle(vm);
4611
+ initEvents(vm);
4612
+ initRender(vm);
4613
+ callHook(vm, 'beforeCreate');
4614
+ initInjections(vm); // resolve injections before data/props
4615
+ initState(vm);
4616
+ initProvide(vm); // resolve provide after data/props
4617
+ callHook(vm, 'created');
4618
+
4619
+ /* istanbul ignore if */
4620
+ if ("development" !== 'production' && config.performance && mark) {
4621
+ vm._name = formatComponentName(vm, false);
4622
+ mark(endTag);
4623
+ measure(("vue " + (vm._name) + " init"), startTag, endTag);
4624
+ }
4625
+
4626
+ if (vm.$options.el) {
4627
+ vm.$mount(vm.$options.el);
4628
+ }
4629
+ };
4630
+ }
4631
+
4632
+ function initInternalComponent (vm, options) {
4633
+ var opts = vm.$options = Object.create(vm.constructor.options);
4634
+ // doing this because it's faster than dynamic enumeration.
4635
+ var parentVnode = options._parentVnode;
4636
+ opts.parent = options.parent;
4637
+ opts._parentVnode = parentVnode;
4638
+ opts._parentElm = options._parentElm;
4639
+ opts._refElm = options._refElm;
4640
+
4641
+ var vnodeComponentOptions = parentVnode.componentOptions;
4642
+ opts.propsData = vnodeComponentOptions.propsData;
4643
+ opts._parentListeners = vnodeComponentOptions.listeners;
4644
+ opts._renderChildren = vnodeComponentOptions.children;
4645
+ opts._componentTag = vnodeComponentOptions.tag;
4646
+
4647
+ if (options.render) {
4648
+ opts.render = options.render;
4649
+ opts.staticRenderFns = options.staticRenderFns;
4650
+ }
4651
+ }
4652
+
4653
+ function resolveConstructorOptions (Ctor) {
4654
+ var options = Ctor.options;
4655
+ if (Ctor.super) {
4656
+ var superOptions = resolveConstructorOptions(Ctor.super);
4657
+ var cachedSuperOptions = Ctor.superOptions;
4658
+ if (superOptions !== cachedSuperOptions) {
4659
+ // super option changed,
4660
+ // need to resolve new options.
4661
+ Ctor.superOptions = superOptions;
4662
+ // check if there are any late-modified/attached options (#4976)
4663
+ var modifiedOptions = resolveModifiedOptions(Ctor);
4664
+ // update base extend options
4665
+ if (modifiedOptions) {
4666
+ extend(Ctor.extendOptions, modifiedOptions);
4667
+ }
4668
+ options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
4669
+ if (options.name) {
4670
+ options.components[options.name] = Ctor;
4671
+ }
4672
+ }
4673
+ }
4674
+ return options
4675
+ }
4676
+
4677
+ function resolveModifiedOptions (Ctor) {
4678
+ var modified;
4679
+ var latest = Ctor.options;
4680
+ var extended = Ctor.extendOptions;
4681
+ var sealed = Ctor.sealedOptions;
4682
+ for (var key in latest) {
4683
+ if (latest[key] !== sealed[key]) {
4684
+ if (!modified) { modified = {}; }
4685
+ modified[key] = dedupe(latest[key], extended[key], sealed[key]);
4686
+ }
4687
+ }
4688
+ return modified
4689
+ }
4690
+
4691
+ function dedupe (latest, extended, sealed) {
4692
+ // compare latest and sealed to ensure lifecycle hooks won't be duplicated
4693
+ // between merges
4694
+ if (Array.isArray(latest)) {
4695
+ var res = [];
4696
+ sealed = Array.isArray(sealed) ? sealed : [sealed];
4697
+ extended = Array.isArray(extended) ? extended : [extended];
4698
+ for (var i = 0; i < latest.length; i++) {
4699
+ // push original options and not sealed options to exclude duplicated options
4700
+ if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {
4701
+ res.push(latest[i]);
4702
+ }
4703
+ }
4704
+ return res
4705
+ } else {
4706
+ return latest
4707
+ }
4708
+ }
4709
+
4710
+ function Vue (options) {
4711
+ if ("development" !== 'production' &&
4712
+ !(this instanceof Vue)
4713
+ ) {
4714
+ warn('Vue is a constructor and should be called with the `new` keyword');
4715
+ }
4716
+ this._init(options);
4717
+ }
4718
+
4719
+ initMixin(Vue);
4720
+ stateMixin(Vue);
4721
+ eventsMixin(Vue);
4722
+ lifecycleMixin(Vue);
4723
+ renderMixin(Vue);
4724
+
4725
+ /* */
4726
+
4727
+ function initUse (Vue) {
4728
+ Vue.use = function (plugin) {
4729
+ var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
4730
+ if (installedPlugins.indexOf(plugin) > -1) {
4731
+ return this
4732
+ }
4733
+
4734
+ // additional parameters
4735
+ var args = toArray(arguments, 1);
4736
+ args.unshift(this);
4737
+ if (typeof plugin.install === 'function') {
4738
+ plugin.install.apply(plugin, args);
4739
+ } else if (typeof plugin === 'function') {
4740
+ plugin.apply(null, args);
4741
+ }
4742
+ installedPlugins.push(plugin);
4743
+ return this
4744
+ };
4745
+ }
4746
+
4747
+ /* */
4748
+
4749
+ function initMixin$1 (Vue) {
4750
+ Vue.mixin = function (mixin) {
4751
+ this.options = mergeOptions(this.options, mixin);
4752
+ return this
4753
+ };
4754
+ }
4755
+
4756
+ /* */
4757
+
4758
+ function initExtend (Vue) {
4759
+ /**
4760
+ * Each instance constructor, including Vue, has a unique
4761
+ * cid. This enables us to create wrapped "child
4762
+ * constructors" for prototypal inheritance and cache them.
4763
+ */
4764
+ Vue.cid = 0;
4765
+ var cid = 1;
4766
+
4767
+ /**
4768
+ * Class inheritance
4769
+ */
4770
+ Vue.extend = function (extendOptions) {
4771
+ extendOptions = extendOptions || {};
4772
+ var Super = this;
4773
+ var SuperId = Super.cid;
4774
+ var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
4775
+ if (cachedCtors[SuperId]) {
4776
+ return cachedCtors[SuperId]
4777
+ }
4778
+
4779
+ var name = extendOptions.name || Super.options.name;
4780
+ if ("development" !== 'production' && name) {
4781
+ validateComponentName(name);
4782
+ }
4783
+
4784
+ var Sub = function VueComponent (options) {
4785
+ this._init(options);
4786
+ };
4787
+ Sub.prototype = Object.create(Super.prototype);
4788
+ Sub.prototype.constructor = Sub;
4789
+ Sub.cid = cid++;
4790
+ Sub.options = mergeOptions(
4791
+ Super.options,
4792
+ extendOptions
4793
+ );
4794
+ Sub['super'] = Super;
4795
+
4796
+ // For props and computed properties, we define the proxy getters on
4797
+ // the Vue instances at extension time, on the extended prototype. This
4798
+ // avoids Object.defineProperty calls for each instance created.
4799
+ if (Sub.options.props) {
4800
+ initProps$1(Sub);
4801
+ }
4802
+ if (Sub.options.computed) {
4803
+ initComputed$1(Sub);
4804
+ }
4805
+
4806
+ // allow further extension/mixin/plugin usage
4807
+ Sub.extend = Super.extend;
4808
+ Sub.mixin = Super.mixin;
4809
+ Sub.use = Super.use;
4810
+
4811
+ // create asset registers, so extended classes
4812
+ // can have their private assets too.
4813
+ ASSET_TYPES.forEach(function (type) {
4814
+ Sub[type] = Super[type];
4815
+ });
4816
+ // enable recursive self-lookup
4817
+ if (name) {
4818
+ Sub.options.components[name] = Sub;
4819
+ }
4820
+
4821
+ // keep a reference to the super options at extension time.
4822
+ // later at instantiation we can check if Super's options have
4823
+ // been updated.
4824
+ Sub.superOptions = Super.options;
4825
+ Sub.extendOptions = extendOptions;
4826
+ Sub.sealedOptions = extend({}, Sub.options);
4827
+
4828
+ // cache constructor
4829
+ cachedCtors[SuperId] = Sub;
4830
+ return Sub
4831
+ };
4832
+ }
4833
+
4834
+ function initProps$1 (Comp) {
4835
+ var props = Comp.options.props;
4836
+ for (var key in props) {
4837
+ proxy(Comp.prototype, "_props", key);
4838
+ }
4839
+ }
4840
+
4841
+ function initComputed$1 (Comp) {
4842
+ var computed = Comp.options.computed;
4843
+ for (var key in computed) {
4844
+ defineComputed(Comp.prototype, key, computed[key]);
4845
+ }
4846
+ }
4847
+
4848
+ /* */
4849
+
4850
+ function initAssetRegisters (Vue) {
4851
+ /**
4852
+ * Create asset registration methods.
4853
+ */
4854
+ ASSET_TYPES.forEach(function (type) {
4855
+ Vue[type] = function (
4856
+ id,
4857
+ definition
4858
+ ) {
4859
+ if (!definition) {
4860
+ return this.options[type + 's'][id]
4861
+ } else {
4862
+ /* istanbul ignore if */
4863
+ if ("development" !== 'production' && type === 'component') {
4864
+ validateComponentName(id);
4865
+ }
4866
+ if (type === 'component' && isPlainObject(definition)) {
4867
+ definition.name = definition.name || id;
4868
+ definition = this.options._base.extend(definition);
4869
+ }
4870
+ if (type === 'directive' && typeof definition === 'function') {
4871
+ definition = { bind: definition, update: definition };
4872
+ }
4873
+ this.options[type + 's'][id] = definition;
4874
+ return definition
4875
+ }
4876
+ };
4877
+ });
4878
+ }
4879
+
4880
+ /* */
4881
+
4882
+ function getComponentName (opts) {
4883
+ return opts && (opts.Ctor.options.name || opts.tag)
4884
+ }
4885
+
4886
+ function matches (pattern, name) {
4887
+ if (Array.isArray(pattern)) {
4888
+ return pattern.indexOf(name) > -1
4889
+ } else if (typeof pattern === 'string') {
4890
+ return pattern.split(',').indexOf(name) > -1
4891
+ } else if (isRegExp(pattern)) {
4892
+ return pattern.test(name)
4893
+ }
4894
+ /* istanbul ignore next */
4895
+ return false
4896
+ }
4897
+
4898
+ function pruneCache (keepAliveInstance, filter) {
4899
+ var cache = keepAliveInstance.cache;
4900
+ var keys = keepAliveInstance.keys;
4901
+ var _vnode = keepAliveInstance._vnode;
4902
+ for (var key in cache) {
4903
+ var cachedNode = cache[key];
4904
+ if (cachedNode) {
4905
+ var name = getComponentName(cachedNode.componentOptions);
4906
+ if (name && !filter(name)) {
4907
+ pruneCacheEntry(cache, key, keys, _vnode);
4908
+ }
4909
+ }
4910
+ }
4911
+ }
4912
+
4913
+ function pruneCacheEntry (
4914
+ cache,
4915
+ key,
4916
+ keys,
4917
+ current
4918
+ ) {
4919
+ var cached$$1 = cache[key];
4920
+ if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
4921
+ cached$$1.componentInstance.$destroy();
4922
+ }
4923
+ cache[key] = null;
4924
+ remove(keys, key);
4925
+ }
4926
+
4927
+ var patternTypes = [String, RegExp, Array];
4928
+
4929
+ var KeepAlive = {
4930
+ name: 'keep-alive',
4931
+ abstract: true,
4932
+
4933
+ props: {
4934
+ include: patternTypes,
4935
+ exclude: patternTypes,
4936
+ max: [String, Number]
4937
+ },
4938
+
4939
+ created: function created () {
4940
+ this.cache = Object.create(null);
4941
+ this.keys = [];
4942
+ },
4943
+
4944
+ destroyed: function destroyed () {
4945
+ var this$1 = this;
4946
+
4947
+ for (var key in this$1.cache) {
4948
+ pruneCacheEntry(this$1.cache, key, this$1.keys);
4949
+ }
4950
+ },
4951
+
4952
+ mounted: function mounted () {
4953
+ var this$1 = this;
4954
+
4955
+ this.$watch('include', function (val) {
4956
+ pruneCache(this$1, function (name) { return matches(val, name); });
4957
+ });
4958
+ this.$watch('exclude', function (val) {
4959
+ pruneCache(this$1, function (name) { return !matches(val, name); });
4960
+ });
4961
+ },
4962
+
4963
+ render: function render () {
4964
+ var slot = this.$slots.default;
4965
+ var vnode = getFirstComponentChild(slot);
4966
+ var componentOptions = vnode && vnode.componentOptions;
4967
+ if (componentOptions) {
4968
+ // check pattern
4969
+ var name = getComponentName(componentOptions);
4970
+ var ref = this;
4971
+ var include = ref.include;
4972
+ var exclude = ref.exclude;
4973
+ if (
4974
+ // not included
4975
+ (include && (!name || !matches(include, name))) ||
4976
+ // excluded
4977
+ (exclude && name && matches(exclude, name))
4978
+ ) {
4979
+ return vnode
4980
+ }
4981
+
4982
+ var ref$1 = this;
4983
+ var cache = ref$1.cache;
4984
+ var keys = ref$1.keys;
4985
+ var key = vnode.key == null
4986
+ // same constructor may get registered as different local components
4987
+ // so cid alone is not enough (#3269)
4988
+ ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
4989
+ : vnode.key;
4990
+ if (cache[key]) {
4991
+ vnode.componentInstance = cache[key].componentInstance;
4992
+ // make current key freshest
4993
+ remove(keys, key);
4994
+ keys.push(key);
4995
+ } else {
4996
+ cache[key] = vnode;
4997
+ keys.push(key);
4998
+ // prune oldest entry
4999
+ if (this.max && keys.length > parseInt(this.max)) {
5000
+ pruneCacheEntry(cache, keys[0], keys, this._vnode);
5001
+ }
5002
+ }
5003
+
5004
+ vnode.data.keepAlive = true;
5005
+ }
5006
+ return vnode || (slot && slot[0])
5007
+ }
5008
+ }
5009
+
5010
+ var builtInComponents = {
5011
+ KeepAlive: KeepAlive
5012
+ }
5013
+
5014
+ /* */
5015
+
5016
+ function initGlobalAPI (Vue) {
5017
+ // config
5018
+ var configDef = {};
5019
+ configDef.get = function () { return config; };
5020
+ {
5021
+ configDef.set = function () {
5022
+ warn(
5023
+ 'Do not replace the Vue.config object, set individual fields instead.'
5024
+ );
5025
+ };
5026
+ }
5027
+ Object.defineProperty(Vue, 'config', configDef);
5028
+
5029
+ // exposed util methods.
5030
+ // NOTE: these are not considered part of the public API - avoid relying on
5031
+ // them unless you are aware of the risk.
5032
+ Vue.util = {
5033
+ warn: warn,
5034
+ extend: extend,
5035
+ mergeOptions: mergeOptions,
5036
+ defineReactive: defineReactive
5037
+ };
5038
+
5039
+ Vue.set = set;
5040
+ Vue.delete = del;
5041
+ Vue.nextTick = nextTick;
5042
+
5043
+ Vue.options = Object.create(null);
5044
+ ASSET_TYPES.forEach(function (type) {
5045
+ Vue.options[type + 's'] = Object.create(null);
5046
+ });
5047
+
5048
+ // this is used to identify the "base" constructor to extend all plain-object
5049
+ // components with in Weex's multi-instance scenarios.
5050
+ Vue.options._base = Vue;
5051
+
5052
+ extend(Vue.options.components, builtInComponents);
5053
+
5054
+ initUse(Vue);
5055
+ initMixin$1(Vue);
5056
+ initExtend(Vue);
5057
+ initAssetRegisters(Vue);
5058
+ }
5059
+
5060
+ initGlobalAPI(Vue);
5061
+
5062
+ Object.defineProperty(Vue.prototype, '$isServer', {
5063
+ get: isServerRendering
5064
+ });
5065
+
5066
+ Object.defineProperty(Vue.prototype, '$ssrContext', {
5067
+ get: function get () {
5068
+ /* istanbul ignore next */
5069
+ return this.$vnode && this.$vnode.ssrContext
5070
+ }
5071
+ });
5072
+
5073
+ // expose FunctionalRenderContext for ssr runtime helper installation
5074
+ Object.defineProperty(Vue, 'FunctionalRenderContext', {
5075
+ value: FunctionalRenderContext
5076
+ });
5077
+
5078
+ Vue.version = '2.5.16';
5079
+
5080
+ /* */
5081
+
5082
+ // these are reserved for web because they are directly compiled away
5083
+ // during template compilation
5084
+ var isReservedAttr = makeMap('style,class');
5085
+
5086
+ // attributes that should be using props for binding
5087
+ var acceptValue = makeMap('input,textarea,option,select,progress');
5088
+ var mustUseProp = function (tag, type, attr) {
5089
+ return (
5090
+ (attr === 'value' && acceptValue(tag)) && type !== 'button' ||
5091
+ (attr === 'selected' && tag === 'option') ||
5092
+ (attr === 'checked' && tag === 'input') ||
5093
+ (attr === 'muted' && tag === 'video')
5094
+ )
5095
+ };
5096
+
5097
+ var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
5098
+
5099
+ var isBooleanAttr = makeMap(
5100
+ 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
5101
+ 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
5102
+ 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
5103
+ 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
5104
+ 'required,reversed,scoped,seamless,selected,sortable,translate,' +
5105
+ 'truespeed,typemustmatch,visible'
5106
+ );
5107
+
5108
+ var xlinkNS = 'http://www.w3.org/1999/xlink';
5109
+
5110
+ var isXlink = function (name) {
5111
+ return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
5112
+ };
5113
+
5114
+ var getXlinkProp = function (name) {
5115
+ return isXlink(name) ? name.slice(6, name.length) : ''
5116
+ };
5117
+
5118
+ var isFalsyAttrValue = function (val) {
5119
+ return val == null || val === false
5120
+ };
5121
+
5122
+ /* */
5123
+
5124
+ function genClassForVnode (vnode) {
5125
+ var data = vnode.data;
5126
+ var parentNode = vnode;
5127
+ var childNode = vnode;
5128
+ while (isDef(childNode.componentInstance)) {
5129
+ childNode = childNode.componentInstance._vnode;
5130
+ if (childNode && childNode.data) {
5131
+ data = mergeClassData(childNode.data, data);
5132
+ }
5133
+ }
5134
+ while (isDef(parentNode = parentNode.parent)) {
5135
+ if (parentNode && parentNode.data) {
5136
+ data = mergeClassData(data, parentNode.data);
5137
+ }
5138
+ }
5139
+ return renderClass(data.staticClass, data.class)
5140
+ }
5141
+
5142
+ function mergeClassData (child, parent) {
5143
+ return {
5144
+ staticClass: concat(child.staticClass, parent.staticClass),
5145
+ class: isDef(child.class)
5146
+ ? [child.class, parent.class]
5147
+ : parent.class
5148
+ }
5149
+ }
5150
+
5151
+ function renderClass (
5152
+ staticClass,
5153
+ dynamicClass
5154
+ ) {
5155
+ if (isDef(staticClass) || isDef(dynamicClass)) {
5156
+ return concat(staticClass, stringifyClass(dynamicClass))
5157
+ }
5158
+ /* istanbul ignore next */
5159
+ return ''
5160
+ }
5161
+
5162
+ function concat (a, b) {
5163
+ return a ? b ? (a + ' ' + b) : a : (b || '')
5164
+ }
5165
+
5166
+ function stringifyClass (value) {
5167
+ if (Array.isArray(value)) {
5168
+ return stringifyArray(value)
5169
+ }
5170
+ if (isObject(value)) {
5171
+ return stringifyObject(value)
5172
+ }
5173
+ if (typeof value === 'string') {
5174
+ return value
5175
+ }
5176
+ /* istanbul ignore next */
5177
+ return ''
5178
+ }
5179
+
5180
+ function stringifyArray (value) {
5181
+ var res = '';
5182
+ var stringified;
5183
+ for (var i = 0, l = value.length; i < l; i++) {
5184
+ if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
5185
+ if (res) { res += ' '; }
5186
+ res += stringified;
5187
+ }
5188
+ }
5189
+ return res
5190
+ }
5191
+
5192
+ function stringifyObject (value) {
5193
+ var res = '';
5194
+ for (var key in value) {
5195
+ if (value[key]) {
5196
+ if (res) { res += ' '; }
5197
+ res += key;
5198
+ }
5199
+ }
5200
+ return res
5201
+ }
5202
+
5203
+ /* */
5204
+
5205
+ var namespaceMap = {
5206
+ svg: 'http://www.w3.org/2000/svg',
5207
+ math: 'http://www.w3.org/1998/Math/MathML'
5208
+ };
5209
+
5210
+ var isHTMLTag = makeMap(
5211
+ 'html,body,base,head,link,meta,style,title,' +
5212
+ 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
5213
+ 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
5214
+ 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
5215
+ 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
5216
+ 'embed,object,param,source,canvas,script,noscript,del,ins,' +
5217
+ 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
5218
+ 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
5219
+ 'output,progress,select,textarea,' +
5220
+ 'details,dialog,menu,menuitem,summary,' +
5221
+ 'content,element,shadow,template,blockquote,iframe,tfoot'
5222
+ );
5223
+
5224
+ // this map is intentionally selective, only covering SVG elements that may
5225
+ // contain child elements.
5226
+ var isSVG = makeMap(
5227
+ 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
5228
+ 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
5229
+ 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
5230
+ true
5231
+ );
5232
+
5233
+ var isPreTag = function (tag) { return tag === 'pre'; };
5234
+
5235
+ var isReservedTag = function (tag) {
5236
+ return isHTMLTag(tag) || isSVG(tag)
5237
+ };
5238
+
5239
+ function getTagNamespace (tag) {
5240
+ if (isSVG(tag)) {
5241
+ return 'svg'
5242
+ }
5243
+ // basic support for MathML
5244
+ // note it doesn't support other MathML elements being component roots
5245
+ if (tag === 'math') {
5246
+ return 'math'
5247
+ }
5248
+ }
5249
+
5250
+ var unknownElementCache = Object.create(null);
5251
+ function isUnknownElement (tag) {
5252
+ /* istanbul ignore if */
5253
+ if (!inBrowser) {
5254
+ return true
5255
+ }
5256
+ if (isReservedTag(tag)) {
5257
+ return false
5258
+ }
5259
+ tag = tag.toLowerCase();
5260
+ /* istanbul ignore if */
5261
+ if (unknownElementCache[tag] != null) {
5262
+ return unknownElementCache[tag]
5263
+ }
5264
+ var el = document.createElement(tag);
5265
+ if (tag.indexOf('-') > -1) {
5266
+ // http://stackoverflow.com/a/28210364/1070244
5267
+ return (unknownElementCache[tag] = (
5268
+ el.constructor === window.HTMLUnknownElement ||
5269
+ el.constructor === window.HTMLElement
5270
+ ))
5271
+ } else {
5272
+ return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
5273
+ }
5274
+ }
5275
+
5276
+ var isTextInputType = makeMap('text,number,password,search,email,tel,url');
5277
+
5278
+ /* */
5279
+
5280
+ /**
5281
+ * Query an element selector if it's not an element already.
5282
+ */
5283
+ function query (el) {
5284
+ if (typeof el === 'string') {
5285
+ var selected = document.querySelector(el);
5286
+ if (!selected) {
5287
+ "development" !== 'production' && warn(
5288
+ 'Cannot find element: ' + el
5289
+ );
5290
+ return document.createElement('div')
5291
+ }
5292
+ return selected
5293
+ } else {
5294
+ return el
5295
+ }
5296
+ }
5297
+
5298
+ /* */
5299
+
5300
+ function createElement$1 (tagName, vnode) {
5301
+ var elm = document.createElement(tagName);
5302
+ if (tagName !== 'select') {
5303
+ return elm
5304
+ }
5305
+ // false or null will remove the attribute but undefined will not
5306
+ if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
5307
+ elm.setAttribute('multiple', 'multiple');
5308
+ }
5309
+ return elm
5310
+ }
5311
+
5312
+ function createElementNS (namespace, tagName) {
5313
+ return document.createElementNS(namespaceMap[namespace], tagName)
5314
+ }
5315
+
5316
+ function createTextNode (text) {
5317
+ return document.createTextNode(text)
5318
+ }
5319
+
5320
+ function createComment (text) {
5321
+ return document.createComment(text)
5322
+ }
5323
+
5324
+ function insertBefore (parentNode, newNode, referenceNode) {
5325
+ parentNode.insertBefore(newNode, referenceNode);
5326
+ }
5327
+
5328
+ function removeChild (node, child) {
5329
+ node.removeChild(child);
5330
+ }
5331
+
5332
+ function appendChild (node, child) {
5333
+ node.appendChild(child);
5334
+ }
5335
+
5336
+ function parentNode (node) {
5337
+ return node.parentNode
5338
+ }
5339
+
5340
+ function nextSibling (node) {
5341
+ return node.nextSibling
5342
+ }
5343
+
5344
+ function tagName (node) {
5345
+ return node.tagName
5346
+ }
5347
+
5348
+ function setTextContent (node, text) {
5349
+ node.textContent = text;
5350
+ }
5351
+
5352
+ function setStyleScope (node, scopeId) {
5353
+ node.setAttribute(scopeId, '');
5354
+ }
5355
+
5356
+
5357
+ var nodeOps = Object.freeze({
5358
+ createElement: createElement$1,
5359
+ createElementNS: createElementNS,
5360
+ createTextNode: createTextNode,
5361
+ createComment: createComment,
5362
+ insertBefore: insertBefore,
5363
+ removeChild: removeChild,
5364
+ appendChild: appendChild,
5365
+ parentNode: parentNode,
5366
+ nextSibling: nextSibling,
5367
+ tagName: tagName,
5368
+ setTextContent: setTextContent,
5369
+ setStyleScope: setStyleScope
5370
+ });
5371
+
5372
+ /* */
5373
+
5374
+ var ref = {
5375
+ create: function create (_, vnode) {
5376
+ registerRef(vnode);
5377
+ },
5378
+ update: function update (oldVnode, vnode) {
5379
+ if (oldVnode.data.ref !== vnode.data.ref) {
5380
+ registerRef(oldVnode, true);
5381
+ registerRef(vnode);
5382
+ }
5383
+ },
5384
+ destroy: function destroy (vnode) {
5385
+ registerRef(vnode, true);
5386
+ }
5387
+ }
5388
+
5389
+ function registerRef (vnode, isRemoval) {
5390
+ var key = vnode.data.ref;
5391
+ if (!isDef(key)) { return }
5392
+
5393
+ var vm = vnode.context;
5394
+ var ref = vnode.componentInstance || vnode.elm;
5395
+ var refs = vm.$refs;
5396
+ if (isRemoval) {
5397
+ if (Array.isArray(refs[key])) {
5398
+ remove(refs[key], ref);
5399
+ } else if (refs[key] === ref) {
5400
+ refs[key] = undefined;
5401
+ }
5402
+ } else {
5403
+ if (vnode.data.refInFor) {
5404
+ if (!Array.isArray(refs[key])) {
5405
+ refs[key] = [ref];
5406
+ } else if (refs[key].indexOf(ref) < 0) {
5407
+ // $flow-disable-line
5408
+ refs[key].push(ref);
5409
+ }
5410
+ } else {
5411
+ refs[key] = ref;
5412
+ }
5413
+ }
5414
+ }
5415
+
5416
+ /**
5417
+ * Virtual DOM patching algorithm based on Snabbdom by
5418
+ * Simon Friis Vindum (@paldepind)
5419
+ * Licensed under the MIT License
5420
+ * https://github.com/paldepind/snabbdom/blob/master/LICENSE
5421
+ *
5422
+ * modified by Evan You (@yyx990803)
5423
+ *
5424
+ * Not type-checking this because this file is perf-critical and the cost
5425
+ * of making flow understand it is not worth it.
5426
+ */
5427
+
5428
+ var emptyNode = new VNode('', {}, []);
5429
+
5430
+ var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
5431
+
5432
+ function sameVnode (a, b) {
5433
+ return (
5434
+ a.key === b.key && (
5435
+ (
5436
+ a.tag === b.tag &&
5437
+ a.isComment === b.isComment &&
5438
+ isDef(a.data) === isDef(b.data) &&
5439
+ sameInputType(a, b)
5440
+ ) || (
5441
+ isTrue(a.isAsyncPlaceholder) &&
5442
+ a.asyncFactory === b.asyncFactory &&
5443
+ isUndef(b.asyncFactory.error)
5444
+ )
5445
+ )
5446
+ )
5447
+ }
5448
+
5449
+ function sameInputType (a, b) {
5450
+ if (a.tag !== 'input') { return true }
5451
+ var i;
5452
+ var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
5453
+ var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
5454
+ return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)
5455
+ }
5456
+
5457
+ function createKeyToOldIdx (children, beginIdx, endIdx) {
5458
+ var i, key;
5459
+ var map = {};
5460
+ for (i = beginIdx; i <= endIdx; ++i) {
5461
+ key = children[i].key;
5462
+ if (isDef(key)) { map[key] = i; }
5463
+ }
5464
+ return map
5465
+ }
5466
+
5467
+ function createPatchFunction (backend) {
5468
+ var i, j;
5469
+ var cbs = {};
5470
+
5471
+ var modules = backend.modules;
5472
+ var nodeOps = backend.nodeOps;
5473
+
5474
+ for (i = 0; i < hooks.length; ++i) {
5475
+ cbs[hooks[i]] = [];
5476
+ for (j = 0; j < modules.length; ++j) {
5477
+ if (isDef(modules[j][hooks[i]])) {
5478
+ cbs[hooks[i]].push(modules[j][hooks[i]]);
5479
+ }
5480
+ }
5481
+ }
5482
+
5483
+ function emptyNodeAt (elm) {
5484
+ return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
5485
+ }
5486
+
5487
+ function createRmCb (childElm, listeners) {
5488
+ function remove () {
5489
+ if (--remove.listeners === 0) {
5490
+ removeNode(childElm);
5491
+ }
5492
+ }
5493
+ remove.listeners = listeners;
5494
+ return remove
5495
+ }
5496
+
5497
+ function removeNode (el) {
5498
+ var parent = nodeOps.parentNode(el);
5499
+ // element may have already been removed due to v-html / v-text
5500
+ if (isDef(parent)) {
5501
+ nodeOps.removeChild(parent, el);
5502
+ }
5503
+ }
5504
+
5505
+ function isUnknownElement$$1 (vnode, inVPre) {
5506
+ return (
5507
+ !inVPre &&
5508
+ !vnode.ns &&
5509
+ !(
5510
+ config.ignoredElements.length &&
5511
+ config.ignoredElements.some(function (ignore) {
5512
+ return isRegExp(ignore)
5513
+ ? ignore.test(vnode.tag)
5514
+ : ignore === vnode.tag
5515
+ })
5516
+ ) &&
5517
+ config.isUnknownElement(vnode.tag)
5518
+ )
5519
+ }
5520
+
5521
+ var creatingElmInVPre = 0;
5522
+
5523
+ function createElm (
5524
+ vnode,
5525
+ insertedVnodeQueue,
5526
+ parentElm,
5527
+ refElm,
5528
+ nested,
5529
+ ownerArray,
5530
+ index
5531
+ ) {
5532
+ if (isDef(vnode.elm) && isDef(ownerArray)) {
5533
+ // This vnode was used in a previous render!
5534
+ // now it's used as a new node, overwriting its elm would cause
5535
+ // potential patch errors down the road when it's used as an insertion
5536
+ // reference node. Instead, we clone the node on-demand before creating
5537
+ // associated DOM element for it.
5538
+ vnode = ownerArray[index] = cloneVNode(vnode);
5539
+ }
5540
+
5541
+ vnode.isRootInsert = !nested; // for transition enter check
5542
+ if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
5543
+ return
5544
+ }
5545
+
5546
+ var data = vnode.data;
5547
+ var children = vnode.children;
5548
+ var tag = vnode.tag;
5549
+ if (isDef(tag)) {
5550
+ {
5551
+ if (data && data.pre) {
5552
+ creatingElmInVPre++;
5553
+ }
5554
+ if (isUnknownElement$$1(vnode, creatingElmInVPre)) {
5555
+ warn(
5556
+ 'Unknown custom element: <' + tag + '> - did you ' +
5557
+ 'register the component correctly? For recursive components, ' +
5558
+ 'make sure to provide the "name" option.',
5559
+ vnode.context
5560
+ );
5561
+ }
5562
+ }
5563
+
5564
+ vnode.elm = vnode.ns
5565
+ ? nodeOps.createElementNS(vnode.ns, tag)
5566
+ : nodeOps.createElement(tag, vnode);
5567
+ setScope(vnode);
5568
+
5569
+ /* istanbul ignore if */
5570
+ {
5571
+ createChildren(vnode, children, insertedVnodeQueue);
5572
+ if (isDef(data)) {
5573
+ invokeCreateHooks(vnode, insertedVnodeQueue);
5574
+ }
5575
+ insert(parentElm, vnode.elm, refElm);
5576
+ }
5577
+
5578
+ if ("development" !== 'production' && data && data.pre) {
5579
+ creatingElmInVPre--;
5580
+ }
5581
+ } else if (isTrue(vnode.isComment)) {
5582
+ vnode.elm = nodeOps.createComment(vnode.text);
5583
+ insert(parentElm, vnode.elm, refElm);
5584
+ } else {
5585
+ vnode.elm = nodeOps.createTextNode(vnode.text);
5586
+ insert(parentElm, vnode.elm, refElm);
5587
+ }
5588
+ }
5589
+
5590
+ function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
5591
+ var i = vnode.data;
5592
+ if (isDef(i)) {
5593
+ var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
5594
+ if (isDef(i = i.hook) && isDef(i = i.init)) {
5595
+ i(vnode, false /* hydrating */, parentElm, refElm);
5596
+ }
5597
+ // after calling the init hook, if the vnode is a child component
5598
+ // it should've created a child instance and mounted it. the child
5599
+ // component also has set the placeholder vnode's elm.
5600
+ // in that case we can just return the element and be done.
5601
+ if (isDef(vnode.componentInstance)) {
5602
+ initComponent(vnode, insertedVnodeQueue);
5603
+ if (isTrue(isReactivated)) {
5604
+ reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
5605
+ }
5606
+ return true
5607
+ }
5608
+ }
5609
+ }
5610
+
5611
+ function initComponent (vnode, insertedVnodeQueue) {
5612
+ if (isDef(vnode.data.pendingInsert)) {
5613
+ insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
5614
+ vnode.data.pendingInsert = null;
5615
+ }
5616
+ vnode.elm = vnode.componentInstance.$el;
5617
+ if (isPatchable(vnode)) {
5618
+ invokeCreateHooks(vnode, insertedVnodeQueue);
5619
+ setScope(vnode);
5620
+ } else {
5621
+ // empty component root.
5622
+ // skip all element-related modules except for ref (#3455)
5623
+ registerRef(vnode);
5624
+ // make sure to invoke the insert hook
5625
+ insertedVnodeQueue.push(vnode);
5626
+ }
5627
+ }
5628
+
5629
+ function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
5630
+ var i;
5631
+ // hack for #4339: a reactivated component with inner transition
5632
+ // does not trigger because the inner node's created hooks are not called
5633
+ // again. It's not ideal to involve module-specific logic in here but
5634
+ // there doesn't seem to be a better way to do it.
5635
+ var innerNode = vnode;
5636
+ while (innerNode.componentInstance) {
5637
+ innerNode = innerNode.componentInstance._vnode;
5638
+ if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
5639
+ for (i = 0; i < cbs.activate.length; ++i) {
5640
+ cbs.activate[i](emptyNode, innerNode);
5641
+ }
5642
+ insertedVnodeQueue.push(innerNode);
5643
+ break
5644
+ }
5645
+ }
5646
+ // unlike a newly created component,
5647
+ // a reactivated keep-alive component doesn't insert itself
5648
+ insert(parentElm, vnode.elm, refElm);
5649
+ }
5650
+
5651
+ function insert (parent, elm, ref$$1) {
5652
+ if (isDef(parent)) {
5653
+ if (isDef(ref$$1)) {
5654
+ if (ref$$1.parentNode === parent) {
5655
+ nodeOps.insertBefore(parent, elm, ref$$1);
5656
+ }
5657
+ } else {
5658
+ nodeOps.appendChild(parent, elm);
5659
+ }
5660
+ }
5661
+ }
5662
+
5663
+ function createChildren (vnode, children, insertedVnodeQueue) {
5664
+ if (Array.isArray(children)) {
5665
+ {
5666
+ checkDuplicateKeys(children);
5667
+ }
5668
+ for (var i = 0; i < children.length; ++i) {
5669
+ createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
5670
+ }
5671
+ } else if (isPrimitive(vnode.text)) {
5672
+ nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
5673
+ }
5674
+ }
5675
+
5676
+ function isPatchable (vnode) {
5677
+ while (vnode.componentInstance) {
5678
+ vnode = vnode.componentInstance._vnode;
5679
+ }
5680
+ return isDef(vnode.tag)
5681
+ }
5682
+
5683
+ function invokeCreateHooks (vnode, insertedVnodeQueue) {
5684
+ for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
5685
+ cbs.create[i$1](emptyNode, vnode);
5686
+ }
5687
+ i = vnode.data.hook; // Reuse variable
5688
+ if (isDef(i)) {
5689
+ if (isDef(i.create)) { i.create(emptyNode, vnode); }
5690
+ if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }
5691
+ }
5692
+ }
5693
+
5694
+ // set scope id attribute for scoped CSS.
5695
+ // this is implemented as a special case to avoid the overhead
5696
+ // of going through the normal attribute patching process.
5697
+ function setScope (vnode) {
5698
+ var i;
5699
+ if (isDef(i = vnode.fnScopeId)) {
5700
+ nodeOps.setStyleScope(vnode.elm, i);
5701
+ } else {
5702
+ var ancestor = vnode;
5703
+ while (ancestor) {
5704
+ if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
5705
+ nodeOps.setStyleScope(vnode.elm, i);
5706
+ }
5707
+ ancestor = ancestor.parent;
5708
+ }
5709
+ }
5710
+ // for slot content they should also get the scopeId from the host instance.
5711
+ if (isDef(i = activeInstance) &&
5712
+ i !== vnode.context &&
5713
+ i !== vnode.fnContext &&
5714
+ isDef(i = i.$options._scopeId)
5715
+ ) {
5716
+ nodeOps.setStyleScope(vnode.elm, i);
5717
+ }
5718
+ }
5719
+
5720
+ function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
5721
+ for (; startIdx <= endIdx; ++startIdx) {
5722
+ createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
5723
+ }
5724
+ }
5725
+
5726
+ function invokeDestroyHook (vnode) {
5727
+ var i, j;
5728
+ var data = vnode.data;
5729
+ if (isDef(data)) {
5730
+ if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
5731
+ for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
5732
+ }
5733
+ if (isDef(i = vnode.children)) {
5734
+ for (j = 0; j < vnode.children.length; ++j) {
5735
+ invokeDestroyHook(vnode.children[j]);
5736
+ }
5737
+ }
5738
+ }
5739
+
5740
+ function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
5741
+ for (; startIdx <= endIdx; ++startIdx) {
5742
+ var ch = vnodes[startIdx];
5743
+ if (isDef(ch)) {
5744
+ if (isDef(ch.tag)) {
5745
+ removeAndInvokeRemoveHook(ch);
5746
+ invokeDestroyHook(ch);
5747
+ } else { // Text node
5748
+ removeNode(ch.elm);
5749
+ }
5750
+ }
5751
+ }
5752
+ }
5753
+
5754
+ function removeAndInvokeRemoveHook (vnode, rm) {
5755
+ if (isDef(rm) || isDef(vnode.data)) {
5756
+ var i;
5757
+ var listeners = cbs.remove.length + 1;
5758
+ if (isDef(rm)) {
5759
+ // we have a recursively passed down rm callback
5760
+ // increase the listeners count
5761
+ rm.listeners += listeners;
5762
+ } else {
5763
+ // directly removing
5764
+ rm = createRmCb(vnode.elm, listeners);
5765
+ }
5766
+ // recursively invoke hooks on child component root node
5767
+ if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
5768
+ removeAndInvokeRemoveHook(i, rm);
5769
+ }
5770
+ for (i = 0; i < cbs.remove.length; ++i) {
5771
+ cbs.remove[i](vnode, rm);
5772
+ }
5773
+ if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
5774
+ i(vnode, rm);
5775
+ } else {
5776
+ rm();
5777
+ }
5778
+ } else {
5779
+ removeNode(vnode.elm);
5780
+ }
5781
+ }
5782
+
5783
+ function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
5784
+ var oldStartIdx = 0;
5785
+ var newStartIdx = 0;
5786
+ var oldEndIdx = oldCh.length - 1;
5787
+ var oldStartVnode = oldCh[0];
5788
+ var oldEndVnode = oldCh[oldEndIdx];
5789
+ var newEndIdx = newCh.length - 1;
5790
+ var newStartVnode = newCh[0];
5791
+ var newEndVnode = newCh[newEndIdx];
5792
+ var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
5793
+
5794
+ // removeOnly is a special flag used only by <transition-group>
5795
+ // to ensure removed elements stay in correct relative positions
5796
+ // during leaving transitions
5797
+ var canMove = !removeOnly;
5798
+
5799
+ {
5800
+ checkDuplicateKeys(newCh);
5801
+ }
5802
+
5803
+ while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
5804
+ if (isUndef(oldStartVnode)) {
5805
+ oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
5806
+ } else if (isUndef(oldEndVnode)) {
5807
+ oldEndVnode = oldCh[--oldEndIdx];
5808
+ } else if (sameVnode(oldStartVnode, newStartVnode)) {
5809
+ patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
5810
+ oldStartVnode = oldCh[++oldStartIdx];
5811
+ newStartVnode = newCh[++newStartIdx];
5812
+ } else if (sameVnode(oldEndVnode, newEndVnode)) {
5813
+ patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
5814
+ oldEndVnode = oldCh[--oldEndIdx];
5815
+ newEndVnode = newCh[--newEndIdx];
5816
+ } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
5817
+ patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
5818
+ canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
5819
+ oldStartVnode = oldCh[++oldStartIdx];
5820
+ newEndVnode = newCh[--newEndIdx];
5821
+ } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
5822
+ patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
5823
+ canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
5824
+ oldEndVnode = oldCh[--oldEndIdx];
5825
+ newStartVnode = newCh[++newStartIdx];
5826
+ } else {
5827
+ if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
5828
+ idxInOld = isDef(newStartVnode.key)
5829
+ ? oldKeyToIdx[newStartVnode.key]
5830
+ : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
5831
+ if (isUndef(idxInOld)) { // New element
5832
+ createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
5833
+ } else {
5834
+ vnodeToMove = oldCh[idxInOld];
5835
+ if (sameVnode(vnodeToMove, newStartVnode)) {
5836
+ patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);
5837
+ oldCh[idxInOld] = undefined;
5838
+ canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
5839
+ } else {
5840
+ // same key but different element. treat as new element
5841
+ createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
5842
+ }
5843
+ }
5844
+ newStartVnode = newCh[++newStartIdx];
5845
+ }
5846
+ }
5847
+ if (oldStartIdx > oldEndIdx) {
5848
+ refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
5849
+ addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
5850
+ } else if (newStartIdx > newEndIdx) {
5851
+ removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
5852
+ }
5853
+ }
5854
+
5855
+ function checkDuplicateKeys (children) {
5856
+ var seenKeys = {};
5857
+ for (var i = 0; i < children.length; i++) {
5858
+ var vnode = children[i];
5859
+ var key = vnode.key;
5860
+ if (isDef(key)) {
5861
+ if (seenKeys[key]) {
5862
+ warn(
5863
+ ("Duplicate keys detected: '" + key + "'. This may cause an update error."),
5864
+ vnode.context
5865
+ );
5866
+ } else {
5867
+ seenKeys[key] = true;
5868
+ }
5869
+ }
5870
+ }
5871
+ }
5872
+
5873
+ function findIdxInOld (node, oldCh, start, end) {
5874
+ for (var i = start; i < end; i++) {
5875
+ var c = oldCh[i];
5876
+ if (isDef(c) && sameVnode(node, c)) { return i }
5877
+ }
5878
+ }
5879
+
5880
+ function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
5881
+ if (oldVnode === vnode) {
5882
+ return
5883
+ }
5884
+
5885
+ var elm = vnode.elm = oldVnode.elm;
5886
+
5887
+ if (isTrue(oldVnode.isAsyncPlaceholder)) {
5888
+ if (isDef(vnode.asyncFactory.resolved)) {
5889
+ hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
5890
+ } else {
5891
+ vnode.isAsyncPlaceholder = true;
5892
+ }
5893
+ return
5894
+ }
5895
+
5896
+ // reuse element for static trees.
5897
+ // note we only do this if the vnode is cloned -
5898
+ // if the new node is not cloned it means the render functions have been
5899
+ // reset by the hot-reload-api and we need to do a proper re-render.
5900
+ if (isTrue(vnode.isStatic) &&
5901
+ isTrue(oldVnode.isStatic) &&
5902
+ vnode.key === oldVnode.key &&
5903
+ (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))
5904
+ ) {
5905
+ vnode.componentInstance = oldVnode.componentInstance;
5906
+ return
5907
+ }
5908
+
5909
+ var i;
5910
+ var data = vnode.data;
5911
+ if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
5912
+ i(oldVnode, vnode);
5913
+ }
5914
+
5915
+ var oldCh = oldVnode.children;
5916
+ var ch = vnode.children;
5917
+ if (isDef(data) && isPatchable(vnode)) {
5918
+ for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
5919
+ if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
5920
+ }
5921
+ if (isUndef(vnode.text)) {
5922
+ if (isDef(oldCh) && isDef(ch)) {
5923
+ if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
5924
+ } else if (isDef(ch)) {
5925
+ if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
5926
+ addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
5927
+ } else if (isDef(oldCh)) {
5928
+ removeVnodes(elm, oldCh, 0, oldCh.length - 1);
5929
+ } else if (isDef(oldVnode.text)) {
5930
+ nodeOps.setTextContent(elm, '');
5931
+ }
5932
+ } else if (oldVnode.text !== vnode.text) {
5933
+ nodeOps.setTextContent(elm, vnode.text);
5934
+ }
5935
+ if (isDef(data)) {
5936
+ if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
5937
+ }
5938
+ }
5939
+
5940
+ function invokeInsertHook (vnode, queue, initial) {
5941
+ // delay insert hooks for component root nodes, invoke them after the
5942
+ // element is really inserted
5943
+ if (isTrue(initial) && isDef(vnode.parent)) {
5944
+ vnode.parent.data.pendingInsert = queue;
5945
+ } else {
5946
+ for (var i = 0; i < queue.length; ++i) {
5947
+ queue[i].data.hook.insert(queue[i]);
5948
+ }
5949
+ }
5950
+ }
5951
+
5952
+ var hydrationBailed = false;
5953
+ // list of modules that can skip create hook during hydration because they
5954
+ // are already rendered on the client or has no need for initialization
5955
+ // Note: style is excluded because it relies on initial clone for future
5956
+ // deep updates (#7063).
5957
+ var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
5958
+
5959
+ // Note: this is a browser-only function so we can assume elms are DOM nodes.
5960
+ function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {
5961
+ var i;
5962
+ var tag = vnode.tag;
5963
+ var data = vnode.data;
5964
+ var children = vnode.children;
5965
+ inVPre = inVPre || (data && data.pre);
5966
+ vnode.elm = elm;
5967
+
5968
+ if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
5969
+ vnode.isAsyncPlaceholder = true;
5970
+ return true
5971
+ }
5972
+ // assert node match
5973
+ {
5974
+ if (!assertNodeMatch(elm, vnode, inVPre)) {
5975
+ return false
5976
+ }
5977
+ }
5978
+ if (isDef(data)) {
5979
+ if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
5980
+ if (isDef(i = vnode.componentInstance)) {
5981
+ // child component. it should have hydrated its own tree.
5982
+ initComponent(vnode, insertedVnodeQueue);
5983
+ return true
5984
+ }
5985
+ }
5986
+ if (isDef(tag)) {
5987
+ if (isDef(children)) {
5988
+ // empty element, allow client to pick up and populate children
5989
+ if (!elm.hasChildNodes()) {
5990
+ createChildren(vnode, children, insertedVnodeQueue);
5991
+ } else {
5992
+ // v-html and domProps: innerHTML
5993
+ if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
5994
+ if (i !== elm.innerHTML) {
5995
+ /* istanbul ignore if */
5996
+ if ("development" !== 'production' &&
5997
+ typeof console !== 'undefined' &&
5998
+ !hydrationBailed
5999
+ ) {
6000
+ hydrationBailed = true;
6001
+ console.warn('Parent: ', elm);
6002
+ console.warn('server innerHTML: ', i);
6003
+ console.warn('client innerHTML: ', elm.innerHTML);
6004
+ }
6005
+ return false
6006
+ }
6007
+ } else {
6008
+ // iterate and compare children lists
6009
+ var childrenMatch = true;
6010
+ var childNode = elm.firstChild;
6011
+ for (var i$1 = 0; i$1 < children.length; i$1++) {
6012
+ if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
6013
+ childrenMatch = false;
6014
+ break
6015
+ }
6016
+ childNode = childNode.nextSibling;
6017
+ }
6018
+ // if childNode is not null, it means the actual childNodes list is
6019
+ // longer than the virtual children list.
6020
+ if (!childrenMatch || childNode) {
6021
+ /* istanbul ignore if */
6022
+ if ("development" !== 'production' &&
6023
+ typeof console !== 'undefined' &&
6024
+ !hydrationBailed
6025
+ ) {
6026
+ hydrationBailed = true;
6027
+ console.warn('Parent: ', elm);
6028
+ console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
6029
+ }
6030
+ return false
6031
+ }
6032
+ }
6033
+ }
6034
+ }
6035
+ if (isDef(data)) {
6036
+ var fullInvoke = false;
6037
+ for (var key in data) {
6038
+ if (!isRenderedModule(key)) {
6039
+ fullInvoke = true;
6040
+ invokeCreateHooks(vnode, insertedVnodeQueue);
6041
+ break
6042
+ }
6043
+ }
6044
+ if (!fullInvoke && data['class']) {
6045
+ // ensure collecting deps for deep class bindings for future updates
6046
+ traverse(data['class']);
6047
+ }
6048
+ }
6049
+ } else if (elm.data !== vnode.text) {
6050
+ elm.data = vnode.text;
6051
+ }
6052
+ return true
6053
+ }
6054
+
6055
+ function assertNodeMatch (node, vnode, inVPre) {
6056
+ if (isDef(vnode.tag)) {
6057
+ return vnode.tag.indexOf('vue-component') === 0 || (
6058
+ !isUnknownElement$$1(vnode, inVPre) &&
6059
+ vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
6060
+ )
6061
+ } else {
6062
+ return node.nodeType === (vnode.isComment ? 8 : 3)
6063
+ }
6064
+ }
6065
+
6066
+ return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
6067
+ if (isUndef(vnode)) {
6068
+ if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }
6069
+ return
6070
+ }
6071
+
6072
+ var isInitialPatch = false;
6073
+ var insertedVnodeQueue = [];
6074
+
6075
+ if (isUndef(oldVnode)) {
6076
+ // empty mount (likely as component), create new root element
6077
+ isInitialPatch = true;
6078
+ createElm(vnode, insertedVnodeQueue, parentElm, refElm);
6079
+ } else {
6080
+ var isRealElement = isDef(oldVnode.nodeType);
6081
+ if (!isRealElement && sameVnode(oldVnode, vnode)) {
6082
+ // patch existing root node
6083
+ patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
6084
+ } else {
6085
+ if (isRealElement) {
6086
+ // mounting to a real element
6087
+ // check if this is server-rendered content and if we can perform
6088
+ // a successful hydration.
6089
+ if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
6090
+ oldVnode.removeAttribute(SSR_ATTR);
6091
+ hydrating = true;
6092
+ }
6093
+ if (isTrue(hydrating)) {
6094
+ if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
6095
+ invokeInsertHook(vnode, insertedVnodeQueue, true);
6096
+ return oldVnode
6097
+ } else {
6098
+ warn(
6099
+ 'The client-side rendered virtual DOM tree is not matching ' +
6100
+ 'server-rendered content. This is likely caused by incorrect ' +
6101
+ 'HTML markup, for example nesting block-level elements inside ' +
6102
+ '<p>, or missing <tbody>. Bailing hydration and performing ' +
6103
+ 'full client-side render.'
6104
+ );
6105
+ }
6106
+ }
6107
+ // either not server-rendered, or hydration failed.
6108
+ // create an empty node and replace it
6109
+ oldVnode = emptyNodeAt(oldVnode);
6110
+ }
6111
+
6112
+ // replacing existing element
6113
+ var oldElm = oldVnode.elm;
6114
+ var parentElm$1 = nodeOps.parentNode(oldElm);
6115
+
6116
+ // create new node
6117
+ createElm(
6118
+ vnode,
6119
+ insertedVnodeQueue,
6120
+ // extremely rare edge case: do not insert if old element is in a
6121
+ // leaving transition. Only happens when combining transition +
6122
+ // keep-alive + HOCs. (#4590)
6123
+ oldElm._leaveCb ? null : parentElm$1,
6124
+ nodeOps.nextSibling(oldElm)
6125
+ );
6126
+
6127
+ // update parent placeholder node element, recursively
6128
+ if (isDef(vnode.parent)) {
6129
+ var ancestor = vnode.parent;
6130
+ var patchable = isPatchable(vnode);
6131
+ while (ancestor) {
6132
+ for (var i = 0; i < cbs.destroy.length; ++i) {
6133
+ cbs.destroy[i](ancestor);
6134
+ }
6135
+ ancestor.elm = vnode.elm;
6136
+ if (patchable) {
6137
+ for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
6138
+ cbs.create[i$1](emptyNode, ancestor);
6139
+ }
6140
+ // #6513
6141
+ // invoke insert hooks that may have been merged by create hooks.
6142
+ // e.g. for directives that uses the "inserted" hook.
6143
+ var insert = ancestor.data.hook.insert;
6144
+ if (insert.merged) {
6145
+ // start at index 1 to avoid re-invoking component mounted hook
6146
+ for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {
6147
+ insert.fns[i$2]();
6148
+ }
6149
+ }
6150
+ } else {
6151
+ registerRef(ancestor);
6152
+ }
6153
+ ancestor = ancestor.parent;
6154
+ }
6155
+ }
6156
+
6157
+ // destroy old node
6158
+ if (isDef(parentElm$1)) {
6159
+ removeVnodes(parentElm$1, [oldVnode], 0, 0);
6160
+ } else if (isDef(oldVnode.tag)) {
6161
+ invokeDestroyHook(oldVnode);
6162
+ }
6163
+ }
6164
+ }
6165
+
6166
+ invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
6167
+ return vnode.elm
6168
+ }
6169
+ }
6170
+
6171
+ /* */
6172
+
6173
+ var directives = {
6174
+ create: updateDirectives,
6175
+ update: updateDirectives,
6176
+ destroy: function unbindDirectives (vnode) {
6177
+ updateDirectives(vnode, emptyNode);
6178
+ }
6179
+ }
6180
+
6181
+ function updateDirectives (oldVnode, vnode) {
6182
+ if (oldVnode.data.directives || vnode.data.directives) {
6183
+ _update(oldVnode, vnode);
6184
+ }
6185
+ }
6186
+
6187
+ function _update (oldVnode, vnode) {
6188
+ var isCreate = oldVnode === emptyNode;
6189
+ var isDestroy = vnode === emptyNode;
6190
+ var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
6191
+ var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
6192
+
6193
+ var dirsWithInsert = [];
6194
+ var dirsWithPostpatch = [];
6195
+
6196
+ var key, oldDir, dir;
6197
+ for (key in newDirs) {
6198
+ oldDir = oldDirs[key];
6199
+ dir = newDirs[key];
6200
+ if (!oldDir) {
6201
+ // new directive, bind
6202
+ callHook$1(dir, 'bind', vnode, oldVnode);
6203
+ if (dir.def && dir.def.inserted) {
6204
+ dirsWithInsert.push(dir);
6205
+ }
6206
+ } else {
6207
+ // existing directive, update
6208
+ dir.oldValue = oldDir.value;
6209
+ callHook$1(dir, 'update', vnode, oldVnode);
6210
+ if (dir.def && dir.def.componentUpdated) {
6211
+ dirsWithPostpatch.push(dir);
6212
+ }
6213
+ }
6214
+ }
6215
+
6216
+ if (dirsWithInsert.length) {
6217
+ var callInsert = function () {
6218
+ for (var i = 0; i < dirsWithInsert.length; i++) {
6219
+ callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
6220
+ }
6221
+ };
6222
+ if (isCreate) {
6223
+ mergeVNodeHook(vnode, 'insert', callInsert);
6224
+ } else {
6225
+ callInsert();
6226
+ }
6227
+ }
6228
+
6229
+ if (dirsWithPostpatch.length) {
6230
+ mergeVNodeHook(vnode, 'postpatch', function () {
6231
+ for (var i = 0; i < dirsWithPostpatch.length; i++) {
6232
+ callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
6233
+ }
6234
+ });
6235
+ }
6236
+
6237
+ if (!isCreate) {
6238
+ for (key in oldDirs) {
6239
+ if (!newDirs[key]) {
6240
+ // no longer present, unbind
6241
+ callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
6242
+ }
6243
+ }
6244
+ }
6245
+ }
6246
+
6247
+ var emptyModifiers = Object.create(null);
6248
+
6249
+ function normalizeDirectives$1 (
6250
+ dirs,
6251
+ vm
6252
+ ) {
6253
+ var res = Object.create(null);
6254
+ if (!dirs) {
6255
+ // $flow-disable-line
6256
+ return res
6257
+ }
6258
+ var i, dir;
6259
+ for (i = 0; i < dirs.length; i++) {
6260
+ dir = dirs[i];
6261
+ if (!dir.modifiers) {
6262
+ // $flow-disable-line
6263
+ dir.modifiers = emptyModifiers;
6264
+ }
6265
+ res[getRawDirName(dir)] = dir;
6266
+ dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
6267
+ }
6268
+ // $flow-disable-line
6269
+ return res
6270
+ }
6271
+
6272
+ function getRawDirName (dir) {
6273
+ return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
6274
+ }
6275
+
6276
+ function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
6277
+ var fn = dir.def && dir.def[hook];
6278
+ if (fn) {
6279
+ try {
6280
+ fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
6281
+ } catch (e) {
6282
+ handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook"));
6283
+ }
6284
+ }
6285
+ }
6286
+
6287
+ var baseModules = [
6288
+ ref,
6289
+ directives
6290
+ ]
6291
+
6292
+ /* */
6293
+
6294
+ function updateAttrs (oldVnode, vnode) {
6295
+ var opts = vnode.componentOptions;
6296
+ if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
6297
+ return
6298
+ }
6299
+ if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
6300
+ return
6301
+ }
6302
+ var key, cur, old;
6303
+ var elm = vnode.elm;
6304
+ var oldAttrs = oldVnode.data.attrs || {};
6305
+ var attrs = vnode.data.attrs || {};
6306
+ // clone observed objects, as the user probably wants to mutate it
6307
+ if (isDef(attrs.__ob__)) {
6308
+ attrs = vnode.data.attrs = extend({}, attrs);
6309
+ }
6310
+
6311
+ for (key in attrs) {
6312
+ cur = attrs[key];
6313
+ old = oldAttrs[key];
6314
+ if (old !== cur) {
6315
+ setAttr(elm, key, cur);
6316
+ }
6317
+ }
6318
+ // #4391: in IE9, setting type can reset value for input[type=radio]
6319
+ // #6666: IE/Edge forces progress value down to 1 before setting a max
6320
+ /* istanbul ignore if */
6321
+ if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
6322
+ setAttr(elm, 'value', attrs.value);
6323
+ }
6324
+ for (key in oldAttrs) {
6325
+ if (isUndef(attrs[key])) {
6326
+ if (isXlink(key)) {
6327
+ elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
6328
+ } else if (!isEnumeratedAttr(key)) {
6329
+ elm.removeAttribute(key);
6330
+ }
6331
+ }
6332
+ }
6333
+ }
6334
+
6335
+ function setAttr (el, key, value) {
6336
+ if (el.tagName.indexOf('-') > -1) {
6337
+ baseSetAttr(el, key, value);
6338
+ } else if (isBooleanAttr(key)) {
6339
+ // set attribute for blank value
6340
+ // e.g. <option disabled>Select one</option>
6341
+ if (isFalsyAttrValue(value)) {
6342
+ el.removeAttribute(key);
6343
+ } else {
6344
+ // technically allowfullscreen is a boolean attribute for <iframe>,
6345
+ // but Flash expects a value of "true" when used on <embed> tag
6346
+ value = key === 'allowfullscreen' && el.tagName === 'EMBED'
6347
+ ? 'true'
6348
+ : key;
6349
+ el.setAttribute(key, value);
6350
+ }
6351
+ } else if (isEnumeratedAttr(key)) {
6352
+ el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
6353
+ } else if (isXlink(key)) {
6354
+ if (isFalsyAttrValue(value)) {
6355
+ el.removeAttributeNS(xlinkNS, getXlinkProp(key));
6356
+ } else {
6357
+ el.setAttributeNS(xlinkNS, key, value);
6358
+ }
6359
+ } else {
6360
+ baseSetAttr(el, key, value);
6361
+ }
6362
+ }
6363
+
6364
+ function baseSetAttr (el, key, value) {
6365
+ if (isFalsyAttrValue(value)) {
6366
+ el.removeAttribute(key);
6367
+ } else {
6368
+ // #7138: IE10 & 11 fires input event when setting placeholder on
6369
+ // <textarea>... block the first input event and remove the blocker
6370
+ // immediately.
6371
+ /* istanbul ignore if */
6372
+ if (
6373
+ isIE && !isIE9 &&
6374
+ el.tagName === 'TEXTAREA' &&
6375
+ key === 'placeholder' && !el.__ieph
6376
+ ) {
6377
+ var blocker = function (e) {
6378
+ e.stopImmediatePropagation();
6379
+ el.removeEventListener('input', blocker);
6380
+ };
6381
+ el.addEventListener('input', blocker);
6382
+ // $flow-disable-line
6383
+ el.__ieph = true; /* IE placeholder patched */
6384
+ }
6385
+ el.setAttribute(key, value);
6386
+ }
6387
+ }
6388
+
6389
+ var attrs = {
6390
+ create: updateAttrs,
6391
+ update: updateAttrs
6392
+ }
6393
+
6394
+ /* */
6395
+
6396
+ function updateClass (oldVnode, vnode) {
6397
+ var el = vnode.elm;
6398
+ var data = vnode.data;
6399
+ var oldData = oldVnode.data;
6400
+ if (
6401
+ isUndef(data.staticClass) &&
6402
+ isUndef(data.class) && (
6403
+ isUndef(oldData) || (
6404
+ isUndef(oldData.staticClass) &&
6405
+ isUndef(oldData.class)
6406
+ )
6407
+ )
6408
+ ) {
6409
+ return
6410
+ }
6411
+
6412
+ var cls = genClassForVnode(vnode);
6413
+
6414
+ // handle transition classes
6415
+ var transitionClass = el._transitionClasses;
6416
+ if (isDef(transitionClass)) {
6417
+ cls = concat(cls, stringifyClass(transitionClass));
6418
+ }
6419
+
6420
+ // set the class
6421
+ if (cls !== el._prevClass) {
6422
+ el.setAttribute('class', cls);
6423
+ el._prevClass = cls;
6424
+ }
6425
+ }
6426
+
6427
+ var klass = {
6428
+ create: updateClass,
6429
+ update: updateClass
6430
+ }
6431
+
6432
+ /* */
6433
+
6434
+ var validDivisionCharRE = /[\w).+\-_$\]]/;
6435
+
6436
+ function parseFilters (exp) {
6437
+ var inSingle = false;
6438
+ var inDouble = false;
6439
+ var inTemplateString = false;
6440
+ var inRegex = false;
6441
+ var curly = 0;
6442
+ var square = 0;
6443
+ var paren = 0;
6444
+ var lastFilterIndex = 0;
6445
+ var c, prev, i, expression, filters;
6446
+
6447
+ for (i = 0; i < exp.length; i++) {
6448
+ prev = c;
6449
+ c = exp.charCodeAt(i);
6450
+ if (inSingle) {
6451
+ if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
6452
+ } else if (inDouble) {
6453
+ if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
6454
+ } else if (inTemplateString) {
6455
+ if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
6456
+ } else if (inRegex) {
6457
+ if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
6458
+ } else if (
6459
+ c === 0x7C && // pipe
6460
+ exp.charCodeAt(i + 1) !== 0x7C &&
6461
+ exp.charCodeAt(i - 1) !== 0x7C &&
6462
+ !curly && !square && !paren
6463
+ ) {
6464
+ if (expression === undefined) {
6465
+ // first filter, end of expression
6466
+ lastFilterIndex = i + 1;
6467
+ expression = exp.slice(0, i).trim();
6468
+ } else {
6469
+ pushFilter();
6470
+ }
6471
+ } else {
6472
+ switch (c) {
6473
+ case 0x22: inDouble = true; break // "
6474
+ case 0x27: inSingle = true; break // '
6475
+ case 0x60: inTemplateString = true; break // `
6476
+ case 0x28: paren++; break // (
6477
+ case 0x29: paren--; break // )
6478
+ case 0x5B: square++; break // [
6479
+ case 0x5D: square--; break // ]
6480
+ case 0x7B: curly++; break // {
6481
+ case 0x7D: curly--; break // }
6482
+ }
6483
+ if (c === 0x2f) { // /
6484
+ var j = i - 1;
6485
+ var p = (void 0);
6486
+ // find first non-whitespace prev char
6487
+ for (; j >= 0; j--) {
6488
+ p = exp.charAt(j);
6489
+ if (p !== ' ') { break }
6490
+ }
6491
+ if (!p || !validDivisionCharRE.test(p)) {
6492
+ inRegex = true;
6493
+ }
6494
+ }
6495
+ }
6496
+ }
6497
+
6498
+ if (expression === undefined) {
6499
+ expression = exp.slice(0, i).trim();
6500
+ } else if (lastFilterIndex !== 0) {
6501
+ pushFilter();
6502
+ }
6503
+
6504
+ function pushFilter () {
6505
+ (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
6506
+ lastFilterIndex = i + 1;
6507
+ }
6508
+
6509
+ if (filters) {
6510
+ for (i = 0; i < filters.length; i++) {
6511
+ expression = wrapFilter(expression, filters[i]);
6512
+ }
6513
+ }
6514
+
6515
+ return expression
6516
+ }
6517
+
6518
+ function wrapFilter (exp, filter) {
6519
+ var i = filter.indexOf('(');
6520
+ if (i < 0) {
6521
+ // _f: resolveFilter
6522
+ return ("_f(\"" + filter + "\")(" + exp + ")")
6523
+ } else {
6524
+ var name = filter.slice(0, i);
6525
+ var args = filter.slice(i + 1);
6526
+ return ("_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args))
6527
+ }
6528
+ }
6529
+
6530
+ /* */
6531
+
6532
+ function baseWarn (msg) {
6533
+ console.error(("[Vue compiler]: " + msg));
6534
+ }
6535
+
6536
+ function pluckModuleFunction (
6537
+ modules,
6538
+ key
6539
+ ) {
6540
+ return modules
6541
+ ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })
6542
+ : []
6543
+ }
6544
+
6545
+ function addProp (el, name, value) {
6546
+ (el.props || (el.props = [])).push({ name: name, value: value });
6547
+ el.plain = false;
6548
+ }
6549
+
6550
+ function addAttr (el, name, value) {
6551
+ (el.attrs || (el.attrs = [])).push({ name: name, value: value });
6552
+ el.plain = false;
6553
+ }
6554
+
6555
+ // add a raw attr (use this in preTransforms)
6556
+ function addRawAttr (el, name, value) {
6557
+ el.attrsMap[name] = value;
6558
+ el.attrsList.push({ name: name, value: value });
6559
+ }
6560
+
6561
+ function addDirective (
6562
+ el,
6563
+ name,
6564
+ rawName,
6565
+ value,
6566
+ arg,
6567
+ modifiers
6568
+ ) {
6569
+ (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });
6570
+ el.plain = false;
6571
+ }
6572
+
6573
+ function addHandler (
6574
+ el,
6575
+ name,
6576
+ value,
6577
+ modifiers,
6578
+ important,
6579
+ warn
6580
+ ) {
6581
+ modifiers = modifiers || emptyObject;
6582
+ // warn prevent and passive modifier
6583
+ /* istanbul ignore if */
6584
+ if (
6585
+ "development" !== 'production' && warn &&
6586
+ modifiers.prevent && modifiers.passive
6587
+ ) {
6588
+ warn(
6589
+ 'passive and prevent can\'t be used together. ' +
6590
+ 'Passive handler can\'t prevent default event.'
6591
+ );
6592
+ }
6593
+
6594
+ // check capture modifier
6595
+ if (modifiers.capture) {
6596
+ delete modifiers.capture;
6597
+ name = '!' + name; // mark the event as captured
6598
+ }
6599
+ if (modifiers.once) {
6600
+ delete modifiers.once;
6601
+ name = '~' + name; // mark the event as once
6602
+ }
6603
+ /* istanbul ignore if */
6604
+ if (modifiers.passive) {
6605
+ delete modifiers.passive;
6606
+ name = '&' + name; // mark the event as passive
6607
+ }
6608
+
6609
+ // normalize click.right and click.middle since they don't actually fire
6610
+ // this is technically browser-specific, but at least for now browsers are
6611
+ // the only target envs that have right/middle clicks.
6612
+ if (name === 'click') {
6613
+ if (modifiers.right) {
6614
+ name = 'contextmenu';
6615
+ delete modifiers.right;
6616
+ } else if (modifiers.middle) {
6617
+ name = 'mouseup';
6618
+ }
6619
+ }
6620
+
6621
+ var events;
6622
+ if (modifiers.native) {
6623
+ delete modifiers.native;
6624
+ events = el.nativeEvents || (el.nativeEvents = {});
6625
+ } else {
6626
+ events = el.events || (el.events = {});
6627
+ }
6628
+
6629
+ var newHandler = {
6630
+ value: value.trim()
6631
+ };
6632
+ if (modifiers !== emptyObject) {
6633
+ newHandler.modifiers = modifiers;
6634
+ }
6635
+
6636
+ var handlers = events[name];
6637
+ /* istanbul ignore if */
6638
+ if (Array.isArray(handlers)) {
6639
+ important ? handlers.unshift(newHandler) : handlers.push(newHandler);
6640
+ } else if (handlers) {
6641
+ events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
6642
+ } else {
6643
+ events[name] = newHandler;
6644
+ }
6645
+
6646
+ el.plain = false;
6647
+ }
6648
+
6649
+ function getBindingAttr (
6650
+ el,
6651
+ name,
6652
+ getStatic
6653
+ ) {
6654
+ var dynamicValue =
6655
+ getAndRemoveAttr(el, ':' + name) ||
6656
+ getAndRemoveAttr(el, 'v-bind:' + name);
6657
+ if (dynamicValue != null) {
6658
+ return parseFilters(dynamicValue)
6659
+ } else if (getStatic !== false) {
6660
+ var staticValue = getAndRemoveAttr(el, name);
6661
+ if (staticValue != null) {
6662
+ return JSON.stringify(staticValue)
6663
+ }
6664
+ }
6665
+ }
6666
+
6667
+ // note: this only removes the attr from the Array (attrsList) so that it
6668
+ // doesn't get processed by processAttrs.
6669
+ // By default it does NOT remove it from the map (attrsMap) because the map is
6670
+ // needed during codegen.
6671
+ function getAndRemoveAttr (
6672
+ el,
6673
+ name,
6674
+ removeFromMap
6675
+ ) {
6676
+ var val;
6677
+ if ((val = el.attrsMap[name]) != null) {
6678
+ var list = el.attrsList;
6679
+ for (var i = 0, l = list.length; i < l; i++) {
6680
+ if (list[i].name === name) {
6681
+ list.splice(i, 1);
6682
+ break
6683
+ }
6684
+ }
6685
+ }
6686
+ if (removeFromMap) {
6687
+ delete el.attrsMap[name];
6688
+ }
6689
+ return val
6690
+ }
6691
+
6692
+ /* */
6693
+
6694
+ /**
6695
+ * Cross-platform code generation for component v-model
6696
+ */
6697
+ function genComponentModel (
6698
+ el,
6699
+ value,
6700
+ modifiers
6701
+ ) {
6702
+ var ref = modifiers || {};
6703
+ var number = ref.number;
6704
+ var trim = ref.trim;
6705
+
6706
+ var baseValueExpression = '$$v';
6707
+ var valueExpression = baseValueExpression;
6708
+ if (trim) {
6709
+ valueExpression =
6710
+ "(typeof " + baseValueExpression + " === 'string'" +
6711
+ "? " + baseValueExpression + ".trim()" +
6712
+ ": " + baseValueExpression + ")";
6713
+ }
6714
+ if (number) {
6715
+ valueExpression = "_n(" + valueExpression + ")";
6716
+ }
6717
+ var assignment = genAssignmentCode(value, valueExpression);
6718
+
6719
+ el.model = {
6720
+ value: ("(" + value + ")"),
6721
+ expression: ("\"" + value + "\""),
6722
+ callback: ("function (" + baseValueExpression + ") {" + assignment + "}")
6723
+ };
6724
+ }
6725
+
6726
+ /**
6727
+ * Cross-platform codegen helper for generating v-model value assignment code.
6728
+ */
6729
+ function genAssignmentCode (
6730
+ value,
6731
+ assignment
6732
+ ) {
6733
+ var res = parseModel(value);
6734
+ if (res.key === null) {
6735
+ return (value + "=" + assignment)
6736
+ } else {
6737
+ return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")")
6738
+ }
6739
+ }
6740
+
6741
+ /**
6742
+ * Parse a v-model expression into a base path and a final key segment.
6743
+ * Handles both dot-path and possible square brackets.
6744
+ *
6745
+ * Possible cases:
6746
+ *
6747
+ * - test
6748
+ * - test[key]
6749
+ * - test[test1[key]]
6750
+ * - test["a"][key]
6751
+ * - xxx.test[a[a].test1[key]]
6752
+ * - test.xxx.a["asa"][test1[key]]
6753
+ *
6754
+ */
6755
+
6756
+ var len;
6757
+ var str;
6758
+ var chr;
6759
+ var index$1;
6760
+ var expressionPos;
6761
+ var expressionEndPos;
6762
+
6763
+
6764
+
6765
+ function parseModel (val) {
6766
+ // Fix https://github.com/vuejs/vue/pull/7730
6767
+ // allow v-model="obj.val " (trailing whitespace)
6768
+ val = val.trim();
6769
+ len = val.length;
6770
+
6771
+ if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
6772
+ index$1 = val.lastIndexOf('.');
6773
+ if (index$1 > -1) {
6774
+ return {
6775
+ exp: val.slice(0, index$1),
6776
+ key: '"' + val.slice(index$1 + 1) + '"'
6777
+ }
6778
+ } else {
6779
+ return {
6780
+ exp: val,
6781
+ key: null
6782
+ }
6783
+ }
6784
+ }
6785
+
6786
+ str = val;
6787
+ index$1 = expressionPos = expressionEndPos = 0;
6788
+
6789
+ while (!eof()) {
6790
+ chr = next();
6791
+ /* istanbul ignore if */
6792
+ if (isStringStart(chr)) {
6793
+ parseString(chr);
6794
+ } else if (chr === 0x5B) {
6795
+ parseBracket(chr);
6796
+ }
6797
+ }
6798
+
6799
+ return {
6800
+ exp: val.slice(0, expressionPos),
6801
+ key: val.slice(expressionPos + 1, expressionEndPos)
6802
+ }
6803
+ }
6804
+
6805
+ function next () {
6806
+ return str.charCodeAt(++index$1)
6807
+ }
6808
+
6809
+ function eof () {
6810
+ return index$1 >= len
6811
+ }
6812
+
6813
+ function isStringStart (chr) {
6814
+ return chr === 0x22 || chr === 0x27
6815
+ }
6816
+
6817
+ function parseBracket (chr) {
6818
+ var inBracket = 1;
6819
+ expressionPos = index$1;
6820
+ while (!eof()) {
6821
+ chr = next();
6822
+ if (isStringStart(chr)) {
6823
+ parseString(chr);
6824
+ continue
6825
+ }
6826
+ if (chr === 0x5B) { inBracket++; }
6827
+ if (chr === 0x5D) { inBracket--; }
6828
+ if (inBracket === 0) {
6829
+ expressionEndPos = index$1;
6830
+ break
6831
+ }
6832
+ }
6833
+ }
6834
+
6835
+ function parseString (chr) {
6836
+ var stringQuote = chr;
6837
+ while (!eof()) {
6838
+ chr = next();
6839
+ if (chr === stringQuote) {
6840
+ break
6841
+ }
6842
+ }
6843
+ }
6844
+
6845
+ /* */
6846
+
6847
+ var warn$1;
6848
+
6849
+ // in some cases, the event used has to be determined at runtime
6850
+ // so we used some reserved tokens during compile.
6851
+ var RANGE_TOKEN = '__r';
6852
+ var CHECKBOX_RADIO_TOKEN = '__c';
6853
+
6854
+ function model (
6855
+ el,
6856
+ dir,
6857
+ _warn
6858
+ ) {
6859
+ warn$1 = _warn;
6860
+ var value = dir.value;
6861
+ var modifiers = dir.modifiers;
6862
+ var tag = el.tag;
6863
+ var type = el.attrsMap.type;
6864
+
6865
+ {
6866
+ // inputs with type="file" are read only and setting the input's
6867
+ // value will throw an error.
6868
+ if (tag === 'input' && type === 'file') {
6869
+ warn$1(
6870
+ "<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" +
6871
+ "File inputs are read only. Use a v-on:change listener instead."
6872
+ );
6873
+ }
6874
+ }
6875
+
6876
+ if (el.component) {
6877
+ genComponentModel(el, value, modifiers);
6878
+ // component v-model doesn't need extra runtime
6879
+ return false
6880
+ } else if (tag === 'select') {
6881
+ genSelect(el, value, modifiers);
6882
+ } else if (tag === 'input' && type === 'checkbox') {
6883
+ genCheckboxModel(el, value, modifiers);
6884
+ } else if (tag === 'input' && type === 'radio') {
6885
+ genRadioModel(el, value, modifiers);
6886
+ } else if (tag === 'input' || tag === 'textarea') {
6887
+ genDefaultModel(el, value, modifiers);
6888
+ } else if (!config.isReservedTag(tag)) {
6889
+ genComponentModel(el, value, modifiers);
6890
+ // component v-model doesn't need extra runtime
6891
+ return false
6892
+ } else {
6893
+ warn$1(
6894
+ "<" + (el.tag) + " v-model=\"" + value + "\">: " +
6895
+ "v-model is not supported on this element type. " +
6896
+ 'If you are working with contenteditable, it\'s recommended to ' +
6897
+ 'wrap a library dedicated for that purpose inside a custom component.'
6898
+ );
6899
+ }
6900
+
6901
+ // ensure runtime directive metadata
6902
+ return true
6903
+ }
6904
+
6905
+ function genCheckboxModel (
6906
+ el,
6907
+ value,
6908
+ modifiers
6909
+ ) {
6910
+ var number = modifiers && modifiers.number;
6911
+ var valueBinding = getBindingAttr(el, 'value') || 'null';
6912
+ var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
6913
+ var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
6914
+ addProp(el, 'checked',
6915
+ "Array.isArray(" + value + ")" +
6916
+ "?_i(" + value + "," + valueBinding + ")>-1" + (
6917
+ trueValueBinding === 'true'
6918
+ ? (":(" + value + ")")
6919
+ : (":_q(" + value + "," + trueValueBinding + ")")
6920
+ )
6921
+ );
6922
+ addHandler(el, 'change',
6923
+ "var $$a=" + value + "," +
6924
+ '$$el=$event.target,' +
6925
+ "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" +
6926
+ 'if(Array.isArray($$a)){' +
6927
+ "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," +
6928
+ '$$i=_i($$a,$$v);' +
6929
+ "if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" +
6930
+ "else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" +
6931
+ "}else{" + (genAssignmentCode(value, '$$c')) + "}",
6932
+ null, true
6933
+ );
6934
+ }
6935
+
6936
+ function genRadioModel (
6937
+ el,
6938
+ value,
6939
+ modifiers
6940
+ ) {
6941
+ var number = modifiers && modifiers.number;
6942
+ var valueBinding = getBindingAttr(el, 'value') || 'null';
6943
+ valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding;
6944
+ addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")"));
6945
+ addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
6946
+ }
6947
+
6948
+ function genSelect (
6949
+ el,
6950
+ value,
6951
+ modifiers
6952
+ ) {
6953
+ var number = modifiers && modifiers.number;
6954
+ var selectedVal = "Array.prototype.filter" +
6955
+ ".call($event.target.options,function(o){return o.selected})" +
6956
+ ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
6957
+ "return " + (number ? '_n(val)' : 'val') + "})";
6958
+
6959
+ var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
6960
+ var code = "var $$selectedVal = " + selectedVal + ";";
6961
+ code = code + " " + (genAssignmentCode(value, assignment));
6962
+ addHandler(el, 'change', code, null, true);
6963
+ }
6964
+
6965
+ function genDefaultModel (
6966
+ el,
6967
+ value,
6968
+ modifiers
6969
+ ) {
6970
+ var type = el.attrsMap.type;
6971
+
6972
+ // warn if v-bind:value conflicts with v-model
6973
+ // except for inputs with v-bind:type
6974
+ {
6975
+ var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
6976
+ var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
6977
+ if (value$1 && !typeBinding) {
6978
+ var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
6979
+ warn$1(
6980
+ binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " +
6981
+ 'because the latter already expands to a value binding internally'
6982
+ );
6983
+ }
6984
+ }
6985
+
6986
+ var ref = modifiers || {};
6987
+ var lazy = ref.lazy;
6988
+ var number = ref.number;
6989
+ var trim = ref.trim;
6990
+ var needCompositionGuard = !lazy && type !== 'range';
6991
+ var event = lazy
6992
+ ? 'change'
6993
+ : type === 'range'
6994
+ ? RANGE_TOKEN
6995
+ : 'input';
6996
+
6997
+ var valueExpression = '$event.target.value';
6998
+ if (trim) {
6999
+ valueExpression = "$event.target.value.trim()";
7000
+ }
7001
+ if (number) {
7002
+ valueExpression = "_n(" + valueExpression + ")";
7003
+ }
7004
+
7005
+ var code = genAssignmentCode(value, valueExpression);
7006
+ if (needCompositionGuard) {
7007
+ code = "if($event.target.composing)return;" + code;
7008
+ }
7009
+
7010
+ addProp(el, 'value', ("(" + value + ")"));
7011
+ addHandler(el, event, code, null, true);
7012
+ if (trim || number) {
7013
+ addHandler(el, 'blur', '$forceUpdate()');
7014
+ }
7015
+ }
7016
+
7017
+ /* */
7018
+
7019
+ // normalize v-model event tokens that can only be determined at runtime.
7020
+ // it's important to place the event as the first in the array because
7021
+ // the whole point is ensuring the v-model callback gets called before
7022
+ // user-attached handlers.
7023
+ function normalizeEvents (on) {
7024
+ /* istanbul ignore if */
7025
+ if (isDef(on[RANGE_TOKEN])) {
7026
+ // IE input[type=range] only supports `change` event
7027
+ var event = isIE ? 'change' : 'input';
7028
+ on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
7029
+ delete on[RANGE_TOKEN];
7030
+ }
7031
+ // This was originally intended to fix #4521 but no longer necessary
7032
+ // after 2.5. Keeping it for backwards compat with generated code from < 2.4
7033
+ /* istanbul ignore if */
7034
+ if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
7035
+ on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
7036
+ delete on[CHECKBOX_RADIO_TOKEN];
7037
+ }
7038
+ }
7039
+
7040
+ var target$1;
7041
+
7042
+ function createOnceHandler (handler, event, capture) {
7043
+ var _target = target$1; // save current target element in closure
7044
+ return function onceHandler () {
7045
+ var res = handler.apply(null, arguments);
7046
+ if (res !== null) {
7047
+ remove$2(event, onceHandler, capture, _target);
7048
+ }
7049
+ }
7050
+ }
7051
+
7052
+ function add$1 (
7053
+ event,
7054
+ handler,
7055
+ once$$1,
7056
+ capture,
7057
+ passive
7058
+ ) {
7059
+ handler = withMacroTask(handler);
7060
+ if (once$$1) { handler = createOnceHandler(handler, event, capture); }
7061
+ target$1.addEventListener(
7062
+ event,
7063
+ handler,
7064
+ supportsPassive
7065
+ ? { capture: capture, passive: passive }
7066
+ : capture
7067
+ );
7068
+ }
7069
+
7070
+ function remove$2 (
7071
+ event,
7072
+ handler,
7073
+ capture,
7074
+ _target
7075
+ ) {
7076
+ (_target || target$1).removeEventListener(
7077
+ event,
7078
+ handler._withTask || handler,
7079
+ capture
7080
+ );
7081
+ }
7082
+
7083
+ function updateDOMListeners (oldVnode, vnode) {
7084
+ if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
7085
+ return
7086
+ }
7087
+ var on = vnode.data.on || {};
7088
+ var oldOn = oldVnode.data.on || {};
7089
+ target$1 = vnode.elm;
7090
+ normalizeEvents(on);
7091
+ updateListeners(on, oldOn, add$1, remove$2, vnode.context);
7092
+ target$1 = undefined;
7093
+ }
7094
+
7095
+ var events = {
7096
+ create: updateDOMListeners,
7097
+ update: updateDOMListeners
7098
+ }
7099
+
7100
+ /* */
7101
+
7102
+ function updateDOMProps (oldVnode, vnode) {
7103
+ if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
7104
+ return
7105
+ }
7106
+ var key, cur;
7107
+ var elm = vnode.elm;
7108
+ var oldProps = oldVnode.data.domProps || {};
7109
+ var props = vnode.data.domProps || {};
7110
+ // clone observed objects, as the user probably wants to mutate it
7111
+ if (isDef(props.__ob__)) {
7112
+ props = vnode.data.domProps = extend({}, props);
7113
+ }
7114
+
7115
+ for (key in oldProps) {
7116
+ if (isUndef(props[key])) {
7117
+ elm[key] = '';
7118
+ }
7119
+ }
7120
+ for (key in props) {
7121
+ cur = props[key];
7122
+ // ignore children if the node has textContent or innerHTML,
7123
+ // as these will throw away existing DOM nodes and cause removal errors
7124
+ // on subsequent patches (#3360)
7125
+ if (key === 'textContent' || key === 'innerHTML') {
7126
+ if (vnode.children) { vnode.children.length = 0; }
7127
+ if (cur === oldProps[key]) { continue }
7128
+ // #6601 work around Chrome version <= 55 bug where single textNode
7129
+ // replaced by innerHTML/textContent retains its parentNode property
7130
+ if (elm.childNodes.length === 1) {
7131
+ elm.removeChild(elm.childNodes[0]);
7132
+ }
7133
+ }
7134
+
7135
+ if (key === 'value') {
7136
+ // store value as _value as well since
7137
+ // non-string values will be stringified
7138
+ elm._value = cur;
7139
+ // avoid resetting cursor position when value is the same
7140
+ var strCur = isUndef(cur) ? '' : String(cur);
7141
+ if (shouldUpdateValue(elm, strCur)) {
7142
+ elm.value = strCur;
7143
+ }
7144
+ } else {
7145
+ elm[key] = cur;
7146
+ }
7147
+ }
7148
+ }
7149
+
7150
+ // check platforms/web/util/attrs.js acceptValue
7151
+
7152
+
7153
+ function shouldUpdateValue (elm, checkVal) {
7154
+ return (!elm.composing && (
7155
+ elm.tagName === 'OPTION' ||
7156
+ isNotInFocusAndDirty(elm, checkVal) ||
7157
+ isDirtyWithModifiers(elm, checkVal)
7158
+ ))
7159
+ }
7160
+
7161
+ function isNotInFocusAndDirty (elm, checkVal) {
7162
+ // return true when textbox (.number and .trim) loses focus and its value is
7163
+ // not equal to the updated value
7164
+ var notInFocus = true;
7165
+ // #6157
7166
+ // work around IE bug when accessing document.activeElement in an iframe
7167
+ try { notInFocus = document.activeElement !== elm; } catch (e) {}
7168
+ return notInFocus && elm.value !== checkVal
7169
+ }
7170
+
7171
+ function isDirtyWithModifiers (elm, newVal) {
7172
+ var value = elm.value;
7173
+ var modifiers = elm._vModifiers; // injected by v-model runtime
7174
+ if (isDef(modifiers)) {
7175
+ if (modifiers.lazy) {
7176
+ // inputs with lazy should only be updated when not in focus
7177
+ return false
7178
+ }
7179
+ if (modifiers.number) {
7180
+ return toNumber(value) !== toNumber(newVal)
7181
+ }
7182
+ if (modifiers.trim) {
7183
+ return value.trim() !== newVal.trim()
7184
+ }
7185
+ }
7186
+ return value !== newVal
7187
+ }
7188
+
7189
+ var domProps = {
7190
+ create: updateDOMProps,
7191
+ update: updateDOMProps
7192
+ }
7193
+
7194
+ /* */
7195
+
7196
+ var parseStyleText = cached(function (cssText) {
7197
+ var res = {};
7198
+ var listDelimiter = /;(?![^(]*\))/g;
7199
+ var propertyDelimiter = /:(.+)/;
7200
+ cssText.split(listDelimiter).forEach(function (item) {
7201
+ if (item) {
7202
+ var tmp = item.split(propertyDelimiter);
7203
+ tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
7204
+ }
7205
+ });
7206
+ return res
7207
+ });
7208
+
7209
+ // merge static and dynamic style data on the same vnode
7210
+ function normalizeStyleData (data) {
7211
+ var style = normalizeStyleBinding(data.style);
7212
+ // static style is pre-processed into an object during compilation
7213
+ // and is always a fresh object, so it's safe to merge into it
7214
+ return data.staticStyle
7215
+ ? extend(data.staticStyle, style)
7216
+ : style
7217
+ }
7218
+
7219
+ // normalize possible array / string values into Object
7220
+ function normalizeStyleBinding (bindingStyle) {
7221
+ if (Array.isArray(bindingStyle)) {
7222
+ return toObject(bindingStyle)
7223
+ }
7224
+ if (typeof bindingStyle === 'string') {
7225
+ return parseStyleText(bindingStyle)
7226
+ }
7227
+ return bindingStyle
7228
+ }
7229
+
7230
+ /**
7231
+ * parent component style should be after child's
7232
+ * so that parent component's style could override it
7233
+ */
7234
+ function getStyle (vnode, checkChild) {
7235
+ var res = {};
7236
+ var styleData;
7237
+
7238
+ if (checkChild) {
7239
+ var childNode = vnode;
7240
+ while (childNode.componentInstance) {
7241
+ childNode = childNode.componentInstance._vnode;
7242
+ if (
7243
+ childNode && childNode.data &&
7244
+ (styleData = normalizeStyleData(childNode.data))
7245
+ ) {
7246
+ extend(res, styleData);
7247
+ }
7248
+ }
7249
+ }
7250
+
7251
+ if ((styleData = normalizeStyleData(vnode.data))) {
7252
+ extend(res, styleData);
7253
+ }
7254
+
7255
+ var parentNode = vnode;
7256
+ while ((parentNode = parentNode.parent)) {
7257
+ if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
7258
+ extend(res, styleData);
7259
+ }
7260
+ }
7261
+ return res
7262
+ }
7263
+
7264
+ /* */
7265
+
7266
+ var cssVarRE = /^--/;
7267
+ var importantRE = /\s*!important$/;
7268
+ var setProp = function (el, name, val) {
7269
+ /* istanbul ignore if */
7270
+ if (cssVarRE.test(name)) {
7271
+ el.style.setProperty(name, val);
7272
+ } else if (importantRE.test(val)) {
7273
+ el.style.setProperty(name, val.replace(importantRE, ''), 'important');
7274
+ } else {
7275
+ var normalizedName = normalize(name);
7276
+ if (Array.isArray(val)) {
7277
+ // Support values array created by autoprefixer, e.g.
7278
+ // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
7279
+ // Set them one by one, and the browser will only set those it can recognize
7280
+ for (var i = 0, len = val.length; i < len; i++) {
7281
+ el.style[normalizedName] = val[i];
7282
+ }
7283
+ } else {
7284
+ el.style[normalizedName] = val;
7285
+ }
7286
+ }
7287
+ };
7288
+
7289
+ var vendorNames = ['Webkit', 'Moz', 'ms'];
7290
+
7291
+ var emptyStyle;
7292
+ var normalize = cached(function (prop) {
7293
+ emptyStyle = emptyStyle || document.createElement('div').style;
7294
+ prop = camelize(prop);
7295
+ if (prop !== 'filter' && (prop in emptyStyle)) {
7296
+ return prop
7297
+ }
7298
+ var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
7299
+ for (var i = 0; i < vendorNames.length; i++) {
7300
+ var name = vendorNames[i] + capName;
7301
+ if (name in emptyStyle) {
7302
+ return name
7303
+ }
7304
+ }
7305
+ });
7306
+
7307
+ function updateStyle (oldVnode, vnode) {
7308
+ var data = vnode.data;
7309
+ var oldData = oldVnode.data;
7310
+
7311
+ if (isUndef(data.staticStyle) && isUndef(data.style) &&
7312
+ isUndef(oldData.staticStyle) && isUndef(oldData.style)
7313
+ ) {
7314
+ return
7315
+ }
7316
+
7317
+ var cur, name;
7318
+ var el = vnode.elm;
7319
+ var oldStaticStyle = oldData.staticStyle;
7320
+ var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
7321
+
7322
+ // if static style exists, stylebinding already merged into it when doing normalizeStyleData
7323
+ var oldStyle = oldStaticStyle || oldStyleBinding;
7324
+
7325
+ var style = normalizeStyleBinding(vnode.data.style) || {};
7326
+
7327
+ // store normalized style under a different key for next diff
7328
+ // make sure to clone it if it's reactive, since the user likely wants
7329
+ // to mutate it.
7330
+ vnode.data.normalizedStyle = isDef(style.__ob__)
7331
+ ? extend({}, style)
7332
+ : style;
7333
+
7334
+ var newStyle = getStyle(vnode, true);
7335
+
7336
+ for (name in oldStyle) {
7337
+ if (isUndef(newStyle[name])) {
7338
+ setProp(el, name, '');
7339
+ }
7340
+ }
7341
+ for (name in newStyle) {
7342
+ cur = newStyle[name];
7343
+ if (cur !== oldStyle[name]) {
7344
+ // ie9 setting to null has no effect, must use empty string
7345
+ setProp(el, name, cur == null ? '' : cur);
7346
+ }
7347
+ }
7348
+ }
7349
+
7350
+ var style = {
7351
+ create: updateStyle,
7352
+ update: updateStyle
7353
+ }
7354
+
7355
+ /* */
7356
+
7357
+ /**
7358
+ * Add class with compatibility for SVG since classList is not supported on
7359
+ * SVG elements in IE
7360
+ */
7361
+ function addClass (el, cls) {
7362
+ /* istanbul ignore if */
7363
+ if (!cls || !(cls = cls.trim())) {
7364
+ return
7365
+ }
7366
+
7367
+ /* istanbul ignore else */
7368
+ if (el.classList) {
7369
+ if (cls.indexOf(' ') > -1) {
7370
+ cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
7371
+ } else {
7372
+ el.classList.add(cls);
7373
+ }
7374
+ } else {
7375
+ var cur = " " + (el.getAttribute('class') || '') + " ";
7376
+ if (cur.indexOf(' ' + cls + ' ') < 0) {
7377
+ el.setAttribute('class', (cur + cls).trim());
7378
+ }
7379
+ }
7380
+ }
7381
+
7382
+ /**
7383
+ * Remove class with compatibility for SVG since classList is not supported on
7384
+ * SVG elements in IE
7385
+ */
7386
+ function removeClass (el, cls) {
7387
+ /* istanbul ignore if */
7388
+ if (!cls || !(cls = cls.trim())) {
7389
+ return
7390
+ }
7391
+
7392
+ /* istanbul ignore else */
7393
+ if (el.classList) {
7394
+ if (cls.indexOf(' ') > -1) {
7395
+ cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
7396
+ } else {
7397
+ el.classList.remove(cls);
7398
+ }
7399
+ if (!el.classList.length) {
7400
+ el.removeAttribute('class');
7401
+ }
7402
+ } else {
7403
+ var cur = " " + (el.getAttribute('class') || '') + " ";
7404
+ var tar = ' ' + cls + ' ';
7405
+ while (cur.indexOf(tar) >= 0) {
7406
+ cur = cur.replace(tar, ' ');
7407
+ }
7408
+ cur = cur.trim();
7409
+ if (cur) {
7410
+ el.setAttribute('class', cur);
7411
+ } else {
7412
+ el.removeAttribute('class');
7413
+ }
7414
+ }
7415
+ }
7416
+
7417
+ /* */
7418
+
7419
+ function resolveTransition (def) {
7420
+ if (!def) {
7421
+ return
7422
+ }
7423
+ /* istanbul ignore else */
7424
+ if (typeof def === 'object') {
7425
+ var res = {};
7426
+ if (def.css !== false) {
7427
+ extend(res, autoCssTransition(def.name || 'v'));
7428
+ }
7429
+ extend(res, def);
7430
+ return res
7431
+ } else if (typeof def === 'string') {
7432
+ return autoCssTransition(def)
7433
+ }
7434
+ }
7435
+
7436
+ var autoCssTransition = cached(function (name) {
7437
+ return {
7438
+ enterClass: (name + "-enter"),
7439
+ enterToClass: (name + "-enter-to"),
7440
+ enterActiveClass: (name + "-enter-active"),
7441
+ leaveClass: (name + "-leave"),
7442
+ leaveToClass: (name + "-leave-to"),
7443
+ leaveActiveClass: (name + "-leave-active")
7444
+ }
7445
+ });
7446
+
7447
+ var hasTransition = inBrowser && !isIE9;
7448
+ var TRANSITION = 'transition';
7449
+ var ANIMATION = 'animation';
7450
+
7451
+ // Transition property/event sniffing
7452
+ var transitionProp = 'transition';
7453
+ var transitionEndEvent = 'transitionend';
7454
+ var animationProp = 'animation';
7455
+ var animationEndEvent = 'animationend';
7456
+ if (hasTransition) {
7457
+ /* istanbul ignore if */
7458
+ if (window.ontransitionend === undefined &&
7459
+ window.onwebkittransitionend !== undefined
7460
+ ) {
7461
+ transitionProp = 'WebkitTransition';
7462
+ transitionEndEvent = 'webkitTransitionEnd';
7463
+ }
7464
+ if (window.onanimationend === undefined &&
7465
+ window.onwebkitanimationend !== undefined
7466
+ ) {
7467
+ animationProp = 'WebkitAnimation';
7468
+ animationEndEvent = 'webkitAnimationEnd';
7469
+ }
7470
+ }
7471
+
7472
+ // binding to window is necessary to make hot reload work in IE in strict mode
7473
+ var raf = inBrowser
7474
+ ? window.requestAnimationFrame
7475
+ ? window.requestAnimationFrame.bind(window)
7476
+ : setTimeout
7477
+ : /* istanbul ignore next */ function (fn) { return fn(); };
7478
+
7479
+ function nextFrame (fn) {
7480
+ raf(function () {
7481
+ raf(fn);
7482
+ });
7483
+ }
7484
+
7485
+ function addTransitionClass (el, cls) {
7486
+ var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
7487
+ if (transitionClasses.indexOf(cls) < 0) {
7488
+ transitionClasses.push(cls);
7489
+ addClass(el, cls);
7490
+ }
7491
+ }
7492
+
7493
+ function removeTransitionClass (el, cls) {
7494
+ if (el._transitionClasses) {
7495
+ remove(el._transitionClasses, cls);
7496
+ }
7497
+ removeClass(el, cls);
7498
+ }
7499
+
7500
+ function whenTransitionEnds (
7501
+ el,
7502
+ expectedType,
7503
+ cb
7504
+ ) {
7505
+ var ref = getTransitionInfo(el, expectedType);
7506
+ var type = ref.type;
7507
+ var timeout = ref.timeout;
7508
+ var propCount = ref.propCount;
7509
+ if (!type) { return cb() }
7510
+ var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
7511
+ var ended = 0;
7512
+ var end = function () {
7513
+ el.removeEventListener(event, onEnd);
7514
+ cb();
7515
+ };
7516
+ var onEnd = function (e) {
7517
+ if (e.target === el) {
7518
+ if (++ended >= propCount) {
7519
+ end();
7520
+ }
7521
+ }
7522
+ };
7523
+ setTimeout(function () {
7524
+ if (ended < propCount) {
7525
+ end();
7526
+ }
7527
+ }, timeout + 1);
7528
+ el.addEventListener(event, onEnd);
7529
+ }
7530
+
7531
+ var transformRE = /\b(transform|all)(,|$)/;
7532
+
7533
+ function getTransitionInfo (el, expectedType) {
7534
+ var styles = window.getComputedStyle(el);
7535
+ var transitionDelays = styles[transitionProp + 'Delay'].split(', ');
7536
+ var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
7537
+ var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
7538
+ var animationDelays = styles[animationProp + 'Delay'].split(', ');
7539
+ var animationDurations = styles[animationProp + 'Duration'].split(', ');
7540
+ var animationTimeout = getTimeout(animationDelays, animationDurations);
7541
+
7542
+ var type;
7543
+ var timeout = 0;
7544
+ var propCount = 0;
7545
+ /* istanbul ignore if */
7546
+ if (expectedType === TRANSITION) {
7547
+ if (transitionTimeout > 0) {
7548
+ type = TRANSITION;
7549
+ timeout = transitionTimeout;
7550
+ propCount = transitionDurations.length;
7551
+ }
7552
+ } else if (expectedType === ANIMATION) {
7553
+ if (animationTimeout > 0) {
7554
+ type = ANIMATION;
7555
+ timeout = animationTimeout;
7556
+ propCount = animationDurations.length;
7557
+ }
7558
+ } else {
7559
+ timeout = Math.max(transitionTimeout, animationTimeout);
7560
+ type = timeout > 0
7561
+ ? transitionTimeout > animationTimeout
7562
+ ? TRANSITION
7563
+ : ANIMATION
7564
+ : null;
7565
+ propCount = type
7566
+ ? type === TRANSITION
7567
+ ? transitionDurations.length
7568
+ : animationDurations.length
7569
+ : 0;
7570
+ }
7571
+ var hasTransform =
7572
+ type === TRANSITION &&
7573
+ transformRE.test(styles[transitionProp + 'Property']);
7574
+ return {
7575
+ type: type,
7576
+ timeout: timeout,
7577
+ propCount: propCount,
7578
+ hasTransform: hasTransform
7579
+ }
7580
+ }
7581
+
7582
+ function getTimeout (delays, durations) {
7583
+ /* istanbul ignore next */
7584
+ while (delays.length < durations.length) {
7585
+ delays = delays.concat(delays);
7586
+ }
7587
+
7588
+ return Math.max.apply(null, durations.map(function (d, i) {
7589
+ return toMs(d) + toMs(delays[i])
7590
+ }))
7591
+ }
7592
+
7593
+ function toMs (s) {
7594
+ return Number(s.slice(0, -1)) * 1000
7595
+ }
7596
+
7597
+ /* */
7598
+
7599
+ function enter (vnode, toggleDisplay) {
7600
+ var el = vnode.elm;
7601
+
7602
+ // call leave callback now
7603
+ if (isDef(el._leaveCb)) {
7604
+ el._leaveCb.cancelled = true;
7605
+ el._leaveCb();
7606
+ }
7607
+
7608
+ var data = resolveTransition(vnode.data.transition);
7609
+ if (isUndef(data)) {
7610
+ return
7611
+ }
7612
+
7613
+ /* istanbul ignore if */
7614
+ if (isDef(el._enterCb) || el.nodeType !== 1) {
7615
+ return
7616
+ }
7617
+
7618
+ var css = data.css;
7619
+ var type = data.type;
7620
+ var enterClass = data.enterClass;
7621
+ var enterToClass = data.enterToClass;
7622
+ var enterActiveClass = data.enterActiveClass;
7623
+ var appearClass = data.appearClass;
7624
+ var appearToClass = data.appearToClass;
7625
+ var appearActiveClass = data.appearActiveClass;
7626
+ var beforeEnter = data.beforeEnter;
7627
+ var enter = data.enter;
7628
+ var afterEnter = data.afterEnter;
7629
+ var enterCancelled = data.enterCancelled;
7630
+ var beforeAppear = data.beforeAppear;
7631
+ var appear = data.appear;
7632
+ var afterAppear = data.afterAppear;
7633
+ var appearCancelled = data.appearCancelled;
7634
+ var duration = data.duration;
7635
+
7636
+ // activeInstance will always be the <transition> component managing this
7637
+ // transition. One edge case to check is when the <transition> is placed
7638
+ // as the root node of a child component. In that case we need to check
7639
+ // <transition>'s parent for appear check.
7640
+ var context = activeInstance;
7641
+ var transitionNode = activeInstance.$vnode;
7642
+ while (transitionNode && transitionNode.parent) {
7643
+ transitionNode = transitionNode.parent;
7644
+ context = transitionNode.context;
7645
+ }
7646
+
7647
+ var isAppear = !context._isMounted || !vnode.isRootInsert;
7648
+
7649
+ if (isAppear && !appear && appear !== '') {
7650
+ return
7651
+ }
7652
+
7653
+ var startClass = isAppear && appearClass
7654
+ ? appearClass
7655
+ : enterClass;
7656
+ var activeClass = isAppear && appearActiveClass
7657
+ ? appearActiveClass
7658
+ : enterActiveClass;
7659
+ var toClass = isAppear && appearToClass
7660
+ ? appearToClass
7661
+ : enterToClass;
7662
+
7663
+ var beforeEnterHook = isAppear
7664
+ ? (beforeAppear || beforeEnter)
7665
+ : beforeEnter;
7666
+ var enterHook = isAppear
7667
+ ? (typeof appear === 'function' ? appear : enter)
7668
+ : enter;
7669
+ var afterEnterHook = isAppear
7670
+ ? (afterAppear || afterEnter)
7671
+ : afterEnter;
7672
+ var enterCancelledHook = isAppear
7673
+ ? (appearCancelled || enterCancelled)
7674
+ : enterCancelled;
7675
+
7676
+ var explicitEnterDuration = toNumber(
7677
+ isObject(duration)
7678
+ ? duration.enter
7679
+ : duration
7680
+ );
7681
+
7682
+ if ("development" !== 'production' && explicitEnterDuration != null) {
7683
+ checkDuration(explicitEnterDuration, 'enter', vnode);
7684
+ }
7685
+
7686
+ var expectsCSS = css !== false && !isIE9;
7687
+ var userWantsControl = getHookArgumentsLength(enterHook);
7688
+
7689
+ var cb = el._enterCb = once(function () {
7690
+ if (expectsCSS) {
7691
+ removeTransitionClass(el, toClass);
7692
+ removeTransitionClass(el, activeClass);
7693
+ }
7694
+ if (cb.cancelled) {
7695
+ if (expectsCSS) {
7696
+ removeTransitionClass(el, startClass);
7697
+ }
7698
+ enterCancelledHook && enterCancelledHook(el);
7699
+ } else {
7700
+ afterEnterHook && afterEnterHook(el);
7701
+ }
7702
+ el._enterCb = null;
7703
+ });
7704
+
7705
+ if (!vnode.data.show) {
7706
+ // remove pending leave element on enter by injecting an insert hook
7707
+ mergeVNodeHook(vnode, 'insert', function () {
7708
+ var parent = el.parentNode;
7709
+ var pendingNode = parent && parent._pending && parent._pending[vnode.key];
7710
+ if (pendingNode &&
7711
+ pendingNode.tag === vnode.tag &&
7712
+ pendingNode.elm._leaveCb
7713
+ ) {
7714
+ pendingNode.elm._leaveCb();
7715
+ }
7716
+ enterHook && enterHook(el, cb);
7717
+ });
7718
+ }
7719
+
7720
+ // start enter transition
7721
+ beforeEnterHook && beforeEnterHook(el);
7722
+ if (expectsCSS) {
7723
+ addTransitionClass(el, startClass);
7724
+ addTransitionClass(el, activeClass);
7725
+ nextFrame(function () {
7726
+ removeTransitionClass(el, startClass);
7727
+ if (!cb.cancelled) {
7728
+ addTransitionClass(el, toClass);
7729
+ if (!userWantsControl) {
7730
+ if (isValidDuration(explicitEnterDuration)) {
7731
+ setTimeout(cb, explicitEnterDuration);
7732
+ } else {
7733
+ whenTransitionEnds(el, type, cb);
7734
+ }
7735
+ }
7736
+ }
7737
+ });
7738
+ }
7739
+
7740
+ if (vnode.data.show) {
7741
+ toggleDisplay && toggleDisplay();
7742
+ enterHook && enterHook(el, cb);
7743
+ }
7744
+
7745
+ if (!expectsCSS && !userWantsControl) {
7746
+ cb();
7747
+ }
7748
+ }
7749
+
7750
+ function leave (vnode, rm) {
7751
+ var el = vnode.elm;
7752
+
7753
+ // call enter callback now
7754
+ if (isDef(el._enterCb)) {
7755
+ el._enterCb.cancelled = true;
7756
+ el._enterCb();
7757
+ }
7758
+
7759
+ var data = resolveTransition(vnode.data.transition);
7760
+ if (isUndef(data) || el.nodeType !== 1) {
7761
+ return rm()
7762
+ }
7763
+
7764
+ /* istanbul ignore if */
7765
+ if (isDef(el._leaveCb)) {
7766
+ return
7767
+ }
7768
+
7769
+ var css = data.css;
7770
+ var type = data.type;
7771
+ var leaveClass = data.leaveClass;
7772
+ var leaveToClass = data.leaveToClass;
7773
+ var leaveActiveClass = data.leaveActiveClass;
7774
+ var beforeLeave = data.beforeLeave;
7775
+ var leave = data.leave;
7776
+ var afterLeave = data.afterLeave;
7777
+ var leaveCancelled = data.leaveCancelled;
7778
+ var delayLeave = data.delayLeave;
7779
+ var duration = data.duration;
7780
+
7781
+ var expectsCSS = css !== false && !isIE9;
7782
+ var userWantsControl = getHookArgumentsLength(leave);
7783
+
7784
+ var explicitLeaveDuration = toNumber(
7785
+ isObject(duration)
7786
+ ? duration.leave
7787
+ : duration
7788
+ );
7789
+
7790
+ if ("development" !== 'production' && isDef(explicitLeaveDuration)) {
7791
+ checkDuration(explicitLeaveDuration, 'leave', vnode);
7792
+ }
7793
+
7794
+ var cb = el._leaveCb = once(function () {
7795
+ if (el.parentNode && el.parentNode._pending) {
7796
+ el.parentNode._pending[vnode.key] = null;
7797
+ }
7798
+ if (expectsCSS) {
7799
+ removeTransitionClass(el, leaveToClass);
7800
+ removeTransitionClass(el, leaveActiveClass);
7801
+ }
7802
+ if (cb.cancelled) {
7803
+ if (expectsCSS) {
7804
+ removeTransitionClass(el, leaveClass);
7805
+ }
7806
+ leaveCancelled && leaveCancelled(el);
7807
+ } else {
7808
+ rm();
7809
+ afterLeave && afterLeave(el);
7810
+ }
7811
+ el._leaveCb = null;
7812
+ });
7813
+
7814
+ if (delayLeave) {
7815
+ delayLeave(performLeave);
7816
+ } else {
7817
+ performLeave();
7818
+ }
7819
+
7820
+ function performLeave () {
7821
+ // the delayed leave may have already been cancelled
7822
+ if (cb.cancelled) {
7823
+ return
7824
+ }
7825
+ // record leaving element
7826
+ if (!vnode.data.show) {
7827
+ (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;
7828
+ }
7829
+ beforeLeave && beforeLeave(el);
7830
+ if (expectsCSS) {
7831
+ addTransitionClass(el, leaveClass);
7832
+ addTransitionClass(el, leaveActiveClass);
7833
+ nextFrame(function () {
7834
+ removeTransitionClass(el, leaveClass);
7835
+ if (!cb.cancelled) {
7836
+ addTransitionClass(el, leaveToClass);
7837
+ if (!userWantsControl) {
7838
+ if (isValidDuration(explicitLeaveDuration)) {
7839
+ setTimeout(cb, explicitLeaveDuration);
7840
+ } else {
7841
+ whenTransitionEnds(el, type, cb);
7842
+ }
7843
+ }
7844
+ }
7845
+ });
7846
+ }
7847
+ leave && leave(el, cb);
7848
+ if (!expectsCSS && !userWantsControl) {
7849
+ cb();
7850
+ }
7851
+ }
7852
+ }
7853
+
7854
+ // only used in dev mode
7855
+ function checkDuration (val, name, vnode) {
7856
+ if (typeof val !== 'number') {
7857
+ warn(
7858
+ "<transition> explicit " + name + " duration is not a valid number - " +
7859
+ "got " + (JSON.stringify(val)) + ".",
7860
+ vnode.context
7861
+ );
7862
+ } else if (isNaN(val)) {
7863
+ warn(
7864
+ "<transition> explicit " + name + " duration is NaN - " +
7865
+ 'the duration expression might be incorrect.',
7866
+ vnode.context
7867
+ );
7868
+ }
7869
+ }
7870
+
7871
+ function isValidDuration (val) {
7872
+ return typeof val === 'number' && !isNaN(val)
7873
+ }
7874
+
7875
+ /**
7876
+ * Normalize a transition hook's argument length. The hook may be:
7877
+ * - a merged hook (invoker) with the original in .fns
7878
+ * - a wrapped component method (check ._length)
7879
+ * - a plain function (.length)
7880
+ */
7881
+ function getHookArgumentsLength (fn) {
7882
+ if (isUndef(fn)) {
7883
+ return false
7884
+ }
7885
+ var invokerFns = fn.fns;
7886
+ if (isDef(invokerFns)) {
7887
+ // invoker
7888
+ return getHookArgumentsLength(
7889
+ Array.isArray(invokerFns)
7890
+ ? invokerFns[0]
7891
+ : invokerFns
7892
+ )
7893
+ } else {
7894
+ return (fn._length || fn.length) > 1
7895
+ }
7896
+ }
7897
+
7898
+ function _enter (_, vnode) {
7899
+ if (vnode.data.show !== true) {
7900
+ enter(vnode);
7901
+ }
7902
+ }
7903
+
7904
+ var transition = inBrowser ? {
7905
+ create: _enter,
7906
+ activate: _enter,
7907
+ remove: function remove$$1 (vnode, rm) {
7908
+ /* istanbul ignore else */
7909
+ if (vnode.data.show !== true) {
7910
+ leave(vnode, rm);
7911
+ } else {
7912
+ rm();
7913
+ }
7914
+ }
7915
+ } : {}
7916
+
7917
+ var platformModules = [
7918
+ attrs,
7919
+ klass,
7920
+ events,
7921
+ domProps,
7922
+ style,
7923
+ transition
7924
+ ]
7925
+
7926
+ /* */
7927
+
7928
+ // the directive module should be applied last, after all
7929
+ // built-in modules have been applied.
7930
+ var modules = platformModules.concat(baseModules);
7931
+
7932
+ var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
7933
+
7934
+ /**
7935
+ * Not type checking this file because flow doesn't like attaching
7936
+ * properties to Elements.
7937
+ */
7938
+
7939
+ /* istanbul ignore if */
7940
+ if (isIE9) {
7941
+ // http://www.matts411.com/post/internet-explorer-9-oninput/
7942
+ document.addEventListener('selectionchange', function () {
7943
+ var el = document.activeElement;
7944
+ if (el && el.vmodel) {
7945
+ trigger(el, 'input');
7946
+ }
7947
+ });
7948
+ }
7949
+
7950
+ var directive = {
7951
+ inserted: function inserted (el, binding, vnode, oldVnode) {
7952
+ if (vnode.tag === 'select') {
7953
+ // #6903
7954
+ if (oldVnode.elm && !oldVnode.elm._vOptions) {
7955
+ mergeVNodeHook(vnode, 'postpatch', function () {
7956
+ directive.componentUpdated(el, binding, vnode);
7957
+ });
7958
+ } else {
7959
+ setSelected(el, binding, vnode.context);
7960
+ }
7961
+ el._vOptions = [].map.call(el.options, getValue);
7962
+ } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
7963
+ el._vModifiers = binding.modifiers;
7964
+ if (!binding.modifiers.lazy) {
7965
+ el.addEventListener('compositionstart', onCompositionStart);
7966
+ el.addEventListener('compositionend', onCompositionEnd);
7967
+ // Safari < 10.2 & UIWebView doesn't fire compositionend when
7968
+ // switching focus before confirming composition choice
7969
+ // this also fixes the issue where some browsers e.g. iOS Chrome
7970
+ // fires "change" instead of "input" on autocomplete.
7971
+ el.addEventListener('change', onCompositionEnd);
7972
+ /* istanbul ignore if */
7973
+ if (isIE9) {
7974
+ el.vmodel = true;
7975
+ }
7976
+ }
7977
+ }
7978
+ },
7979
+
7980
+ componentUpdated: function componentUpdated (el, binding, vnode) {
7981
+ if (vnode.tag === 'select') {
7982
+ setSelected(el, binding, vnode.context);
7983
+ // in case the options rendered by v-for have changed,
7984
+ // it's possible that the value is out-of-sync with the rendered options.
7985
+ // detect such cases and filter out values that no longer has a matching
7986
+ // option in the DOM.
7987
+ var prevOptions = el._vOptions;
7988
+ var curOptions = el._vOptions = [].map.call(el.options, getValue);
7989
+ if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {
7990
+ // trigger change event if
7991
+ // no matching option found for at least one value
7992
+ var needReset = el.multiple
7993
+ ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })
7994
+ : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);
7995
+ if (needReset) {
7996
+ trigger(el, 'change');
7997
+ }
7998
+ }
7999
+ }
8000
+ }
8001
+ };
8002
+
8003
+ function setSelected (el, binding, vm) {
8004
+ actuallySetSelected(el, binding, vm);
8005
+ /* istanbul ignore if */
8006
+ if (isIE || isEdge) {
8007
+ setTimeout(function () {
8008
+ actuallySetSelected(el, binding, vm);
8009
+ }, 0);
8010
+ }
8011
+ }
8012
+
8013
+ function actuallySetSelected (el, binding, vm) {
8014
+ var value = binding.value;
8015
+ var isMultiple = el.multiple;
8016
+ if (isMultiple && !Array.isArray(value)) {
8017
+ "development" !== 'production' && warn(
8018
+ "<select multiple v-model=\"" + (binding.expression) + "\"> " +
8019
+ "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
8020
+ vm
8021
+ );
8022
+ return
8023
+ }
8024
+ var selected, option;
8025
+ for (var i = 0, l = el.options.length; i < l; i++) {
8026
+ option = el.options[i];
8027
+ if (isMultiple) {
8028
+ selected = looseIndexOf(value, getValue(option)) > -1;
8029
+ if (option.selected !== selected) {
8030
+ option.selected = selected;
8031
+ }
8032
+ } else {
8033
+ if (looseEqual(getValue(option), value)) {
8034
+ if (el.selectedIndex !== i) {
8035
+ el.selectedIndex = i;
8036
+ }
8037
+ return
8038
+ }
8039
+ }
8040
+ }
8041
+ if (!isMultiple) {
8042
+ el.selectedIndex = -1;
8043
+ }
8044
+ }
8045
+
8046
+ function hasNoMatchingOption (value, options) {
8047
+ return options.every(function (o) { return !looseEqual(o, value); })
8048
+ }
8049
+
8050
+ function getValue (option) {
8051
+ return '_value' in option
8052
+ ? option._value
8053
+ : option.value
8054
+ }
8055
+
8056
+ function onCompositionStart (e) {
8057
+ e.target.composing = true;
8058
+ }
8059
+
8060
+ function onCompositionEnd (e) {
8061
+ // prevent triggering an input event for no reason
8062
+ if (!e.target.composing) { return }
8063
+ e.target.composing = false;
8064
+ trigger(e.target, 'input');
8065
+ }
8066
+
8067
+ function trigger (el, type) {
8068
+ var e = document.createEvent('HTMLEvents');
8069
+ e.initEvent(type, true, true);
8070
+ el.dispatchEvent(e);
8071
+ }
8072
+
8073
+ /* */
8074
+
8075
+ // recursively search for possible transition defined inside the component root
8076
+ function locateNode (vnode) {
8077
+ return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
8078
+ ? locateNode(vnode.componentInstance._vnode)
8079
+ : vnode
8080
+ }
8081
+
8082
+ var show = {
8083
+ bind: function bind (el, ref, vnode) {
8084
+ var value = ref.value;
8085
+
8086
+ vnode = locateNode(vnode);
8087
+ var transition$$1 = vnode.data && vnode.data.transition;
8088
+ var originalDisplay = el.__vOriginalDisplay =
8089
+ el.style.display === 'none' ? '' : el.style.display;
8090
+ if (value && transition$$1) {
8091
+ vnode.data.show = true;
8092
+ enter(vnode, function () {
8093
+ el.style.display = originalDisplay;
8094
+ });
8095
+ } else {
8096
+ el.style.display = value ? originalDisplay : 'none';
8097
+ }
8098
+ },
8099
+
8100
+ update: function update (el, ref, vnode) {
8101
+ var value = ref.value;
8102
+ var oldValue = ref.oldValue;
8103
+
8104
+ /* istanbul ignore if */
8105
+ if (!value === !oldValue) { return }
8106
+ vnode = locateNode(vnode);
8107
+ var transition$$1 = vnode.data && vnode.data.transition;
8108
+ if (transition$$1) {
8109
+ vnode.data.show = true;
8110
+ if (value) {
8111
+ enter(vnode, function () {
8112
+ el.style.display = el.__vOriginalDisplay;
8113
+ });
8114
+ } else {
8115
+ leave(vnode, function () {
8116
+ el.style.display = 'none';
8117
+ });
8118
+ }
8119
+ } else {
8120
+ el.style.display = value ? el.__vOriginalDisplay : 'none';
8121
+ }
8122
+ },
8123
+
8124
+ unbind: function unbind (
8125
+ el,
8126
+ binding,
8127
+ vnode,
8128
+ oldVnode,
8129
+ isDestroy
8130
+ ) {
8131
+ if (!isDestroy) {
8132
+ el.style.display = el.__vOriginalDisplay;
8133
+ }
8134
+ }
8135
+ }
8136
+
8137
+ var platformDirectives = {
8138
+ model: directive,
8139
+ show: show
8140
+ }
8141
+
8142
+ /* */
8143
+
8144
+ // Provides transition support for a single element/component.
8145
+ // supports transition mode (out-in / in-out)
8146
+
8147
+ var transitionProps = {
8148
+ name: String,
8149
+ appear: Boolean,
8150
+ css: Boolean,
8151
+ mode: String,
8152
+ type: String,
8153
+ enterClass: String,
8154
+ leaveClass: String,
8155
+ enterToClass: String,
8156
+ leaveToClass: String,
8157
+ enterActiveClass: String,
8158
+ leaveActiveClass: String,
8159
+ appearClass: String,
8160
+ appearActiveClass: String,
8161
+ appearToClass: String,
8162
+ duration: [Number, String, Object]
8163
+ };
8164
+
8165
+ // in case the child is also an abstract component, e.g. <keep-alive>
8166
+ // we want to recursively retrieve the real component to be rendered
8167
+ function getRealChild (vnode) {
8168
+ var compOptions = vnode && vnode.componentOptions;
8169
+ if (compOptions && compOptions.Ctor.options.abstract) {
8170
+ return getRealChild(getFirstComponentChild(compOptions.children))
8171
+ } else {
8172
+ return vnode
8173
+ }
8174
+ }
8175
+
8176
+ function extractTransitionData (comp) {
8177
+ var data = {};
8178
+ var options = comp.$options;
8179
+ // props
8180
+ for (var key in options.propsData) {
8181
+ data[key] = comp[key];
8182
+ }
8183
+ // events.
8184
+ // extract listeners and pass them directly to the transition methods
8185
+ var listeners = options._parentListeners;
8186
+ for (var key$1 in listeners) {
8187
+ data[camelize(key$1)] = listeners[key$1];
8188
+ }
8189
+ return data
8190
+ }
8191
+
8192
+ function placeholder (h, rawChild) {
8193
+ if (/\d-keep-alive$/.test(rawChild.tag)) {
8194
+ return h('keep-alive', {
8195
+ props: rawChild.componentOptions.propsData
8196
+ })
8197
+ }
8198
+ }
8199
+
8200
+ function hasParentTransition (vnode) {
8201
+ while ((vnode = vnode.parent)) {
8202
+ if (vnode.data.transition) {
8203
+ return true
8204
+ }
8205
+ }
8206
+ }
8207
+
8208
+ function isSameChild (child, oldChild) {
8209
+ return oldChild.key === child.key && oldChild.tag === child.tag
8210
+ }
8211
+
8212
+ var Transition = {
8213
+ name: 'transition',
8214
+ props: transitionProps,
8215
+ abstract: true,
8216
+
8217
+ render: function render (h) {
8218
+ var this$1 = this;
8219
+
8220
+ var children = this.$slots.default;
8221
+ if (!children) {
8222
+ return
8223
+ }
8224
+
8225
+ // filter out text nodes (possible whitespaces)
8226
+ children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });
8227
+ /* istanbul ignore if */
8228
+ if (!children.length) {
8229
+ return
8230
+ }
8231
+
8232
+ // warn multiple elements
8233
+ if ("development" !== 'production' && children.length > 1) {
8234
+ warn(
8235
+ '<transition> can only be used on a single element. Use ' +
8236
+ '<transition-group> for lists.',
8237
+ this.$parent
8238
+ );
8239
+ }
8240
+
8241
+ var mode = this.mode;
8242
+
8243
+ // warn invalid mode
8244
+ if ("development" !== 'production' &&
8245
+ mode && mode !== 'in-out' && mode !== 'out-in'
8246
+ ) {
8247
+ warn(
8248
+ 'invalid <transition> mode: ' + mode,
8249
+ this.$parent
8250
+ );
8251
+ }
8252
+
8253
+ var rawChild = children[0];
8254
+
8255
+ // if this is a component root node and the component's
8256
+ // parent container node also has transition, skip.
8257
+ if (hasParentTransition(this.$vnode)) {
8258
+ return rawChild
8259
+ }
8260
+
8261
+ // apply transition data to child
8262
+ // use getRealChild() to ignore abstract components e.g. keep-alive
8263
+ var child = getRealChild(rawChild);
8264
+ /* istanbul ignore if */
8265
+ if (!child) {
8266
+ return rawChild
8267
+ }
8268
+
8269
+ if (this._leaving) {
8270
+ return placeholder(h, rawChild)
8271
+ }
8272
+
8273
+ // ensure a key that is unique to the vnode type and to this transition
8274
+ // component instance. This key will be used to remove pending leaving nodes
8275
+ // during entering.
8276
+ var id = "__transition-" + (this._uid) + "-";
8277
+ child.key = child.key == null
8278
+ ? child.isComment
8279
+ ? id + 'comment'
8280
+ : id + child.tag
8281
+ : isPrimitive(child.key)
8282
+ ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)
8283
+ : child.key;
8284
+
8285
+ var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
8286
+ var oldRawChild = this._vnode;
8287
+ var oldChild = getRealChild(oldRawChild);
8288
+
8289
+ // mark v-show
8290
+ // so that the transition module can hand over the control to the directive
8291
+ if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {
8292
+ child.data.show = true;
8293
+ }
8294
+
8295
+ if (
8296
+ oldChild &&
8297
+ oldChild.data &&
8298
+ !isSameChild(child, oldChild) &&
8299
+ !isAsyncPlaceholder(oldChild) &&
8300
+ // #6687 component root is a comment node
8301
+ !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)
8302
+ ) {
8303
+ // replace old child transition data with fresh one
8304
+ // important for dynamic transitions!
8305
+ var oldData = oldChild.data.transition = extend({}, data);
8306
+ // handle transition mode
8307
+ if (mode === 'out-in') {
8308
+ // return placeholder node and queue update when leave finishes
8309
+ this._leaving = true;
8310
+ mergeVNodeHook(oldData, 'afterLeave', function () {
8311
+ this$1._leaving = false;
8312
+ this$1.$forceUpdate();
8313
+ });
8314
+ return placeholder(h, rawChild)
8315
+ } else if (mode === 'in-out') {
8316
+ if (isAsyncPlaceholder(child)) {
8317
+ return oldRawChild
8318
+ }
8319
+ var delayedLeave;
8320
+ var performLeave = function () { delayedLeave(); };
8321
+ mergeVNodeHook(data, 'afterEnter', performLeave);
8322
+ mergeVNodeHook(data, 'enterCancelled', performLeave);
8323
+ mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });
8324
+ }
8325
+ }
8326
+
8327
+ return rawChild
8328
+ }
8329
+ }
8330
+
8331
+ /* */
8332
+
8333
+ // Provides transition support for list items.
8334
+ // supports move transitions using the FLIP technique.
8335
+
8336
+ // Because the vdom's children update algorithm is "unstable" - i.e.
8337
+ // it doesn't guarantee the relative positioning of removed elements,
8338
+ // we force transition-group to update its children into two passes:
8339
+ // in the first pass, we remove all nodes that need to be removed,
8340
+ // triggering their leaving transition; in the second pass, we insert/move
8341
+ // into the final desired state. This way in the second pass removed
8342
+ // nodes will remain where they should be.
8343
+
8344
+ var props = extend({
8345
+ tag: String,
8346
+ moveClass: String
8347
+ }, transitionProps);
8348
+
8349
+ delete props.mode;
8350
+
8351
+ var TransitionGroup = {
8352
+ props: props,
8353
+
8354
+ render: function render (h) {
8355
+ var tag = this.tag || this.$vnode.data.tag || 'span';
8356
+ var map = Object.create(null);
8357
+ var prevChildren = this.prevChildren = this.children;
8358
+ var rawChildren = this.$slots.default || [];
8359
+ var children = this.children = [];
8360
+ var transitionData = extractTransitionData(this);
8361
+
8362
+ for (var i = 0; i < rawChildren.length; i++) {
8363
+ var c = rawChildren[i];
8364
+ if (c.tag) {
8365
+ if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
8366
+ children.push(c);
8367
+ map[c.key] = c
8368
+ ;(c.data || (c.data = {})).transition = transitionData;
8369
+ } else {
8370
+ var opts = c.componentOptions;
8371
+ var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;
8372
+ warn(("<transition-group> children must be keyed: <" + name + ">"));
8373
+ }
8374
+ }
8375
+ }
8376
+
8377
+ if (prevChildren) {
8378
+ var kept = [];
8379
+ var removed = [];
8380
+ for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
8381
+ var c$1 = prevChildren[i$1];
8382
+ c$1.data.transition = transitionData;
8383
+ c$1.data.pos = c$1.elm.getBoundingClientRect();
8384
+ if (map[c$1.key]) {
8385
+ kept.push(c$1);
8386
+ } else {
8387
+ removed.push(c$1);
8388
+ }
8389
+ }
8390
+ this.kept = h(tag, null, kept);
8391
+ this.removed = removed;
8392
+ }
8393
+
8394
+ return h(tag, null, children)
8395
+ },
8396
+
8397
+ beforeUpdate: function beforeUpdate () {
8398
+ // force removing pass
8399
+ this.__patch__(
8400
+ this._vnode,
8401
+ this.kept,
8402
+ false, // hydrating
8403
+ true // removeOnly (!important, avoids unnecessary moves)
8404
+ );
8405
+ this._vnode = this.kept;
8406
+ },
8407
+
8408
+ updated: function updated () {
8409
+ var children = this.prevChildren;
8410
+ var moveClass = this.moveClass || ((this.name || 'v') + '-move');
8411
+ if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
8412
+ return
8413
+ }
8414
+
8415
+ // we divide the work into three loops to avoid mixing DOM reads and writes
8416
+ // in each iteration - which helps prevent layout thrashing.
8417
+ children.forEach(callPendingCbs);
8418
+ children.forEach(recordPosition);
8419
+ children.forEach(applyTranslation);
8420
+
8421
+ // force reflow to put everything in position
8422
+ // assign to this to avoid being removed in tree-shaking
8423
+ // $flow-disable-line
8424
+ this._reflow = document.body.offsetHeight;
8425
+
8426
+ children.forEach(function (c) {
8427
+ if (c.data.moved) {
8428
+ var el = c.elm;
8429
+ var s = el.style;
8430
+ addTransitionClass(el, moveClass);
8431
+ s.transform = s.WebkitTransform = s.transitionDuration = '';
8432
+ el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
8433
+ if (!e || /transform$/.test(e.propertyName)) {
8434
+ el.removeEventListener(transitionEndEvent, cb);
8435
+ el._moveCb = null;
8436
+ removeTransitionClass(el, moveClass);
8437
+ }
8438
+ });
8439
+ }
8440
+ });
8441
+ },
8442
+
8443
+ methods: {
8444
+ hasMove: function hasMove (el, moveClass) {
8445
+ /* istanbul ignore if */
8446
+ if (!hasTransition) {
8447
+ return false
8448
+ }
8449
+ /* istanbul ignore if */
8450
+ if (this._hasMove) {
8451
+ return this._hasMove
8452
+ }
8453
+ // Detect whether an element with the move class applied has
8454
+ // CSS transitions. Since the element may be inside an entering
8455
+ // transition at this very moment, we make a clone of it and remove
8456
+ // all other transition classes applied to ensure only the move class
8457
+ // is applied.
8458
+ var clone = el.cloneNode();
8459
+ if (el._transitionClasses) {
8460
+ el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });
8461
+ }
8462
+ addClass(clone, moveClass);
8463
+ clone.style.display = 'none';
8464
+ this.$el.appendChild(clone);
8465
+ var info = getTransitionInfo(clone);
8466
+ this.$el.removeChild(clone);
8467
+ return (this._hasMove = info.hasTransform)
8468
+ }
8469
+ }
8470
+ }
8471
+
8472
+ function callPendingCbs (c) {
8473
+ /* istanbul ignore if */
8474
+ if (c.elm._moveCb) {
8475
+ c.elm._moveCb();
8476
+ }
8477
+ /* istanbul ignore if */
8478
+ if (c.elm._enterCb) {
8479
+ c.elm._enterCb();
8480
+ }
8481
+ }
8482
+
8483
+ function recordPosition (c) {
8484
+ c.data.newPos = c.elm.getBoundingClientRect();
8485
+ }
8486
+
8487
+ function applyTranslation (c) {
8488
+ var oldPos = c.data.pos;
8489
+ var newPos = c.data.newPos;
8490
+ var dx = oldPos.left - newPos.left;
8491
+ var dy = oldPos.top - newPos.top;
8492
+ if (dx || dy) {
8493
+ c.data.moved = true;
8494
+ var s = c.elm.style;
8495
+ s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
8496
+ s.transitionDuration = '0s';
8497
+ }
8498
+ }
8499
+
8500
+ var platformComponents = {
8501
+ Transition: Transition,
8502
+ TransitionGroup: TransitionGroup
8503
+ }
8504
+
8505
+ /* */
8506
+
8507
+ // install platform specific utils
8508
+ Vue.config.mustUseProp = mustUseProp;
8509
+ Vue.config.isReservedTag = isReservedTag;
8510
+ Vue.config.isReservedAttr = isReservedAttr;
8511
+ Vue.config.getTagNamespace = getTagNamespace;
8512
+ Vue.config.isUnknownElement = isUnknownElement;
8513
+
8514
+ // install platform runtime directives & components
8515
+ extend(Vue.options.directives, platformDirectives);
8516
+ extend(Vue.options.components, platformComponents);
8517
+
8518
+ // install platform patch function
8519
+ Vue.prototype.__patch__ = inBrowser ? patch : noop;
8520
+
8521
+ // public mount method
8522
+ Vue.prototype.$mount = function (
8523
+ el,
8524
+ hydrating
8525
+ ) {
8526
+ el = el && inBrowser ? query(el) : undefined;
8527
+ return mountComponent(this, el, hydrating)
8528
+ };
8529
+
8530
+ // devtools global hook
8531
+ /* istanbul ignore next */
8532
+ if (inBrowser) {
8533
+ setTimeout(function () {
8534
+ if (config.devtools) {
8535
+ if (devtools) {
8536
+ devtools.emit('init', Vue);
8537
+ } else if (
8538
+ "development" !== 'production' &&
8539
+ "development" !== 'test' &&
8540
+ isChrome
8541
+ ) {
8542
+ console[console.info ? 'info' : 'log'](
8543
+ 'Download the Vue Devtools extension for a better development experience:\n' +
8544
+ 'https://github.com/vuejs/vue-devtools'
8545
+ );
8546
+ }
8547
+ }
8548
+ if ("development" !== 'production' &&
8549
+ "development" !== 'test' &&
8550
+ config.productionTip !== false &&
8551
+ typeof console !== 'undefined'
8552
+ ) {
8553
+ console[console.info ? 'info' : 'log'](
8554
+ "You are running Vue in development mode.\n" +
8555
+ "Make sure to turn on production mode when deploying for production.\n" +
8556
+ "See more tips at https://vuejs.org/guide/deployment.html"
8557
+ );
8558
+ }
8559
+ }, 0);
8560
+ }
8561
+
8562
+ /* */
8563
+
8564
+ var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g;
8565
+ var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
8566
+
8567
+ var buildRegex = cached(function (delimiters) {
8568
+ var open = delimiters[0].replace(regexEscapeRE, '\\$&');
8569
+ var close = delimiters[1].replace(regexEscapeRE, '\\$&');
8570
+ return new RegExp(open + '((?:.|\\n)+?)' + close, 'g')
8571
+ });
8572
+
8573
+
8574
+
8575
+ function parseText (
8576
+ text,
8577
+ delimiters
8578
+ ) {
8579
+ var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
8580
+ if (!tagRE.test(text)) {
8581
+ return
8582
+ }
8583
+ var tokens = [];
8584
+ var rawTokens = [];
8585
+ var lastIndex = tagRE.lastIndex = 0;
8586
+ var match, index, tokenValue;
8587
+ while ((match = tagRE.exec(text))) {
8588
+ index = match.index;
8589
+ // push text token
8590
+ if (index > lastIndex) {
8591
+ rawTokens.push(tokenValue = text.slice(lastIndex, index));
8592
+ tokens.push(JSON.stringify(tokenValue));
8593
+ }
8594
+ // tag token
8595
+ var exp = parseFilters(match[1].trim());
8596
+ tokens.push(("_s(" + exp + ")"));
8597
+ rawTokens.push({ '@binding': exp });
8598
+ lastIndex = index + match[0].length;
8599
+ }
8600
+ if (lastIndex < text.length) {
8601
+ rawTokens.push(tokenValue = text.slice(lastIndex));
8602
+ tokens.push(JSON.stringify(tokenValue));
8603
+ }
8604
+ return {
8605
+ expression: tokens.join('+'),
8606
+ tokens: rawTokens
8607
+ }
8608
+ }
8609
+
8610
+ /* */
8611
+
8612
+ function transformNode (el, options) {
8613
+ var warn = options.warn || baseWarn;
8614
+ var staticClass = getAndRemoveAttr(el, 'class');
8615
+ if ("development" !== 'production' && staticClass) {
8616
+ var res = parseText(staticClass, options.delimiters);
8617
+ if (res) {
8618
+ warn(
8619
+ "class=\"" + staticClass + "\": " +
8620
+ 'Interpolation inside attributes has been removed. ' +
8621
+ 'Use v-bind or the colon shorthand instead. For example, ' +
8622
+ 'instead of <div class="{{ val }}">, use <div :class="val">.'
8623
+ );
8624
+ }
8625
+ }
8626
+ if (staticClass) {
8627
+ el.staticClass = JSON.stringify(staticClass);
8628
+ }
8629
+ var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
8630
+ if (classBinding) {
8631
+ el.classBinding = classBinding;
8632
+ }
8633
+ }
8634
+
8635
+ function genData (el) {
8636
+ var data = '';
8637
+ if (el.staticClass) {
8638
+ data += "staticClass:" + (el.staticClass) + ",";
8639
+ }
8640
+ if (el.classBinding) {
8641
+ data += "class:" + (el.classBinding) + ",";
8642
+ }
8643
+ return data
8644
+ }
8645
+
8646
+ var klass$1 = {
8647
+ staticKeys: ['staticClass'],
8648
+ transformNode: transformNode,
8649
+ genData: genData
8650
+ }
8651
+
8652
+ /* */
8653
+
8654
+ function transformNode$1 (el, options) {
8655
+ var warn = options.warn || baseWarn;
8656
+ var staticStyle = getAndRemoveAttr(el, 'style');
8657
+ if (staticStyle) {
8658
+ /* istanbul ignore if */
8659
+ {
8660
+ var res = parseText(staticStyle, options.delimiters);
8661
+ if (res) {
8662
+ warn(
8663
+ "style=\"" + staticStyle + "\": " +
8664
+ 'Interpolation inside attributes has been removed. ' +
8665
+ 'Use v-bind or the colon shorthand instead. For example, ' +
8666
+ 'instead of <div style="{{ val }}">, use <div :style="val">.'
8667
+ );
8668
+ }
8669
+ }
8670
+ el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
8671
+ }
8672
+
8673
+ var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
8674
+ if (styleBinding) {
8675
+ el.styleBinding = styleBinding;
8676
+ }
8677
+ }
8678
+
8679
+ function genData$1 (el) {
8680
+ var data = '';
8681
+ if (el.staticStyle) {
8682
+ data += "staticStyle:" + (el.staticStyle) + ",";
8683
+ }
8684
+ if (el.styleBinding) {
8685
+ data += "style:(" + (el.styleBinding) + "),";
8686
+ }
8687
+ return data
8688
+ }
8689
+
8690
+ var style$1 = {
8691
+ staticKeys: ['staticStyle'],
8692
+ transformNode: transformNode$1,
8693
+ genData: genData$1
8694
+ }
8695
+
8696
+ /* */
8697
+
8698
+ var decoder;
8699
+
8700
+ var he = {
8701
+ decode: function decode (html) {
8702
+ decoder = decoder || document.createElement('div');
8703
+ decoder.innerHTML = html;
8704
+ return decoder.textContent
8705
+ }
8706
+ }
8707
+
8708
+ /* */
8709
+
8710
+ var isUnaryTag = makeMap(
8711
+ 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
8712
+ 'link,meta,param,source,track,wbr'
8713
+ );
8714
+
8715
+ // Elements that you can, intentionally, leave open
8716
+ // (and which close themselves)
8717
+ var canBeLeftOpenTag = makeMap(
8718
+ 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'
8719
+ );
8720
+
8721
+ // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
8722
+ // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
8723
+ var isNonPhrasingTag = makeMap(
8724
+ 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
8725
+ 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
8726
+ 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
8727
+ 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
8728
+ 'title,tr,track'
8729
+ );
8730
+
8731
+ /**
8732
+ * Not type-checking this file because it's mostly vendor code.
8733
+ */
8734
+
8735
+ /*!
8736
+ * HTML Parser By John Resig (ejohn.org)
8737
+ * Modified by Juriy "kangax" Zaytsev
8738
+ * Original code by Erik Arvidsson, Mozilla Public License
8739
+ * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
8740
+ */
8741
+
8742
+ // Regular Expressions for parsing tags and attributes
8743
+ var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
8744
+ // could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
8745
+ // but for Vue templates we can enforce a simple charset
8746
+ var ncname = '[a-zA-Z_][\\w\\-\\.]*';
8747
+ var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
8748
+ var startTagOpen = new RegExp(("^<" + qnameCapture));
8749
+ var startTagClose = /^\s*(\/?)>/;
8750
+ var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>"));
8751
+ var doctype = /^<!DOCTYPE [^>]+>/i;
8752
+ // #7298: escape - to avoid being pased as HTML comment when inlined in page
8753
+ var comment = /^<!\--/;
8754
+ var conditionalComment = /^<!\[/;
8755
+
8756
+ var IS_REGEX_CAPTURING_BROKEN = false;
8757
+ 'x'.replace(/x(.)?/g, function (m, g) {
8758
+ IS_REGEX_CAPTURING_BROKEN = g === '';
8759
+ });
8760
+
8761
+ // Special Elements (can contain anything)
8762
+ var isPlainTextElement = makeMap('script,style,textarea', true);
8763
+ var reCache = {};
8764
+
8765
+ var decodingMap = {
8766
+ '&lt;': '<',
8767
+ '&gt;': '>',
8768
+ '&quot;': '"',
8769
+ '&amp;': '&',
8770
+ '&#10;': '\n',
8771
+ '&#9;': '\t'
8772
+ };
8773
+ var encodedAttr = /&(?:lt|gt|quot|amp);/g;
8774
+ var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g;
8775
+
8776
+ // #5992
8777
+ var isIgnoreNewlineTag = makeMap('pre,textarea', true);
8778
+ var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; };
8779
+
8780
+ function decodeAttr (value, shouldDecodeNewlines) {
8781
+ var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
8782
+ return value.replace(re, function (match) { return decodingMap[match]; })
8783
+ }
8784
+
8785
+ function parseHTML (html, options) {
8786
+ var stack = [];
8787
+ var expectHTML = options.expectHTML;
8788
+ var isUnaryTag$$1 = options.isUnaryTag || no;
8789
+ var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;
8790
+ var index = 0;
8791
+ var last, lastTag;
8792
+ while (html) {
8793
+ last = html;
8794
+ // Make sure we're not in a plaintext content element like script/style
8795
+ if (!lastTag || !isPlainTextElement(lastTag)) {
8796
+ var textEnd = html.indexOf('<');
8797
+ if (textEnd === 0) {
8798
+ // Comment:
8799
+ if (comment.test(html)) {
8800
+ var commentEnd = html.indexOf('-->');
8801
+
8802
+ if (commentEnd >= 0) {
8803
+ if (options.shouldKeepComment) {
8804
+ options.comment(html.substring(4, commentEnd));
8805
+ }
8806
+ advance(commentEnd + 3);
8807
+ continue
8808
+ }
8809
+ }
8810
+
8811
+ // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
8812
+ if (conditionalComment.test(html)) {
8813
+ var conditionalEnd = html.indexOf(']>');
8814
+
8815
+ if (conditionalEnd >= 0) {
8816
+ advance(conditionalEnd + 2);
8817
+ continue
8818
+ }
8819
+ }
8820
+
8821
+ // Doctype:
8822
+ var doctypeMatch = html.match(doctype);
8823
+ if (doctypeMatch) {
8824
+ advance(doctypeMatch[0].length);
8825
+ continue
8826
+ }
8827
+
8828
+ // End tag:
8829
+ var endTagMatch = html.match(endTag);
8830
+ if (endTagMatch) {
8831
+ var curIndex = index;
8832
+ advance(endTagMatch[0].length);
8833
+ parseEndTag(endTagMatch[1], curIndex, index);
8834
+ continue
8835
+ }
8836
+
8837
+ // Start tag:
8838
+ var startTagMatch = parseStartTag();
8839
+ if (startTagMatch) {
8840
+ handleStartTag(startTagMatch);
8841
+ if (shouldIgnoreFirstNewline(lastTag, html)) {
8842
+ advance(1);
8843
+ }
8844
+ continue
8845
+ }
8846
+ }
8847
+
8848
+ var text = (void 0), rest = (void 0), next = (void 0);
8849
+ if (textEnd >= 0) {
8850
+ rest = html.slice(textEnd);
8851
+ while (
8852
+ !endTag.test(rest) &&
8853
+ !startTagOpen.test(rest) &&
8854
+ !comment.test(rest) &&
8855
+ !conditionalComment.test(rest)
8856
+ ) {
8857
+ // < in plain text, be forgiving and treat it as text
8858
+ next = rest.indexOf('<', 1);
8859
+ if (next < 0) { break }
8860
+ textEnd += next;
8861
+ rest = html.slice(textEnd);
8862
+ }
8863
+ text = html.substring(0, textEnd);
8864
+ advance(textEnd);
8865
+ }
8866
+
8867
+ if (textEnd < 0) {
8868
+ text = html;
8869
+ html = '';
8870
+ }
8871
+
8872
+ if (options.chars && text) {
8873
+ options.chars(text);
8874
+ }
8875
+ } else {
8876
+ var endTagLength = 0;
8877
+ var stackedTag = lastTag.toLowerCase();
8878
+ var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));
8879
+ var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {
8880
+ endTagLength = endTag.length;
8881
+ if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {
8882
+ text = text
8883
+ .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
8884
+ .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
8885
+ }
8886
+ if (shouldIgnoreFirstNewline(stackedTag, text)) {
8887
+ text = text.slice(1);
8888
+ }
8889
+ if (options.chars) {
8890
+ options.chars(text);
8891
+ }
8892
+ return ''
8893
+ });
8894
+ index += html.length - rest$1.length;
8895
+ html = rest$1;
8896
+ parseEndTag(stackedTag, index - endTagLength, index);
8897
+ }
8898
+
8899
+ if (html === last) {
8900
+ options.chars && options.chars(html);
8901
+ if ("development" !== 'production' && !stack.length && options.warn) {
8902
+ options.warn(("Mal-formatted tag at end of template: \"" + html + "\""));
8903
+ }
8904
+ break
8905
+ }
8906
+ }
8907
+
8908
+ // Clean up any remaining tags
8909
+ parseEndTag();
8910
+
8911
+ function advance (n) {
8912
+ index += n;
8913
+ html = html.substring(n);
8914
+ }
8915
+
8916
+ function parseStartTag () {
8917
+ var start = html.match(startTagOpen);
8918
+ if (start) {
8919
+ var match = {
8920
+ tagName: start[1],
8921
+ attrs: [],
8922
+ start: index
8923
+ };
8924
+ advance(start[0].length);
8925
+ var end, attr;
8926
+ while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
8927
+ advance(attr[0].length);
8928
+ match.attrs.push(attr);
8929
+ }
8930
+ if (end) {
8931
+ match.unarySlash = end[1];
8932
+ advance(end[0].length);
8933
+ match.end = index;
8934
+ return match
8935
+ }
8936
+ }
8937
+ }
8938
+
8939
+ function handleStartTag (match) {
8940
+ var tagName = match.tagName;
8941
+ var unarySlash = match.unarySlash;
8942
+
8943
+ if (expectHTML) {
8944
+ if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
8945
+ parseEndTag(lastTag);
8946
+ }
8947
+ if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {
8948
+ parseEndTag(tagName);
8949
+ }
8950
+ }
8951
+
8952
+ var unary = isUnaryTag$$1(tagName) || !!unarySlash;
8953
+
8954
+ var l = match.attrs.length;
8955
+ var attrs = new Array(l);
8956
+ for (var i = 0; i < l; i++) {
8957
+ var args = match.attrs[i];
8958
+ // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778
8959
+ if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('""') === -1) {
8960
+ if (args[3] === '') { delete args[3]; }
8961
+ if (args[4] === '') { delete args[4]; }
8962
+ if (args[5] === '') { delete args[5]; }
8963
+ }
8964
+ var value = args[3] || args[4] || args[5] || '';
8965
+ var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
8966
+ ? options.shouldDecodeNewlinesForHref
8967
+ : options.shouldDecodeNewlines;
8968
+ attrs[i] = {
8969
+ name: args[1],
8970
+ value: decodeAttr(value, shouldDecodeNewlines)
8971
+ };
8972
+ }
8973
+
8974
+ if (!unary) {
8975
+ stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });
8976
+ lastTag = tagName;
8977
+ }
8978
+
8979
+ if (options.start) {
8980
+ options.start(tagName, attrs, unary, match.start, match.end);
8981
+ }
8982
+ }
8983
+
8984
+ function parseEndTag (tagName, start, end) {
8985
+ var pos, lowerCasedTagName;
8986
+ if (start == null) { start = index; }
8987
+ if (end == null) { end = index; }
8988
+
8989
+ if (tagName) {
8990
+ lowerCasedTagName = tagName.toLowerCase();
8991
+ }
8992
+
8993
+ // Find the closest opened tag of the same type
8994
+ if (tagName) {
8995
+ for (pos = stack.length - 1; pos >= 0; pos--) {
8996
+ if (stack[pos].lowerCasedTag === lowerCasedTagName) {
8997
+ break
8998
+ }
8999
+ }
9000
+ } else {
9001
+ // If no tag name is provided, clean shop
9002
+ pos = 0;
9003
+ }
9004
+
9005
+ if (pos >= 0) {
9006
+ // Close all the open elements, up the stack
9007
+ for (var i = stack.length - 1; i >= pos; i--) {
9008
+ if ("development" !== 'production' &&
9009
+ (i > pos || !tagName) &&
9010
+ options.warn
9011
+ ) {
9012
+ options.warn(
9013
+ ("tag <" + (stack[i].tag) + "> has no matching end tag.")
9014
+ );
9015
+ }
9016
+ if (options.end) {
9017
+ options.end(stack[i].tag, start, end);
9018
+ }
9019
+ }
9020
+
9021
+ // Remove the open elements from the stack
9022
+ stack.length = pos;
9023
+ lastTag = pos && stack[pos - 1].tag;
9024
+ } else if (lowerCasedTagName === 'br') {
9025
+ if (options.start) {
9026
+ options.start(tagName, [], true, start, end);
9027
+ }
9028
+ } else if (lowerCasedTagName === 'p') {
9029
+ if (options.start) {
9030
+ options.start(tagName, [], false, start, end);
9031
+ }
9032
+ if (options.end) {
9033
+ options.end(tagName, start, end);
9034
+ }
9035
+ }
9036
+ }
9037
+ }
9038
+
9039
+ /* */
9040
+
9041
+ var onRE = /^@|^v-on:/;
9042
+ var dirRE = /^v-|^@|^:/;
9043
+ var forAliasRE = /([^]*?)\s+(?:in|of)\s+([^]*)/;
9044
+ var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
9045
+ var stripParensRE = /^\(|\)$/g;
9046
+
9047
+ var argRE = /:(.*)$/;
9048
+ var bindRE = /^:|^v-bind:/;
9049
+ var modifierRE = /\.[^.]+/g;
9050
+
9051
+ var decodeHTMLCached = cached(he.decode);
9052
+
9053
+ // configurable state
9054
+ var warn$2;
9055
+ var delimiters;
9056
+ var transforms;
9057
+ var preTransforms;
9058
+ var postTransforms;
9059
+ var platformIsPreTag;
9060
+ var platformMustUseProp;
9061
+ var platformGetTagNamespace;
9062
+
9063
+
9064
+
9065
+ function createASTElement (
9066
+ tag,
9067
+ attrs,
9068
+ parent
9069
+ ) {
9070
+ return {
9071
+ type: 1,
9072
+ tag: tag,
9073
+ attrsList: attrs,
9074
+ attrsMap: makeAttrsMap(attrs),
9075
+ parent: parent,
9076
+ children: []
9077
+ }
9078
+ }
9079
+
9080
+ /**
9081
+ * Convert HTML string to AST.
9082
+ */
9083
+ function parse (
9084
+ template,
9085
+ options
9086
+ ) {
9087
+ warn$2 = options.warn || baseWarn;
9088
+
9089
+ platformIsPreTag = options.isPreTag || no;
9090
+ platformMustUseProp = options.mustUseProp || no;
9091
+ platformGetTagNamespace = options.getTagNamespace || no;
9092
+
9093
+ transforms = pluckModuleFunction(options.modules, 'transformNode');
9094
+ preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
9095
+ postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
9096
+
9097
+ delimiters = options.delimiters;
9098
+
9099
+ var stack = [];
9100
+ var preserveWhitespace = options.preserveWhitespace !== false;
9101
+ var root;
9102
+ var currentParent;
9103
+ var inVPre = false;
9104
+ var inPre = false;
9105
+ var warned = false;
9106
+
9107
+ function warnOnce (msg) {
9108
+ if (!warned) {
9109
+ warned = true;
9110
+ warn$2(msg);
9111
+ }
9112
+ }
9113
+
9114
+ function closeElement (element) {
9115
+ // check pre state
9116
+ if (element.pre) {
9117
+ inVPre = false;
9118
+ }
9119
+ if (platformIsPreTag(element.tag)) {
9120
+ inPre = false;
9121
+ }
9122
+ // apply post-transforms
9123
+ for (var i = 0; i < postTransforms.length; i++) {
9124
+ postTransforms[i](element, options);
9125
+ }
9126
+ }
9127
+
9128
+ parseHTML(template, {
9129
+ warn: warn$2,
9130
+ expectHTML: options.expectHTML,
9131
+ isUnaryTag: options.isUnaryTag,
9132
+ canBeLeftOpenTag: options.canBeLeftOpenTag,
9133
+ shouldDecodeNewlines: options.shouldDecodeNewlines,
9134
+ shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
9135
+ shouldKeepComment: options.comments,
9136
+ start: function start (tag, attrs, unary) {
9137
+ // check namespace.
9138
+ // inherit parent ns if there is one
9139
+ var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
9140
+
9141
+ // handle IE svg bug
9142
+ /* istanbul ignore if */
9143
+ if (isIE && ns === 'svg') {
9144
+ attrs = guardIESVGBug(attrs);
9145
+ }
9146
+
9147
+ var element = createASTElement(tag, attrs, currentParent);
9148
+ if (ns) {
9149
+ element.ns = ns;
9150
+ }
9151
+
9152
+ if (isForbiddenTag(element) && !isServerRendering()) {
9153
+ element.forbidden = true;
9154
+ "development" !== 'production' && warn$2(
9155
+ 'Templates should only be responsible for mapping the state to the ' +
9156
+ 'UI. Avoid placing tags with side-effects in your templates, such as ' +
9157
+ "<" + tag + ">" + ', as they will not be parsed.'
9158
+ );
9159
+ }
9160
+
9161
+ // apply pre-transforms
9162
+ for (var i = 0; i < preTransforms.length; i++) {
9163
+ element = preTransforms[i](element, options) || element;
9164
+ }
9165
+
9166
+ if (!inVPre) {
9167
+ processPre(element);
9168
+ if (element.pre) {
9169
+ inVPre = true;
9170
+ }
9171
+ }
9172
+ if (platformIsPreTag(element.tag)) {
9173
+ inPre = true;
9174
+ }
9175
+ if (inVPre) {
9176
+ processRawAttrs(element);
9177
+ } else if (!element.processed) {
9178
+ // structural directives
9179
+ processFor(element);
9180
+ processIf(element);
9181
+ processOnce(element);
9182
+ // element-scope stuff
9183
+ processElement(element, options);
9184
+ }
9185
+
9186
+ function checkRootConstraints (el) {
9187
+ {
9188
+ if (el.tag === 'slot' || el.tag === 'template') {
9189
+ warnOnce(
9190
+ "Cannot use <" + (el.tag) + "> as component root element because it may " +
9191
+ 'contain multiple nodes.'
9192
+ );
9193
+ }
9194
+ if (el.attrsMap.hasOwnProperty('v-for')) {
9195
+ warnOnce(
9196
+ 'Cannot use v-for on stateful component root element because ' +
9197
+ 'it renders multiple elements.'
9198
+ );
9199
+ }
9200
+ }
9201
+ }
9202
+
9203
+ // tree management
9204
+ if (!root) {
9205
+ root = element;
9206
+ checkRootConstraints(root);
9207
+ } else if (!stack.length) {
9208
+ // allow root elements with v-if, v-else-if and v-else
9209
+ if (root.if && (element.elseif || element.else)) {
9210
+ checkRootConstraints(element);
9211
+ addIfCondition(root, {
9212
+ exp: element.elseif,
9213
+ block: element
9214
+ });
9215
+ } else {
9216
+ warnOnce(
9217
+ "Component template should contain exactly one root element. " +
9218
+ "If you are using v-if on multiple elements, " +
9219
+ "use v-else-if to chain them instead."
9220
+ );
9221
+ }
9222
+ }
9223
+ if (currentParent && !element.forbidden) {
9224
+ if (element.elseif || element.else) {
9225
+ processIfConditions(element, currentParent);
9226
+ } else if (element.slotScope) { // scoped slot
9227
+ currentParent.plain = false;
9228
+ var name = element.slotTarget || '"default"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
9229
+ } else {
9230
+ currentParent.children.push(element);
9231
+ element.parent = currentParent;
9232
+ }
9233
+ }
9234
+ if (!unary) {
9235
+ currentParent = element;
9236
+ stack.push(element);
9237
+ } else {
9238
+ closeElement(element);
9239
+ }
9240
+ },
9241
+
9242
+ end: function end () {
9243
+ // remove trailing whitespace
9244
+ var element = stack[stack.length - 1];
9245
+ var lastNode = element.children[element.children.length - 1];
9246
+ if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {
9247
+ element.children.pop();
9248
+ }
9249
+ // pop stack
9250
+ stack.length -= 1;
9251
+ currentParent = stack[stack.length - 1];
9252
+ closeElement(element);
9253
+ },
9254
+
9255
+ chars: function chars (text) {
9256
+ if (!currentParent) {
9257
+ {
9258
+ if (text === template) {
9259
+ warnOnce(
9260
+ 'Component template requires a root element, rather than just text.'
9261
+ );
9262
+ } else if ((text = text.trim())) {
9263
+ warnOnce(
9264
+ ("text \"" + text + "\" outside root element will be ignored.")
9265
+ );
9266
+ }
9267
+ }
9268
+ return
9269
+ }
9270
+ // IE textarea placeholder bug
9271
+ /* istanbul ignore if */
9272
+ if (isIE &&
9273
+ currentParent.tag === 'textarea' &&
9274
+ currentParent.attrsMap.placeholder === text
9275
+ ) {
9276
+ return
9277
+ }
9278
+ var children = currentParent.children;
9279
+ text = inPre || text.trim()
9280
+ ? isTextTag(currentParent) ? text : decodeHTMLCached(text)
9281
+ // only preserve whitespace if its not right after a starting tag
9282
+ : preserveWhitespace && children.length ? ' ' : '';
9283
+ if (text) {
9284
+ var res;
9285
+ if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
9286
+ children.push({
9287
+ type: 2,
9288
+ expression: res.expression,
9289
+ tokens: res.tokens,
9290
+ text: text
9291
+ });
9292
+ } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {
9293
+ children.push({
9294
+ type: 3,
9295
+ text: text
9296
+ });
9297
+ }
9298
+ }
9299
+ },
9300
+ comment: function comment (text) {
9301
+ currentParent.children.push({
9302
+ type: 3,
9303
+ text: text,
9304
+ isComment: true
9305
+ });
9306
+ }
9307
+ });
9308
+ return root
9309
+ }
9310
+
9311
+ function processPre (el) {
9312
+ if (getAndRemoveAttr(el, 'v-pre') != null) {
9313
+ el.pre = true;
9314
+ }
9315
+ }
9316
+
9317
+ function processRawAttrs (el) {
9318
+ var l = el.attrsList.length;
9319
+ if (l) {
9320
+ var attrs = el.attrs = new Array(l);
9321
+ for (var i = 0; i < l; i++) {
9322
+ attrs[i] = {
9323
+ name: el.attrsList[i].name,
9324
+ value: JSON.stringify(el.attrsList[i].value)
9325
+ };
9326
+ }
9327
+ } else if (!el.pre) {
9328
+ // non root node in pre blocks with no attributes
9329
+ el.plain = true;
9330
+ }
9331
+ }
9332
+
9333
+ function processElement (element, options) {
9334
+ processKey(element);
9335
+
9336
+ // determine whether this is a plain element after
9337
+ // removing structural attributes
9338
+ element.plain = !element.key && !element.attrsList.length;
9339
+
9340
+ processRef(element);
9341
+ processSlot(element);
9342
+ processComponent(element);
9343
+ for (var i = 0; i < transforms.length; i++) {
9344
+ element = transforms[i](element, options) || element;
9345
+ }
9346
+ processAttrs(element);
9347
+ }
9348
+
9349
+ function processKey (el) {
9350
+ var exp = getBindingAttr(el, 'key');
9351
+ if (exp) {
9352
+ if ("development" !== 'production' && el.tag === 'template') {
9353
+ warn$2("<template> cannot be keyed. Place the key on real elements instead.");
9354
+ }
9355
+ el.key = exp;
9356
+ }
9357
+ }
9358
+
9359
+ function processRef (el) {
9360
+ var ref = getBindingAttr(el, 'ref');
9361
+ if (ref) {
9362
+ el.ref = ref;
9363
+ el.refInFor = checkInFor(el);
9364
+ }
9365
+ }
9366
+
9367
+ function processFor (el) {
9368
+ var exp;
9369
+ if ((exp = getAndRemoveAttr(el, 'v-for'))) {
9370
+ var res = parseFor(exp);
9371
+ if (res) {
9372
+ extend(el, res);
9373
+ } else {
9374
+ warn$2(
9375
+ ("Invalid v-for expression: " + exp)
9376
+ );
9377
+ }
9378
+ }
9379
+ }
9380
+
9381
+
9382
+
9383
+ function parseFor (exp) {
9384
+ var inMatch = exp.match(forAliasRE);
9385
+ if (!inMatch) { return }
9386
+ var res = {};
9387
+ res.for = inMatch[2].trim();
9388
+ var alias = inMatch[1].trim().replace(stripParensRE, '');
9389
+ var iteratorMatch = alias.match(forIteratorRE);
9390
+ if (iteratorMatch) {
9391
+ res.alias = alias.replace(forIteratorRE, '');
9392
+ res.iterator1 = iteratorMatch[1].trim();
9393
+ if (iteratorMatch[2]) {
9394
+ res.iterator2 = iteratorMatch[2].trim();
9395
+ }
9396
+ } else {
9397
+ res.alias = alias;
9398
+ }
9399
+ return res
9400
+ }
9401
+
9402
+ function processIf (el) {
9403
+ var exp = getAndRemoveAttr(el, 'v-if');
9404
+ if (exp) {
9405
+ el.if = exp;
9406
+ addIfCondition(el, {
9407
+ exp: exp,
9408
+ block: el
9409
+ });
9410
+ } else {
9411
+ if (getAndRemoveAttr(el, 'v-else') != null) {
9412
+ el.else = true;
9413
+ }
9414
+ var elseif = getAndRemoveAttr(el, 'v-else-if');
9415
+ if (elseif) {
9416
+ el.elseif = elseif;
9417
+ }
9418
+ }
9419
+ }
9420
+
9421
+ function processIfConditions (el, parent) {
9422
+ var prev = findPrevElement(parent.children);
9423
+ if (prev && prev.if) {
9424
+ addIfCondition(prev, {
9425
+ exp: el.elseif,
9426
+ block: el
9427
+ });
9428
+ } else {
9429
+ warn$2(
9430
+ "v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " +
9431
+ "used on element <" + (el.tag) + "> without corresponding v-if."
9432
+ );
9433
+ }
9434
+ }
9435
+
9436
+ function findPrevElement (children) {
9437
+ var i = children.length;
9438
+ while (i--) {
9439
+ if (children[i].type === 1) {
9440
+ return children[i]
9441
+ } else {
9442
+ if ("development" !== 'production' && children[i].text !== ' ') {
9443
+ warn$2(
9444
+ "text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " +
9445
+ "will be ignored."
9446
+ );
9447
+ }
9448
+ children.pop();
9449
+ }
9450
+ }
9451
+ }
9452
+
9453
+ function addIfCondition (el, condition) {
9454
+ if (!el.ifConditions) {
9455
+ el.ifConditions = [];
9456
+ }
9457
+ el.ifConditions.push(condition);
9458
+ }
9459
+
9460
+ function processOnce (el) {
9461
+ var once$$1 = getAndRemoveAttr(el, 'v-once');
9462
+ if (once$$1 != null) {
9463
+ el.once = true;
9464
+ }
9465
+ }
9466
+
9467
+ function processSlot (el) {
9468
+ if (el.tag === 'slot') {
9469
+ el.slotName = getBindingAttr(el, 'name');
9470
+ if ("development" !== 'production' && el.key) {
9471
+ warn$2(
9472
+ "`key` does not work on <slot> because slots are abstract outlets " +
9473
+ "and can possibly expand into multiple elements. " +
9474
+ "Use the key on a wrapping element instead."
9475
+ );
9476
+ }
9477
+ } else {
9478
+ var slotScope;
9479
+ if (el.tag === 'template') {
9480
+ slotScope = getAndRemoveAttr(el, 'scope');
9481
+ /* istanbul ignore if */
9482
+ if ("development" !== 'production' && slotScope) {
9483
+ warn$2(
9484
+ "the \"scope\" attribute for scoped slots have been deprecated and " +
9485
+ "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
9486
+ "can also be used on plain elements in addition to <template> to " +
9487
+ "denote scoped slots.",
9488
+ true
9489
+ );
9490
+ }
9491
+ el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
9492
+ } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
9493
+ /* istanbul ignore if */
9494
+ if ("development" !== 'production' && el.attrsMap['v-for']) {
9495
+ warn$2(
9496
+ "Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " +
9497
+ "(v-for takes higher priority). Use a wrapper <template> for the " +
9498
+ "scoped slot to make it clearer.",
9499
+ true
9500
+ );
9501
+ }
9502
+ el.slotScope = slotScope;
9503
+ }
9504
+ var slotTarget = getBindingAttr(el, 'slot');
9505
+ if (slotTarget) {
9506
+ el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
9507
+ // preserve slot as an attribute for native shadow DOM compat
9508
+ // only for non-scoped slots.
9509
+ if (el.tag !== 'template' && !el.slotScope) {
9510
+ addAttr(el, 'slot', slotTarget);
9511
+ }
9512
+ }
9513
+ }
9514
+ }
9515
+
9516
+ function processComponent (el) {
9517
+ var binding;
9518
+ if ((binding = getBindingAttr(el, 'is'))) {
9519
+ el.component = binding;
9520
+ }
9521
+ if (getAndRemoveAttr(el, 'inline-template') != null) {
9522
+ el.inlineTemplate = true;
9523
+ }
9524
+ }
9525
+
9526
+ function processAttrs (el) {
9527
+ var list = el.attrsList;
9528
+ var i, l, name, rawName, value, modifiers, isProp;
9529
+ for (i = 0, l = list.length; i < l; i++) {
9530
+ name = rawName = list[i].name;
9531
+ value = list[i].value;
9532
+ if (dirRE.test(name)) {
9533
+ // mark element as dynamic
9534
+ el.hasBindings = true;
9535
+ // modifiers
9536
+ modifiers = parseModifiers(name);
9537
+ if (modifiers) {
9538
+ name = name.replace(modifierRE, '');
9539
+ }
9540
+ if (bindRE.test(name)) { // v-bind
9541
+ name = name.replace(bindRE, '');
9542
+ value = parseFilters(value);
9543
+ isProp = false;
9544
+ if (modifiers) {
9545
+ if (modifiers.prop) {
9546
+ isProp = true;
9547
+ name = camelize(name);
9548
+ if (name === 'innerHtml') { name = 'innerHTML'; }
9549
+ }
9550
+ if (modifiers.camel) {
9551
+ name = camelize(name);
9552
+ }
9553
+ if (modifiers.sync) {
9554
+ addHandler(
9555
+ el,
9556
+ ("update:" + (camelize(name))),
9557
+ genAssignmentCode(value, "$event")
9558
+ );
9559
+ }
9560
+ }
9561
+ if (isProp || (
9562
+ !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)
9563
+ )) {
9564
+ addProp(el, name, value);
9565
+ } else {
9566
+ addAttr(el, name, value);
9567
+ }
9568
+ } else if (onRE.test(name)) { // v-on
9569
+ name = name.replace(onRE, '');
9570
+ addHandler(el, name, value, modifiers, false, warn$2);
9571
+ } else { // normal directives
9572
+ name = name.replace(dirRE, '');
9573
+ // parse arg
9574
+ var argMatch = name.match(argRE);
9575
+ var arg = argMatch && argMatch[1];
9576
+ if (arg) {
9577
+ name = name.slice(0, -(arg.length + 1));
9578
+ }
9579
+ addDirective(el, name, rawName, value, arg, modifiers);
9580
+ if ("development" !== 'production' && name === 'model') {
9581
+ checkForAliasModel(el, value);
9582
+ }
9583
+ }
9584
+ } else {
9585
+ // literal attribute
9586
+ {
9587
+ var res = parseText(value, delimiters);
9588
+ if (res) {
9589
+ warn$2(
9590
+ name + "=\"" + value + "\": " +
9591
+ 'Interpolation inside attributes has been removed. ' +
9592
+ 'Use v-bind or the colon shorthand instead. For example, ' +
9593
+ 'instead of <div id="{{ val }}">, use <div :id="val">.'
9594
+ );
9595
+ }
9596
+ }
9597
+ addAttr(el, name, JSON.stringify(value));
9598
+ // #6887 firefox doesn't update muted state if set via attribute
9599
+ // even immediately after element creation
9600
+ if (!el.component &&
9601
+ name === 'muted' &&
9602
+ platformMustUseProp(el.tag, el.attrsMap.type, name)) {
9603
+ addProp(el, name, 'true');
9604
+ }
9605
+ }
9606
+ }
9607
+ }
9608
+
9609
+ function checkInFor (el) {
9610
+ var parent = el;
9611
+ while (parent) {
9612
+ if (parent.for !== undefined) {
9613
+ return true
9614
+ }
9615
+ parent = parent.parent;
9616
+ }
9617
+ return false
9618
+ }
9619
+
9620
+ function parseModifiers (name) {
9621
+ var match = name.match(modifierRE);
9622
+ if (match) {
9623
+ var ret = {};
9624
+ match.forEach(function (m) { ret[m.slice(1)] = true; });
9625
+ return ret
9626
+ }
9627
+ }
9628
+
9629
+ function makeAttrsMap (attrs) {
9630
+ var map = {};
9631
+ for (var i = 0, l = attrs.length; i < l; i++) {
9632
+ if (
9633
+ "development" !== 'production' &&
9634
+ map[attrs[i].name] && !isIE && !isEdge
9635
+ ) {
9636
+ warn$2('duplicate attribute: ' + attrs[i].name);
9637
+ }
9638
+ map[attrs[i].name] = attrs[i].value;
9639
+ }
9640
+ return map
9641
+ }
9642
+
9643
+ // for script (e.g. type="x/template") or style, do not decode content
9644
+ function isTextTag (el) {
9645
+ return el.tag === 'script' || el.tag === 'style'
9646
+ }
9647
+
9648
+ function isForbiddenTag (el) {
9649
+ return (
9650
+ el.tag === 'style' ||
9651
+ (el.tag === 'script' && (
9652
+ !el.attrsMap.type ||
9653
+ el.attrsMap.type === 'text/javascript'
9654
+ ))
9655
+ )
9656
+ }
9657
+
9658
+ var ieNSBug = /^xmlns:NS\d+/;
9659
+ var ieNSPrefix = /^NS\d+:/;
9660
+
9661
+ /* istanbul ignore next */
9662
+ function guardIESVGBug (attrs) {
9663
+ var res = [];
9664
+ for (var i = 0; i < attrs.length; i++) {
9665
+ var attr = attrs[i];
9666
+ if (!ieNSBug.test(attr.name)) {
9667
+ attr.name = attr.name.replace(ieNSPrefix, '');
9668
+ res.push(attr);
9669
+ }
9670
+ }
9671
+ return res
9672
+ }
9673
+
9674
+ function checkForAliasModel (el, value) {
9675
+ var _el = el;
9676
+ while (_el) {
9677
+ if (_el.for && _el.alias === value) {
9678
+ warn$2(
9679
+ "<" + (el.tag) + " v-model=\"" + value + "\">: " +
9680
+ "You are binding v-model directly to a v-for iteration alias. " +
9681
+ "This will not be able to modify the v-for source array because " +
9682
+ "writing to the alias is like modifying a function local variable. " +
9683
+ "Consider using an array of objects and use v-model on an object property instead."
9684
+ );
9685
+ }
9686
+ _el = _el.parent;
9687
+ }
9688
+ }
9689
+
9690
+ /* */
9691
+
9692
+ /**
9693
+ * Expand input[v-model] with dyanmic type bindings into v-if-else chains
9694
+ * Turn this:
9695
+ * <input v-model="data[type]" :type="type">
9696
+ * into this:
9697
+ * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
9698
+ * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
9699
+ * <input v-else :type="type" v-model="data[type]">
9700
+ */
9701
+
9702
+ function preTransformNode (el, options) {
9703
+ if (el.tag === 'input') {
9704
+ var map = el.attrsMap;
9705
+ if (!map['v-model']) {
9706
+ return
9707
+ }
9708
+
9709
+ var typeBinding;
9710
+ if (map[':type'] || map['v-bind:type']) {
9711
+ typeBinding = getBindingAttr(el, 'type');
9712
+ }
9713
+ if (!map.type && !typeBinding && map['v-bind']) {
9714
+ typeBinding = "(" + (map['v-bind']) + ").type";
9715
+ }
9716
+
9717
+ if (typeBinding) {
9718
+ var ifCondition = getAndRemoveAttr(el, 'v-if', true);
9719
+ var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : "";
9720
+ var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
9721
+ var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
9722
+ // 1. checkbox
9723
+ var branch0 = cloneASTElement(el);
9724
+ // process for on the main node
9725
+ processFor(branch0);
9726
+ addRawAttr(branch0, 'type', 'checkbox');
9727
+ processElement(branch0, options);
9728
+ branch0.processed = true; // prevent it from double-processed
9729
+ branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
9730
+ addIfCondition(branch0, {
9731
+ exp: branch0.if,
9732
+ block: branch0
9733
+ });
9734
+ // 2. add radio else-if condition
9735
+ var branch1 = cloneASTElement(el);
9736
+ getAndRemoveAttr(branch1, 'v-for', true);
9737
+ addRawAttr(branch1, 'type', 'radio');
9738
+ processElement(branch1, options);
9739
+ addIfCondition(branch0, {
9740
+ exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
9741
+ block: branch1
9742
+ });
9743
+ // 3. other
9744
+ var branch2 = cloneASTElement(el);
9745
+ getAndRemoveAttr(branch2, 'v-for', true);
9746
+ addRawAttr(branch2, ':type', typeBinding);
9747
+ processElement(branch2, options);
9748
+ addIfCondition(branch0, {
9749
+ exp: ifCondition,
9750
+ block: branch2
9751
+ });
9752
+
9753
+ if (hasElse) {
9754
+ branch0.else = true;
9755
+ } else if (elseIfCondition) {
9756
+ branch0.elseif = elseIfCondition;
9757
+ }
9758
+
9759
+ return branch0
9760
+ }
9761
+ }
9762
+ }
9763
+
9764
+ function cloneASTElement (el) {
9765
+ return createASTElement(el.tag, el.attrsList.slice(), el.parent)
9766
+ }
9767
+
9768
+ var model$2 = {
9769
+ preTransformNode: preTransformNode
9770
+ }
9771
+
9772
+ var modules$1 = [
9773
+ klass$1,
9774
+ style$1,
9775
+ model$2
9776
+ ]
9777
+
9778
+ /* */
9779
+
9780
+ function text (el, dir) {
9781
+ if (dir.value) {
9782
+ addProp(el, 'textContent', ("_s(" + (dir.value) + ")"));
9783
+ }
9784
+ }
9785
+
9786
+ /* */
9787
+
9788
+ function html (el, dir) {
9789
+ if (dir.value) {
9790
+ addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"));
9791
+ }
9792
+ }
9793
+
9794
+ var directives$1 = {
9795
+ model: model,
9796
+ text: text,
9797
+ html: html
9798
+ }
9799
+
9800
+ /* */
9801
+
9802
+ var baseOptions = {
9803
+ expectHTML: true,
9804
+ modules: modules$1,
9805
+ directives: directives$1,
9806
+ isPreTag: isPreTag,
9807
+ isUnaryTag: isUnaryTag,
9808
+ mustUseProp: mustUseProp,
9809
+ canBeLeftOpenTag: canBeLeftOpenTag,
9810
+ isReservedTag: isReservedTag,
9811
+ getTagNamespace: getTagNamespace,
9812
+ staticKeys: genStaticKeys(modules$1)
9813
+ };
9814
+
9815
+ /* */
9816
+
9817
+ var isStaticKey;
9818
+ var isPlatformReservedTag;
9819
+
9820
+ var genStaticKeysCached = cached(genStaticKeys$1);
9821
+
9822
+ /**
9823
+ * Goal of the optimizer: walk the generated template AST tree
9824
+ * and detect sub-trees that are purely static, i.e. parts of
9825
+ * the DOM that never needs to change.
9826
+ *
9827
+ * Once we detect these sub-trees, we can:
9828
+ *
9829
+ * 1. Hoist them into constants, so that we no longer need to
9830
+ * create fresh nodes for them on each re-render;
9831
+ * 2. Completely skip them in the patching process.
9832
+ */
9833
+ function optimize (root, options) {
9834
+ if (!root) { return }
9835
+ isStaticKey = genStaticKeysCached(options.staticKeys || '');
9836
+ isPlatformReservedTag = options.isReservedTag || no;
9837
+ // first pass: mark all non-static nodes.
9838
+ markStatic$1(root);
9839
+ // second pass: mark static roots.
9840
+ markStaticRoots(root, false);
9841
+ }
9842
+
9843
+ function genStaticKeys$1 (keys) {
9844
+ return makeMap(
9845
+ 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +
9846
+ (keys ? ',' + keys : '')
9847
+ )
9848
+ }
9849
+
9850
+ function markStatic$1 (node) {
9851
+ node.static = isStatic(node);
9852
+ if (node.type === 1) {
9853
+ // do not make component slot content static. this avoids
9854
+ // 1. components not able to mutate slot nodes
9855
+ // 2. static slot content fails for hot-reloading
9856
+ if (
9857
+ !isPlatformReservedTag(node.tag) &&
9858
+ node.tag !== 'slot' &&
9859
+ node.attrsMap['inline-template'] == null
9860
+ ) {
9861
+ return
9862
+ }
9863
+ for (var i = 0, l = node.children.length; i < l; i++) {
9864
+ var child = node.children[i];
9865
+ markStatic$1(child);
9866
+ if (!child.static) {
9867
+ node.static = false;
9868
+ }
9869
+ }
9870
+ if (node.ifConditions) {
9871
+ for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
9872
+ var block = node.ifConditions[i$1].block;
9873
+ markStatic$1(block);
9874
+ if (!block.static) {
9875
+ node.static = false;
9876
+ }
9877
+ }
9878
+ }
9879
+ }
9880
+ }
9881
+
9882
+ function markStaticRoots (node, isInFor) {
9883
+ if (node.type === 1) {
9884
+ if (node.static || node.once) {
9885
+ node.staticInFor = isInFor;
9886
+ }
9887
+ // For a node to qualify as a static root, it should have children that
9888
+ // are not just static text. Otherwise the cost of hoisting out will
9889
+ // outweigh the benefits and it's better off to just always render it fresh.
9890
+ if (node.static && node.children.length && !(
9891
+ node.children.length === 1 &&
9892
+ node.children[0].type === 3
9893
+ )) {
9894
+ node.staticRoot = true;
9895
+ return
9896
+ } else {
9897
+ node.staticRoot = false;
9898
+ }
9899
+ if (node.children) {
9900
+ for (var i = 0, l = node.children.length; i < l; i++) {
9901
+ markStaticRoots(node.children[i], isInFor || !!node.for);
9902
+ }
9903
+ }
9904
+ if (node.ifConditions) {
9905
+ for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
9906
+ markStaticRoots(node.ifConditions[i$1].block, isInFor);
9907
+ }
9908
+ }
9909
+ }
9910
+ }
9911
+
9912
+ function isStatic (node) {
9913
+ if (node.type === 2) { // expression
9914
+ return false
9915
+ }
9916
+ if (node.type === 3) { // text
9917
+ return true
9918
+ }
9919
+ return !!(node.pre || (
9920
+ !node.hasBindings && // no dynamic bindings
9921
+ !node.if && !node.for && // not v-if or v-for or v-else
9922
+ !isBuiltInTag(node.tag) && // not a built-in
9923
+ isPlatformReservedTag(node.tag) && // not a component
9924
+ !isDirectChildOfTemplateFor(node) &&
9925
+ Object.keys(node).every(isStaticKey)
9926
+ ))
9927
+ }
9928
+
9929
+ function isDirectChildOfTemplateFor (node) {
9930
+ while (node.parent) {
9931
+ node = node.parent;
9932
+ if (node.tag !== 'template') {
9933
+ return false
9934
+ }
9935
+ if (node.for) {
9936
+ return true
9937
+ }
9938
+ }
9939
+ return false
9940
+ }
9941
+
9942
+ /* */
9943
+
9944
+ var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/;
9945
+ var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
9946
+
9947
+ // KeyboardEvent.keyCode aliases
9948
+ var keyCodes = {
9949
+ esc: 27,
9950
+ tab: 9,
9951
+ enter: 13,
9952
+ space: 32,
9953
+ up: 38,
9954
+ left: 37,
9955
+ right: 39,
9956
+ down: 40,
9957
+ 'delete': [8, 46]
9958
+ };
9959
+
9960
+ // KeyboardEvent.key aliases
9961
+ var keyNames = {
9962
+ esc: 'Escape',
9963
+ tab: 'Tab',
9964
+ enter: 'Enter',
9965
+ space: ' ',
9966
+ // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
9967
+ up: ['Up', 'ArrowUp'],
9968
+ left: ['Left', 'ArrowLeft'],
9969
+ right: ['Right', 'ArrowRight'],
9970
+ down: ['Down', 'ArrowDown'],
9971
+ 'delete': ['Backspace', 'Delete']
9972
+ };
9973
+
9974
+ // #4868: modifiers that prevent the execution of the listener
9975
+ // need to explicitly return null so that we can determine whether to remove
9976
+ // the listener for .once
9977
+ var genGuard = function (condition) { return ("if(" + condition + ")return null;"); };
9978
+
9979
+ var modifierCode = {
9980
+ stop: '$event.stopPropagation();',
9981
+ prevent: '$event.preventDefault();',
9982
+ self: genGuard("$event.target !== $event.currentTarget"),
9983
+ ctrl: genGuard("!$event.ctrlKey"),
9984
+ shift: genGuard("!$event.shiftKey"),
9985
+ alt: genGuard("!$event.altKey"),
9986
+ meta: genGuard("!$event.metaKey"),
9987
+ left: genGuard("'button' in $event && $event.button !== 0"),
9988
+ middle: genGuard("'button' in $event && $event.button !== 1"),
9989
+ right: genGuard("'button' in $event && $event.button !== 2")
9990
+ };
9991
+
9992
+ function genHandlers (
9993
+ events,
9994
+ isNative,
9995
+ warn
9996
+ ) {
9997
+ var res = isNative ? 'nativeOn:{' : 'on:{';
9998
+ for (var name in events) {
9999
+ res += "\"" + name + "\":" + (genHandler(name, events[name])) + ",";
10000
+ }
10001
+ return res.slice(0, -1) + '}'
10002
+ }
10003
+
10004
+ function genHandler (
10005
+ name,
10006
+ handler
10007
+ ) {
10008
+ if (!handler) {
10009
+ return 'function(){}'
10010
+ }
10011
+
10012
+ if (Array.isArray(handler)) {
10013
+ return ("[" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + "]")
10014
+ }
10015
+
10016
+ var isMethodPath = simplePathRE.test(handler.value);
10017
+ var isFunctionExpression = fnExpRE.test(handler.value);
10018
+
10019
+ if (!handler.modifiers) {
10020
+ if (isMethodPath || isFunctionExpression) {
10021
+ return handler.value
10022
+ }
10023
+ /* istanbul ignore if */
10024
+ return ("function($event){" + (handler.value) + "}") // inline statement
10025
+ } else {
10026
+ var code = '';
10027
+ var genModifierCode = '';
10028
+ var keys = [];
10029
+ for (var key in handler.modifiers) {
10030
+ if (modifierCode[key]) {
10031
+ genModifierCode += modifierCode[key];
10032
+ // left/right
10033
+ if (keyCodes[key]) {
10034
+ keys.push(key);
10035
+ }
10036
+ } else if (key === 'exact') {
10037
+ var modifiers = (handler.modifiers);
10038
+ genModifierCode += genGuard(
10039
+ ['ctrl', 'shift', 'alt', 'meta']
10040
+ .filter(function (keyModifier) { return !modifiers[keyModifier]; })
10041
+ .map(function (keyModifier) { return ("$event." + keyModifier + "Key"); })
10042
+ .join('||')
10043
+ );
10044
+ } else {
10045
+ keys.push(key);
10046
+ }
10047
+ }
10048
+ if (keys.length) {
10049
+ code += genKeyFilter(keys);
10050
+ }
10051
+ // Make sure modifiers like prevent and stop get executed after key filtering
10052
+ if (genModifierCode) {
10053
+ code += genModifierCode;
10054
+ }
10055
+ var handlerCode = isMethodPath
10056
+ ? ("return " + (handler.value) + "($event)")
10057
+ : isFunctionExpression
10058
+ ? ("return (" + (handler.value) + ")($event)")
10059
+ : handler.value;
10060
+ /* istanbul ignore if */
10061
+ return ("function($event){" + code + handlerCode + "}")
10062
+ }
10063
+ }
10064
+
10065
+ function genKeyFilter (keys) {
10066
+ return ("if(!('button' in $event)&&" + (keys.map(genFilterCode).join('&&')) + ")return null;")
10067
+ }
10068
+
10069
+ function genFilterCode (key) {
10070
+ var keyVal = parseInt(key, 10);
10071
+ if (keyVal) {
10072
+ return ("$event.keyCode!==" + keyVal)
10073
+ }
10074
+ var keyCode = keyCodes[key];
10075
+ var keyName = keyNames[key];
10076
+ return (
10077
+ "_k($event.keyCode," +
10078
+ (JSON.stringify(key)) + "," +
10079
+ (JSON.stringify(keyCode)) + "," +
10080
+ "$event.key," +
10081
+ "" + (JSON.stringify(keyName)) +
10082
+ ")"
10083
+ )
10084
+ }
10085
+
10086
+ /* */
10087
+
10088
+ function on (el, dir) {
10089
+ if ("development" !== 'production' && dir.modifiers) {
10090
+ warn("v-on without argument does not support modifiers.");
10091
+ }
10092
+ el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); };
10093
+ }
10094
+
10095
+ /* */
10096
+
10097
+ function bind$1 (el, dir) {
10098
+ el.wrapData = function (code) {
10099
+ return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")")
10100
+ };
10101
+ }
10102
+
10103
+ /* */
10104
+
10105
+ var baseDirectives = {
10106
+ on: on,
10107
+ bind: bind$1,
10108
+ cloak: noop
10109
+ }
10110
+
10111
+ /* */
10112
+
10113
+ var CodegenState = function CodegenState (options) {
10114
+ this.options = options;
10115
+ this.warn = options.warn || baseWarn;
10116
+ this.transforms = pluckModuleFunction(options.modules, 'transformCode');
10117
+ this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
10118
+ this.directives = extend(extend({}, baseDirectives), options.directives);
10119
+ var isReservedTag = options.isReservedTag || no;
10120
+ this.maybeComponent = function (el) { return !isReservedTag(el.tag); };
10121
+ this.onceId = 0;
10122
+ this.staticRenderFns = [];
10123
+ };
10124
+
10125
+
10126
+
10127
+ function generate (
10128
+ ast,
10129
+ options
10130
+ ) {
10131
+ var state = new CodegenState(options);
10132
+ var code = ast ? genElement(ast, state) : '_c("div")';
10133
+ return {
10134
+ render: ("with(this){return " + code + "}"),
10135
+ staticRenderFns: state.staticRenderFns
10136
+ }
10137
+ }
10138
+
10139
+ function genElement (el, state) {
10140
+ if (el.staticRoot && !el.staticProcessed) {
10141
+ return genStatic(el, state)
10142
+ } else if (el.once && !el.onceProcessed) {
10143
+ return genOnce(el, state)
10144
+ } else if (el.for && !el.forProcessed) {
10145
+ return genFor(el, state)
10146
+ } else if (el.if && !el.ifProcessed) {
10147
+ return genIf(el, state)
10148
+ } else if (el.tag === 'template' && !el.slotTarget) {
10149
+ return genChildren(el, state) || 'void 0'
10150
+ } else if (el.tag === 'slot') {
10151
+ return genSlot(el, state)
10152
+ } else {
10153
+ // component or element
10154
+ var code;
10155
+ if (el.component) {
10156
+ code = genComponent(el.component, el, state);
10157
+ } else {
10158
+ var data = el.plain ? undefined : genData$2(el, state);
10159
+
10160
+ var children = el.inlineTemplate ? null : genChildren(el, state, true);
10161
+ code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
10162
+ }
10163
+ // module transforms
10164
+ for (var i = 0; i < state.transforms.length; i++) {
10165
+ code = state.transforms[i](el, code);
10166
+ }
10167
+ return code
10168
+ }
10169
+ }
10170
+
10171
+ // hoist static sub-trees out
10172
+ function genStatic (el, state) {
10173
+ el.staticProcessed = true;
10174
+ state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}"));
10175
+ return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")")
10176
+ }
10177
+
10178
+ // v-once
10179
+ function genOnce (el, state) {
10180
+ el.onceProcessed = true;
10181
+ if (el.if && !el.ifProcessed) {
10182
+ return genIf(el, state)
10183
+ } else if (el.staticInFor) {
10184
+ var key = '';
10185
+ var parent = el.parent;
10186
+ while (parent) {
10187
+ if (parent.for) {
10188
+ key = parent.key;
10189
+ break
10190
+ }
10191
+ parent = parent.parent;
10192
+ }
10193
+ if (!key) {
10194
+ "development" !== 'production' && state.warn(
10195
+ "v-once can only be used inside v-for that is keyed. "
10196
+ );
10197
+ return genElement(el, state)
10198
+ }
10199
+ return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")")
10200
+ } else {
10201
+ return genStatic(el, state)
10202
+ }
10203
+ }
10204
+
10205
+ function genIf (
10206
+ el,
10207
+ state,
10208
+ altGen,
10209
+ altEmpty
10210
+ ) {
10211
+ el.ifProcessed = true; // avoid recursion
10212
+ return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
10213
+ }
10214
+
10215
+ function genIfConditions (
10216
+ conditions,
10217
+ state,
10218
+ altGen,
10219
+ altEmpty
10220
+ ) {
10221
+ if (!conditions.length) {
10222
+ return altEmpty || '_e()'
10223
+ }
10224
+
10225
+ var condition = conditions.shift();
10226
+ if (condition.exp) {
10227
+ return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty)))
10228
+ } else {
10229
+ return ("" + (genTernaryExp(condition.block)))
10230
+ }
10231
+
10232
+ // v-if with v-once should generate code like (a)?_m(0):_m(1)
10233
+ function genTernaryExp (el) {
10234
+ return altGen
10235
+ ? altGen(el, state)
10236
+ : el.once
10237
+ ? genOnce(el, state)
10238
+ : genElement(el, state)
10239
+ }
10240
+ }
10241
+
10242
+ function genFor (
10243
+ el,
10244
+ state,
10245
+ altGen,
10246
+ altHelper
10247
+ ) {
10248
+ var exp = el.for;
10249
+ var alias = el.alias;
10250
+ var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
10251
+ var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
10252
+
10253
+ if ("development" !== 'production' &&
10254
+ state.maybeComponent(el) &&
10255
+ el.tag !== 'slot' &&
10256
+ el.tag !== 'template' &&
10257
+ !el.key
10258
+ ) {
10259
+ state.warn(
10260
+ "<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " +
10261
+ "v-for should have explicit keys. " +
10262
+ "See https://vuejs.org/guide/list.html#key for more info.",
10263
+ true /* tip */
10264
+ );
10265
+ }
10266
+
10267
+ el.forProcessed = true; // avoid recursion
10268
+ return (altHelper || '_l') + "((" + exp + ")," +
10269
+ "function(" + alias + iterator1 + iterator2 + "){" +
10270
+ "return " + ((altGen || genElement)(el, state)) +
10271
+ '})'
10272
+ }
10273
+
10274
+ function genData$2 (el, state) {
10275
+ var data = '{';
10276
+
10277
+ // directives first.
10278
+ // directives may mutate the el's other properties before they are generated.
10279
+ var dirs = genDirectives(el, state);
10280
+ if (dirs) { data += dirs + ','; }
10281
+
10282
+ // key
10283
+ if (el.key) {
10284
+ data += "key:" + (el.key) + ",";
10285
+ }
10286
+ // ref
10287
+ if (el.ref) {
10288
+ data += "ref:" + (el.ref) + ",";
10289
+ }
10290
+ if (el.refInFor) {
10291
+ data += "refInFor:true,";
10292
+ }
10293
+ // pre
10294
+ if (el.pre) {
10295
+ data += "pre:true,";
10296
+ }
10297
+ // record original tag name for components using "is" attribute
10298
+ if (el.component) {
10299
+ data += "tag:\"" + (el.tag) + "\",";
10300
+ }
10301
+ // module data generation functions
10302
+ for (var i = 0; i < state.dataGenFns.length; i++) {
10303
+ data += state.dataGenFns[i](el);
10304
+ }
10305
+ // attributes
10306
+ if (el.attrs) {
10307
+ data += "attrs:{" + (genProps(el.attrs)) + "},";
10308
+ }
10309
+ // DOM props
10310
+ if (el.props) {
10311
+ data += "domProps:{" + (genProps(el.props)) + "},";
10312
+ }
10313
+ // event handlers
10314
+ if (el.events) {
10315
+ data += (genHandlers(el.events, false, state.warn)) + ",";
10316
+ }
10317
+ if (el.nativeEvents) {
10318
+ data += (genHandlers(el.nativeEvents, true, state.warn)) + ",";
10319
+ }
10320
+ // slot target
10321
+ // only for non-scoped slots
10322
+ if (el.slotTarget && !el.slotScope) {
10323
+ data += "slot:" + (el.slotTarget) + ",";
10324
+ }
10325
+ // scoped slots
10326
+ if (el.scopedSlots) {
10327
+ data += (genScopedSlots(el.scopedSlots, state)) + ",";
10328
+ }
10329
+ // component v-model
10330
+ if (el.model) {
10331
+ data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},";
10332
+ }
10333
+ // inline-template
10334
+ if (el.inlineTemplate) {
10335
+ var inlineTemplate = genInlineTemplate(el, state);
10336
+ if (inlineTemplate) {
10337
+ data += inlineTemplate + ",";
10338
+ }
10339
+ }
10340
+ data = data.replace(/,$/, '') + '}';
10341
+ // v-bind data wrap
10342
+ if (el.wrapData) {
10343
+ data = el.wrapData(data);
10344
+ }
10345
+ // v-on data wrap
10346
+ if (el.wrapListeners) {
10347
+ data = el.wrapListeners(data);
10348
+ }
10349
+ return data
10350
+ }
10351
+
10352
+ function genDirectives (el, state) {
10353
+ var dirs = el.directives;
10354
+ if (!dirs) { return }
10355
+ var res = 'directives:[';
10356
+ var hasRuntime = false;
10357
+ var i, l, dir, needRuntime;
10358
+ for (i = 0, l = dirs.length; i < l; i++) {
10359
+ dir = dirs[i];
10360
+ needRuntime = true;
10361
+ var gen = state.directives[dir.name];
10362
+ if (gen) {
10363
+ // compile-time directive that manipulates AST.
10364
+ // returns true if it also needs a runtime counterpart.
10365
+ needRuntime = !!gen(el, dir, state.warn);
10366
+ }
10367
+ if (needRuntime) {
10368
+ hasRuntime = true;
10369
+ res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:\"" + (dir.arg) + "\"") : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},";
10370
+ }
10371
+ }
10372
+ if (hasRuntime) {
10373
+ return res.slice(0, -1) + ']'
10374
+ }
10375
+ }
10376
+
10377
+ function genInlineTemplate (el, state) {
10378
+ var ast = el.children[0];
10379
+ if ("development" !== 'production' && (
10380
+ el.children.length !== 1 || ast.type !== 1
10381
+ )) {
10382
+ state.warn('Inline-template components must have exactly one child element.');
10383
+ }
10384
+ if (ast.type === 1) {
10385
+ var inlineRenderFns = generate(ast, state.options);
10386
+ return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}")
10387
+ }
10388
+ }
10389
+
10390
+ function genScopedSlots (
10391
+ slots,
10392
+ state
10393
+ ) {
10394
+ return ("scopedSlots:_u([" + (Object.keys(slots).map(function (key) {
10395
+ return genScopedSlot(key, slots[key], state)
10396
+ }).join(',')) + "])")
10397
+ }
10398
+
10399
+ function genScopedSlot (
10400
+ key,
10401
+ el,
10402
+ state
10403
+ ) {
10404
+ if (el.for && !el.forProcessed) {
10405
+ return genForScopedSlot(key, el, state)
10406
+ }
10407
+ var fn = "function(" + (String(el.slotScope)) + "){" +
10408
+ "return " + (el.tag === 'template'
10409
+ ? el.if
10410
+ ? ((el.if) + "?" + (genChildren(el, state) || 'undefined') + ":undefined")
10411
+ : genChildren(el, state) || 'undefined'
10412
+ : genElement(el, state)) + "}";
10413
+ return ("{key:" + key + ",fn:" + fn + "}")
10414
+ }
10415
+
10416
+ function genForScopedSlot (
10417
+ key,
10418
+ el,
10419
+ state
10420
+ ) {
10421
+ var exp = el.for;
10422
+ var alias = el.alias;
10423
+ var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
10424
+ var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
10425
+ el.forProcessed = true; // avoid recursion
10426
+ return "_l((" + exp + ")," +
10427
+ "function(" + alias + iterator1 + iterator2 + "){" +
10428
+ "return " + (genScopedSlot(key, el, state)) +
10429
+ '})'
10430
+ }
10431
+
10432
+ function genChildren (
10433
+ el,
10434
+ state,
10435
+ checkSkip,
10436
+ altGenElement,
10437
+ altGenNode
10438
+ ) {
10439
+ var children = el.children;
10440
+ if (children.length) {
10441
+ var el$1 = children[0];
10442
+ // optimize single v-for
10443
+ if (children.length === 1 &&
10444
+ el$1.for &&
10445
+ el$1.tag !== 'template' &&
10446
+ el$1.tag !== 'slot'
10447
+ ) {
10448
+ return (altGenElement || genElement)(el$1, state)
10449
+ }
10450
+ var normalizationType = checkSkip
10451
+ ? getNormalizationType(children, state.maybeComponent)
10452
+ : 0;
10453
+ var gen = altGenNode || genNode;
10454
+ return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType ? ("," + normalizationType) : ''))
10455
+ }
10456
+ }
10457
+
10458
+ // determine the normalization needed for the children array.
10459
+ // 0: no normalization needed
10460
+ // 1: simple normalization needed (possible 1-level deep nested array)
10461
+ // 2: full normalization needed
10462
+ function getNormalizationType (
10463
+ children,
10464
+ maybeComponent
10465
+ ) {
10466
+ var res = 0;
10467
+ for (var i = 0; i < children.length; i++) {
10468
+ var el = children[i];
10469
+ if (el.type !== 1) {
10470
+ continue
10471
+ }
10472
+ if (needsNormalization(el) ||
10473
+ (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
10474
+ res = 2;
10475
+ break
10476
+ }
10477
+ if (maybeComponent(el) ||
10478
+ (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
10479
+ res = 1;
10480
+ }
10481
+ }
10482
+ return res
10483
+ }
10484
+
10485
+ function needsNormalization (el) {
10486
+ return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
10487
+ }
10488
+
10489
+ function genNode (node, state) {
10490
+ if (node.type === 1) {
10491
+ return genElement(node, state)
10492
+ } if (node.type === 3 && node.isComment) {
10493
+ return genComment(node)
10494
+ } else {
10495
+ return genText(node)
10496
+ }
10497
+ }
10498
+
10499
+ function genText (text) {
10500
+ return ("_v(" + (text.type === 2
10501
+ ? text.expression // no need for () because already wrapped in _s()
10502
+ : transformSpecialNewlines(JSON.stringify(text.text))) + ")")
10503
+ }
10504
+
10505
+ function genComment (comment) {
10506
+ return ("_e(" + (JSON.stringify(comment.text)) + ")")
10507
+ }
10508
+
10509
+ function genSlot (el, state) {
10510
+ var slotName = el.slotName || '"default"';
10511
+ var children = genChildren(el, state);
10512
+ var res = "_t(" + slotName + (children ? ("," + children) : '');
10513
+ var attrs = el.attrs && ("{" + (el.attrs.map(function (a) { return ((camelize(a.name)) + ":" + (a.value)); }).join(',')) + "}");
10514
+ var bind$$1 = el.attrsMap['v-bind'];
10515
+ if ((attrs || bind$$1) && !children) {
10516
+ res += ",null";
10517
+ }
10518
+ if (attrs) {
10519
+ res += "," + attrs;
10520
+ }
10521
+ if (bind$$1) {
10522
+ res += (attrs ? '' : ',null') + "," + bind$$1;
10523
+ }
10524
+ return res + ')'
10525
+ }
10526
+
10527
+ // componentName is el.component, take it as argument to shun flow's pessimistic refinement
10528
+ function genComponent (
10529
+ componentName,
10530
+ el,
10531
+ state
10532
+ ) {
10533
+ var children = el.inlineTemplate ? null : genChildren(el, state, true);
10534
+ return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")")
10535
+ }
10536
+
10537
+ function genProps (props) {
10538
+ var res = '';
10539
+ for (var i = 0; i < props.length; i++) {
10540
+ var prop = props[i];
10541
+ /* istanbul ignore if */
10542
+ {
10543
+ res += "\"" + (prop.name) + "\":" + (transformSpecialNewlines(prop.value)) + ",";
10544
+ }
10545
+ }
10546
+ return res.slice(0, -1)
10547
+ }
10548
+
10549
+ // #3895, #4268
10550
+ function transformSpecialNewlines (text) {
10551
+ return text
10552
+ .replace(/\u2028/g, '\\u2028')
10553
+ .replace(/\u2029/g, '\\u2029')
10554
+ }
10555
+
10556
+ /* */
10557
+
10558
+ // these keywords should not appear inside expressions, but operators like
10559
+ // typeof, instanceof and in are allowed
10560
+ var prohibitedKeywordRE = new RegExp('\\b' + (
10561
+ 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
10562
+ 'super,throw,while,yield,delete,export,import,return,switch,default,' +
10563
+ 'extends,finally,continue,debugger,function,arguments'
10564
+ ).split(',').join('\\b|\\b') + '\\b');
10565
+
10566
+ // these unary operators should not be used as property/method names
10567
+ var unaryOperatorsRE = new RegExp('\\b' + (
10568
+ 'delete,typeof,void'
10569
+ ).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)');
10570
+
10571
+ // strip strings in expressions
10572
+ var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
10573
+
10574
+ // detect problematic expressions in a template
10575
+ function detectErrors (ast) {
10576
+ var errors = [];
10577
+ if (ast) {
10578
+ checkNode(ast, errors);
10579
+ }
10580
+ return errors
10581
+ }
10582
+
10583
+ function checkNode (node, errors) {
10584
+ if (node.type === 1) {
10585
+ for (var name in node.attrsMap) {
10586
+ if (dirRE.test(name)) {
10587
+ var value = node.attrsMap[name];
10588
+ if (value) {
10589
+ if (name === 'v-for') {
10590
+ checkFor(node, ("v-for=\"" + value + "\""), errors);
10591
+ } else if (onRE.test(name)) {
10592
+ checkEvent(value, (name + "=\"" + value + "\""), errors);
10593
+ } else {
10594
+ checkExpression(value, (name + "=\"" + value + "\""), errors);
10595
+ }
10596
+ }
10597
+ }
10598
+ }
10599
+ if (node.children) {
10600
+ for (var i = 0; i < node.children.length; i++) {
10601
+ checkNode(node.children[i], errors);
10602
+ }
10603
+ }
10604
+ } else if (node.type === 2) {
10605
+ checkExpression(node.expression, node.text, errors);
10606
+ }
10607
+ }
10608
+
10609
+ function checkEvent (exp, text, errors) {
10610
+ var stipped = exp.replace(stripStringRE, '');
10611
+ var keywordMatch = stipped.match(unaryOperatorsRE);
10612
+ if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {
10613
+ errors.push(
10614
+ "avoid using JavaScript unary operator as property name: " +
10615
+ "\"" + (keywordMatch[0]) + "\" in expression " + (text.trim())
10616
+ );
10617
+ }
10618
+ checkExpression(exp, text, errors);
10619
+ }
10620
+
10621
+ function checkFor (node, text, errors) {
10622
+ checkExpression(node.for || '', text, errors);
10623
+ checkIdentifier(node.alias, 'v-for alias', text, errors);
10624
+ checkIdentifier(node.iterator1, 'v-for iterator', text, errors);
10625
+ checkIdentifier(node.iterator2, 'v-for iterator', text, errors);
10626
+ }
10627
+
10628
+ function checkIdentifier (
10629
+ ident,
10630
+ type,
10631
+ text,
10632
+ errors
10633
+ ) {
10634
+ if (typeof ident === 'string') {
10635
+ try {
10636
+ new Function(("var " + ident + "=_"));
10637
+ } catch (e) {
10638
+ errors.push(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())));
10639
+ }
10640
+ }
10641
+ }
10642
+
10643
+ function checkExpression (exp, text, errors) {
10644
+ try {
10645
+ new Function(("return " + exp));
10646
+ } catch (e) {
10647
+ var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);
10648
+ if (keywordMatch) {
10649
+ errors.push(
10650
+ "avoid using JavaScript keyword as property name: " +
10651
+ "\"" + (keywordMatch[0]) + "\"\n Raw expression: " + (text.trim())
10652
+ );
10653
+ } else {
10654
+ errors.push(
10655
+ "invalid expression: " + (e.message) + " in\n\n" +
10656
+ " " + exp + "\n\n" +
10657
+ " Raw expression: " + (text.trim()) + "\n"
10658
+ );
10659
+ }
10660
+ }
10661
+ }
10662
+
10663
+ /* */
10664
+
10665
+ function createFunction (code, errors) {
10666
+ try {
10667
+ return new Function(code)
10668
+ } catch (err) {
10669
+ errors.push({ err: err, code: code });
10670
+ return noop
10671
+ }
10672
+ }
10673
+
10674
+ function createCompileToFunctionFn (compile) {
10675
+ var cache = Object.create(null);
10676
+
10677
+ return function compileToFunctions (
10678
+ template,
10679
+ options,
10680
+ vm
10681
+ ) {
10682
+ options = extend({}, options);
10683
+ var warn$$1 = options.warn || warn;
10684
+ delete options.warn;
10685
+
10686
+ /* istanbul ignore if */
10687
+ {
10688
+ // detect possible CSP restriction
10689
+ try {
10690
+ new Function('return 1');
10691
+ } catch (e) {
10692
+ if (e.toString().match(/unsafe-eval|CSP/)) {
10693
+ warn$$1(
10694
+ 'It seems you are using the standalone build of Vue.js in an ' +
10695
+ 'environment with Content Security Policy that prohibits unsafe-eval. ' +
10696
+ 'The template compiler cannot work in this environment. Consider ' +
10697
+ 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
10698
+ 'templates into render functions.'
10699
+ );
10700
+ }
10701
+ }
10702
+ }
10703
+
10704
+ // check cache
10705
+ var key = options.delimiters
10706
+ ? String(options.delimiters) + template
10707
+ : template;
10708
+ if (cache[key]) {
10709
+ return cache[key]
10710
+ }
10711
+
10712
+ // compile
10713
+ var compiled = compile(template, options);
10714
+
10715
+ // check compilation errors/tips
10716
+ {
10717
+ if (compiled.errors && compiled.errors.length) {
10718
+ warn$$1(
10719
+ "Error compiling template:\n\n" + template + "\n\n" +
10720
+ compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n',
10721
+ vm
10722
+ );
10723
+ }
10724
+ if (compiled.tips && compiled.tips.length) {
10725
+ compiled.tips.forEach(function (msg) { return tip(msg, vm); });
10726
+ }
10727
+ }
10728
+
10729
+ // turn code into functions
10730
+ var res = {};
10731
+ var fnGenErrors = [];
10732
+ res.render = createFunction(compiled.render, fnGenErrors);
10733
+ res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
10734
+ return createFunction(code, fnGenErrors)
10735
+ });
10736
+
10737
+ // check function generation errors.
10738
+ // this should only happen if there is a bug in the compiler itself.
10739
+ // mostly for codegen development use
10740
+ /* istanbul ignore if */
10741
+ {
10742
+ if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
10743
+ warn$$1(
10744
+ "Failed to generate render function:\n\n" +
10745
+ fnGenErrors.map(function (ref) {
10746
+ var err = ref.err;
10747
+ var code = ref.code;
10748
+
10749
+ return ((err.toString()) + " in\n\n" + code + "\n");
10750
+ }).join('\n'),
10751
+ vm
10752
+ );
10753
+ }
10754
+ }
10755
+
10756
+ return (cache[key] = res)
10757
+ }
10758
+ }
10759
+
10760
+ /* */
10761
+
10762
+ function createCompilerCreator (baseCompile) {
10763
+ return function createCompiler (baseOptions) {
10764
+ function compile (
10765
+ template,
10766
+ options
10767
+ ) {
10768
+ var finalOptions = Object.create(baseOptions);
10769
+ var errors = [];
10770
+ var tips = [];
10771
+ finalOptions.warn = function (msg, tip) {
10772
+ (tip ? tips : errors).push(msg);
10773
+ };
10774
+
10775
+ if (options) {
10776
+ // merge custom modules
10777
+ if (options.modules) {
10778
+ finalOptions.modules =
10779
+ (baseOptions.modules || []).concat(options.modules);
10780
+ }
10781
+ // merge custom directives
10782
+ if (options.directives) {
10783
+ finalOptions.directives = extend(
10784
+ Object.create(baseOptions.directives || null),
10785
+ options.directives
10786
+ );
10787
+ }
10788
+ // copy other options
10789
+ for (var key in options) {
10790
+ if (key !== 'modules' && key !== 'directives') {
10791
+ finalOptions[key] = options[key];
10792
+ }
10793
+ }
10794
+ }
10795
+
10796
+ var compiled = baseCompile(template, finalOptions);
10797
+ {
10798
+ errors.push.apply(errors, detectErrors(compiled.ast));
10799
+ }
10800
+ compiled.errors = errors;
10801
+ compiled.tips = tips;
10802
+ return compiled
10803
+ }
10804
+
10805
+ return {
10806
+ compile: compile,
10807
+ compileToFunctions: createCompileToFunctionFn(compile)
10808
+ }
10809
+ }
10810
+ }
10811
+
10812
+ /* */
10813
+
10814
+ // `createCompilerCreator` allows creating compilers that use alternative
10815
+ // parser/optimizer/codegen, e.g the SSR optimizing compiler.
10816
+ // Here we just export a default compiler using the default parts.
10817
+ var createCompiler = createCompilerCreator(function baseCompile (
10818
+ template,
10819
+ options
10820
+ ) {
10821
+ var ast = parse(template.trim(), options);
10822
+ if (options.optimize !== false) {
10823
+ optimize(ast, options);
10824
+ }
10825
+ var code = generate(ast, options);
10826
+ return {
10827
+ ast: ast,
10828
+ render: code.render,
10829
+ staticRenderFns: code.staticRenderFns
10830
+ }
10831
+ });
10832
+
10833
+ /* */
10834
+
10835
+ var ref$1 = createCompiler(baseOptions);
10836
+ var compileToFunctions = ref$1.compileToFunctions;
10837
+
10838
+ /* */
10839
+
10840
+ // check whether current browser encodes a char inside attribute values
10841
+ var div;
10842
+ function getShouldDecode (href) {
10843
+ div = div || document.createElement('div');
10844
+ div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
10845
+ return div.innerHTML.indexOf('&#10;') > 0
10846
+ }
10847
+
10848
+ // #3663: IE encodes newlines inside attribute values while other browsers don't
10849
+ var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
10850
+ // #6828: chrome encodes content in a[href]
10851
+ var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
10852
+
10853
+ /* */
10854
+
10855
+ var idToTemplate = cached(function (id) {
10856
+ var el = query(id);
10857
+ return el && el.innerHTML
10858
+ });
10859
+
10860
+ var mount = Vue.prototype.$mount;
10861
+ Vue.prototype.$mount = function (
10862
+ el,
10863
+ hydrating
10864
+ ) {
10865
+ el = el && query(el);
10866
+
10867
+ /* istanbul ignore if */
10868
+ if (el === document.body || el === document.documentElement) {
10869
+ "development" !== 'production' && warn(
10870
+ "Do not mount Vue to <html> or <body> - mount to normal elements instead."
10871
+ );
10872
+ return this
10873
+ }
10874
+
10875
+ var options = this.$options;
10876
+ // resolve template/el and convert to render function
10877
+ if (!options.render) {
10878
+ var template = options.template;
10879
+ if (template) {
10880
+ if (typeof template === 'string') {
10881
+ if (template.charAt(0) === '#') {
10882
+ template = idToTemplate(template);
10883
+ /* istanbul ignore if */
10884
+ if ("development" !== 'production' && !template) {
10885
+ warn(
10886
+ ("Template element not found or is empty: " + (options.template)),
10887
+ this
10888
+ );
10889
+ }
10890
+ }
10891
+ } else if (template.nodeType) {
10892
+ template = template.innerHTML;
10893
+ } else {
10894
+ {
10895
+ warn('invalid template option:' + template, this);
10896
+ }
10897
+ return this
10898
+ }
10899
+ } else if (el) {
10900
+ template = getOuterHTML(el);
10901
+ }
10902
+ if (template) {
10903
+ /* istanbul ignore if */
10904
+ if ("development" !== 'production' && config.performance && mark) {
10905
+ mark('compile');
10906
+ }
10907
+
10908
+ var ref = compileToFunctions(template, {
10909
+ shouldDecodeNewlines: shouldDecodeNewlines,
10910
+ shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
10911
+ delimiters: options.delimiters,
10912
+ comments: options.comments
10913
+ }, this);
10914
+ var render = ref.render;
10915
+ var staticRenderFns = ref.staticRenderFns;
10916
+ options.render = render;
10917
+ options.staticRenderFns = staticRenderFns;
10918
+
10919
+ /* istanbul ignore if */
10920
+ if ("development" !== 'production' && config.performance && mark) {
10921
+ mark('compile end');
10922
+ measure(("vue " + (this._name) + " compile"), 'compile', 'compile end');
10923
+ }
10924
+ }
10925
+ }
10926
+ return mount.call(this, el, hydrating)
10927
+ };
10928
+
10929
+ /**
10930
+ * Get outerHTML of elements, taking care
10931
+ * of SVG elements in IE as well.
10932
+ */
10933
+ function getOuterHTML (el) {
10934
+ if (el.outerHTML) {
10935
+ return el.outerHTML
10936
+ } else {
10937
+ var container = document.createElement('div');
10938
+ container.appendChild(el.cloneNode(true));
10939
+ return container.innerHTML
10940
+ }
10941
+ }
10942
+
10943
+ Vue.compile = compileToFunctions;
10944
+
10945
+ return Vue;
10946
+
10947
+ })));
admin/assets/js/solo/vue/vue.min.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /*!
2
+ * Vue.js v2.5.16
3
+ * (c) 2014-2018 Evan You
4
+ * Released under the MIT License.
5
+ */
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Vue=t()}(this,function(){"use strict";var y=Object.freeze({});function M(e){return null==e}function D(e){return null!=e}function S(e){return!0===e}function T(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function P(e){return null!==e&&"object"==typeof e}var r=Object.prototype.toString;function l(e){return"[object Object]"===r.call(e)}function i(e){var t=parseFloat(String(e));return 0<=t&&Math.floor(t)===t&&isFinite(e)}function t(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function F(e){var t=parseFloat(e);return isNaN(t)?e:t}function s(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var c=s("slot,component",!0),u=s("key,ref,slot,slot-scope,is");function f(e,t){if(e.length){var n=e.indexOf(t);if(-1<n)return e.splice(n,1)}}var n=Object.prototype.hasOwnProperty;function p(e,t){return n.call(e,t)}function e(t){var n=Object.create(null);return function(e){return n[e]||(n[e]=t(e))}}var o=/-(\w)/g,g=e(function(e){return e.replace(o,function(e,t){return t?t.toUpperCase():""})}),d=e(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),a=/\B([A-Z])/g,_=e(function(e){return e.replace(a,"-$1").toLowerCase()});var v=Function.prototype.bind?function(e,t){return e.bind(t)}:function(n,r){function e(e){var t=arguments.length;return t?1<t?n.apply(r,arguments):n.call(r,e):n.call(r)}return e._length=n.length,e};function h(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function m(e,t){for(var n in t)e[n]=t[n];return e}function b(e){for(var t={},n=0;n<e.length;n++)e[n]&&m(t,e[n]);return t}function $(e,t,n){}var O=function(e,t,n){return!1},w=function(e){return e};function C(t,n){if(t===n)return!0;var e=P(t),r=P(n);if(!e||!r)return!e&&!r&&String(t)===String(n);try{var i=Array.isArray(t),o=Array.isArray(n);if(i&&o)return t.length===n.length&&t.every(function(e,t){return C(e,n[t])});if(i||o)return!1;var a=Object.keys(t),s=Object.keys(n);return a.length===s.length&&a.every(function(e){return C(t[e],n[e])})}catch(e){return!1}}function x(e,t){for(var n=0;n<e.length;n++)if(C(e[n],t))return n;return-1}function R(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var E="data-server-rendered",k=["component","directive","filter"],A=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],j={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:O,isReservedAttr:O,isUnknownElement:O,getTagNamespace:$,parsePlatformTagName:w,mustUseProp:O,_lifecycleHooks:A};function N(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var L=/[^\w.$]/;var I,H="__proto__"in{},B="undefined"!=typeof window,U="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,V=U&&WXEnvironment.platform.toLowerCase(),z=B&&window.navigator.userAgent.toLowerCase(),K=z&&/msie|trident/.test(z),J=z&&0<z.indexOf("msie 9.0"),q=z&&0<z.indexOf("edge/"),W=(z&&z.indexOf("android"),z&&/iphone|ipad|ipod|ios/.test(z)||"ios"===V),G=(z&&/chrome\/\d+/.test(z),{}.watch),Z=!1;if(B)try{var X={};Object.defineProperty(X,"passive",{get:function(){Z=!0}}),window.addEventListener("test-passive",null,X)}catch(e){}var Y=function(){return void 0===I&&(I=!B&&!U&&"undefined"!=typeof global&&"server"===global.process.env.VUE_ENV),I},Q=B&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ee(e){return"function"==typeof e&&/native code/.test(e.toString())}var te,ne="undefined"!=typeof Symbol&&ee(Symbol)&&"undefined"!=typeof Reflect&&ee(Reflect.ownKeys);te="undefined"!=typeof Set&&ee(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var re=$,ie=0,oe=function(){this.id=ie++,this.subs=[]};oe.prototype.addSub=function(e){this.subs.push(e)},oe.prototype.removeSub=function(e){f(this.subs,e)},oe.prototype.depend=function(){oe.target&&oe.target.addDep(this)},oe.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},oe.target=null;var ae=[];function se(e){oe.target&&ae.push(oe.target),oe.target=e}function ce(){oe.target=ae.pop()}var le=function(e,t,n,r,i,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},ue={child:{configurable:!0}};ue.child.get=function(){return this.componentInstance},Object.defineProperties(le.prototype,ue);var fe=function(e){void 0===e&&(e="");var t=new le;return t.text=e,t.isComment=!0,t};function pe(e){return new le(void 0,void 0,void 0,String(e))}function de(e){var t=new le(e.tag,e.data,e.children,e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.isCloned=!0,t}var ve=Array.prototype,he=Object.create(ve);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(o){var a=ve[o];N(he,o,function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r=a.apply(this,e),i=this.__ob__;switch(o){case"push":case"unshift":n=e;break;case"splice":n=e.slice(2)}return n&&i.observeArray(n),i.dep.notify(),r})});var me=Object.getOwnPropertyNames(he),ye=!0;function ge(e){ye=e}var _e=function(e){(this.value=e,this.dep=new oe,this.vmCount=0,N(e,"__ob__",this),Array.isArray(e))?((H?be:$e)(e,he,me),this.observeArray(e)):this.walk(e)};function be(e,t,n){e.__proto__=t}function $e(e,t,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];N(e,o,t[o])}}function we(e,t){var n;if(P(e)&&!(e instanceof le))return p(e,"__ob__")&&e.__ob__ instanceof _e?n=e.__ob__:ye&&!Y()&&(Array.isArray(e)||l(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new _e(e)),t&&n&&n.vmCount++,n}function Ce(n,e,r,t,i){var o=new oe,a=Object.getOwnPropertyDescriptor(n,e);if(!a||!1!==a.configurable){var s=a&&a.get;s||2!==arguments.length||(r=n[e]);var c=a&&a.set,l=!i&&we(r);Object.defineProperty(n,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(n):r;return oe.target&&(o.depend(),l&&(l.dep.depend(),Array.isArray(e)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(e))),e},set:function(e){var t=s?s.call(n):r;e===t||e!=e&&t!=t||(c?c.call(n,e):r=e,l=!i&&we(e),o.notify())}})}}function xe(e,t,n){if(Array.isArray(e)&&i(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Ce(r.value,t,n),r.dep.notify(),n):e[t]=n}function ke(e,t){if(Array.isArray(e)&&i(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||p(e,t)&&(delete e[t],n&&n.dep.notify())}}_e.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Ce(e,t[n])},_e.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)we(e[t])};var Ae=j.optionMergeStrategies;function Oe(e,t){if(!t)return e;for(var n,r,i,o=Object.keys(t),a=0;a<o.length;a++)r=e[n=o[a]],i=t[n],p(e,n)?l(r)&&l(i)&&Oe(r,i):xe(e,n,i);return e}function Se(n,r,i){return i?function(){var e="function"==typeof r?r.call(i,i):r,t="function"==typeof n?n.call(i,i):n;return e?Oe(e,t):t}:r?n?function(){return Oe("function"==typeof r?r.call(this,this):r,"function"==typeof n?n.call(this,this):n)}:r:n}function Te(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function Ee(e,t,n,r){var i=Object.create(e||null);return t?m(i,t):i}Ae.data=function(e,t,n){return n?Se(e,t,n):t&&"function"!=typeof t?e:Se(e,t)},A.forEach(function(e){Ae[e]=Te}),k.forEach(function(e){Ae[e+"s"]=Ee}),Ae.watch=function(e,t,n,r){if(e===G&&(e=void 0),t===G&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var o in m(i,e),t){var a=i[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},Ae.props=Ae.methods=Ae.inject=Ae.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return m(i,e),t&&m(i,t),i},Ae.provide=Se;var je=function(e,t){return void 0===t?e:t};function Ne(n,r,i){"function"==typeof r&&(r=r.options),function(e,t){var n=e.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[g(i)]={type:null});else if(l(n))for(var a in n)i=n[a],o[g(a)]=l(i)?i:{type:i};e.props=o}}(r),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(l(n))for(var o in n){var a=n[o];r[o]=l(a)?m({from:o},a):{from:a}}}}(r),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}(r);var e=r.extends;if(e&&(n=Ne(n,e,i)),r.mixins)for(var t=0,o=r.mixins.length;t<o;t++)n=Ne(n,r.mixins[t],i);var a,s={};for(a in n)c(a);for(a in r)p(n,a)||c(a);function c(e){var t=Ae[e]||je;s[e]=t(n[e],r[e],i,e)}return s}function Le(e,t,n,r){if("string"==typeof n){var i=e[t];if(p(i,n))return i[n];var o=g(n);if(p(i,o))return i[o];var a=d(o);return p(i,a)?i[a]:i[n]||i[o]||i[a]}}function Ie(e,t,n,r){var i=t[e],o=!p(n,e),a=n[e],s=Pe(Boolean,i.type);if(-1<s)if(o&&!p(i,"default"))a=!1;else if(""===a||a===_(e)){var c=Pe(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!p(t,"default"))return;var r=t.default;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return"function"==typeof r&&"Function"!==Me(t.type)?r.call(e):r}(r,i,e);var l=ye;ge(!0),we(a),ge(l)}return a}function Me(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function De(e,t){return Me(e)===Me(t)}function Pe(e,t){if(!Array.isArray(t))return De(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(De(t[n],e))return n;return-1}function Fe(e,t,n){if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,e,t,n))return}catch(e){Re(e,r,"errorCaptured hook")}}Re(e,t,n)}function Re(e,t,n){if(j.errorHandler)try{return j.errorHandler.call(null,e,t,n)}catch(e){He(e,null,"config.errorHandler")}He(e,t,n)}function He(e,t,n){if(!B&&!U||"undefined"==typeof console)throw e;console.error(e)}var Be,Ue,Ve=[],ze=!1;function Ke(){ze=!1;for(var e=Ve.slice(0),t=Ve.length=0;t<e.length;t++)e[t]()}var Je=!1;if("undefined"!=typeof setImmediate&&ee(setImmediate))Ue=function(){setImmediate(Ke)};else if("undefined"==typeof MessageChannel||!ee(MessageChannel)&&"[object MessageChannelConstructor]"!==MessageChannel.toString())Ue=function(){setTimeout(Ke,0)};else{var qe=new MessageChannel,We=qe.port2;qe.port1.onmessage=Ke,Ue=function(){We.postMessage(1)}}if("undefined"!=typeof Promise&&ee(Promise)){var Ge=Promise.resolve();Be=function(){Ge.then(Ke),W&&setTimeout($)}}else Be=Ue;function Ze(e,t){var n;if(Ve.push(function(){if(e)try{e.call(t)}catch(e){Fe(e,t,"nextTick")}else n&&n(t)}),ze||(ze=!0,Je?Ue():Be()),!e&&"undefined"!=typeof Promise)return new Promise(function(e){n=e})}var Xe=new te;function Ye(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!P(t)||Object.isFrozen(t)||t instanceof le)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=t.length;r--;)e(t[r],n);else for(i=Object.keys(t),r=i.length;r--;)e(t[i[r]],n)}(e,Xe),Xe.clear()}var Qe,et=e(function(e){var t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),r="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}});function tt(e){function i(){var e=arguments,t=i.fns;if(!Array.isArray(t))return t.apply(null,arguments);for(var n=t.slice(),r=0;r<n.length;r++)n[r].apply(null,e)}return i.fns=e,i}function nt(e,t,n,r,i){var o,a,s,c;for(o in e)a=e[o],s=t[o],c=et(o),M(a)||(M(s)?(M(a.fns)&&(a=e[o]=tt(a)),n(c.name,a,c.once,c.capture,c.passive,c.params)):a!==s&&(s.fns=a,e[o]=s));for(o in t)M(e[o])&&r((c=et(o)).name,t[o],c.capture)}function rt(e,t,n){var r;e instanceof le&&(e=e.data.hook||(e.data.hook={}));var i=e[t];function o(){n.apply(this,arguments),f(r.fns,o)}M(i)?r=tt([o]):D(i.fns)&&S(i.merged)?(r=i).fns.push(o):r=tt([i,o]),r.merged=!0,e[t]=r}function it(e,t,n,r,i){if(D(t)){if(p(t,n))return e[n]=t[n],i||delete t[n],!0;if(p(t,r))return e[n]=t[r],i||delete t[r],!0}return!1}function ot(e){return T(e)?[pe(e)]:Array.isArray(e)?function e(t,n){var r=[];var i,o,a,s;for(i=0;i<t.length;i++)M(o=t[i])||"boolean"==typeof o||(a=r.length-1,s=r[a],Array.isArray(o)?0<o.length&&(at((o=e(o,(n||"")+"_"+i))[0])&&at(s)&&(r[a]=pe(s.text+o[0].text),o.shift()),r.push.apply(r,o)):T(o)?at(s)?r[a]=pe(s.text+o):""!==o&&r.push(pe(o)):at(o)&&at(s)?r[a]=pe(s.text+o.text):(S(t._isVList)&&D(o.tag)&&M(o.key)&&D(n)&&(o.key="__vlist"+n+"_"+i+"__"),r.push(o)));return r}(e):void 0}function at(e){return D(e)&&D(e.text)&&!1===e.isComment}function st(e,t){return(e.__esModule||ne&&"Module"===e[Symbol.toStringTag])&&(e=e.default),P(e)?t.extend(e):e}function ct(e){return e.isComment&&e.asyncFactory}function lt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(D(n)&&(D(n.componentOptions)||ct(n)))return n}}function ut(e,t,n){n?Qe.$once(e,t):Qe.$on(e,t)}function ft(e,t){Qe.$off(e,t)}function pt(e,t,n){Qe=e,nt(t,n||{},ut,ft),Qe=void 0}function dt(e,t){var n={};if(!e)return n;for(var r=0,i=e.length;r<i;r++){var o=e[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var l in n)n[l].every(vt)&&delete n[l];return n}function vt(e){return e.isComment&&!e.asyncFactory||" "===e.text}function ht(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?ht(e[n],t):t[e[n].key]=e[n].fn;return t}var mt=null;function yt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function gt(e,t){if(t){if(e._directInactive=!1,yt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)gt(e.$children[n]);_t(e,"activated")}}function _t(t,n){se();var e=t.$options[n];if(e)for(var r=0,i=e.length;r<i;r++)try{e[r].call(t)}catch(e){Fe(e,t,n+" hook")}t._hasHookEvent&&t.$emit("hook:"+n),ce()}var bt=[],$t=[],wt={},Ct=!1,xt=!1,kt=0;function At(){var e,t;for(xt=!0,bt.sort(function(e,t){return e.id-t.id}),kt=0;kt<bt.length;kt++)t=(e=bt[kt]).id,wt[t]=null,e.run();var n=$t.slice(),r=bt.slice();kt=bt.length=$t.length=0,wt={},Ct=xt=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,gt(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&_t(r,"updated")}}(r),Q&&j.devtools&&Q.emit("flush")}var Ot=0,St=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++Ot,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new te,this.newDepIds=new te,this.expression="","function"==typeof t?this.getter=t:(this.getter=function(e){if(!L.test(e)){var n=e.split(".");return function(e){for(var t=0;t<n.length;t++){if(!e)return;e=e[n[t]]}return e}}}(t),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};St.prototype.get=function(){var e;se(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;Fe(e,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&Ye(e),ce(),this.cleanupDeps()}return e},St.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},St.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},St.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==wt[t]){if(wt[t]=!0,xt){for(var n=bt.length-1;kt<n&&bt[n].id>e.id;)n--;bt.splice(n+1,0,e)}else bt.push(e);Ct||(Ct=!0,Ze(At))}}(this)},St.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||P(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Fe(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},St.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},St.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},St.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||f(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var Tt={enumerable:!0,configurable:!0,get:$,set:$};function Et(e,t,n){Tt.get=function(){return this[t][n]},Tt.set=function(e){this[t][n]=e},Object.defineProperty(e,n,Tt)}function jt(e){e._watchers=[];var t=e.$options;t.props&&function(n,r){var i=n.$options.propsData||{},o=n._props={},a=n.$options._propKeys=[];n.$parent&&ge(!1);var e=function(e){a.push(e);var t=Ie(e,r,i,n);Ce(o,e,t),e in n||Et(n,"_props",e)};for(var t in r)e(t);ge(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?$:v(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;l(t=e._data="function"==typeof t?function(e,t){se();try{return e.call(t,t)}catch(e){return Fe(e,t,"data()"),{}}finally{ce()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];r&&p(r,o)||(void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&Et(e,"_data",o))}var a;we(t,!0)}(e):we(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=Y();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;r||(n[i]=new St(e,a||$,$,Nt)),i in e||Lt(e,i,o)}}(e,t.computed),t.watch&&t.watch!==G&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)Mt(e,n,r[i]);else Mt(e,n,r)}}(e,t.watch)}var Nt={lazy:!0};function Lt(e,t,n){var r=!Y();"function"==typeof n?(Tt.get=r?It(t):n,Tt.set=$):(Tt.get=n.get?r&&!1!==n.cache?It(t):n.get:$,Tt.set=n.set?n.set:$),Object.defineProperty(e,t,Tt)}function It(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),oe.target&&e.depend(),e.value}}function Mt(e,t,n,r){return l(n)&&(n=(r=n).handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}function Dt(t,e){if(t){for(var n=Object.create(null),r=ne?Reflect.ownKeys(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}):Object.keys(t),i=0;i<r.length;i++){for(var o=r[i],a=t[o].from,s=e;s;){if(s._provided&&p(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s&&"default"in t[o]){var c=t[o].default;n[o]="function"==typeof c?c.call(e):c}}return n}}function Pt(e,t){var n,r,i,o,a;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,i=e.length;r<i;r++)n[r]=t(e[r],r);else if("number"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(P(e))for(o=Object.keys(e),n=new Array(o.length),r=0,i=o.length;r<i;r++)a=o[r],n[r]=t(e[a],a,r);return D(n)&&(n._isVList=!0),n}function Ft(e,t,n,r){var i,o=this.$scopedSlots[e];if(o)n=n||{},r&&(n=m(m({},r),n)),i=o(n)||t;else{var a=this.$slots[e];a&&(a._rendered=!0),i=a||t}var s=n&&n.slot;return s?this.$createElement("template",{slot:s},i):i}function Rt(e){return Le(this.$options,"filters",e)||w}function Ht(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function Bt(e,t,n,r,i){var o=j.keyCodes[t]||n;return i&&r&&!j.keyCodes[t]?Ht(i,r):o?Ht(o,e):r?_(r)!==t:void 0}function Ut(n,r,i,o,a){if(i)if(P(i)){var s;Array.isArray(i)&&(i=b(i));var e=function(t){if("class"===t||"style"===t||u(t))s=n;else{var e=n.attrs&&n.attrs.type;s=o||j.mustUseProp(r,e,t)?n.domProps||(n.domProps={}):n.attrs||(n.attrs={})}t in s||(s[t]=i[t],a&&((n.on||(n.on={}))["update:"+t]=function(e){i[t]=e}))};for(var t in i)e(t)}else;return n}function Vt(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t||Kt(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),"__static__"+e,!1),r}function zt(e,t,n){return Kt(e,"__once__"+t+(n?"_"+n:""),!0),e}function Kt(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&Jt(e[r],t+"_"+r,n);else Jt(e,t,n)}function Jt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function qt(e,t){if(t)if(l(t)){var n=e.on=e.on?m({},e.on):{};for(var r in t){var i=n[r],o=t[r];n[r]=i?[].concat(i,o):o}}else;return e}function Wt(e){e._o=zt,e._n=F,e._s=t,e._l=Pt,e._t=Ft,e._q=C,e._i=x,e._m=Vt,e._f=Rt,e._k=Bt,e._b=Ut,e._v=pe,e._e=fe,e._u=ht,e._g=qt}function Gt(e,t,n,o,r){var a,s=r.options;p(o,"_uid")?(a=Object.create(o))._original=o:o=(a=o)._original;var i=S(s._compiled),c=!i;this.data=e,this.props=t,this.children=n,this.parent=o,this.listeners=e.on||y,this.injections=Dt(s.inject,o),this.slots=function(){return dt(n,o)},i&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||y),s._scopeId?this._c=function(e,t,n,r){var i=rn(a,e,t,n,r,c);return i&&!Array.isArray(i)&&(i.fnScopeId=s._scopeId,i.fnContext=o),i}:this._c=function(e,t,n,r){return rn(a,e,t,n,r,c)}}function Zt(e,t,n,r){var i=de(e);return i.fnContext=n,i.fnOptions=r,t.slot&&((i.data||(i.data={})).slot=t.slot),i}function Xt(e,t){for(var n in t)e[g(n)]=t[n]}Wt(Gt.prototype);var Yt={init:function(e,t,n,r){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var i=e;Yt.prepatch(i,i)}else{(e.componentInstance=function(e,t,n,r){var i={_isComponent:!0,parent:t,_parentVnode:e,_parentElm:n||null,_refElm:r||null},o=e.data.inlineTemplate;D(o)&&(i.render=o.render,i.staticRenderFns=o.staticRenderFns);return new e.componentOptions.Ctor(i)}(e,mt,n,r)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var n=t.componentOptions;!function(e,t,n,r,i){var o=!!(i||e.$options._renderChildren||r.data.scopedSlots||e.$scopedSlots!==y);if(e.$options._parentVnode=r,e.$vnode=r,e._vnode&&(e._vnode.parent=r),e.$options._renderChildren=i,e.$attrs=r.data.attrs||y,e.$listeners=n||y,t&&e.$options.props){ge(!1);for(var a=e._props,s=e.$options._propKeys||[],c=0;c<s.length;c++){var l=s[c],u=e.$options.props;a[l]=Ie(l,u,t,e)}ge(!0),e.$options.propsData=t}n=n||y;var f=e.$options._parentListeners;e.$options._parentListeners=n,pt(e,n,f),o&&(e.$slots=dt(i,r.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t,n=e.context,r=e.componentInstance;r._isMounted||(r._isMounted=!0,_t(r,"mounted")),e.data.keepAlive&&(n._isMounted?((t=r)._inactive=!1,$t.push(t)):gt(r,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(!(n&&(t._directInactive=!0,yt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);_t(t,"deactivated")}}(t,!0):t.$destroy())}},Qt=Object.keys(Yt);function en(e,t,n,r,i){if(!M(e)){var o=n.$options._base;if(P(e)&&(e=o.extend(e)),"function"==typeof e){var a,s,c,l,u,f,p;if(M(e.cid)&&void 0===(e=function(t,n,e){if(S(t.error)&&D(t.errorComp))return t.errorComp;if(D(t.resolved))return t.resolved;if(S(t.loading)&&D(t.loadingComp))return t.loadingComp;if(!D(t.contexts)){var r=t.contexts=[e],i=!0,o=function(){for(var e=0,t=r.length;e<t;e++)r[e].$forceUpdate()},a=R(function(e){t.resolved=st(e,n),i||o()}),s=R(function(e){D(t.errorComp)&&(t.error=!0,o())}),c=t(a,s);return P(c)&&("function"==typeof c.then?M(t.resolved)&&c.then(a,s):D(c.component)&&"function"==typeof c.component.then&&(c.component.then(a,s),D(c.error)&&(t.errorComp=st(c.error,n)),D(c.loading)&&(t.loadingComp=st(c.loading,n),0===c.delay?t.loading=!0:setTimeout(function(){M(t.resolved)&&M(t.error)&&(t.loading=!0,o())},c.delay||200)),D(c.timeout)&&setTimeout(function(){M(t.resolved)&&s(null)},c.timeout))),i=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(e)}(a=e,o,n)))return s=a,c=t,l=n,u=r,f=i,(p=fe()).asyncFactory=s,p.asyncMeta={data:c,context:l,children:u,tag:f},p;t=t||{},dn(e),D(t.model)&&function(e,t){var n=e.model&&e.model.prop||"value",r=e.model&&e.model.event||"input";(t.props||(t.props={}))[n]=t.model.value;var i=t.on||(t.on={});D(i[r])?i[r]=[t.model.callback].concat(i[r]):i[r]=t.model.callback}(e.options,t);var d=function(e,t,n){var r=t.options.props;if(!M(r)){var i={},o=e.attrs,a=e.props;if(D(o)||D(a))for(var s in r){var c=_(s);it(i,a,s,c,!0)||it(i,o,s,c,!1)}return i}}(t,e);if(S(e.options.functional))return function(e,t,n,r,i){var o=e.options,a={},s=o.props;if(D(s))for(var c in s)a[c]=Ie(c,s,t||y);else D(n.attrs)&&Xt(a,n.attrs),D(n.props)&&Xt(a,n.props);var l=new Gt(n,a,i,r,e),u=o.render.call(null,l._c,l);if(u instanceof le)return Zt(u,n,l.parent,o);if(Array.isArray(u)){for(var f=ot(u)||[],p=new Array(f.length),d=0;d<f.length;d++)p[d]=Zt(f[d],n,l.parent,o);return p}}(e,d,t,n,r);var v=t.on;if(t.on=t.nativeOn,S(e.options.abstract)){var h=t.slot;t={},h&&(t.slot=h)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<Qt.length;n++){var r=Qt[n];t[r]=Yt[r]}}(t);var m=e.options.name||i;return new le("vue-component-"+e.cid+(m?"-"+m:""),t,void 0,void 0,void 0,n,{Ctor:e,propsData:d,listeners:v,tag:i,children:r},a)}}}var tn=1,nn=2;function rn(e,t,n,r,i,o){return(Array.isArray(n)||T(n))&&(i=r,r=n,n=void 0),S(o)&&(i=nn),function(e,t,n,r,i){if(D(n)&&D(n.__ob__))return fe();D(n)&&D(n.is)&&(t=n.is);if(!t)return fe();Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);i===nn?r=ot(r):i===tn&&(r=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(r));var o,a;if("string"==typeof t){var s;a=e.$vnode&&e.$vnode.ns||j.getTagNamespace(t),o=j.isReservedTag(t)?new le(j.parsePlatformTagName(t),n,r,void 0,void 0,e):D(s=Le(e.$options,"components",t))?en(s,n,e,r,t):new le(t,n,r,void 0,void 0,e)}else o=en(t,n,e,r);return Array.isArray(o)?o:D(o)?(D(a)&&function e(t,n,r){t.ns=n;"foreignObject"===t.tag&&(n=void 0,r=!0);if(D(t.children))for(var i=0,o=t.children.length;i<o;i++){var a=t.children[i];D(a.tag)&&(M(a.ns)||S(r)&&"svg"!==a.tag)&&e(a,n,r)}}(o,a),D(n)&&function(e){P(e.style)&&Ye(e.style);P(e.class)&&Ye(e.class)}(n),o):fe()}(e,t,n,r,i)}var on,an,sn,cn,ln,un,fn,pn=0;function dn(e){var t=e.options;if(e.super){var n=dn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.extendOptions,i=e.sealedOptions;for(var o in n)n[o]!==i[o]&&(t||(t={}),t[o]=vn(n[o],r[o],i[o]));return t}(e);r&&m(e.extendOptions,r),(t=e.options=Ne(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function vn(e,t,n){if(Array.isArray(e)){var r=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var i=0;i<e.length;i++)(0<=t.indexOf(e[i])||n.indexOf(e[i])<0)&&r.push(e[i]);return r}return e}function hn(e){this._init(e)}function mn(e){e.cid=0;var a=1;e.extend=function(e){e=e||{};var t=this,n=t.cid,r=e._Ctor||(e._Ctor={});if(r[n])return r[n];var i=e.name||t.options.name,o=function(e){this._init(e)};return((o.prototype=Object.create(t.prototype)).constructor=o).cid=a++,o.options=Ne(t.options,e),o.super=t,o.options.props&&function(e){var t=e.options.props;for(var n in t)Et(e.prototype,"_props",n)}(o),o.options.computed&&function(e){var t=e.options.computed;for(var n in t)Lt(e.prototype,n,t[n])}(o),o.extend=t.extend,o.mixin=t.mixin,o.use=t.use,k.forEach(function(e){o[e]=t[e]}),i&&(o.options.components[i]=o),o.superOptions=t.options,o.extendOptions=e,o.sealedOptions=m({},o.options),r[n]=o}}function yn(e){return e&&(e.Ctor.options.name||e.tag)}function gn(e,t){return Array.isArray(e)?-1<e.indexOf(t):"string"==typeof e?-1<e.split(",").indexOf(t):(n=e,"[object RegExp]"===r.call(n)&&e.test(t));var n}function _n(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=yn(a.componentOptions);s&&!t(s)&&bn(n,o,r,i)}}}function bn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,f(n,t)}hn.prototype._init=function(e){var t,n,r,i,o=this;o._uid=pn++,o._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r,n._parentElm=t._parentElm,n._refElm=t._refElm;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(o,e):o.$options=Ne(dn(o.constructor),e||{},o),function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}((o._renderProxy=o)._self=o),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&pt(e,t)}(o),function(i){i._vnode=null,i._staticTrees=null;var e=i.$options,t=i.$vnode=e._parentVnode,n=t&&t.context;i.$slots=dt(e._renderChildren,n),i.$scopedSlots=y,i._c=function(e,t,n,r){return rn(i,e,t,n,r,!1)},i.$createElement=function(e,t,n,r){return rn(i,e,t,n,r,!0)};var r=t&&t.data;Ce(i,"$attrs",r&&r.attrs||y,null,!0),Ce(i,"$listeners",e._parentListeners||y,null,!0)}(o),_t(o,"beforeCreate"),(n=Dt((t=o).$options.inject,t))&&(ge(!1),Object.keys(n).forEach(function(e){Ce(t,e,n[e])}),ge(!0)),jt(o),(i=(r=o).$options.provide)&&(r._provided="function"==typeof i?i.call(r):i),_t(o,"created"),o.$options.el&&o.$mount(o.$options.el)},on=hn,an={get:function(){return this._data}},sn={get:function(){return this._props}},Object.defineProperty(on.prototype,"$data",an),Object.defineProperty(on.prototype,"$props",sn),on.prototype.$set=xe,on.prototype.$delete=ke,on.prototype.$watch=function(e,t,n){if(l(t))return Mt(this,e,t,n);(n=n||{}).user=!0;var r=new St(this,e,t,n);return n.immediate&&t.call(this,r.value),function(){r.teardown()}},ln=/^hook:/,(cn=hn).prototype.$on=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)this.$on(e[n],t);else(this._events[e]||(this._events[e]=[])).push(t),ln.test(e)&&(this._hasHookEvent=!0);return this},cn.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},cn.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)this.$off(e[r],t);return n}var o=n._events[e];if(!o)return n;if(!t)return n._events[e]=null,n;if(t)for(var a,s=o.length;s--;)if((a=o[s])===t||a.fn===t){o.splice(s,1);break}return n},cn.prototype.$emit=function(t){var n=this,e=n._events[t];if(e){e=1<e.length?h(e):e;for(var r=h(arguments,1),i=0,o=e.length;i<o;i++)try{e[i].apply(n,r)}catch(e){Fe(e,n,'event handler for "'+t+'"')}}return n},(un=hn).prototype._update=function(e,t){var n=this;n._isMounted&&_t(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=mt;(mt=n)._vnode=e,i?n.$el=n.__patch__(i,e):(n.$el=n.__patch__(n.$el,e,t,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),mt=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},un.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},un.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){_t(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||f(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),_t(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}},Wt((fn=hn).prototype),fn.prototype.$nextTick=function(e){return Ze(e,this)},fn.prototype._render=function(){var t,n=this,e=n.$options,r=e.render,i=e._parentVnode;i&&(n.$scopedSlots=i.data.scopedSlots||y),n.$vnode=i;try{t=r.call(n._renderProxy,n.$createElement)}catch(e){Fe(e,n,"render"),t=n._vnode}return t instanceof le||(t=fe()),t.parent=i,t};var $n,wn,Cn,xn=[String,RegExp,Array],kn={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:xn,exclude:xn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)bn(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",function(t){_n(e,function(e){return gn(t,e)})}),this.$watch("exclude",function(t){_n(e,function(e){return!gn(t,e)})})},render:function(){var e=this.$slots.default,t=lt(e),n=t&&t.componentOptions;if(n){var r=yn(n),i=this.include,o=this.exclude;if(i&&(!r||!gn(i,r))||o&&r&&gn(o,r))return t;var a=this.cache,s=this.keys,c=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;a[c]?(t.componentInstance=a[c].componentInstance,f(s,c),s.push(c)):(a[c]=t,s.push(c),this.max&&s.length>parseInt(this.max)&&bn(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};$n=hn,Cn={get:function(){return j}},Object.defineProperty($n,"config",Cn),$n.util={warn:re,extend:m,mergeOptions:Ne,defineReactive:Ce},$n.set=xe,$n.delete=ke,$n.nextTick=Ze,$n.options=Object.create(null),k.forEach(function(e){$n.options[e+"s"]=Object.create(null)}),m(($n.options._base=$n).options.components,kn),$n.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(-1<t.indexOf(e))return this;var n=h(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this},$n.mixin=function(e){return this.options=Ne(this.options,e),this},mn($n),wn=$n,k.forEach(function(n){wn[n]=function(e,t){return t?("component"===n&&l(t)&&(t.name=t.name||e,t=this.options._base.extend(t)),"directive"===n&&"function"==typeof t&&(t={bind:t,update:t}),this.options[n+"s"][e]=t):this.options[n+"s"][e]}}),Object.defineProperty(hn.prototype,"$isServer",{get:Y}),Object.defineProperty(hn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(hn,"FunctionalRenderContext",{value:Gt}),hn.version="2.5.16";var An=s("style,class"),On=s("input,textarea,option,select,progress"),Sn=function(e,t,n){return"value"===n&&On(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Tn=s("contenteditable,draggable,spellcheck"),En=s("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),jn="http://www.w3.org/1999/xlink",Nn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Ln=function(e){return Nn(e)?e.slice(6,e.length):""},In=function(e){return null==e||!1===e};function Mn(e){for(var t=e.data,n=e,r=e;D(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Dn(r.data,t));for(;D(n=n.parent);)n&&n.data&&(t=Dn(t,n.data));return function(e,t){if(D(e)||D(t))return Pn(e,Fn(t));return""}(t.staticClass,t.class)}function Dn(e,t){return{staticClass:Pn(e.staticClass,t.staticClass),class:D(e.class)?[e.class,t.class]:t.class}}function Pn(e,t){return e?t?e+" "+t:e:t||""}function Fn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,i=e.length;r<i;r++)D(t=Fn(e[r]))&&""!==t&&(n&&(n+=" "),n+=t);return n}(e):P(e)?function(e){var t="";for(var n in e)e[n]&&(t&&(t+=" "),t+=n);return t}(e):"string"==typeof e?e:""}var Rn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Hn=s("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Bn=s("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Un=function(e){return Hn(e)||Bn(e)};function Vn(e){return Bn(e)?"svg":"math"===e?"math":void 0}var zn=Object.create(null);var Kn=s("text,number,password,search,email,tel,url");function Jn(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}var qn=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Rn[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Wn={create:function(e,t){Gn(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Gn(e,!0),Gn(t))},destroy:function(e){Gn(e,!0)}};function Gn(e,t){var n=e.data.ref;if(D(n)){var r=e.context,i=e.componentInstance||e.elm,o=r.$refs;t?Array.isArray(o[n])?f(o[n],i):o[n]===i&&(o[n]=void 0):e.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}var Zn=new le("",{},[]),Xn=["create","activate","update","remove","destroy"];function Yn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&D(e.data)===D(t.data)&&function(e,t){if("input"!==e.tag)return!0;var n,r=D(n=e.data)&&D(n=n.attrs)&&n.type,i=D(n=t.data)&&D(n=n.attrs)&&n.type;return r===i||Kn(r)&&Kn(i)}(e,t)||S(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&M(t.asyncFactory.error))}function Qn(e,t,n){var r,i,o={};for(r=t;r<=n;++r)D(i=e[r].key)&&(o[i]=r);return o}var er={create:tr,update:tr,destroy:function(e){tr(e,Zn)}};function tr(e,t){(e.data.directives||t.data.directives)&&function(t,n){var e,r,i,o=t===Zn,a=n===Zn,s=rr(t.data.directives,t.context),c=rr(n.data.directives,n.context),l=[],u=[];for(e in c)r=s[e],i=c[e],r?(i.oldValue=r.value,ir(i,"update",n,t),i.def&&i.def.componentUpdated&&u.push(i)):(ir(i,"bind",n,t),i.def&&i.def.inserted&&l.push(i));if(l.length){var f=function(){for(var e=0;e<l.length;e++)ir(l[e],"inserted",n,t)};o?rt(n,"insert",f):f()}u.length&&rt(n,"postpatch",function(){for(var e=0;e<u.length;e++)ir(u[e],"componentUpdated",n,t)});if(!o)for(e in s)c[e]||ir(s[e],"unbind",t,t,a)}(e,t)}var nr=Object.create(null);function rr(e,t){var n,r,i,o=Object.create(null);if(!e)return o;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=nr),(o[(i=r,i.rawName||i.name+"."+Object.keys(i.modifiers||{}).join("."))]=r).def=Le(t.$options,"directives",r.name);return o}function ir(t,n,r,e,i){var o=t.def&&t.def[n];if(o)try{o(r.elm,t,r,e,i)}catch(e){Fe(e,r.context,"directive "+t.name+" "+n+" hook")}}var or=[Wn,er];function ar(e,t){var n=t.componentOptions;if(!(D(n)&&!1===n.Ctor.options.inheritAttrs||M(e.data.attrs)&&M(t.data.attrs))){var r,i,o=t.elm,a=e.data.attrs||{},s=t.data.attrs||{};for(r in D(s.__ob__)&&(s=t.data.attrs=m({},s)),s)i=s[r],a[r]!==i&&sr(o,r,i);for(r in(K||q)&&s.value!==a.value&&sr(o,"value",s.value),a)M(s[r])&&(Nn(r)?o.removeAttributeNS(jn,Ln(r)):Tn(r)||o.removeAttribute(r))}}function sr(e,t,n){-1<e.tagName.indexOf("-")?cr(e,t,n):En(t)?In(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Tn(t)?e.setAttribute(t,In(n)||"false"===n?"false":"true"):Nn(t)?In(n)?e.removeAttributeNS(jn,Ln(t)):e.setAttributeNS(jn,t,n):cr(e,t,n)}function cr(t,e,n){if(In(n))t.removeAttribute(e);else{if(K&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var lr={create:ar,update:ar};function ur(e,t){var n=t.elm,r=t.data,i=e.data;if(!(M(r.staticClass)&&M(r.class)&&(M(i)||M(i.staticClass)&&M(i.class)))){var o=Mn(t),a=n._transitionClasses;D(a)&&(o=Pn(o,Fn(a))),o!==n._prevClass&&(n.setAttribute("class",o),n._prevClass=o)}}var fr,pr,dr,vr,hr,mr,yr={create:ur,update:ur},gr=/[\w).+\-_$\]]/;function _r(e){var t,n,r,i,o,a=!1,s=!1,c=!1,l=!1,u=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(c)96===t&&92!==n&&(c=!1);else if(l)47===t&&92!==n&&(l=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||u||f||p){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:u++;break;case 125:u--}if(47===t){for(var v=r-1,h=void 0;0<=v&&" "===(h=e.charAt(v));v--);h&&gr.test(h)||(l=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r<o.length;r++)i=br(i,o[r]);return i}function br(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";var r=t.slice(0,n),i=t.slice(n+1);return'_f("'+r+'")('+e+(")"!==i?","+i:i)}function $r(e){console.error("[Vue compiler]: "+e)}function wr(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function Cr(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plain=!1}function xr(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plain=!1}function kr(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}function Ar(e,t,n,r,i,o){var a;(r=r||y).capture&&(delete r.capture,t="!"+t),r.once&&(delete r.once,t="~"+t),r.passive&&(delete r.passive,t="&"+t),"click"===t&&(r.right?(t="contextmenu",delete r.right):r.middle&&(t="mouseup")),r.native?(delete r.native,a=e.nativeEvents||(e.nativeEvents={})):a=e.events||(e.events={});var s={value:n.trim()};r!==y&&(s.modifiers=r);var c=a[t];Array.isArray(c)?i?c.unshift(s):c.push(s):a[t]=c?i?[s,c]:[c,s]:s,e.plain=!1}function Or(e,t,n){var r=Sr(e,":"+t)||Sr(e,"v-bind:"+t);if(null!=r)return _r(r);if(!1!==n){var i=Sr(e,t);if(null!=i)return JSON.stringify(i)}}function Sr(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===t){i.splice(o,1);break}return n&&delete e.attrsMap[t],r}function Tr(e,t,n){var r=n||{},i=r.number,o="$$v",a=o;r.trim&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(a="_n("+a+")");var s=Er(t,a);e.model={value:"("+t+")",expression:'"'+t+'"',callback:"function ($$v) {"+s+"}"}}function Er(e,t){var n=function(e){if(e=e.trim(),fr=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<fr-1)return-1<(vr=e.lastIndexOf("."))?{exp:e.slice(0,vr),key:'"'+e.slice(vr+1)+'"'}:{exp:e,key:null};pr=e,vr=hr=mr=0;for(;!Nr();)Lr(dr=jr())?Mr(dr):91===dr&&Ir(dr);return{exp:e.slice(0,hr),key:e.slice(hr+1,mr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function jr(){return pr.charCodeAt(++vr)}function Nr(){return fr<=vr}function Lr(e){return 34===e||39===e}function Ir(e){var t=1;for(hr=vr;!Nr();)if(Lr(e=jr()))Mr(e);else if(91===e&&t++,93===e&&t--,0===t){mr=vr;break}}function Mr(e){for(var t=e;!Nr()&&(e=jr())!==t;);}var Dr,Pr="__r",Fr="__c";function Rr(e,t,n,r,i){var o,a,s,c,l;t=(o=t)._withTask||(o._withTask=function(){Je=!0;var e=o.apply(null,arguments);return Je=!1,e}),n&&(a=t,s=e,c=r,l=Dr,t=function e(){null!==a.apply(null,arguments)&&Hr(s,e,c,l)}),Dr.addEventListener(e,t,Z?{capture:r,passive:i}:r)}function Hr(e,t,n,r){(r||Dr).removeEventListener(e,t._withTask||t,n)}function Br(e,t){if(!M(e.data.on)||!M(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Dr=t.elm,function(e){if(D(e[Pr])){var t=K?"change":"input";e[t]=[].concat(e[Pr],e[t]||[]),delete e[Pr]}D(e[Fr])&&(e.change=[].concat(e[Fr],e.change||[]),delete e[Fr])}(n),nt(n,r,Rr,Hr,t.context),Dr=void 0}}var Ur={create:Br,update:Br};function Vr(e,t){if(!M(e.data.domProps)||!M(t.data.domProps)){var n,r,i,o,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in D(c.__ob__)&&(c=t.data.domProps=m({},c)),s)M(c[n])&&(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){var l=M(a._value=r)?"":String(r);o=l,(i=a).composing||"OPTION"!==i.tagName&&!function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(i,o)&&!function(e,t){var n=e.value,r=e._vModifiers;if(D(r)){if(r.lazy)return!1;if(r.number)return F(n)!==F(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(i,o)||(a.value=l)}else a[n]=r}}}var zr={create:Vr,update:Vr},Kr=e(function(e){var n={},r=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var t=e.split(r);1<t.length&&(n[t[0].trim()]=t[1].trim())}}),n});function Jr(e){var t=qr(e.style);return e.staticStyle?m(e.staticStyle,t):t}function qr(e){return Array.isArray(e)?b(e):"string"==typeof e?Kr(e):e}var Wr,Gr=/^--/,Zr=/\s*!important$/,Xr=function(e,t,n){if(Gr.test(t))e.style.setProperty(t,n);else if(Zr.test(n))e.style.setProperty(t,n.replace(Zr,""),"important");else{var r=Qr(t);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)e.style[r]=n[i];else e.style[r]=n}},Yr=["Webkit","Moz","ms"],Qr=e(function(e){if(Wr=Wr||document.createElement("div").style,"filter"!==(e=g(e))&&e in Wr)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<Yr.length;n++){var r=Yr[n]+t;if(r in Wr)return r}});function ei(e,t){var n=t.data,r=e.data;if(!(M(n.staticStyle)&&M(n.style)&&M(r.staticStyle)&&M(r.style))){var i,o,a=t.elm,s=r.staticStyle,c=r.normalizedStyle||r.style||{},l=s||c,u=qr(t.data.style)||{};t.data.normalizedStyle=D(u.__ob__)?m({},u):u;var f=function(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=Jr(i.data))&&m(r,n);(n=Jr(e.data))&&m(r,n);for(var o=e;o=o.parent;)o.data&&(n=Jr(o.data))&&m(r,n);return r}(t,!0);for(o in l)M(f[o])&&Xr(a,o,"");for(o in f)(i=f[o])!==l[o]&&Xr(a,o,null==i?"":i)}}var ti={create:ei,update:ei};function ni(t,e){if(e&&(e=e.trim()))if(t.classList)-1<e.indexOf(" ")?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function ri(t,e){if(e&&(e=e.trim()))if(t.classList)-1<e.indexOf(" ")?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";0<=n.indexOf(r);)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function ii(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&m(t,oi(e.name||"v")),m(t,e),t}return"string"==typeof e?oi(e):void 0}}var oi=e(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),ai=B&&!J,si="transition",ci="animation",li="transition",ui="transitionend",fi="animation",pi="animationend";ai&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(li="WebkitTransition",ui="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(fi="WebkitAnimation",pi="webkitAnimationEnd"));var di=B?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function vi(e){di(function(){di(e)})}function hi(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ni(e,t))}function mi(e,t){e._transitionClasses&&f(e._transitionClasses,t),ri(e,t)}function yi(t,e,n){var r=_i(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===si?ui:pi,c=0,l=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++c>=a&&l()};setTimeout(function(){c<a&&l()},o+1),t.addEventListener(s,u)}var gi=/\b(transform|all)(,|$)/;function _i(e,t){var n,r=window.getComputedStyle(e),i=r[li+"Delay"].split(", "),o=r[li+"Duration"].split(", "),a=bi(i,o),s=r[fi+"Delay"].split(", "),c=r[fi+"Duration"].split(", "),l=bi(s,c),u=0,f=0;return t===si?0<a&&(n=si,u=a,f=o.length):t===ci?0<l&&(n=ci,u=l,f=c.length):f=(n=0<(u=Math.max(a,l))?l<a?si:ci:null)?n===si?o.length:c.length:0,{type:n,timeout:u,propCount:f,hasTransform:n===si&&gi.test(r[li+"Property"])}}function bi(n,e){for(;n.length<e.length;)n=n.concat(n);return Math.max.apply(null,e.map(function(e,t){return $i(e)+$i(n[t])}))}function $i(e){return 1e3*Number(e.slice(0,-1))}function wi(n,e){var r=n.elm;D(r._leaveCb)&&(r._leaveCb.cancelled=!0,r._leaveCb());var t=ii(n.data.transition);if(!M(t)&&!D(r._enterCb)&&1===r.nodeType){for(var i=t.css,o=t.type,a=t.enterClass,s=t.enterToClass,c=t.enterActiveClass,l=t.appearClass,u=t.appearToClass,f=t.appearActiveClass,p=t.beforeEnter,d=t.enter,v=t.afterEnter,h=t.enterCancelled,m=t.beforeAppear,y=t.appear,g=t.afterAppear,_=t.appearCancelled,b=t.duration,$=mt,w=mt.$vnode;w&&w.parent;)$=(w=w.parent).context;var C=!$._isMounted||!n.isRootInsert;if(!C||y||""===y){var x=C&&l?l:a,k=C&&f?f:c,A=C&&u?u:s,O=C&&m||p,S=C&&"function"==typeof y?y:d,T=C&&g||v,E=C&&_||h,j=F(P(b)?b.enter:b),N=!1!==i&&!J,L=ki(S),I=r._enterCb=R(function(){N&&(mi(r,A),mi(r,k)),I.cancelled?(N&&mi(r,x),E&&E(r)):T&&T(r),r._enterCb=null});n.data.show||rt(n,"insert",function(){var e=r.parentNode,t=e&&e._pending&&e._pending[n.key];t&&t.tag===n.tag&&t.elm._leaveCb&&t.elm._leaveCb(),S&&S(r,I)}),O&&O(r),N&&(hi(r,x),hi(r,k),vi(function(){mi(r,x),I.cancelled||(hi(r,A),L||(xi(j)?setTimeout(I,j):yi(r,o,I)))})),n.data.show&&(e&&e(),S&&S(r,I)),N||L||I()}}}function Ci(e,t){var n=e.elm;D(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=ii(e.data.transition);if(M(r)||1!==n.nodeType)return t();if(!D(n._leaveCb)){var i=r.css,o=r.type,a=r.leaveClass,s=r.leaveToClass,c=r.leaveActiveClass,l=r.beforeLeave,u=r.leave,f=r.afterLeave,p=r.leaveCancelled,d=r.delayLeave,v=r.duration,h=!1!==i&&!J,m=ki(u),y=F(P(v)?v.leave:v),g=n._leaveCb=R(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),h&&(mi(n,s),mi(n,c)),g.cancelled?(h&&mi(n,a),p&&p(n)):(t(),f&&f(n)),n._leaveCb=null});d?d(_):_()}function _(){g.cancelled||(e.data.show||((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),l&&l(n),h&&(hi(n,a),hi(n,c),vi(function(){mi(n,a),g.cancelled||(hi(n,s),m||(xi(y)?setTimeout(g,y):yi(n,o,g)))})),u&&u(n,g),h||m||g())}}function xi(e){return"number"==typeof e&&!isNaN(e)}function ki(e){if(M(e))return!1;var t=e.fns;return D(t)?ki(Array.isArray(t)?t[0]:t):1<(e._length||e.length)}function Ai(e,t){!0!==t.data.show&&wi(t)}var Oi=function(e){var r,t,g={},n=e.modules,_=e.nodeOps;for(r=0;r<Xn.length;++r)for(g[Xn[r]]=[],t=0;t<n.length;++t)D(n[t][Xn[r]])&&g[Xn[r]].push(n[t][Xn[r]]);function o(e){var t=_.parentNode(e);D(t)&&_.removeChild(t,e)}function b(e,t,n,r,i,o,a){if(D(e.elm)&&D(o)&&(e=o[a]=de(e)),e.isRootInsert=!i,!function(e,t,n,r){var i=e.data;if(D(i)){var o=D(e.componentInstance)&&i.keepAlive;if(D(i=i.hook)&&D(i=i.init)&&i(e,!1,n,r),D(e.componentInstance))return d(e,t),S(o)&&function(e,t,n,r){for(var i,o=e;o.componentInstance;)if(o=o.componentInstance._vnode,D(i=o.data)&&D(i=i.transition)){for(i=0;i<g.activate.length;++i)g.activate[i](Zn,o);t.push(o);break}u(n,e.elm,r)}(e,t,n,r),!0}}(e,t,n,r)){var s=e.data,c=e.children,l=e.tag;D(l)?(e.elm=e.ns?_.createElementNS(e.ns,l):_.createElement(l,e),f(e),v(e,c,t),D(s)&&h(e,t)):S(e.isComment)?e.elm=_.createComment(e.text):e.elm=_.createTextNode(e.text),u(n,e.elm,r)}}function d(e,t){D(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,$(e)?(h(e,t),f(e)):(Gn(e),t.push(e))}function u(e,t,n){D(e)&&(D(n)?n.parentNode===e&&_.insertBefore(e,t,n):_.appendChild(e,t))}function v(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)b(t[r],n,e.elm,null,!0,t,r);else T(e.text)&&_.appendChild(e.elm,_.createTextNode(String(e.text)))}function $(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return D(e.tag)}function h(e,t){for(var n=0;n<g.create.length;++n)g.create[n](Zn,e);D(r=e.data.hook)&&(D(r.create)&&r.create(Zn,e),D(r.insert)&&t.push(e))}function f(e){var t;if(D(t=e.fnScopeId))_.setStyleScope(e.elm,t);else for(var n=e;n;)D(t=n.context)&&D(t=t.$options._scopeId)&&_.setStyleScope(e.elm,t),n=n.parent;D(t=mt)&&t!==e.context&&t!==e.fnContext&&D(t=t.$options._scopeId)&&_.setStyleScope(e.elm,t)}function y(e,t,n,r,i,o){for(;r<=i;++r)b(n[r],o,e,t,!1,n,r)}function w(e){var t,n,r=e.data;if(D(r))for(D(t=r.hook)&&D(t=t.destroy)&&t(e),t=0;t<g.destroy.length;++t)g.destroy[t](e);if(D(t=e.children))for(n=0;n<e.children.length;++n)w(e.children[n])}function C(e,t,n,r){for(;n<=r;++n){var i=t[n];D(i)&&(D(i.tag)?(a(i),w(i)):o(i.elm))}}function a(e,t){if(D(t)||D(e.data)){var n,r=g.remove.length+1;for(D(t)?t.listeners+=r:t=function(e,t){function n(){0==--n.listeners&&o(e)}return n.listeners=t,n}(e.elm,r),D(n=e.componentInstance)&&D(n=n._vnode)&&D(n.data)&&a(n,t),n=0;n<g.remove.length;++n)g.remove[n](e,t);D(n=e.data.hook)&&D(n=n.remove)?n(e,t):t()}else o(e.elm)}function x(e,t,n,r){for(var i=n;i<r;i++){var o=t[i];if(D(o)&&Yn(e,o))return i}}function k(e,t,n,r){if(e!==t){var i=t.elm=e.elm;if(S(e.isAsyncPlaceholder))D(t.asyncFactory.resolved)?O(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(S(t.isStatic)&&S(e.isStatic)&&t.key===e.key&&(S(t.isCloned)||S(t.isOnce)))t.componentInstance=e.componentInstance;else{var o,a=t.data;D(a)&&D(o=a.hook)&&D(o=o.prepatch)&&o(e,t);var s=e.children,c=t.children;if(D(a)&&$(t)){for(o=0;o<g.update.length;++o)g.update[o](e,t);D(o=a.hook)&&D(o=o.update)&&o(e,t)}M(t.text)?D(s)&&D(c)?s!==c&&function(e,t,n,r,i){for(var o,a,s,c=0,l=0,u=t.length-1,f=t[0],p=t[u],d=n.length-1,v=n[0],h=n[d],m=!i;c<=u&&l<=d;)M(f)?f=t[++c]:M(p)?p=t[--u]:Yn(f,v)?(k(f,v,r),f=t[++c],v=n[++l]):Yn(p,h)?(k(p,h,r),p=t[--u],h=n[--d]):Yn(f,h)?(k(f,h,r),m&&_.insertBefore(e,f.elm,_.nextSibling(p.elm)),f=t[++c],h=n[--d]):(Yn(p,v)?(k(p,v,r),m&&_.insertBefore(e,p.elm,f.elm),p=t[--u]):(M(o)&&(o=Qn(t,c,u)),M(a=D(v.key)?o[v.key]:x(v,t,c,u))?b(v,r,e,f.elm,!1,n,l):Yn(s=t[a],v)?(k(s,v,r),t[a]=void 0,m&&_.insertBefore(e,s.elm,f.elm)):b(v,r,e,f.elm,!1,n,l)),v=n[++l]);u<c?y(e,M(n[d+1])?null:n[d+1].elm,n,l,d,r):d<l&&C(0,t,c,u)}(i,s,c,n,r):D(c)?(D(e.text)&&_.setTextContent(i,""),y(i,null,c,0,c.length-1,n)):D(s)?C(0,s,0,s.length-1):D(e.text)&&_.setTextContent(i,""):e.text!==t.text&&_.setTextContent(i,t.text),D(a)&&D(o=a.hook)&&D(o=o.postpatch)&&o(e,t)}}}function A(e,t,n){if(S(n)&&D(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var m=s("attrs,class,staticClass,staticStyle,key");function O(e,t,n,r){var i,o=t.tag,a=t.data,s=t.children;if(r=r||a&&a.pre,t.elm=e,S(t.isComment)&&D(t.asyncFactory))return t.isAsyncPlaceholder=!0;if(D(a)&&(D(i=a.hook)&&D(i=i.init)&&i(t,!0),D(i=t.componentInstance)))return d(t,n),!0;if(D(o)){if(D(s))if(e.hasChildNodes())if(D(i=a)&&D(i=i.domProps)&&D(i=i.innerHTML)){if(i!==e.innerHTML)return!1}else{for(var c=!0,l=e.firstChild,u=0;u<s.length;u++){if(!l||!O(l,s[u],n,r)){c=!1;break}l=l.nextSibling}if(!c||l)return!1}else v(t,s,n);if(D(a)){var f=!1;for(var p in a)if(!m(p)){f=!0,h(t,n);break}!f&&a.class&&Ye(a.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,r,i,o){if(!M(t)){var a,s=!1,c=[];if(M(e))s=!0,b(t,c,i,o);else{var l=D(e.nodeType);if(!l&&Yn(e,t))k(e,t,c,r);else{if(l){if(1===e.nodeType&&e.hasAttribute(E)&&(e.removeAttribute(E),n=!0),S(n)&&O(e,t,c))return A(t,c,!0),e;a=e,e=new le(_.tagName(a).toLowerCase(),{},[],void 0,a)}var u=e.elm,f=_.parentNode(u);if(b(t,c,u._leaveCb?null:f,_.nextSibling(u)),D(t.parent))for(var p=t.parent,d=$(t);p;){for(var v=0;v<g.destroy.length;++v)g.destroy[v](p);if(p.elm=t.elm,d){for(var h=0;h<g.create.length;++h)g.create[h](Zn,p);var m=p.data.hook.insert;if(m.merged)for(var y=1;y<m.fns.length;y++)m.fns[y]()}else Gn(p);p=p.parent}D(f)?C(0,[e],0,0):D(e.tag)&&w(e)}}return A(t,c,s),t.elm}D(e)&&w(e)}}({nodeOps:qn,modules:[lr,yr,Ur,zr,ti,B?{create:Ai,activate:Ai,remove:function(e,t){!0!==e.data.show?Ci(e,t):t()}}:{}].concat(or)});J&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&Mi(e,"input")});var Si={inserted:function(e,t,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?rt(n,"postpatch",function(){Si.componentUpdated(e,t,n)}):Ti(e,t,n.context),e._vOptions=[].map.call(e.options,Ni)):("textarea"===n.tag||Kn(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",Li),e.addEventListener("compositionend",Ii),e.addEventListener("change",Ii),J&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Ti(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Ni);if(i.some(function(e,t){return!C(e,r[t])}))(e.multiple?t.value.some(function(e){return ji(e,i)}):t.value!==t.oldValue&&ji(t.value,i))&&Mi(e,"change")}}};function Ti(e,t,n){Ei(e,t,n),(K||q)&&setTimeout(function(){Ei(e,t,n)},0)}function Ei(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s<c;s++)if(a=e.options[s],i)o=-1<x(r,Ni(a)),a.selected!==o&&(a.selected=o);else if(C(Ni(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function ji(t,e){return e.every(function(e){return!C(e,t)})}function Ni(e){return"_value"in e?e._value:e.value}function Li(e){e.target.composing=!0}function Ii(e){e.target.composing&&(e.target.composing=!1,Mi(e.target,"input"))}function Mi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Di(e){return!e.componentInstance||e.data&&e.data.transition?e:Di(e.componentInstance._vnode)}var Pi={model:Si,show:{bind:function(e,t,n){var r=t.value,i=(n=Di(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,wi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Di(n)).data&&n.data.transition?(n.data.show=!0,r?wi(n,function(){e.style.display=e.__vOriginalDisplay}):Ci(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Fi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ri(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Ri(lt(t.children)):e}function Hi(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[g(o)]=i[o];return t}function Bi(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Ui={name:"transition",props:Fi,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(function(e){return e.tag||ct(e)})).length){var r=this.mode,i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=Ri(i);if(!o)return i;if(this._leaving)return Bi(e,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:T(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var s,c,l=(o.data||(o.data={})).transition=Hi(this),u=this._vnode,f=Ri(u);if(o.data.directives&&o.data.directives.some(function(e){return"show"===e.name})&&(o.data.show=!0),f&&f.data&&(s=o,(c=f).key!==s.key||c.tag!==s.tag)&&!ct(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var p=f.data.transition=m({},l);if("out-in"===r)return this._leaving=!0,rt(p,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),Bi(e,i);if("in-out"===r){if(ct(o))return u;var d,v=function(){d()};rt(l,"afterEnter",v),rt(l,"enterCancelled",v),rt(p,"delayLeave",function(e){d=e})}}return i}}},Vi=m({tag:String,moveClass:String},Fi);function zi(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Ki(e){e.data.newPos=e.elm.getBoundingClientRect()}function Ji(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete Vi.mode;var qi={Transition:Ui,TransitionGroup:{props:Vi,render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Hi(this),s=0;s<i.length;s++){var c=i[s];c.tag&&null!=c.key&&0!==String(c.key).indexOf("__vlist")&&(o.push(c),((n[c.key]=c).data||(c.data={})).transition=a)}if(r){for(var l=[],u=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?l.push(p):u.push(p)}this.kept=e(t,null,l),this.removed=u}return e(t,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,r=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,r)&&(e.forEach(zi),e.forEach(Ki),e.forEach(Ji),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,t=n.style;hi(n,r),t.transform=t.WebkitTransform=t.transitionDuration="",n.addEventListener(ui,n._moveCb=function e(t){t&&!/transform$/.test(t.propertyName)||(n.removeEventListener(ui,e),n._moveCb=null,mi(n,r))})}}))},methods:{hasMove:function(e,t){if(!ai)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){ri(n,e)}),ni(n,t),n.style.display="none",this.$el.appendChild(n);var r=_i(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};hn.config.mustUseProp=Sn,hn.config.isReservedTag=Un,hn.config.isReservedAttr=An,hn.config.getTagNamespace=Vn,hn.config.isUnknownElement=function(e){if(!B)return!0;if(Un(e))return!1;if(e=e.toLowerCase(),null!=zn[e])return zn[e];var t=document.createElement(e);return-1<e.indexOf("-")?zn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:zn[e]=/HTMLUnknownElement/.test(t.toString())},m(hn.options.directives,Pi),m(hn.options.components,qi),hn.prototype.__patch__=B?Oi:$,hn.prototype.$mount=function(e,t){return e=e&&B?Jn(e):void 0,r=e,i=t,(n=this).$el=r,n.$options.render||(n.$options.render=fe),_t(n,"beforeMount"),new St(n,function(){n._update(n._render(),i)},$,null,!0),i=!1,null==n.$vnode&&(n._isMounted=!0,_t(n,"mounted")),n;var n,r,i},B&&setTimeout(function(){j.devtools&&Q&&Q.emit("init",hn)},0);var Wi=/\{\{((?:.|\n)+?)\}\}/g,Gi=/[-.*+?^${}()|[\]\/\\]/g,Zi=e(function(e){var t=e[0].replace(Gi,"\\$&"),n=e[1].replace(Gi,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var Xi={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Sr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Or(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var Yi,Qi={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Sr(e,"style");n&&(e.staticStyle=JSON.stringify(Kr(n)));var r=Or(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},eo=function(e){return(Yi=Yi||document.createElement("div")).innerHTML=e,Yi.textContent},to=s("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),no=s("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),ro=s("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),io=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,oo="[a-zA-Z_][\\w\\-\\.]*",ao="((?:"+oo+"\\:)?"+oo+")",so=new RegExp("^<"+ao),co=/^\s*(\/?)>/,lo=new RegExp("^<\\/"+ao+"[^>]*>"),uo=/^<!DOCTYPE [^>]+>/i,fo=/^<!\--/,po=/^<!\[/,vo=!1;"x".replace(/x(.)?/g,function(e,t){vo=""===t});var ho=s("script,style,textarea",!0),mo={},yo={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t"},go=/&(?:lt|gt|quot|amp);/g,_o=/&(?:lt|gt|quot|amp|#10|#9);/g,bo=s("pre,textarea",!0),$o=function(e,t){return e&&bo(e)&&"\n"===t[0]};var wo,Co,xo,ko,Ao,Oo,So,To,Eo=/^@|^v-on:/,jo=/^v-|^@|^:/,No=/([^]*?)\s+(?:in|of)\s+([^]*)/,Lo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Io=/^\(|\)$/g,Mo=/:(.*)$/,Do=/^:|^v-bind:/,Po=/\.[^.]+/g,Fo=e(eo);function Ro(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}(t),parent:n,children:[]}}function Ho(e,p){wo=p.warn||$r,Oo=p.isPreTag||O,So=p.mustUseProp||O,To=p.getTagNamespace||O,xo=wr(p.modules,"transformNode"),ko=wr(p.modules,"preTransformNode"),Ao=wr(p.modules,"postTransformNode"),Co=p.delimiters;var d,v,h=[],i=!1!==p.preserveWhitespace,m=!1,y=!1;function g(e){e.pre&&(m=!1),Oo(e.tag)&&(y=!1);for(var t=0;t<Ao.length;t++)Ao[t](e,p)}return function(i,d){for(var e,v,h=[],m=d.expectHTML,y=d.isUnaryTag||O,g=d.canBeLeftOpenTag||O,a=0;i;){if(e=i,v&&ho(v)){var r=0,o=v.toLowerCase(),t=mo[o]||(mo[o]=new RegExp("([\\s\\S]*?)(</"+o+"[^>]*>)","i")),n=i.replace(t,function(e,t,n){return r=n.length,ho(o)||"noscript"===o||(t=t.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),$o(o,t)&&(t=t.slice(1)),d.chars&&d.chars(t),""});a+=i.length-n.length,i=n,A(o,a-r,a)}else{var s=i.indexOf("<");if(0===s){if(fo.test(i)){var c=i.indexOf("--\x3e");if(0<=c){d.shouldKeepComment&&d.comment(i.substring(4,c)),C(c+3);continue}}if(po.test(i)){var l=i.indexOf("]>");if(0<=l){C(l+2);continue}}var u=i.match(uo);if(u){C(u[0].length);continue}var f=i.match(lo);if(f){var p=a;C(f[0].length),A(f[1],p,a);continue}var _=x();if(_){k(_),$o(v,i)&&C(1);continue}}var b=void 0,$=void 0,w=void 0;if(0<=s){for($=i.slice(s);!(lo.test($)||so.test($)||fo.test($)||po.test($)||(w=$.indexOf("<",1))<0);)s+=w,$=i.slice(s);b=i.substring(0,s),C(s)}s<0&&(b=i,i=""),d.chars&&b&&d.chars(b)}if(i===e){d.chars&&d.chars(i);break}}function C(e){a+=e,i=i.substring(e)}function x(){var e=i.match(so);if(e){var t,n,r={tagName:e[1],attrs:[],start:a};for(C(e[0].length);!(t=i.match(co))&&(n=i.match(io));)C(n[0].length),r.attrs.push(n);if(t)return r.unarySlash=t[1],C(t[0].length),r.end=a,r}}function k(e){var t=e.tagName,n=e.unarySlash;m&&("p"===v&&ro(t)&&A(v),g(t)&&v===t&&A(t));for(var r,i,o,a=y(t)||!!n,s=e.attrs.length,c=new Array(s),l=0;l<s;l++){var u=e.attrs[l];vo&&-1===u[0].indexOf('""')&&(""===u[3]&&delete u[3],""===u[4]&&delete u[4],""===u[5]&&delete u[5]);var f=u[3]||u[4]||u[5]||"",p="a"===t&&"href"===u[1]?d.shouldDecodeNewlinesForHref:d.shouldDecodeNewlines;c[l]={name:u[1],value:(r=f,i=p,o=i?_o:go,r.replace(o,function(e){return yo[e]}))}}a||(h.push({tag:t,lowerCasedTag:t.toLowerCase(),attrs:c}),v=t),d.start&&d.start(t,c,a,e.start,e.end)}function A(e,t,n){var r,i;if(null==t&&(t=a),null==n&&(n=a),e&&(i=e.toLowerCase()),e)for(r=h.length-1;0<=r&&h[r].lowerCasedTag!==i;r--);else r=0;if(0<=r){for(var o=h.length-1;r<=o;o--)d.end&&d.end(h[o].tag,t,n);h.length=r,v=r&&h[r-1].tag}else"br"===i?d.start&&d.start(e,[],!0,t,n):"p"===i&&(d.start&&d.start(e,[],!1,t,n),d.end&&d.end(e,t,n))}A()}(e,{warn:wo,expectHTML:p.expectHTML,isUnaryTag:p.isUnaryTag,canBeLeftOpenTag:p.canBeLeftOpenTag,shouldDecodeNewlines:p.shouldDecodeNewlines,shouldDecodeNewlinesForHref:p.shouldDecodeNewlinesForHref,shouldKeepComment:p.comments,start:function(e,t,n){var r=v&&v.ns||To(e);K&&"svg"===r&&(t=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Ko.test(r.name)||(r.name=r.name.replace(Jo,""),t.push(r))}return t}(t));var i,o,a,s,c,l=Ro(e,t,v);r&&(l.ns=r),"style"!==(i=l).tag&&("script"!==i.tag||i.attrsMap.type&&"text/javascript"!==i.attrsMap.type)||Y()||(l.forbidden=!0);for(var u=0;u<ko.length;u++)l=ko[u](l,p)||l;if(m||(null!=Sr(o=l,"v-pre")&&(o.pre=!0),l.pre&&(m=!0)),Oo(l.tag)&&(y=!0),m?function(e){var t=e.attrsList.length;if(t)for(var n=e.attrs=new Array(t),r=0;r<t;r++)n[r]={name:e.attrsList[r].name,value:JSON.stringify(e.attrsList[r].value)};else e.pre||(e.plain=!0)}(l):l.processed||(Uo(l),function(e){var t=Sr(e,"v-if");if(t)e.if=t,Vo(e,{exp:t,block:e});else{null!=Sr(e,"v-else")&&(e.else=!0);var n=Sr(e,"v-else-if");n&&(e.elseif=n)}}(l),null!=Sr(a=l,"v-once")&&(a.once=!0),Bo(l,p)),d?h.length||d.if&&(l.elseif||l.else)&&Vo(d,{exp:l.elseif,block:l}):d=l,v&&!l.forbidden)if(l.elseif||l.else)s=l,(c=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(v.children))&&c.if&&Vo(c,{exp:s.elseif,block:s});else if(l.slotScope){v.plain=!1;var f=l.slotTarget||'"default"';(v.scopedSlots||(v.scopedSlots={}))[f]=l}else v.children.push(l),l.parent=v;n?g(l):(v=l,h.push(l))},end:function(){var e=h[h.length-1],t=e.children[e.children.length-1];t&&3===t.type&&" "===t.text&&!y&&e.children.pop(),h.length-=1,v=h[h.length-1],g(e)},chars:function(e){if(v&&(!K||"textarea"!==v.tag||v.attrsMap.placeholder!==e)){var t,n,r=v.children;if(e=y||e.trim()?"script"===(t=v).tag||"style"===t.tag?e:Fo(e):i&&r.length?" ":"")!m&&" "!==e&&(n=function(e,t){var n=t?Zi(t):Wi;if(n.test(e)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(e);){c<(i=r.index)&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var l=_r(r[1].trim());a.push("_s("+l+")"),s.push({"@binding":l}),c=i+r[0].length}return c<e.length&&(s.push(o=e.slice(c)),a.push(JSON.stringify(o))),{expression:a.join("+"),tokens:s}}}(e,Co))?r.push({type:2,expression:n.expression,tokens:n.tokens,text:e}):" "===e&&r.length&&" "===r[r.length-1].text||r.push({type:3,text:e})}},comment:function(e){v.children.push({type:3,text:e,isComment:!0})}}),d}function Bo(e,t){var n,r,i,o;(r=Or(n=e,"key"))&&(n.key=r),e.plain=!e.key&&!e.attrsList.length,(o=Or(i=e,"ref"))&&(i.ref=o,i.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(i)),function(e){if("slot"===e.tag)e.slotName=Or(e,"name");else{var t;"template"===e.tag?(t=Sr(e,"scope"),e.slotScope=t||Sr(e,"slot-scope")):(t=Sr(e,"slot-scope"))&&(e.slotScope=t);var n=Or(e,"slot");n&&(e.slotTarget='""'===n?'"default"':n,"template"===e.tag||e.slotScope||xr(e,"slot",n))}}(e),function(e){var t;(t=Or(e,"is"))&&(e.component=t);null!=Sr(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var a=0;a<xo.length;a++)e=xo[a](e,t)||e;!function(e){var t,n,r,i,o,a,s,c=e.attrsList;for(t=0,n=c.length;t<n;t++)if(r=i=c[t].name,o=c[t].value,jo.test(r))if(e.hasBindings=!0,(a=zo(r))&&(r=r.replace(Po,"")),Do.test(r))r=r.replace(Do,""),o=_r(o),s=!1,a&&(a.prop&&(s=!0,"innerHtml"===(r=g(r))&&(r="innerHTML")),a.camel&&(r=g(r)),a.sync&&Ar(e,"update:"+g(r),Er(o,"$event"))),s||!e.component&&So(e.tag,e.attrsMap.type,r)?Cr(e,r,o):xr(e,r,o);else if(Eo.test(r))r=r.replace(Eo,""),Ar(e,r,o,a,!1);else{var l=(r=r.replace(jo,"")).match(Mo),u=l&&l[1];u&&(r=r.slice(0,-(u.length+1))),p=r,d=i,v=o,h=u,m=a,((f=e).directives||(f.directives=[])).push({name:p,rawName:d,value:v,arg:h,modifiers:m}),f.plain=!1}else xr(e,r,JSON.stringify(o)),!e.component&&"muted"===r&&So(e.tag,e.attrsMap.type,r)&&Cr(e,r,"true");var f,p,d,v,h,m}(e)}function Uo(e){var t;if(t=Sr(e,"v-for")){var n=function(e){var t=e.match(No);if(!t)return;var n={};n.for=t[2].trim();var r=t[1].trim().replace(Io,""),i=r.match(Lo);i?(n.alias=r.replace(Lo,""),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r;return n}(t);n&&m(e,n)}}function Vo(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function zo(e){var t=e.match(Po);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}var Ko=/^xmlns:NS\d+/,Jo=/^NS\d+:/;function qo(e){return Ro(e.tag,e.attrsList.slice(),e.parent)}var Wo=[Xi,Qi,{preTransformNode:function(e,t){if("input"===e.tag){var n,r=e.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Or(e,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=Sr(e,"v-if",!0),o=i?"&&("+i+")":"",a=null!=Sr(e,"v-else",!0),s=Sr(e,"v-else-if",!0),c=qo(e);Uo(c),kr(c,"type","checkbox"),Bo(c,t),c.processed=!0,c.if="("+n+")==='checkbox'"+o,Vo(c,{exp:c.if,block:c});var l=qo(e);Sr(l,"v-for",!0),kr(l,"type","radio"),Bo(l,t),Vo(c,{exp:"("+n+")==='radio'"+o,block:l});var u=qo(e);return Sr(u,"v-for",!0),kr(u,":type",n),Bo(u,t),Vo(c,{exp:i,block:u}),a?c.else=!0:s&&(c.elseif=s),c}}}}];var Go,Zo,Xo,Yo={expectHTML:!0,modules:Wo,directives:{model:function(e,t,n){var r,i,o,a,s,c,l,u,f,p,d,v,h,m,y,g,_=t.value,b=t.modifiers,$=e.tag,w=e.attrsMap.type;if(e.component)return Tr(e,_,b),!1;if("select"===$)h=e,m=_,g=(g='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+((y=b)&&y.number?"_n(val)":"val")+"});")+" "+Er(m,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),Ar(h,"change",g,null,!0);else if("input"===$&&"checkbox"===w)c=e,l=_,f=(u=b)&&u.number,p=Or(c,"value")||"null",d=Or(c,"true-value")||"true",v=Or(c,"false-value")||"false",Cr(c,"checked","Array.isArray("+l+")?_i("+l+","+p+")>-1"+("true"===d?":("+l+")":":_q("+l+","+d+")")),Ar(c,"change","var $$a="+l+",$$el=$event.target,$$c=$$el.checked?("+d+"):("+v+");if(Array.isArray($$a)){var $$v="+(f?"_n("+p+")":p)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Er(l,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Er(l,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Er(l,"$$c")+"}",null,!0);else if("input"===$&&"radio"===w)r=e,i=_,a=(o=b)&&o.number,s=Or(r,"value")||"null",Cr(r,"checked","_q("+i+","+(s=a?"_n("+s+")":s)+")"),Ar(r,"change",Er(i,s),null,!0);else if("input"===$||"textarea"===$)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,l=o?"change":"range"===r?Pr:"input",u="$event.target.value";s&&(u="$event.target.value.trim()"),a&&(u="_n("+u+")");var f=Er(t,u);c&&(f="if($event.target.composing)return;"+f),Cr(e,"value","("+t+")"),Ar(e,l,f,null,!0),(s||a)&&Ar(e,"blur","$forceUpdate()")}(e,_,b);else if(!j.isReservedTag($))return Tr(e,_,b),!1;return!0},text:function(e,t){t.value&&Cr(e,"textContent","_s("+t.value+")")},html:function(e,t){t.value&&Cr(e,"innerHTML","_s("+t.value+")")}},isPreTag:function(e){return"pre"===e},isUnaryTag:to,mustUseProp:Sn,canBeLeftOpenTag:no,isReservedTag:Un,getTagNamespace:Vn,staticKeys:(Go=Wo,Go.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(","))},Qo=e(function(e){return s("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(e?","+e:""))});function ea(e,t){e&&(Zo=Qo(t.staticKeys||""),Xo=t.isReservedTag||O,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||c(e.tag)||!Xo(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(Zo)))}(t);if(1===t.type){if(!Xo(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var ta=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,na=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ra={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ia={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},oa=function(e){return"if("+e+")return null;"},aa={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:oa("$event.target !== $event.currentTarget"),ctrl:oa("!$event.ctrlKey"),shift:oa("!$event.shiftKey"),alt:oa("!$event.altKey"),meta:oa("!$event.metaKey"),left:oa("'button' in $event && $event.button !== 0"),middle:oa("'button' in $event && $event.button !== 1"),right:oa("'button' in $event && $event.button !== 2")};function sa(e,t,n){var r=t?"nativeOn:{":"on:{";for(var i in e)r+='"'+i+'":'+ca(i,e[i])+",";return r.slice(0,-1)+"}"}function ca(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return ca(t,e)}).join(",")+"]";var n=na.test(e.value),r=ta.test(e.value);if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(aa[s])o+=aa[s],ra[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=oa(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+="if(!('button' in $event)&&"+a.map(la).join("&&")+")return null;"),o&&(i+=o),"function($event){"+i+(n?"return "+e.value+"($event)":r?"return ("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function la(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=ra[e],r=ia[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var ua={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(t,n){t.wrapData=function(e){return"_b("+e+",'"+t.tag+"',"+n.value+","+(n.modifiers&&n.modifiers.prop?"true":"false")+(n.modifiers&&n.modifiers.sync?",true":"")+")"}},cloak:$},fa=function(e){this.options=e,this.warn=e.warn||$r,this.transforms=wr(e.modules,"transformCode"),this.dataGenFns=wr(e.modules,"genData"),this.directives=m(m({},ua),e.directives);var t=e.isReservedTag||O;this.maybeComponent=function(e){return!t(e.tag)},this.onceId=0,this.staticRenderFns=[]};function pa(e,t){var n=new fa(t);return{render:"with(this){return "+(e?da(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function da(e,t){if(e.staticRoot&&!e.staticProcessed)return va(e,t);if(e.once&&!e.onceProcessed)return ha(e,t);if(e.for&&!e.forProcessed)return f=t,v=(u=e).for,h=u.alias,m=u.iterator1?","+u.iterator1:"",y=u.iterator2?","+u.iterator2:"",u.forProcessed=!0,(d||"_l")+"(("+v+"),function("+h+m+y+"){return "+(p||da)(u,f)+"})";if(e.if&&!e.ifProcessed)return ma(e,t);if("template"!==e.tag||e.slotTarget){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=_a(e,t),i="_t("+n+(r?","+r:""),o=e.attrs&&"{"+e.attrs.map(function(e){return g(e.name)+":"+e.value}).join(",")+"}",a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)a=e.component,c=t,l=(s=e).inlineTemplate?null:_a(s,c,!0),n="_c("+a+","+ya(s,c)+(l?","+l:"")+")";else{var r=e.plain?void 0:ya(e,t),i=e.inlineTemplate?null:_a(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return _a(e,t)||"void 0";var a,s,c,l,u,f,p,d,v,h,m,y}function va(e,t){return e.staticProcessed=!0,t.staticRenderFns.push("with(this){return "+da(e,t)+"}"),"_m("+(t.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function ha(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return ma(e,t);if(e.staticInFor){for(var n="",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+da(e,t)+","+t.onceId+++","+n+")":da(e,t)}return va(e,t)}function ma(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+a(o.block)+":"+e(t,n,r,i):""+a(o.block);function a(e){return r?r(e,n):e.once?ha(e,n):da(e,n)}}(e.ifConditions.slice(),t,n,r)}function ya(e,t){var n,r,i="{",o=function(e,t){var n=e.directives;if(!n)return;var r,i,o,a,s="directives:[",c=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var l=t.directives[o.name];l&&(a=!!l(e,o,t.warn)),a&&(c=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}if(c)return s.slice(0,-1)+"]"}(e,t);o&&(i+=o+","),e.key&&(i+="key:"+e.key+","),e.ref&&(i+="ref:"+e.ref+","),e.refInFor&&(i+="refInFor:true,"),e.pre&&(i+="pre:true,"),e.component&&(i+='tag:"'+e.tag+'",');for(var a=0;a<t.dataGenFns.length;a++)i+=t.dataGenFns[a](e);if(e.attrs&&(i+="attrs:{"+wa(e.attrs)+"},"),e.props&&(i+="domProps:{"+wa(e.props)+"},"),e.events&&(i+=sa(e.events,!1,t.warn)+","),e.nativeEvents&&(i+=sa(e.nativeEvents,!0,t.warn)+","),e.slotTarget&&!e.slotScope&&(i+="slot:"+e.slotTarget+","),e.scopedSlots&&(i+=(n=e.scopedSlots,r=t,"scopedSlots:_u(["+Object.keys(n).map(function(e){return ga(e,n[e],r)}).join(",")+"]),")),e.model&&(i+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var s=function(e,t){var n=e.children[0];if(1===n.type){var r=pa(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);s&&(i+=s+",")}return i=i.replace(/,$/,"")+"}",e.wrapData&&(i=e.wrapData(i)),e.wrapListeners&&(i=e.wrapListeners(i)),i}function ga(e,t,n){return t.for&&!t.forProcessed?(r=e,o=n,a=(i=t).for,s=i.alias,c=i.iterator1?","+i.iterator1:"",l=i.iterator2?","+i.iterator2:"",i.forProcessed=!0,"_l(("+a+"),function("+s+c+l+"){return "+ga(r,i,o)+"})"):"{key:"+e+",fn:"+("function("+String(t.slotScope)+"){return "+("template"===t.tag?t.if?t.if+"?"+(_a(t,n)||"undefined")+":undefined":_a(t,n)||"undefined":da(t,n))+"}")+"}";var r,i,o,a,s,c,l}function _a(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(r||da)(a,t);var s=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(ba(i)||i.ifConditions&&i.ifConditions.some(function(e){return ba(e.block)})){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,c=i||$a;return"["+o.map(function(e){return c(e,t)}).join(",")+"]"+(s?","+s:"")}}function ba(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function $a(e,t){return 1===e.type?da(e,t):3===e.type&&e.isComment?(r=e,"_e("+JSON.stringify(r.text)+")"):"_v("+(2===(n=e).type?n.expression:Ca(JSON.stringify(n.text)))+")";var n,r}function wa(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+='"'+r.name+'":'+Ca(r.value)+","}return t.slice(0,-1)}function Ca(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)");function xa(t,n){try{return new Function(t)}catch(e){return n.push({err:e,code:t}),$}}var ka,Aa,Oa=(ka=function(e,t){var n=Ho(e.trim(),t);!1!==t.optimize&&ea(n,t);var r=pa(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(s){function e(e,t){var n=Object.create(s),r=[],i=[];if(n.warn=function(e,t){(t?i:r).push(e)},t)for(var o in t.modules&&(n.modules=(s.modules||[]).concat(t.modules)),t.directives&&(n.directives=m(Object.create(s.directives||null),t.directives)),t)"modules"!==o&&"directives"!==o&&(n[o]=t[o]);var a=ka(e,n);return a.errors=r,a.tips=i,a}return{compile:e,compileToFunctions:(c=e,l=Object.create(null),function(e,t,n){(t=m({},t)).warn,delete t.warn;var r=t.delimiters?String(t.delimiters)+e:e;if(l[r])return l[r];var i=c(e,t),o={},a=[];return o.render=xa(i.render,a),o.staticRenderFns=i.staticRenderFns.map(function(e){return xa(e,a)}),l[r]=o})};var c,l})(Yo).compileToFunctions;function Sa(e){return(Aa=Aa||document.createElement("div")).innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',0<Aa.innerHTML.indexOf("&#10;")}var Ta=!!B&&Sa(!1),Ea=!!B&&Sa(!0),ja=e(function(e){var t=Jn(e);return t&&t.innerHTML}),Na=hn.prototype.$mount;return hn.prototype.$mount=function(e,t){if((e=e&&Jn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=ja(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){{if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}}(e));if(r){var i=Oa(r,{shouldDecodeNewlines:Ta,shouldDecodeNewlinesForHref:Ea,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return Na.call(this,e,t)},hn.compile=Oa,hn});
admin/classes/class-wp-ulike-admin-assets.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Wp ULike Admin Scripts Class.
4
+ *
5
+ * @package wp-ulike
6
+ * @author Alimir 2018
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
+ if ( ! class_exists( 'wp_ulike_admin_assets' ) ) {
16
+ /**
17
+ * Class to load and print master slider panel scripts
18
+ */
19
+ class wp_ulike_admin_assets {
20
+
21
+ private $hook;
22
+
23
+ /**
24
+ * __construct
25
+ */
26
+ function __construct( $hook ) {
27
+ $this->hook = $hook;
28
+ // general assets
29
+ $this->load_styles();
30
+ $this->load_scripts();
31
+ }
32
+
33
+
34
+ /**
35
+ * Styles for admin
36
+ *
37
+ * @return void
38
+ */
39
+ public function load_styles() {
40
+ // Enqueue admin styles
41
+ wp_enqueue_style(
42
+ 'wp-ulike-admin',
43
+ WP_ULIKE_ADMIN_URL . '/assets/css/admin.css'
44
+ );
45
+
46
+ }
47
+
48
+ /**
49
+ * Scripts for admin
50
+ *
51
+ * @return void
52
+ */
53
+ public function load_scripts() {
54
+
55
+ // Scripts is only can be load on ulike pages.
56
+ if ( strpos( $this->hook, 'wp-ulike' ) === false ) {
57
+ return;
58
+ }
59
+
60
+ // Remove all notices in wp ulike pages.
61
+ // remove_all_actions( 'admin_notices' );
62
+
63
+ // Enqueue vueJS
64
+ wp_enqueue_script(
65
+ 'wp_ulike_vuejs',
66
+ WP_ULIKE_ADMIN_URL . '/assets/js/solo/vue/vue.min.js',
67
+ array(),
68
+ null,
69
+ false
70
+ );
71
+
72
+ // Enqueue admin plugins
73
+ wp_enqueue_script(
74
+ 'wp_ulike_admin_plugins',
75
+ WP_ULIKE_ADMIN_URL . '/assets/js/plugins.js',
76
+ array( 'jquery' ),
77
+ false,
78
+ true
79
+ );
80
+
81
+ // Enqueue admin scripts
82
+ wp_enqueue_script(
83
+ 'wp_ulike_admin_scripts',
84
+ WP_ULIKE_ADMIN_URL . '/assets/js/scripts.js',
85
+ array( 'wp_ulike_admin_plugins', 'wp_ulike_vuejs'),
86
+ false,
87
+ true
88
+ );
89
+
90
+ // Localize scripts
91
+ wp_localize_script( 'wp_ulike_admin_scripts', 'wp_ulike_admin', array(
92
+ 'hook_address' => esc_html( $this->hook ),
93
+ 'nonce_field' => wp_create_nonce( 'wp-ulike-ajax-nonce' ),
94
+ 'logs_notif' => __('Are you sure to remove this item?!',WP_ULIKE_SLUG),
95
+ 'not_found_notif' => __('No information was found in this database!',WP_ULIKE_SLUG),
96
+ 'spinner' => admin_url( 'images/spinner.gif' )
97
+ ));
98
+
99
+ }
100
+
101
+ }
102
+
103
+ }
admin/classes/class-wp-ulike-admin-pages.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Wp ULike Admin Pages Class.
4
+ *
5
+ * @package wp-ulike
6
+ * @author Alimir 2018
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
+ if ( ! class_exists( 'wp_ulike_admin_pages' ) ) {
16
+ /**
17
+ * Class to load and print master slider panel scripts
18
+ */
19
+ class wp_ulike_admin_pages {
20
+
21
+ private $submenus, $views;
22
+
23
+ /**
24
+ * __construct
25
+ */
26
+ function __construct() {
27
+
28
+ $this->submenus = array(
29
+ 'posts_logs' => array(
30
+ 'title' => __( 'Post Likes Logs', WP_ULIKE_SLUG ),
31
+ 'parent_slug' => NULL,
32
+ 'capability' => 'manage_options',
33
+ 'path' => '/includes/templates/posts-logs.php',
34
+ 'menu_slug' => 'wp-ulike-posts-logs',
35
+ 'load_screen' => true
36
+ ),
37
+ 'comments_logs' => array(
38
+ 'title' => __( 'Comment Likes Logs', WP_ULIKE_SLUG ),
39
+ 'parent_slug' => NULL,
40
+ 'capability' => 'manage_options',
41
+ 'path' => '/includes/templates/comments-logs.php',
42
+ 'menu_slug' => 'wp-ulike-comments-logs',
43
+ 'load_screen' => true
44
+ ),
45
+ 'activities_logs' => array(
46
+ 'title' => __( 'Activity Likes Logs', WP_ULIKE_SLUG ),
47
+ 'parent_slug' => NULL,
48
+ 'capability' => 'manage_options',
49
+ 'path' => '/includes/templates/activities-logs.php',
50
+ 'menu_slug' => 'wp-ulike-activities-logs',
51
+ 'load_screen' => true
52
+ ),
53
+ 'topics_logs' => array(
54
+ 'title' => __( 'Topics Likes Logs', WP_ULIKE_SLUG ),
55
+ 'parent_slug' => NULL,
56
+ 'capability' => 'manage_options',
57
+ 'path' => '/includes/templates/topics-logs.php',
58
+ 'menu_slug' => 'wp-ulike-topics-logs',
59
+ 'load_screen' => true
60
+ ),
61
+ 'statistics' => array(
62
+ 'title' => __( 'WP ULike Statistics', WP_ULIKE_SLUG ),
63
+ 'parent_slug' => 'wp-ulike-settings',
64
+ 'capability' => 'manage_options',
65
+ 'path' => '/includes/templates/statistics.php',
66
+ 'menu_slug' => 'wp-ulike-statistics',
67
+ 'load_screen' => false
68
+ ),
69
+ 'about' => array(
70
+ 'title' => __( 'About WP ULike', WP_ULIKE_SLUG ),
71
+ 'parent_slug' => 'wp-ulike-settings',
72
+ 'capability' => 'manage_options',
73
+ 'path' => '/includes/templates/about.php',
74
+ 'menu_slug' => 'wp-ulike-about',
75
+ 'load_screen' => false
76
+ )
77
+ );
78
+
79
+ add_action( 'admin_menu', array( $this, 'menus' ) );
80
+ }
81
+
82
+ /**
83
+ * register admin menus
84
+ *
85
+ * @return void
86
+ */
87
+ public function menus() {
88
+
89
+ // Register submenus
90
+ foreach ( $this->submenus as $key => $args) {
91
+ // extract variables
92
+ extract( $args );
93
+
94
+ $hook_suffix = add_submenu_page(
95
+ $parent_slug,
96
+ $title,
97
+ $title,
98
+ $capability,
99
+ $menu_slug,
100
+ array( &$this, 'load_template' )
101
+ );
102
+
103
+ $this->views[ $hook_suffix ] = $path;
104
+
105
+ if( $load_screen ) {
106
+ add_action( "load-$hook_suffix", array( $this, 'add_screen_option' ) );
107
+ }
108
+ }
109
+
110
+ $this->menu_badge();
111
+ }
112
+
113
+ /**
114
+ * Add custom badges to a menu name
115
+ *
116
+ * @return void
117
+ */
118
+ public function menu_badge(){
119
+ global $menu;
120
+
121
+ if( 0 !== ( $new_votes = wp_ulike_get_number_of_new_likes() ) ) {
122
+ $menu[313][0] .= sprintf( "<span class='update-plugins count-1'><span class='update-count'>%s</span></span>",
123
+ number_format_i18n( $new_votes )
124
+ );
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Add screen options
130
+ *
131
+ * @return void
132
+ */
133
+ public function add_screen_option(){
134
+ add_screen_option( 'per_page', array(
135
+ 'label' => __('Logs',WP_ULIKE_SLUG),
136
+ 'default' => 30,
137
+ 'option' => 'wp_ulike_logs_per_page'
138
+ )
139
+ );
140
+ }
141
+
142
+ /**
143
+ * Load admin templates
144
+ *
145
+ * @return void
146
+ */
147
+ public function load_template(){
148
+ load_template( WP_ULIKE_ADMIN_DIR . $this->views[ current_filter() ] );
149
+ }
150
+
151
+ }
152
+
153
+ }
admin/classes/class-wp-ulike-pagination.php CHANGED
@@ -7,6 +7,11 @@
7
  * @link https://wpulike.com
8
  */
9
 
 
 
 
 
 
10
  if ( ! class_exists( 'wp_ulike_pagination' ) ) {
11
 
12
  class wp_ulike_pagination{
@@ -141,13 +146,13 @@ if ( ! class_exists( 'wp_ulike_pagination' ) ) {
141
  if($this->page > 1)
142
  $this->pagination .= "<a href=\"".$this->get_pagenum_link($prev)."\" class=\"prev\">$p</a>";
143
  else
144
- $this->pagination .= "<span class=\"disabled\">$p</span>";
145
  }
146
  //pages
147
  if ($lastpage < 7 + ($this->adjacents * 2)){//not enough pages to bother breaking it up
148
  for ($counter = 1; $counter <= $lastpage; $counter++){
149
  if ($counter == $this->page)
150
- $this->pagination .= "<span class=\"current\">$counter</span>";
151
  else
152
  $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
153
  }
@@ -157,46 +162,46 @@ if ( ! class_exists( 'wp_ulike_pagination' ) ) {
157
  if($this->page < 1 + ($this->adjacents * 2)){
158
  for ($counter = 1; $counter < 4 + ($this->adjacents * 2); $counter++){
159
  if ($counter == $this->page)
160
- $this->pagination .= "<span class=\"current\">$counter</span>";
161
  else
162
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
163
  }
164
- $this->pagination .= "...";
165
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
166
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
167
  }
168
  //in middle; hide some front and some back
169
  elseif($lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this->adjacents * 2)){
170
- $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
171
- $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
172
- $this->pagination .= "...";
173
  for ($counter = $this->page - $this->adjacents; $counter <= $this->page + $this->adjacents; $counter++)
174
  if ($counter == $this->page)
175
- $this->pagination .= "<span class=\"current\">$counter</span>";
176
  else
177
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
178
- $this->pagination .= "...";
179
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
180
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
181
  }
182
  //close to end; only hide early pages
183
  else{
184
- $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
185
- $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
186
- $this->pagination .= "...";
187
  for ($counter = $lastpage - (2 + ($this->adjacents * 2)); $counter <= $lastpage; $counter++)
188
  if ($counter == $this->page)
189
- $this->pagination .= "<span class=\"current\">$counter</span>";
190
  else
191
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
192
  }
193
  }
194
  if($this->page){
195
  //siguiente button
196
  if ($this->page < $counter - 1)
197
- $this->pagination .= "<a href=\"".$this->get_pagenum_link($next)."\" class=\"next\">$n</a>";
198
  else
199
- $this->pagination .= "<span class=\"disabled\">$n</span>";
200
  if($this->showCounter)$this->pagination .= "<span class=\"pagination_data\">($this->total_pages Pages)</span>";
201
  }
202
  }
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
  if ( ! class_exists( 'wp_ulike_pagination' ) ) {
16
 
17
  class wp_ulike_pagination{
146
  if($this->page > 1)
147
  $this->pagination .= "<a href=\"".$this->get_pagenum_link($prev)."\" class=\"prev\">$p</a>";
148
  else
149
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$p</span> ";
150
  }
151
  //pages
152
  if ($lastpage < 7 + ($this->adjacents * 2)){//not enough pages to bother breaking it up
153
  for ($counter = 1; $counter <= $lastpage; $counter++){
154
  if ($counter == $this->page)
155
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$counter</span> ";
156
  else
157
  $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
158
  }
162
  if($this->page < 1 + ($this->adjacents * 2)){
163
  for ($counter = 1; $counter < 4 + ($this->adjacents * 2); $counter++){
164
  if ($counter == $this->page)
165
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$counter</span> ";
166
  else
167
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a> ";
168
  }
169
+ $this->pagination .= "... ";
170
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a> ";
171
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a> ";
172
  }
173
  //in middle; hide some front and some back
174
  elseif($lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this->adjacents * 2)){
175
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a> ";
176
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a> ";
177
+ $this->pagination .= "... ";
178
  for ($counter = $this->page - $this->adjacents; $counter <= $this->page + $this->adjacents; $counter++)
179
  if ($counter == $this->page)
180
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$counter</span> ";
181
  else
182
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a> ";
183
+ $this->pagination .= "... ";
184
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a> ";
185
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a> ";
186
  }
187
  //close to end; only hide early pages
188
  else{
189
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a> ";
190
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a> ";
191
+ $this->pagination .= "... ";
192
  for ($counter = $lastpage - (2 + ($this->adjacents * 2)); $counter <= $lastpage; $counter++)
193
  if ($counter == $this->page)
194
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$counter</span> ";
195
  else
196
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a> ";
197
  }
198
  }
199
  if($this->page){
200
  //siguiente button
201
  if ($this->page < $counter - 1)
202
+ $this->pagination .= "<a href=\"".$this->get_pagenum_link($next)."\" class=\"next\">$n</a> ";
203
  else
204
+ $this->pagination .= "<span class=\"tablenav-pages-navspan\">$n</span> ";
205
  if($this->showCounter)$this->pagination .= "<span class=\"pagination_data\">($this->total_pages Pages)</span>";
206
  }
207
  }
admin/classes/class-wp-ulike-settings.php CHANGED
@@ -7,6 +7,11 @@
7
  * @link https://wpulike.com
8
  */
9
 
 
 
 
 
 
10
  if ( !class_exists( 'wp_ulike_settings' ) ) {
11
 
12
  class wp_ulike_settings {
@@ -200,16 +205,6 @@ if ( !class_exists( 'wp_ulike_settings' ) ) {
200
 
201
  public static function admin_enqueue_scripts() {
202
  wp_enqueue_media();
203
- wp_enqueue_script( 'wp-ulike-settings', WP_ULIKE_ADMIN_URL . '/assets/js/settings.js', array(
204
- 'jquery',
205
- 'wp-color-picker'
206
- ) );
207
- wp_enqueue_script( "jquery-effects-core" );
208
- wp_localize_script( 'wp-ulike-settings', 'ajax', array(
209
- 'url' => admin_url( 'admin-ajax.php' ),
210
- 'spinner' => admin_url( 'images/spinner.gif' )
211
- ) );
212
- wp_enqueue_style( 'wp-color-picker' );
213
  }
214
 
215
  public function do_page() {
@@ -425,7 +420,7 @@ if ( !class_exists( 'wp_ulike_settings' ) ) {
425
  break;
426
 
427
  case 'color':
428
- $values[$name] = preg_match( '/^#[a-f0-9]{6}$/i', $input ) ? $input : '';
429
  break;
430
 
431
  case 'textarea':
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
  if ( !class_exists( 'wp_ulike_settings' ) ) {
16
 
17
  class wp_ulike_settings {
205
 
206
  public static function admin_enqueue_scripts() {
207
  wp_enqueue_media();
 
 
 
 
 
 
 
 
 
 
208
  }
209
 
210
  public function do_page() {
420
  break;
421
 
422
  case 'color':
423
+ $values[$name] = $input;
424
  break;
425
 
426
  case 'textarea':
admin/classes/class-wp-ulike-stats.php CHANGED
@@ -7,10 +7,17 @@
7
  * @link https://wpulike.com
8
  */
9
 
 
 
 
 
 
10
  if ( ! class_exists( 'wp_ulike_stats' ) ) {
11
 
12
  class wp_ulike_stats extends wp_ulike_widget{
13
- private $wpdb;
 
 
14
 
15
  /**
16
  * Instance of this class.
@@ -22,141 +29,116 @@ if ( ! class_exists( 'wp_ulike_stats' ) ) {
22
  /**
23
  * Constructor
24
  */
25
- public function __construct()
26
- {
27
  global $wpdb;
28
- $this->wpdb = $wpdb;
29
- add_action( 'admin_enqueue_scripts', array( $this,'enqueue_script' ) );
30
- }
31
-
32
- /**
33
- * Add chart scripts files + Creating Localize Objects
34
- *
35
- * @author Alimir
36
- * @since 2.0
37
- * @updated 2.3
38
- * @updated 3.0
39
- * @return Void
40
- */
41
- public function enqueue_script($hook)
42
- {
43
- // $currentScreen = get_current_screen();
44
- $get_option = get_option( 'wp_ulike_statistics_screen' );
45
-
46
- // if ( $currentScreen->id != $hook ) {
47
- // return;
48
- // }
49
-
50
- // Register Script
51
- wp_enqueue_script(
52
- 'wp_ulike_stats',
53
- WP_ULIKE_ADMIN_URL . '/assets/js/statistics.js',
54
- array('jquery'),
55
- null,
56
- true
57
  );
58
-
59
- wp_localize_script( 'wp_ulike_stats', 'wp_ulike_statistics', array(
60
- 'posts_date_labels' => $this->posts_dataset('label'),
61
- 'comments_date_labels' => $this->comments_dataset('label'),
62
- 'activities_date_labels' => $this->activities_dataset('label'),
63
- 'topics_date_labels' => $this->topics_dataset('label'),
64
- 'posts_dataset' => $this->posts_dataset('dataset'),
65
- 'comments_dataset' => $this->comments_dataset('dataset'),
66
- 'activities_dataset' => $this->activities_dataset('dataset'),
67
- 'topics_dataset' => $this->topics_dataset('dataset'),
68
- 'data_map' => $get_option['likers_map'] == 1 ? $this->data_map() : null
69
- ));
70
-
71
- wp_enqueue_script('postbox');
72
  }
73
 
74
  /**
75
- * Get The Posts Data Set
76
  *
77
  * @author Alimir
78
  * @since 2.0
79
- * @updated 2.2
80
- * @return JSON Array
81
  */
82
- public function posts_dataset($type){
83
- $newarray = array();
84
- $return_type = $type != 'dataset' ? 'new_date_time' : 'count_date_time';
85
- $return_val = $this->select_data('ulike');
86
- foreach($return_val as $val){
87
- if($return_type == 'new_date_time'){
88
- $newarray[] = date_i18n("M j, Y", strtotime($val->$return_type) );
89
- }
90
- else
91
- $newarray[] = $val->$return_type;
92
- }
93
- return json_encode($newarray);
94
- }
95
 
96
- /**
97
- * Get The Comments Data Set
98
- *
99
- * @author Alimir
100
- * @since 2.0
101
- * @updated 2.2
102
- * @return JSON Array
103
- */
104
- public function comments_dataset($type){
105
- $newarray = array();
106
- $return_type = $type != 'dataset' ? 'new_date_time' : 'count_date_time';
107
- $return_val = $this->select_data('ulike_comments');
108
- foreach($return_val as $val){
109
- if($return_type == 'new_date_time'){
110
- $newarray[] = date_i18n("M j, Y", strtotime($val->$return_type) );
111
  }
112
- else
113
- $newarray[] = $val->$return_type;
114
  }
115
- return json_encode($newarray);
 
116
  }
117
 
118
  /**
119
- * Get The Activities Data Set
120
  *
121
  * @author Alimir
122
  * @since 2.0
123
- * @updated 2.2
124
  * @return JSON Array
125
  */
126
- public function activities_dataset($type){
127
- $newarray = array();
128
- $return_type = $type != 'dataset' ? 'new_date_time' : 'count_date_time';
129
- $return_val = $this->select_data('ulike_activities');
130
- foreach($return_val as $val){
131
- if($return_type == 'new_date_time'){
132
- $newarray[] = date_i18n("M j, Y", strtotime($val->$return_type) );
133
- }
134
- else
135
- $newarray[] = $val->$return_type;
 
 
136
  }
137
- return json_encode($newarray);
 
138
  }
139
 
140
  /**
141
- * Get The Activities Data Set
142
  *
143
  * @author Alimir
144
- * @since 2.0
145
- * @updated 2.2
146
- * @return JSON Array
147
  */
148
- public function topics_dataset($type){
149
- $newarray = array();
150
- $return_type = $type != 'dataset' ? 'new_date_time' : 'count_date_time';
151
- $return_val = $this->select_data('ulike_forums');
152
- foreach($return_val as $val){
153
- if($return_type == 'new_date_time'){
154
- $newarray[] = date_i18n("M j, Y", strtotime($val->$return_type) );
155
- }
156
- else
157
- $newarray[] = $val->$return_type;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
- return json_encode($newarray);
 
160
  }
161
 
162
  /**
@@ -166,16 +148,25 @@ if ( ! class_exists( 'wp_ulike_stats' ) ) {
166
  * @since 2.0
167
  * @return String
168
  */
169
- public function select_data($table){
170
- $get_option = get_option( 'wp_ulike_statistics_screen' );
171
- $set_number = $get_option['days_number'] != null ? $get_option['days_number'] : 20;
172
- $return_val = $this->wpdb->get_results(
173
- "
174
- SELECT DATE(date_time) AS new_date_time, count(date_time) AS count_date_time
175
- FROM ".$this->wpdb->prefix."$table
176
- GROUP BY new_date_time DESC LIMIT $set_number
177
- ");
178
- return $return_val;
 
 
 
 
 
 
 
 
 
179
  }
180
 
181
  /**
@@ -185,96 +176,106 @@ if ( ! class_exists( 'wp_ulike_stats' ) ) {
185
  * @since 2.0
186
  * @return Integer
187
  */
188
- public function get_data_date($table,$time){
189
- if($time == 'today')
190
- $where_val = "DATE(date_time) = DATE(NOW())";
191
- else if($time == 'yesterday')
192
- $where_val = "DATE(date_time) = DATE(subdate(current_date, 1))";
193
- else if($time == 'week')
194
- $where_val = "week(DATE(date_time)) = week(DATE(NOW()))";
195
- else
196
- $where_val = "month(DATE(date_time)) = month(DATE(NOW()))";
197
-
198
- $return_val = $this->wpdb->get_var(
199
- "
200
- SELECT COUNT(*)
201
- FROM ".$this->wpdb->prefix."$table
202
- WHERE $where_val
203
- ");
204
- return $return_val;
205
  }
206
 
207
  /**
208
- * Get The Sum Of All Likes
209
  *
210
  * @author Alimir
211
- * @since 2.0
212
- * @updated 2.1
213
  * @return Integer
214
  */
215
- public function get_all_data_date($table,$name){
216
- $table_name = $this->wpdb->prefix . $table;
217
- if( $this->wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) {
218
- return $this->wpdb->get_var( "
219
- SELECT SUM(meta_value)
220
- FROM ".$this->wpdb->prefix."$table
221
- WHERE meta_key LIKE '$name'
222
- " );
223
- }
224
- else {
225
- return ;
226
  }
227
- }
228
 
 
 
229
 
230
  /**
231
- * Get Data Map
232
  *
233
  * @author Alimir
234
- * @since 2.3
235
- * @updated 2.6 //added new GeoIP system
236
- * @updated 3.0
237
- * @return String
238
- */
239
- public function data_map( $country_data = array() ){
240
 
241
- if ( false === ( $return_val = get_transient( 'wp_ulike_get_likers_dispersal_statistics' ) ) ) {
242
- // Make new sql request
243
- $return_val = $this->wpdb->get_results( "
244
- SELECT T.user_ip AS get_user_ip , SUM(T.count_user_ip) AS get_count_user_ip
245
- FROM(
246
- SELECT ip AS user_ip, count(ip) AS count_user_ip
247
- FROM ".$this->wpdb->prefix."ulike
248
- GROUP BY user_ip
249
- UNION ALL
250
- SELECT ip AS user_ip, count(ip) AS count_user_ip
251
- FROM ".$this->wpdb->prefix."ulike_activities
252
- GROUP BY user_ip
253
- UNION ALL
254
- SELECT ip AS user_ip, count(ip) AS count_user_ip
255
- FROM ".$this->wpdb->prefix."ulike_comments
256
- GROUP BY user_ip
257
- UNION ALL
258
- SELECT ip AS user_ip, count(ip) AS count_user_ip
259
- FROM ".$this->wpdb->prefix."ulike_forums
260
- GROUP BY user_ip
261
- ) AS T
262
- GROUP BY get_user_ip
263
- " );
264
- // Set transient
265
- set_transient( 'wp_ulike_get_likers_dispersal_statistics', $return_val, 24 * HOUR_IN_SECONDS );
266
- }
267
 
268
- foreach($return_val as $return){
269
- //$cdata = strtolower(wp_ulike_get_geoip($return->get_user_ip,'code'));
270
- $cdata = strtolower( getCountryFromIP( $return->get_user_ip, "code" ) );
271
- if( ! isset( $country_data[$cdata] ) ) {
272
- $country_data[$cdata] = 0;
273
- }
274
- $country_data[$cdata] += $return->get_count_user_ip;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  }
276
 
277
- return json_encode( $country_data );
278
  }
279
 
280
  /**
@@ -289,30 +290,36 @@ if ( ! class_exists( 'wp_ulike_stats' ) ) {
289
 
290
  if ( false === ( $result = get_transient( 'wp_ulike_get_top_likers' ) ) ) {
291
  // Make new sql request
292
- $result = $this->wpdb->get_results( "
293
- SELECT T.user_id, SUM(T.CountUser) AS SumUser, T.ip
294
- FROM(
295
- SELECT user_id, count(user_id) AS CountUser, ip
296
- FROM ".$this->wpdb->prefix."ulike
297
- GROUP BY user_id
298
- UNION ALL
299
- SELECT user_id, count(user_id) AS CountUser, ip
300
- FROM ".$this->wpdb->prefix."ulike_activities
301
- GROUP BY user_id
302
- UNION ALL
303
- SELECT user_id, count(user_id) AS CountUser, ip
304
- FROM ".$this->wpdb->prefix."ulike_comments
305
- GROUP BY user_id
306
- UNION ALL
307
- SELECT user_id, count(user_id) AS CountUser, ip
308
- FROM ".$this->wpdb->prefix."ulike_forums
309
- GROUP BY user_id
310
- ) AS T
311
- GROUP BY T.user_id
312
- ORDER BY SumUser DESC LIMIT 10
313
- " );
314
- // Set transient
315
- set_transient( 'wp_ulike_get_top_likers', $result, 24 * HOUR_IN_SECONDS );
 
 
 
 
 
 
316
  }
317
 
318
  return $result;
@@ -322,22 +329,33 @@ if ( ! class_exists( 'wp_ulike_stats' ) ) {
322
  * Tops Summaries
323
  *
324
  * @author Alimir
325
- * @since 2.6
326
- * @since 3.0
327
- * @return Array
328
  */
329
  public function get_tops( $type ){
 
 
 
 
 
 
 
 
 
 
 
 
330
  switch( $type ){
331
- case 'top_posts':
332
  return parent::most_liked_posts();
333
  break;
334
- case 'top_comments':
335
  return parent::most_liked_comments();
336
  break;
337
- case 'top_activities':
338
  return parent::most_liked_activities();
339
  break;
340
- case 'top_topics':
341
  return parent::most_liked_topics();
342
  break;
343
  default:
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
  if ( ! class_exists( 'wp_ulike_stats' ) ) {
16
 
17
  class wp_ulike_stats extends wp_ulike_widget{
18
+
19
+ // Private variables
20
+ private $wpdb, $tables;
21
 
22
  /**
23
  * Instance of this class.
29
  /**
30
  * Constructor
31
  */
32
+ function __construct(){
 
33
  global $wpdb;
34
+ $this->wpdb = $wpdb;
35
+ $this->tables = array(
36
+ 'posts' => 'ulike',
37
+ 'comments' => 'ulike_comments',
38
+ 'activities' => 'ulike_activities',
39
+ 'topics' => 'ulike_forums',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
42
 
43
  /**
44
+ * Return tables which has any data inside
45
  *
46
  * @author Alimir
47
  * @since 2.0
48
+ * @return Array
 
49
  */
50
+ public function get_tables(){
51
+ // Tables buffer
52
+ $get_tables = $this->tables;
 
 
 
 
 
 
 
 
 
 
53
 
54
+ foreach ( $get_tables as $type => $table) {
55
+ // If this table has no data, then unset it and continue...
56
+ if( ! $this->count_logs( array ( "table" => $table ) ) ) {
57
+ unset( $get_tables[ $type ] );
58
+ continue;
 
 
 
 
 
 
 
 
 
 
59
  }
60
+
 
61
  }
62
+
63
+ return $get_tables;
64
  }
65
 
66
  /**
67
+ * Get posts datasets
68
  *
69
  * @author Alimir
70
  * @since 2.0
 
71
  * @return JSON Array
72
  */
73
+ public function dataset( $table ){
74
+ $output = array();
75
+ // Get data
76
+ $results = $this->select_data( $table );
77
+ // Create chart dataset
78
+ foreach( $results as $result ){
79
+ $output['label'][] = date_i18n( "M j, Y", strtotime( $result->labels ) );
80
+ $output['data'][] = $result->counts;
81
+ }
82
+ // Add chart options
83
+ if( ! empty( $output['data'] ) ){
84
+ $output['options'] = $this->charts( $table );
85
  }
86
+
87
+ return $output;
88
  }
89
 
90
  /**
91
+ * Set custom options for charts
92
  *
93
  * @author Alimir
94
+ * @since 3.5
95
+ * @return Array
 
96
  */
97
+ public function charts( $table, $options = array() ){
98
+
99
+ switch ( $table ) {
100
+ case 'ulike':
101
+ $options = array(
102
+ 'label' => __( "Posts Stats", WP_ULIKE_SLUG ),
103
+ 'backgroundColor' => "rgba(66, 165, 245,0.8)",
104
+ 'borderColor' => "rgba(21, 101, 192,1)",
105
+ 'pointBackgroundColor' => "rgba(255,255,255,1)",
106
+ 'borderWidth' => 1
107
+ );
108
+ break;
109
+
110
+ case 'ulike_comments':
111
+ $options = array(
112
+ 'label' => __( "Comments Stats", WP_ULIKE_SLUG ),
113
+ 'backgroundColor' => "rgba(255, 202, 40,0.8)",
114
+ 'borderColor' => "rgba(255, 143, 0,1)",
115
+ 'pointBackgroundColor' => "rgba(255,255,255,1)",
116
+ 'borderWidth' => 1
117
+ );
118
+ break;
119
+
120
+ case 'ulike_activities':
121
+ $options = array(
122
+ 'label' => __( "Activities Stats", WP_ULIKE_SLUG ),
123
+ 'backgroundColor' => "rgba(239, 83, 80,0.8)",
124
+ 'borderColor' => "rgba(198, 40, 40,1)",
125
+ 'pointBackgroundColor' => "rgba(255,255,255,1)",
126
+ 'borderWidth' => 1
127
+ );
128
+ break;
129
+
130
+ case 'ulike_forums':
131
+ $options = array(
132
+ 'label' => __( "Topics Stats", WP_ULIKE_SLUG ),
133
+ 'backgroundColor' => "rgba(102, 187, 106,0.8)",
134
+ 'borderColor' => "rgba(27, 94, 32,1)",
135
+ 'pointBackgroundColor' => "rgba(255,255,255,1)",
136
+ 'borderWidth' => 1
137
+ );
138
+ break;
139
  }
140
+
141
+ return $options;
142
  }
143
 
144
  /**
148
  * @since 2.0
149
  * @return String
150
  */
151
+ public function select_data( $table ){
152
+
153
+ $query = sprintf( "
154
+ SELECT DATE(date_time) AS labels,
155
+ count(date_time) AS counts
156
+ FROM %s
157
+ GROUP BY labels
158
+ DESC LIMIT %d",
159
+ $this->wpdb->prefix . $table,
160
+ 30
161
+ );
162
+
163
+ $result = $this->wpdb->get_results( $query );
164
+
165
+ if( empty( $result ) ) {
166
+ $result->labels = $result->counts = NULL;
167
+ }
168
+
169
+ return $result;
170
  }
171
 
172
  /**
176
  * @since 2.0
177
  * @return Integer
178
  */
179
+ public function get_data_date( $table, $date ){
180
+ _deprecated_function( 'get_data_date', '3.5', 'count_logs' );
181
+ return $this->count_logs( array( "table" => $table, "date" => $date ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  }
183
 
184
  /**
185
+ * Count all logs from the tables
186
  *
187
  * @author Alimir
188
+ * @since 3.5
 
189
  * @return Integer
190
  */
191
+ public function count_all_logs( $date = 'all' ){
192
+ // Result
193
+ $result = 0;
194
+
195
+ foreach ( $this->tables as $key => $table ) {
196
+ $result += $this->count_logs( array( "table" => $table, "date" => $date ) );
 
 
 
 
 
197
  }
 
198
 
199
+ return $result;
200
+ }
201
 
202
  /**
203
+ * Count logs by table
204
  *
205
  * @author Alimir
206
+ * @since 3.5
207
+ * @return Integer
208
+ */
209
+ public function count_logs( $args = array() ){
 
 
210
 
211
+ //Main Data
212
+ $defaults = array(
213
+ "table" => 'ulike',
214
+ "date" => 'all'
215
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
 
217
+ $parsed_args = wp_parse_args( $args, $defaults );
218
+
219
+ // Extract variables
220
+ extract( $parsed_args );
221
+
222
+ $query = sprintf( "SELECT COUNT(*) FROM %s WHERE 1=1", $this->wpdb->prefix . $table );
223
+
224
+ switch ( $date ) {
225
+ case 'today':
226
+ $query .= ' AND DATE( date_time ) = DATE( NOW() )';
227
+ break;
228
+
229
+ case 'yesterday':
230
+ $query .= ' AND DATE( date_time ) = DATE( subdate( current_date, 1 ) )';
231
+ break;
232
+
233
+ case 'week':
234
+ $query .= ' AND WEEK( DATE( date_time ) ) = WEEK( DATE( NOW() ) )';
235
+ break;
236
+
237
+ case 'month':
238
+ $query .= ' AND MONTH( DATE( date_time ) ) = MONTH( DATE( NOW() ) )';
239
+ break;
240
+
241
+ case 'year':
242
+ $query .= ' AND YEAR( DATE( date_time ) ) = YEAR( DATE( NOW() ) )';
243
+ break;
244
+ }
245
+
246
+ $result = $this->wpdb->get_var( $query );
247
+
248
+ return empty( $result ) ? 0 : $result;
249
+
250
+ }
251
+
252
+ public function display_top_likers(){
253
+ $top_likers = $this->get_top_likers();
254
+ $result = '';
255
+ $counter = 1;
256
+ foreach ( $top_likers as $user ) {
257
+ $user_ID = stripslashes( $user->user_id );
258
+ $userdata = get_userdata( $user_ID );
259
+ $username = empty( $userdata ) ? __('Guest User',WP_ULIKE_SLUG) : $userdata->display_name;
260
+
261
+ $result .= '
262
+ <div class="wp-ulike-flex wp-ulike-users-list">
263
+ <div class="wp-ulike-counter">
264
+ <i class="wp-ulike-icons-trophy"></i>
265
+ <span class="aux-wp-ulike-counter">'.$counter++.'th</span>
266
+ </div>
267
+ <div class="wp-ulike-info">
268
+ <i class="wp-ulike-icons-profile-male"></i>
269
+ <span class="wp-ulike-user-name">'.$username.'</span>
270
+ </div>
271
+ <div class="wp-ulike-total">
272
+ <i class="wp-ulike-icons-heart"></i>
273
+ <span class="wp-ulike-user-name">'.$user->SumUser.'</span>
274
+ </div>
275
+ </div>';
276
  }
277
 
278
+ return $result;
279
  }
280
 
281
  /**
290
 
291
  if ( false === ( $result = get_transient( 'wp_ulike_get_top_likers' ) ) ) {
292
  // Make new sql request
293
+ $query = sprintf( '
294
+ SELECT T.user_id, SUM(T.CountUser) AS SumUser, T.ip
295
+ FROM(
296
+ SELECT user_id, count(user_id) AS CountUser, ip
297
+ FROM `%1$sulike`
298
+ GROUP BY user_id
299
+ UNION ALL
300
+ SELECT user_id, count(user_id) AS CountUser, ip
301
+ FROM `%1$sulike_activities`
302
+ GROUP BY user_id
303
+ UNION ALL
304
+ SELECT user_id, count(user_id) AS CountUser, ip
305
+ FROM `%1$sulike_comments`
306
+ GROUP BY user_id
307
+ UNION ALL
308
+ SELECT user_id, count(user_id) AS CountUser, ip
309
+ FROM `%1$sulike_forums`
310
+ GROUP BY user_id
311
+ ) AS T
312
+ GROUP BY T.user_id
313
+ ORDER BY SumUser DESC LIMIT %2$d',
314
+ $this->wpdb->prefix,
315
+ 5
316
+ );
317
+ $result = $this->wpdb->get_results( $query );
318
+
319
+ if( !empty( $result ) ) {
320
+ // Set transient
321
+ set_transient( 'wp_ulike_get_top_likers', $result, 24 * HOUR_IN_SECONDS );
322
+ }
323
  }
324
 
325
  return $result;
329
  * Tops Summaries
330
  *
331
  * @author Alimir
332
+ * @since 2.0
333
+ * @return Integer
 
334
  */
335
  public function get_tops( $type ){
336
+ _deprecated_function( 'get_tops', '3.5', 'get_top' );
337
+ return $this->get_top( $type );
338
+ }
339
+
340
+ /**
341
+ * Tops Summaries
342
+ *
343
+ * @author Alimir
344
+ * @since 3.5
345
+ * @return Array
346
+ */
347
+ public function get_top( $type ){
348
  switch( $type ){
349
+ case 'posts':
350
  return parent::most_liked_posts();
351
  break;
352
+ case 'comments':
353
  return parent::most_liked_comments();
354
  break;
355
+ case 'activities':
356
  return parent::most_liked_activities();
357
  break;
358
+ case 'topics':
359
  return parent::most_liked_topics();
360
  break;
361
  default:
admin/classes/class-wp-ulike-widget.php CHANGED
@@ -7,6 +7,11 @@
7
  * @link https://wpulike.com
8
  */
9
 
 
 
 
 
 
10
  if ( ! class_exists( 'wp_ulike_widget' ) ) {
11
 
12
  class wp_ulike_widget extends WP_Widget {
@@ -136,8 +141,10 @@ if ( ! class_exists( 'wp_ulike_widget' ) ) {
136
 
137
  $result .= $before_item;
138
  $result .= $show_thumb ? get_avatar( $comment->comment_author_email, $sizeOf ) : '';
 
139
  $result .= '<span class="comment-author-link">' . $comment_author . '</span> ' . __('on',WP_ULIKE_SLUG);
140
  $result .= ' <a href="' . $post_permalink . '#comment-' . $comment->comment_ID . '" title="' . $post_title.'" rel="nofollow">' . wp_trim_words( $post_title, $num_words = $trim, $more = null ) . '</a>';
 
141
  $result .= $show_count ? ' <span class="wp_counter_span">'.wp_ulike_format_number($comment_likes_count).'</span>' : '';
142
  $result .= $after_item;
143
  }
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // no direct access allowed
11
+ if ( ! defined('ABSPATH') ) {
12
+ die();
13
+ }
14
+
15
  if ( ! class_exists( 'wp_ulike_widget' ) ) {
16
 
17
  class wp_ulike_widget extends WP_Widget {
141
 
142
  $result .= $before_item;
143
  $result .= $show_thumb ? get_avatar( $comment->comment_author_email, $sizeOf ) : '';
144
+ $result .= '<span class="comment-info">';
145
  $result .= '<span class="comment-author-link">' . $comment_author . '</span> ' . __('on',WP_ULIKE_SLUG);
146
  $result .= ' <a href="' . $post_permalink . '#comment-' . $comment->comment_ID . '" title="' . $post_title.'" rel="nofollow">' . wp_trim_words( $post_title, $num_words = $trim, $more = null ) . '</a>';
147
+ $result .= '</span>';
148
  $result .= $show_count ? ' <span class="wp_counter_span">'.wp_ulike_format_number($comment_likes_count).'</span>' : '';
149
  $result .= $after_item;
150
  }
admin/includes/geoiploc.php DELETED
@@ -1,2549 +0,0 @@
1
- <?php
2
-
3
- /*
4
-
5
- +-----------------------------------------------------------------+
6
- | Created by Chirag Mehta - http://chir.ag/projects/geoiploc |
7
- |-----------------------------------------------------------------|
8
- | For PHP GeoIPLocation Library |
9
- +-----------------------------------------------------------------+
10
-
11
- All the functions, data conversion etc. have been written specifically
12
- for the PHP GeoIPLocation Library by Chirag Mehta.
13
-
14
- GeoIPLoc code & data last updated: Sat Apr 25 0:02:05 PDT 2015.
15
- Note: This library is updated automatically once a day.
16
-
17
- This library is released under the: Creative Commons License: Attribution 2.5
18
- http://creativecommons.org/licenses/by/2.5/
19
-
20
- The IP Country data is from: http://Software77.net (A Webnet77.com Company)
21
-
22
- Please review the following copy of license for more information:
23
-
24
- # INFORMATION AND NOTES ON IpToCountry.csv.gz
25
- # ===========================================
26
- #
27
- # ------------------------------------------------------------------------------
28
- # LICENSE
29
- # =======
30
- # This database is provided FREE under the terms of the
31
- # GENERAL PUBLIC LICENSE, June 1991
32
- # ------------------------------------------------------------------------------
33
- #
34
- # Generator : ip.pl on http://Software77.net (A Webnet77.com Company)
35
- # Software Author : BRM
36
- # Contact : http://Webnet77.com/contact.html
37
- # Download : http://software77.net/cgi-bin/ip-country/geo-ip.pl
38
- #
39
- # IMPORTANT NOTES
40
- # ===============
41
- # If you discover a bug in the database, please let us know at the contact
42
- # address above.
43
- #
44
- # What this database is
45
- # =====================
46
- #
47
- # This Database is operated and maintained by Webnet77 and updated every 1
48
- # days and represents [almost] all 2 billion IP numbers [approximately] in use on the
49
- # internet today.
50
- #
51
- # This Database is automatically reconstituted every 1 days by special
52
- # software running on our servers. The bottom of the main page shows how long ago
53
- # it was updated as well as giving an indication of when the next update will
54
- # take place.
55
- # ------------------------------------------------------------------------------
56
- #
57
- # FILE FORMAT
58
- # ===========
59
- #
60
- # --------------------------------------------------------------
61
- # All lines beginning with either "#" or whitespace are comments
62
- # --------------------------------------------------------------
63
- #
64
- # IP FROM IP TO REGISTRY ASSIGNED CTRY CNTRY COUNTRY
65
- # "1346797568","1346801663","ripencc","20010601","IL","ISR","ISRAEL"
66
- #
67
- # IP FROM : Numerical representation of IP address.
68
- # Example: (from Right to Left)
69
- # 1.2.3.4 = 4 + (3 * 256) + (2 * 256 * 256) + (1 * 256 * 256 * 256)
70
- # is 4 + 768 + 13,1072 + 16,777,216 = 16,909,060
71
- #
72
- # REGISTRY : apcnic, arin, lacnic, ripencc and afrinic
73
- # Also included as of April 22, 2005 are the IANA IETF Reserved
74
- # address numbers. These are important since any source claiming
75
- # to be from one of these IP's must be spoofed.
76
- #
77
- # ASSIGNED : The date this IP or block was assigned. (In Epoch seconds)
78
- # NOTE: Where the allocation or assignment has been transferred from
79
- # one registry to another, the date represents the date of first
80
- # assignment or allocation as received in from the original RIR.
81
- # It is noted that where records do not show a date of first
82
- # assignment, the date is given as "0".
83
- #
84
- # CTRY : 2 character international country code
85
- # NOTE: ISO 3166 2-letter code of the organisation to which the
86
- # allocation or assignment was made, and the enumerated variances of:
87
- # AP - non-specific Asia-Pacific location
88
- # CS - Serbia and Montenegro (Formally Czechoslovakia)
89
- # YU - Serbia and Montenegro (Formally Yugoslavia) (Being phased out)
90
- # EU - non-specific European Union location
91
- # FX - France, Metropolitan
92
- # PS - Palestinian Territory, Occupied
93
- # UK - United Kingdom (standard says GB)
94
- # * ZZ - IETF RESERVED address space.
95
- #
96
- # These values are not defined in ISO 3166 but are widely used.
97
- # * IANA Reserved Address space
98
- #
99
- # CNTRY : Country Abbreviation. Usually 3 Character representation
100
- #
101
- # COUNTRY : Country Name. Full Country Name.
102
- #
103
- # Countries falling under AFRINIC now show correctly (June 27, 2005)
104
- # ------------------------------------------------------------------------------
105
- # THIS DATABSE IS PROVIDED WITHOUT ANY WARRANTY WHATSOEVER. USE ENTIRELY AT YOUR
106
- # OWN RISK. NO LIABILITY WHATSOEVER, OF ANY NATURE, WILL BE ASSUMEND BY
107
- # Webnet77.com, IT'S DISTRIBUTORS, RESELLERS OR AGENTS. SHOULD THE DATABASE
108
- # PROVE TO BE FAULTY, CAUSE YOU LOSS OR OTHER FINANCIAL DAMAGE, YOU AGREE YOU
109
- # HAVE NO CLAIM AGINST Webnet77.com IT'S DISTRIBUTORS, RESELLERS OR AGENTS. IF
110
- # YOU DO NOT ACCEPT THESE TERMS YOU MAY NOT USE THIS DATABASE.
111
- # ------------------------------------------------------------------------------
112
- #
113
- # � 2002-12:08:03 Webnet77.com
114
- #
115
- #
116
- #
117
- #
118
-
119
- */
120
-
121
-
122
- /* usage:
123
-
124
- $cCode = getCountryFromIP($ip); // returns country code by default
125
- $cCode = getCountryFromIP($ip, "code"); // you can specify code - optional
126
- $cAbbr = getCountryFromIP($ip, "AbBr"); // returns country abbreviation - case insensitive
127
- $cName = getCountryFromIP($ip, " NamE "); // full name of country - spaces are trimmed
128
-
129
- $ip must be of the form "192.168.1.100"
130
- $type can be "code", "abbr", "name", or omitted
131
-
132
- ip cacheing:
133
-
134
- this function has a simple cache that works pretty well when you are calling
135
- getCountryFromIP thousands of times in the same script and IPs are repeated e.g.
136
- while parsing access logs. Without caching, each IP would be searched everytime
137
- you called this function. The only time caching would slow down performance
138
- is if you have 100k+ unique IP addresses. But then you should use a dedicated
139
- box for GeoLocation anyway and of course feel free to optimize this script.
140
- */
141
-
142
- function getCountryFromIP($ip, $type = "code")
143
- {
144
- global $geoipaddrfrom, $geoipaddrupto;
145
- global $geoipctry, $geoipcntry, $geoipcountry;
146
- global $geoipcount, $geoipcache;
147
-
148
- if(strpos($ip, ".") === false)
149
- return "";
150
-
151
- $ip = substr("0000000000" . sprintf("%u", ip2long($ip)), -10);
152
- $ipn = base64_encode($ip);
153
-
154
- if(isset($geoipcache[$ipn])) // search in cache
155
- {
156
- $ct = $geoipcache[$ipn];
157
- }
158
- else // search in IP Address array
159
- {
160
- $from = 0;
161
- $upto = $geoipcount;
162
- $ct = "ZZ"; // default: Reserved or Not Found
163
-
164
- // simple binary search within the array for given text-string within IP range
165
- while($upto > $from)
166
- {
167
- $idx = $from + intval(($upto - $from)/2);
168
- $loip = substr("0000000000" . $geoipaddrfrom[$idx], -10);
169
- $hiip = substr("0000000000" . $geoipaddrupto[$idx], -10);
170
-
171
- if($loip <= $ip && $hiip >= $ip)
172
- {
173
- $ct = $geoipctry[$idx];
174
- break;
175
- }
176
- else if($loip > $ip)
177
- {
178
- if($upto == $idx)
179
- break;
180
- $upto = $idx;
181
- }
182
- else if($hiip < $ip)
183
- {
184
- if($from == $idx)
185
- break;
186
- $from = $idx;
187
- }
188
- }
189
-
190
- // cache the country code
191
- $geoipcache[$ipn] = $ct;
192
- }
193
-
194
- $type = trim(strtolower($type));
195
-
196
- if($type == "abbr")
197
- $ct = $geoipcntry[$ct];
198
- else if($type == "name")
199
- $ct = $geoipcountry[$ct];
200
-
201
- return $ct;
202
- }
203
-
204
- $GLOBALS['geoipaddrfrom'] = array('0','16777216','16777472','16778240','16779264','16781312','16785408','16793600','16809984','16842752','16843008','16843264','16859136','16875520','16908288','16909056','16909312','16941056','16973824','17039360','17039616','17072128','17104896','17170432','17301504','17367040','17432576','17435136','17435392','17465344','17498112','17563648','17825792','18087936','18153472','18219008','18350080','18874368','18907136','18923520','18939904','19005440','19136512','19202048','19267584','19398656','19726336','19791872','19922944','20185088','20447232','20971520','21102592','21233664','21495808','22020096','23068672','24117248','24379392','24641536','27262976','28311552','28442624','28540928',
205
- '28573696','28966912','29097984','29884416','29949952','30015488','30408704','33554432','34603008','35127296','35651584','36700160','36962304','37486592','37748736','38273024','38797312','39059456','39321600','39583744','39845888','40370176','40894464','41418752','41943040','42205184','42467328','42991616','43253760','43515904','43778048','44040192','45088768','46137344','46661632','47710208','48234496','49283072','49807360','50331648','83886080','83951616','83959808','83961856','83963904','83965952','83968000','83976192','83978240','83980288','83982336','84017152','84021248','84023296','84025344','84033536','84037632','84039680','84041728','84049920','84082688','84148224','84410368','84434944','84443136','84451328','84457472','84459520','84471808','84475904','84545536','84549632','84551680','84557824','84574208','84576256','84582400','84590592','84592640','84594688','84598784','84600832','84602880','84606976','84609024','84615168','84617216','84619264','84621312','84623360','84627456','84631552','84639744','84672512','84934656','85196800','85262336','85327872','85360640','85362688','85364736','85366784','85368832','85377024','85385216','85387264','85389312','85391360','85393408','85401600','85403648','85405696','85407744','85409792','85417984','85422080','85424128','85426176','85458944','85721088','85723136','85725184','85729280','85731328','85733376','85737472','85753856','85770240','85786624','85852160','86016000','86018048','86020096','86022144','86024192','86026240','86028288','86030336','86032384','86048768','86114304','86147072','86155264','86157312','86159360','86161408','86163456','86171648','86173696','86175744','86177792','86179840','86224896','86226944','86228992','86231040','86233088','86235136','86237184','86245376','86376448','86409216','86441984','86474752','86482944','86484992','86487040','86489088','86491136','86493184','86495232','86497280','86499328','86503424','86505472','86507520',
206
- '86573056','86638592','86671360','86673408','86675456','86677504','86687744','86695936','86704128','86720512','86736896','86745088','86753280','86761472','86763520','86765568','86767616','86769664','86773760','86777856','86779904','86786048','86788096','86790144','86794240','86798336','86802432','86804480','86806528','86810624','86812672','86814720','86816768','86818816','86822912','86824960','86827008','86831104','86833152','86835200','86837248','86839296','86847488','86849536','86851584','86859776','86863872','86867968','86872064','86874112','86876160','86880256','86882304','86884352','86900736','87031808','87293952','87359488','87361536','87363584','87367680','87375872','87384064','87386112','87388160','87390208','87392256','87425024','87556096','87558144','87560192','87562240','87564288','87566336','87568384','87570432','87572480','87588864','87590912','87592960','87597056','87599104','87601152','87621632','87623680','87625728','87627776','87629824','87631872','87633920','87635968','87638016','87640064','87642112','87646208',
207
- '87654400','87670784','87672832','87674880','87676928','87678976','87681024','87683072','87685120','87687168','87752704','87818240','87883776','87885824','87889920','87891968','87900160','87902208','87904256','87906304','87908352','87912448','87914496','87916544','87932928','87934976','87939072','87941120','87943168','87945216','87947264','87949312','87965696','87967744','87969792','87973888','87982080','88014848','88016896','88018944','88020992','88023040','88031232','88047616','88049664','88051712','88053760','88055808','88057856','88059904','88061952','88064000','88080384','88604672','88866816','88932352','88940544','88948736','88965120','88997888','89063424','89079808','89096192','89128960','89260032','89325568','89327616','89329664','89331712','89333760','89337856','89339904','89341952','89350144','89352192','89354240','89356288','89358336','89374720','89382912','89384960','89387008','89391104','90439680','90456064','90472448','90476544','90478592','90480640','90482688','90484736','90488832','90497024','90499072','90503168','90505216','90529792','90533888','90537984','90540032','90544128','90546176','90548224','90550272','90554368','90570752','90578944','90583040','90587136','90589184','90591232','90595328','90603520','90605568','90607616','90609664','90611712','90613760','90615808','90617856','90619904','90636288','90701824','90705920','90707968','90710016','90718208','90720256','90722304','90724352','90726400','90728448','90730496','90734592','90736640','90738688','90740736','90742784','90750976','90753024','90755072','90757120','90759168','90761216','90763264','90765312','90767360','90832896','90898432','90963968','91226112','92274688','92536832','92569600','92585984','92602368','92604416','92606464','92608512','92610560','92612608','92614656','92635136','92643328','92645376','92651520','92659712','92663808','92665856','92667904','92669952','92672000','92674048','92676096','92680192','92684288','92688384','92690432','92692480','92694528','92696576','92698624','92700672','92717056','92719104','92721152','92723200','92725248','92733440',
208
- '92798976','93323264','93335552','93339648','93343744','93347840','93356032','93358080','93360128','93362176','93364224','93368320','93370368','93372416','93388800','93415424','93417472','93419520','93421568','93425664','93427712','93429760','93431808','93433856','93437952','93454336','93585408','93626368','93634560','93650944','93652992','93655040','93667328','93675520','93679616','93681664','93683712','93685760','93687808','93689856','93691904','93693952','93696000','93700096','93702144','93704192','93708288','93712384','93714432','93749248','93753344','93755392','93765632','93782016','93847552','93880320','93888512','93890560','93892608','93894656','93896704','93904896','93906944','93908992','93911040','93913088','93929472','93939712','93941760','93945856','93962240','93972480','93974528','93976576','93978624','94011392','94019584','94027776','94035968','94109696','94175232','94191616','94193664',
209
- '94195712','94199808','94208000','94240768','94257152','94261248','94263296','94265344','94273536','94289920','94291968','94294016','94296064','94298112','94300160','94302208','94306304','94308352','94310400','94312448','94314496','94316544','94318592','94320640','94330880','94337024','94339072','94355456','94357504','94361600','94363648','94365696','94367744','94369792','94371840','94502912','94568448','94633984','94896128','95158272','95166464','95168512','95170560','95174656','95191040','95195136','95197184','95203328','95205376','95207424','95211520','95213568','95215616','95354880','95363072','95365120','95367168','95369216','95371264','95375360','95377408','95387648','95420416','95551488','95555584','95557632','95559680','95561728','95563776','95567872','95569920','95571968','95574016','95576064','95580160','95582208','95584256','95617024','95625216','95635456','95637504','95641600','95645696','95647744','95649792','95666176','95668224','95944704','96075776','96141312','96143360','96145408','96149504','96151552','96153600','96155648','96157696','96165888','96174080','96206848','96305152','96321536','96337920','96403456','96468992','96731136','96796672','96862208','96894976','96897024','96899072','96903168','96911360','96919552','96923648','96925696','96927744','96960512','96964608','96968704','96972800','96976896','96985088','96987136','96989184','96993280','97001472','97009664','97058816','97091584','97189888','97255424','97320960','97386496','97419264','97435648','97437696','97439744','97443840','97445888','97447936','97452032','97517568','98566144','98697216','98701312','98705408','98707456','98709504','98711552','98713600','98732032','98734080','98736128','98738176','98740224','98742272','98744320','98746368','98762752','98893824','98959360','99090432','99614720','99876864',
210
- '100139008','100204544','100237312','100245504','100247552','100249600','100253696','100261888','100270080','100302848','100311040','100313088','100315136','100319232','100327424','100329472','100331520','100335616','100532224','100564992','100573184','100575232','100577280','100579328','100581376','100589568','100597760','100614144','100630528','100632576','100634624','100636672','100638720','100646912','100663296','167772160','184549376','234881024','234883072','234884096','234885120','234889216','234913792','234946560','234947584','234950656','234951680','234954752','234979328','235012096','235077632','235143168','235405312','235929600','236978176','241172480','241434624','241500160','241565696','241598464','241599488','241600512','241602560','241604608','241605632','241614848','241623040','241627136','241631232','243269632','243270656','243271680','243272704','243273728','243277824','243286016','243302400','243400704','243531776',
211
- '243662848','243793920','243859456','243916800','243924992','243990528','244318208','245366784','247472128','247479296','247480320','247482368','247483392','247484416','247488512','247496704','247504896','247513088','247529472','247595008','247726080','247857152','247988224','248250368','248381440','248446976','248512512','249561088','251658240','386924544','387055616','387825664','387833856','391872512','391888896','391897088','391905280','391938048','391946240','394264576','394264832','394270720','394271232','394296320','394296832','398458880','400715776','400719872','400760832','400769024','400805888','400809984','401145856','401211392','401293312','401297408','401342464','401346560','401547264','401555456','402128896','402169856','402223104','402227200','402243584','402247680','402366464','402374656','402399232','402403328','402415616','402419712','402448384','402452480','405012480','405143552','405180416','405184512','405364736','405372928','405422080','405798912','405831680','405843968','405848064','405864448','405921792','405929984','405938176','405962752','405970944','405979136','405995520','406003712','406011904','406028288','406052864','406061056','406110208','406142976','406147072','406159360','406175744','406216704','406241280','406257664','406274048','406290432','406298624','406306816','406323200','406388736','406454272','406847488','407408640','407613440','407617536','407633920','408420352','408502272','408518656','408535040','408551424','408719360','408723456','409255936','409272320','409337856','409354240','409509888','409518080','409550848','409567232','409731072','409862144','410124288','410189824','410648576','410714112','411156480','411160576','411164672','411168768','411303936','411369472','411435008','411500544','411566080','411639808','411664384','411680768','411688960','411697152','411746304','411762688','411770880','411779072','411828224','411885568','411975680','411979776','411983872','412057600','412073984','412221440','412254208','412483584','412549120','412647424','412680192','412688384','412704768','412708864','412909568','412942336','412946432','412950528','412958720','413007872','413908992','413925376','415760384','416022528','416059392','416088064','416153600','416161792','416219136','416251904','416546816','416612352','416628736','416636928','416743424','416776192','417202176','417267712','417366016','417398784','417431552','417529856','417538048','417726464','417734656','417775616','417796096','417800192','417808384','417816576','417820672','417857536','417923072','418062336','418070528','418078720','418119680','418316288',
212
- '418320384','418643968','418668544','418672640','418676736','418693120','418709504','418766848','418770944','418775040','418799616','419430400','436207616','452984832','452985856','452986880','452987904','452988928','452997120','453001216','453009408','453050368','453115904','453246976','453509120','455081984','455213056','455245824','455258112','455262208','455270400','455272448','455274496','455278592','455344128','456130560','456261632','456262656','456263680','456264704','456265728','456269824','456271872','456273920','456286208','456294400','456327168','456523776','456540160','456542208','456544256','456548352','456554496','456555520','456556544','456562688','456564736','456572928','456589312','456654848','457179136','458227712','459282432',
213
- '459284480','459292672','459293696','459297792','459300864','459309056','459325440','459333632','459341824','459407360','459456512','459460608','459472896','459505664','459538432','459540480','459541504','459542528','459545600','459548672','459550720','459554816','459571200','459735040','459800576','459866112','459931648','459964416','459980800','459983872','459984896','459986944','459988992','459997184','460062720','460128256','460136448','460144640','460152832','460154880','460155904','460156928','460158976','460161024','460193792','460210176','460214272','460218368','460224512','460226560','460259328','460261376','460262400','460263424','460267520','460275712','460278784','460279808','460283904','460292096','460300288','460312576','460320768','460324864','460341248','460343296','460344320','460345344','460349440','460351488','460356608','460357632','460423168','460439552','460451840','460453888','460454912','460455936','460488704','460505088','460521472','460554240',
214
- '460587008','460591104','460593152','460595200','460596224','460598272','460599296','460601344','460602368','460603392','460718080','460722176','460726272','460734464','460865536','460931072','460933120','460935168','460937216','460938240','460939264','460940288','460941312','460942336','460943360','460945408','460947456','460980224','460981248','460983296','460984320','460988416','460994560','460996608','461008896','461012992','461045760','461047808','461049856','461050880','461051904','461053952','461062144','461078528','461094912','461099008','461100032','461101056','461102080','461103104','461111296','461127680','461131776','461135872','461144064','461209600','461225984','461227008','461228032','461229056','461230080','461234176','461242368','461258752','461279232','461281280','461282304','461283328','461287424','461307904','461357056','461369344','461373440',
215
- '461504512','461570048','461572096','461573120','461574144','461578240','461586432','461602816','461619200','461623296','461625344','461626368','461627392','461633536','461635584','462422016','462487552','462553088','462618624','462635008','462651392','462684160','463470592','465043456','467927040','468189184','468713472','469237760','469499904','469565440','469598208','469630976','469696512','469712896','469729280','469762048','520093696','520257536','520290304','520292352','520294400','520296448','520298496','520306688','520308736','520310784','520312832','520314880','520318976','520323072','520325120','520327168','520329216','520331264','520339456','520343552','520355840','520421376','520486912','520503296','520505344','520507392','520511488','520519680',
216
- '520552448','520554496','520556544','520560640','520562688','520564736','520566784','520568832','520589312','520593408','520595456','520597504','520601600','520609792','520613888','520615936','520617984','520683520','520749056','520753152','520757248','520761344','520763392','520765440','520781824','520822784','520824832','520826880','520828928','520830976','520847360','520880128','520882176','520884224','520888320','520896512','520898560','520912896','520945664','520947712','520949760','520951808','520953856','520962048','520978432','520980480','520982528','520984576','520986624','520988672','520990720','520994816','521011200','521014016','521014272','521019392','521019648','521022464','521022720','521023488','521023744','521027840','521028608','521029632','521031680','521035776','521039872','521043968','521048064','521052160','521054208','521056256','521057280','521058304','521060352','521064448','521066496','521072640','521074688','521076736','521078784','521080832','521082880','521084928','521093120','521095168','521097216','521101312','521103360','521105408','521107456','521109504','521142272','521404416','521535488','521539584','521541632','521543680','521545728','521547776','521551872','521553920','521555968','521558016','521560064','521562112','521564160','521566208','521568256','521601024','521666560','521668608','521670656','521672704','521674752','521676800','521678848','521680896','521682944','521687040','521689088','521691136','521693184','521695232','521697280','521699328','521701376','521703424','521705472','521707520','521709568','521711616','521713664','521715712','521717760','521719808','521721856','521723904','521725952','521728000','521732096','521736192','521738240','521740288','521742336','521746432','521748480','521750528','521752576','521754624','521756672','521758720','521760768','521762816','521764864','521766912','521768960','521771008','521773056','521775104','521777152','521779200','521783296','521785344','521787392','521789440',
217
- '521791488','521793536','521795584','521797632','521928704','521945088','521953280','521961472','521969664','521977856','521986048','521994240','522002432','522010624','522018816','522027008','522059776','522125312','522133504','522135552','522137600','522141696','522143744','522145792','522147840','522149888','522158080','522166272','522168320','522170368','522174464','522178560','522180608','522182656','522190848','522715136','522717184','522719232','522721280','522741760','522743808','522747904','522780672','522782720','522784768','522786816','522788864','522792960','522795008','522797056','522801152','522803200','522805248','522807296','522811392','522813440','522815488','522819584','522821632','522823680','522827776','522831872','522833920','522835968','522838016','522840064','522842112','522846208','522854400','522858496','522866688','522870784','522874880','522878976','522887168','522895360','522911744','522960896','522969088','522977280','522981376',
218
- '522985472','522989568','522993664','522997760','523001856','523005952','523010048','523014144','523018240','523022336','523026432','523030528','523034624','523038720','523042816','523075584','523108352','523173888','523182080','523190272','523192320','523194368','523196416','523198464','523202560','523223040','523225088','523227136','523229184','523231232','523239424','523763712','524025856','524288000','528482304','528490496','528498688','528515072','528523264','528531456','528539648','528547840','528564224','528580608','528588800','528596992','528605184','528613376','528637952','528642048','528654336','528656384','528658432','528662528','528664576','528666624','528668672','528670720','528674816','528676864','528678912','528680960','528683008','528689152','528691200','528695296','528699392','528703488','528715776','528719872','528721920','528723968','528726016','528736256','528740352','528742400','528744448','528748544','528760832','528762880','528764928','528769024','528793600','528795648','528797696','528809984','528812032','528814080','528816128','528818176','528836608','528838656','528840704','528842752','528859136','528861184','528863232','528867328','528887808','528891904','528900096','528902144','528908288','528926720','528928768','528930816','528932864','528941056','528943104','528945152','528949248','528973824','528982016','528986112','528988160','528990208','528994304','528996352','528998400','529002496','529006592','529268736','529530880','529596416','529661952','529727488','529793024','529858560','529924096','529989632','530055168','530120704','530186240','530251776','530317312','530579456','530710528','530841600','530972672','531103744','531169280','531177472','531179520','531181568','531183616','531185664','531193856','531195904','531197952','531200000','531202048','531234816','531236864','531238912','531240960','531243008','531245056','531247104','531251200','531259392','531261440','531263488','531265536','531267584','531275776','531277824','531279872','531281920',
219
- '531283968','531292160','531333120','531335168','531337216','531339264','531341312','531349504','531351552','531355648','531357696','531361792','531365888','531398656','531400704','531402752','531404800','531406848','531410944','531415040','531425280','531427328','531431424','531496960','531628032','531660800','531693568','531695616','531697664','531699712','531701760','531703808','531705856','531707904','531709952','531718144','531720192','531722240','531724288','531726336','531759104','531890176','532021248','532152320','532168704','532185088','532201472','532221952','532224000','532226048','532234240','532242432','532244480','532246528','532250624','532283392','532291584','532293632','532295680','532297728','532303872','532305920','532307968','532310016','532312064','532314112','532316160','532324352','532328448','532330496','532332544','532340736','532348928','532365312','532372480','532373504','532375552','532377600','532381696','532414464','532676608','532692992','532701184','532703232','532705280','532709376','532725760',
220
- '532729856','532731904','532733952','532736000','532738048','532740096','532742144','532746240','532750336','532752384','532754432','532756480','532758528','532762624','532766720','532768768','532770816','532772864','532774912','532779008','532783104','532785152','532787200','532789248','532791296','532793344','532795392','532797440','532799488','532801536','532803584','532805632','532807680','533200896','533233664','533250048','533254144','533256192','533262336','533264384','533266432','533331968','533397504','533463040','533479424','533481472','533483520','533485568','533487616','533491712','533495808','533504000','533512192','533528576','533594112','533659648','533676032','533680128','533682176','533684224','533692416','533725184','533807104','533811200','533815296','533819392','533823488','533825536','533831680','533835776','533837824','533839872','533856256','533858304','533862400','533864448','533889024','533891072','533893120','533895168','533897216','533899264','533901312','533905408','533913600','533915648','533919744','533921792','533954560','533962752','533964800','533966848','533968896','533970944',
221
- '533987328','534118400','534151168','534163456','534167552','534183936','534249472','534253568','534257664','534259712','534261760','534263808','534265856','534282240','534284288','534286336','534288384','534290432','534296576','534298624','534306816','534308864','534310912','534315008','534347776','534355968','534364160','534366208','534368256','534370304','534372352','534374400','534376448','534380544','534511616','534515712','534517760','534530048','534538240','534540288','534544384','534546432','534548480','534550528','534560768','534609920','534642688','534646784','534648832','534650880','534652928','534654976','534663168','534675456','534691840','534693888','534700032','534708224','534740992','534749184','534753280','534757376','534761472','534765568','534767616','534769664','534773760',
222
- '536870912','603979776','603980800','603981824','604110848','604241920','604504064','605028352','606412800','606413824','606414336','606414592','606420992','606437376','606470144','606601216','607322112','607387648','607649792','608174080','610271232','618659840','619708416','620232704','620494848','620625920','620756992','620759040','620763136','620765184','620773376','620775424','620777472','620781568','620783616','620785664','620787712','620789760','620822528','620845056','620849152','620851200','620855296','620859392','620861440','620863488','620865536','620867584','620869632','620871680','620879872','620881920','620888064','621019136','621150208','621215744','621281280','621314048','621318144','621322240','621330432','621346816','621361152','621363200','621381632','621383680','621387776','621389824','621391872','621393920','621395968','621398016','621400064','621402112','621404160','621408256','621410304','621412352','621428736','621430784','621432832','621436928','621445120','621805568','621813760','621821952','621824000','621826048','621830144','621838336','621871104','621903872','621912064','621916160','621918208','621920256','621924352','621928448','621932544','621934592','621936640','621971456','621973504','621975552','621977600','621981696','621983744','621985792','621993984','621998080','622000128','622004224','622006272','622008320','622010368','622018560','622020608','622022656','622026752','622028800','622030848','622034944','622067712','622329856','622395392','622405632','622406656','622407680','622409728','622411776','622413824','622415872','622417920','622419968','622428160','622460928','622477312','622479360','622481408','622483456','622485504','622487552','622489600','622493696','622497792','622499840','622501888','622503936','622505984',
223
- '622510080','622512128','622514176','622518272','622520320','622522368','622524416','622526464','622592000','622624768','622626816','622630912','622632960','622641152','622657536','622690304','622723072','622854144','622866432','622868480','622870528','622874624','622880768','622882816','622886912','622919680','622985216','622993408','622997504','623001600','623003648','623005696','623009792','623017984','623050752','623052800','623054848','623058944','623067136','623069184','623071232','623073280','623075328','623077376','623083520','623116288','623378432','623509504','623640576','623642624','623644672','623648768','623650816','623652864','623654912','623656960','623673344','623689728','623706112','623771648','623775744','623777792','623779840','623783936','623788032','623790080','623792128','623794176','623796224','623798272','623800320','623804416','623806464','623810560','623812608','623820800','623822848','623824896','623826944','623837184','623902720','623919104','623935488','623960064','623962112','623964160','623966208','623968256','624001024',
224
- '624005120','624007168','624009216','624025600','624027648','624029696','624033792','624164864','624427008','624492544','624558080','624562176','624564224','624566272','624568320','624570368','624574464','624590848','624689152','624691200','624693248','624695296','624697344','624699392','624701440','624705536','624721920','624723968','624726016','624728064','624730112','624732160','624734208','624736256','624738304','624740352','624742400','624746496','624754688','624787456','624791552','624795648','624799744','624801792','624803840','624812032','624814080','624816128','624818176','624820224','624885760','624918528','624951296','625475584','625483776','625485824','625487872','625491968','625500160','625504256','625506304','625508352','625512448','625514496','625516544','625518592','625520640','625522688','625524736','625541120','625606656','625672192','625674240','625676288','625680384','625688576','625704960','625707008','625709056','625711104','625713152','625721344','625725440','625727488','625729536','625731584','625733632','625735680','625737728','625770496','625786880','625795072','625803264','625811456','625815552','625817600','625819648',
225
- '625823744','625827840','625829888','625831936','625836032','625838080','625840128','625842176','625844224','625846272','625848320','625854464','625856512','625860608','625868800','625999872','627048448','627130368','627142656','627145728','627146752','627179520','627212288','627216384','627218432','627220480','627228672','627230720','627232768','627236864','627238912','627240960','627245056','627277824','627294208','627296256','627298304','627300352','627302400','627572736','627834880','627965952','628006912','628015104','628017152','628019200','628021248','628023296','628029440','628031488','628097024','628230144','628232192','628236288','628244480','628246528','628248576','628250624','628252672','628260864','628277248','628293632','628359168','628621312','628654080','628662272','628670464','628686848','628752384','628785152','628787200','628789248','628791296','628793344','628801536','628803584','628805632','628809728','628813824','628815872','628817920','628834304','628842496','628844544','628846592','628848640','628850688','628867072','628869120','628871168',
226
- '628873216','628875264','628877312','628879360','628881408','628883456','629145600','629178368','629180416','629182464','629184512','629188608','629190656','629192704','629194752','629196800','629198848','629202944','629207040','629276672','629293056','629309440','629313536','629315584','629317632','629325824','629327872','629329920','629331968','629334016','629338112','629340160','629342208','629374976','629387264','629389312','629391360','629399552','629401600','629405696','629407744','629669888','629735424','629800960','629866496','629874688','629882880','629884928','629886976','629889024','629891072','629895168','629897216','629901312','629903360','629905408','629907456','629915648','629983232','629985280','629987328','629989376','629991424','629993472','629997568','630063104','630128640','630130688','630136832','630138880','630145024','630147072','630149120','630151168','630153216','630157312','630159360','630161408','630163456','630165504','630167552','630169600','630173696','630177792','630194176','630456320','630489088','630491136','630493184','630495232',
227
- '630497280','630499328','630501376','630503424','630509568','630511616','630513664','630515712','630517760','630521856','630587392','630718464','630720512','630722560','630726656','630732800','630734848','630736896','630738944','630743040','630751232','630759424','630767616','630784000','630802432','630804480','630806528','630808576','630816768','630818304','630818560','630819328','630819840','630820864','630822912','630824960','630827008','630828032','630828544','630829056','630833152','630849536','630980608','630981632','630982144','630982400','630982656','630984704','630988800','630990336','630990848','630992896','630996992','630997504','631005184','631006208','631007232','631009280','631017472','631018496','631019520','631023616','631024640','631024896','631025152','631029760','631033856','631034880','631035904','631037952','631040000','631043072','631044096','631045120','631046144',
228
- '631048192','631050240','631054336','631056384','631058432','631060480','631062528','631078912','631080960','631083008','631085056','631087104','631095296','631097344','631099392','631103488','631105536','631107584','631109632','631111680','631177216','631242752','632291328','632815616','632946688','632963072','632979456','633012224','633077760','633094144','633098240','633100288','633102336','633110528','633143296','633208832','633241600','633274368','633290752','633298944','633307136','633339904','633602048','633864192','633880576','633884672','633886720','633888768','633890816','633892864','633894912','633896960','633929728','633997312','633999360','634001408','634003456','634007552','634009600','634011648','634028032','634060800','634068992','634071040','634073088','634075136','634077184','634093568','634109952','634112000','634114048','634116096','634118144','634122240','634124288','634126336','634191872','634193920','634195968','634198016','634200064','634202112','634204160','634206208','634208256','634216448','634220544','634222592','634224640','634388480','634396672','634398720','634400768','634402816','634404864',
229
- '634408960','634411008','634413056','634415104','634417152','634419200','634421248','634454016','634486784','634494976','634497024','634499072','634503168','634505216','634507264','634511360','634517504','634519552','634650624','634912768','635043840','635076608','635092992','635097088','635101184','635103232','635105280','635107328','635109376','635174912','635183104','635185152','635187200','635191296','635195392','635197440','635203584','635207680','635211776','635213824','635217920','635219968','635224064','635240448','635273216','635281408','635285504','635287552','635289600','635291648','635293696','635295744','635297792','635299840','635301888','635305984','635437056','635502592','635568128','635699200','635715584','635717632','635719680','635723776','635725824','635727872','635729920','635748352','635764736','635830272','635842560','635846656','635854848','635856896','635858944','635860992','635863040','635895808','635961344','635994112','636026880','636043264','636047360','636049408','636051456','636055552','636057600','636059648',
230
- '636092416','636157952','636160000','636162048','636166144','636168192','636170240','636174336','636176384','636178432','636180480','636182528','636186624','636188672','636190720','636223488','636485632','636747776','636780544','636813312','636878848','636944384','636952576','636956672','636958720','636960768','636968960','636975104','636977152','637140992','637206528','637239296','637272064','637276160','637278208','637288448','637296640','637298688','637300736','637302784','637304832','637313024','637317120','637319168','637321216','637323264','637325312','637329408','637337600','637403136','637534208','654311424','654311680','654311936','654376960','654442496','654573568','654835712','655360000','656408576','658505728','661454848','661487616','661520384','661651456','662700032','666894336','671088640','687865856','689963008','691011584','691617792','691621888','691625984','691630080','691631104','691632128','691633152','691634176','691650560','691666944',
231
- '691732480','691798016','691863552','691994624','692011008','692027392','692035584','692043776','692060160','692191232','692207616','692240384','692256768','692273152','692289536','692305920','692322304','692453376','692486144','692518912','692551680','692584448','692600832','692609024','692617216','692625408','692633600','692641792','692658176','692666368','692674560','692682752','692690944','692707328','692715520','692719616','692723712','692727808','692731904','692736000','692744192','692748288','692752384','692756480','692760576','692768768','692772864','692776960','692781056','692789248','692793344','692797440','692801536','692805632','692809728','692813824','692817920','692822016','692826112','692830208','692834304','692838400','692842496','692846592','692848640','692850688','692852736','692854784','692856832','692860928','692862976','692869120','692871168','692877312','692879360','692881408','692883456','692885504','692889600','692891648','692893696','692895744','692897792','692908032','692910080','692912128','692914176','692916224','692918272','692920320',
232
- '692922368','692924416','692928512','692930560','692932608','692934656','692936704','692940800','692942848','692944896','692946944','692948992','692951040','692955136','692957184','692959232','692961280','692963328','692965376','692968448','692969472','692971520','692973568','692977664','692978688','692979712','692981760','692982784','692983808','692984832','692987904','692989952','692992000','692993024','692994048','692996096','692997120','692998144','692999168','693000192','693001216','693002240','693003264','693004288','693005312','693006336','693007360','693008384','693009408','693010432','693012480','693013504','693014528','693015552','693016576','693017600','693019648','693020672','693021696','693022720','693024768','693026816','693028864','693029888','693030912','693031936','693032960','693033984','693035008','693036032','693039104','693040128','693041152','693042176','693044224','693045248','693046272','693047296','693049344','693050368','693051392','693052416','693054464','693055488','693056512','693057536','693058560','693059584','693060608','693061632','693065728','693066752','693067776','693068800','693069824','693071872','693072896','693073920','693074944','693075968','693076992','693078016','693080064','693081088','693082112','693083136','693086208','693087232','693088256','693089280','693090304','693091328','693092352','693093376','693094400','693095424','693096448','693097472','693098496','693099520','693100544','693101568','693102592','693103616','693104640','693105664','693106688','693107712','693239808','693370880','693403648','693411840','693420032','693428224','693436416','693477376','693485568','693493760','693501952','693510144','693518336','693534720','693542912','693551104','693559296','693567488','693583872','693592064','693600256','693608448','693616640','693633024','693698560','693829632','693895168','693927936','693960704','693993472','694026240','694091776','694157312','695205888','696254464','696516608','696778752','696844288','696909824','696918016','696926208','696928256','696930304','696932352','696933376','696934400','696942592','696950784','696958976','696963072','696967168','696971264',
233
- '696975360','696991744','697008128','697040896','697303040','697827328','697958400','698023936','698056704','698089472','698220544','698351616','699400192','699465728','699531264','699662336','699793408','699858944','699924480','699990016','700055552','700121088','700186624','700203008','700219392','700235776','700252160','700260352','700268544','700293120','700301312','700309504','700317696','700325888','700334080','700335104','700336128','700337152','700338176','700339200','700340224','700341248','700342272','700350464','700358656','700366848','700375040','700376064','700377088','700378112','700380160','700381184','700382208','700383232','700400640','700401664','700402688','700403712','700404736','700405760','700407808','700408832','700409856','700412928','700413952','700414976','700432384','700434432','700436480','700437504','700438528','700439552','700440576','700442624','700444672','700446720','700447744','700448768','700710912','700776448','700841984','700907520','700973056','701104128','701112320','701120512','701145088','701153280','701161472','701169664','701186048','701202432','701210624','701214720','701218816','701222912','701227008','701231104','701235200','701243392','701251584','701259776','701267968','701276160','701284352','701292544','701300736','701308928','701317120','701325312','701333504','701341696','701349888','701358080','701366272','701374464','701382656','701390848','701399040','701407232','701431808','701440000','701448192','701464576','701472768','701480960','701490176','701491200','701492224','701493248','701495296','701496320','701497344','701513728','701530112','701546496','701562880','701579264','701612032','701628416','701644800','701661184','701677568','701693952','701702144','701710336','701718528','701726720','701743104','701759488','701792256','701825024','701857792','701890560','701923328','701956096','701992960','701997056','702001152','702005248','702009344','702013440','702015488','702017536','702018560','702019584','702020608','702021632','702029824','702038016','702046208','702054400','702058496','702062592','702070784','702074880','702076928','702078976','702080000','702081024','702082048','702119936','702128128','702136320','702138368','702139392','702140416',
234
- '702141440','702142464','702143488','702144512','702146560','702148608','702152704','702169088','702185472','702201856','702218240','702234624','702251008','702283776','702287872','702291968','702296064','702300160','702308352','702312448','702316544','702320640','702324736','702328832','702332928','702337024','702341120','702349312','702353408','702357504','702365696','702369792','702373888','702382080','702386176','702390272','702394368','702398464','702402560','702410752','702414848','702416896','702418944','702420992','702423040','702425088','702427136','702429184','702431232','702433280','702434304','702437376','702439424','702441472','702443520','702445568','702447616','702449664','702451712','702455808','702457856','702459904','702461952','702464000','702465024','702466048','702467072','702468096','702469120','702470144','702471168','702474240','702475264','702476288','702477312','702478336','702481408','702482432','702484480','702485504','702486528','702487552','702488576','702490624','702491648','702492672','702493696','702494720','702495744','702496768','702498816','702499840',
235
- '702500864','702501888','702502912','702503936','702504960','702505984','702507008','702508032','702509056','702510080','702511104','702512128','702513152','702514176','702515200','702516224','702517248','702518272','702519296','702520320','702521344','702522368','702523392','702524416','702525440','702526464','702527488','702528512','702529536','702530560','702531584','702532608','702534656','702535680','702536704','702538752','702539776','702540800','702541824','702542848','702543872','702544896','702545920','703070208','703594496','703725568','703727616','703728640','703733760','703735808','703737856','703746048','703747072','703748096','703749120','703750144','703754240','703755264','703756288','703757312','703758336','703760384','703761408','703762432','703766528','703770624','703774720','703791104','703856640','703987712','704118784','704380928','704643072','704644096','704645120','704650240','704651264','704659456','704675840','704723968','704724992','704741376','704774144','704905216','705167360','707788800','708575232','708706304','708751360','708752384','708755456','708771840','708837376','709885952','710017024','710082560','710098944','710104064','710105088','710934528','710950912','710961152','710962176','711065600','711131136','711160832','711161856','711163904','711196672','711458816','711983104','712507392','712712192','712713216','712769536','713031680','714080256','714604544','714866688','714874880','714875904','716930048','716931072','716963840','717225984','717750272',
236
- '717815808','717848576','717881344','720437248','720502784','721420288','736100352','736101376','736102400','736103424','736104448','736105472','736106496','736107520','736108544','736109568','736110592','736111616','736112640','736113664','736115712','736116736','736119808','736120832','736121856','736122880','736123904','736124928','736125952','736126976','736128000','736131072','736132096','736133120','736136192','736138240','736139264','736140288','736141312','736142336','736143360','736144384','736145408','736146432','736147456','736148480','736149504','736150528','736151552','736156672','736157696','736158720','736160768','736161792','736162816','736163840','736164352','736164864','736166912','736167936','736168960','736169984','736173056','736174080','736175104','736176128','736177152','736178176','736179200','736180224','736181248','736182272','736183296','736185344',
237
- '736186368','736187392','736188416','736189440','736190464','736191488','736193536','736194560','736195584','736196608','736198656','736199680','736200704','736201728','736202752','736203776','736204800','736205824','736206848','736209920','736210944','736211968','736214016','736216064','736217088','736218112','736219136','736220160','736221184','736229376','736230400','736231424','736231936','736232448','736233472','736234496','736235520','736237568','736239616','736263168','736264192','736286720',
238
- '736287744','736288768','736289792','736290816','736291840','736300032','736301056','736303104','736304128','736324608','736325632','736326656','736328704','736329728','736331776','736334848','736335872','736344064','736345088','736354304','736355328','736356352','736357376','736358400','736359424','736360448','736380928','736381952','736382976','736384000','736385024','736386048','736388096','736389120',
239
- '736390144','736391168','736392192','736394240','736395264','736396288','736398336','736400384','736402432','736403456','736405504','736408576','736409600','736410624','736411648','736412672','736413696','736414720','736415744','736416768','736417792','736418816','736421888','736422912','736423936','736424960','736425984','736428032','736429056','736430080','736431104','736432128','736433152','736434176','736435200','736436224','736437248','736438272','736439296','736440320','736441344','736442368','736443392','736445440','736446464','736447488','736448512','736449536','736450560','736452608','736453632','736455680','736456704','736458752','736459776','736460800','736461824','736462848','736465920','736466944','736467968','736468992','736470016','736471040','736479232','736480256','736481280','736482304','736483328','736485376','736486400','736487424','736489472','736491520',
240
- '736493568','736494592','736495104','736495360','736495616','736498688','736499712','736500736','736501760','736502784','736505856','736506880','736507904','736508928','736509952','736510976','736513024','736515072','736516096','736517120','736518144','736519168','736520192','736521216','736522240','736524288','736525312','736526336','736527360','736528384','736529408','736531456','736532480','736533504','736535552','736536576','736537600','736538624','736539648','736540672','736541696','736542720','736543744','736545792','736546816','736547840','736548864','736549888','736559104','736560128','736561152','736562176','736563200','736564224','736565248','736566272','736567296','736571392','736574464','736575488','736576512','736577536','736578560','736579584','736587776','736588800','736591872',
241
- '736592384','736592640','736592896','736593920','736606208','736607232','736608256','736609280','736610304','736611328','736612352','736613376','736615424','736616448','736617472','736618496','736621568','736622592','736624640','736886784','737148928','737149952','737152000','737154048','737155072','737156096','737157120','737158144','737159168','737160192','737161216','737162240','737163264','737165312','737166336','737169408','737170432','737171456','737172480','737173504','737174528','737175552','737177600','737178624','737179648','737180672','737184768','737185792','737186816','737187840','737188864','737206272','737208320','737209344','737220608','737222656','737223680','737225728','737226752','737227776','737228800','737229824','737232896','737233920','737239040','737240064','737241088','737243136','737244160','737249280','737250304','737253376','737255424','737256448','737257472','737262592','737263616','737264640','737265664','737266688','737267712','737276928','737277952','737280000','737281024','737282048','737288192','737289216','737290240','737291264','737297408','737298432','737305600','737306624','737307648','737308672','737309696','737312768','737313792','737315840','737316864','737324032','737325056','737326080','737327104','737328128','737331200','737332224','737333248','737335296','737337344','737339392','737341440','737342464','737344512','737345536','737346560','737350656','737350912','737351680','737352704','737354752','737355776','737359872','737361920','737364992','737368064','737369088','737370112','737371136','737375232','737376256','737377280','737378304','737380352','737381376','737382400','737384448','737385472','737386496','737387520','737388544','737389568','737390592','737391616','737392640','737393664','737394688','737395712','737396736','737397760','737398784','737399808','737400832','737401856','737403904','737405952','737406976','737408000','737409024','737410048','737411072','737476608','737478656','737479680',
242
- '737480704','737481728','737482752','737484800','737485824','737487872','737488896','737489920','737490944','737491968','737492992','737497088','737498112','737499136','737500160','737501184','737502208','737503232','737505280','737506304','737507328','737508352','737509376','737510400','737511424','737512448','737513472','737514496','737515520','737516544','737517568','737520640','737521664','737522688','737525760','737526784','737527808','737528832','737529856','737530880','737531904','737533952','737534976','737536000','737537024','737538048','737539072','737540096','737541120','737542144','737607680','737608704','737610752','737611776','737612800','737613824','737614848','737615872','737617920','737618944','737620992','737622016','737623040',
243
- '737624064','737625088','737626112','737627136','737628160','737629184','737634304','737635328','737637376','737638400','737639424','737640448','737641472','737642496','737645568','737647616','737649664','737650688','737651712','737652736','737656832','737657856','737675264','737676288','737677312','737678336','737679360','737680384','737681408','737683456','737685504','737686528','737687552','737688576','737690624','737692672','737712128','737713152','737714176','737715200','737718272','737727488','737728512','737729536','737730560','737731584','737733632','737735680','737736704','737737728','737738752','737741824','737742848','737744896','737745920','737746944','737747968','737748992','737750016','737751040','737753088','737757184','737758208','737760256','737761280','737762304','737763328','737765376','737768448','737769472','737770496','737771520','737772544','737774592','737775616','737782784','737783808','737784832','737787904','737788928','737790976','737792000','737793024','737794048','737795072','737796096','737799168','737800192','737802240','737803264','737804288','737805312','737806336','737807360','737810432','737811456','737814528','737815552','737816576','737817600','737818624','737821696','737822720','737824768','737825792','737826816','737827840','737828864','737835008','737836032','737837056','737838080','737839104','737840128','737841152','737843200','737844224','737845248','737846272','737847296','737850368','737851392','737853440','737854464','737855488','737856512','737857536','737858560','737861632','737862656','737863680','737864448','737864704','737865728','737866752','737867776','737868800','737870848','737874432','737874944','737876992','737878016','737879040','737880064','737881088','737882112','737883136','737884160','737886208','737887232','737888256','737889280','737890304','737894400','737895424','737896448','737897472','737898496','737899520','737900544','737901568','737902592','737903616','737904640','737905664','737906688','737908736','737909760','737910784','737911808','737912832','737915904','737916928','737917952','737918976','737920000','737921024','737922048','737923072','737924096','737927168',
244
- '737929216','737931264','737932288','737933312','737934336','737935360','737936384','737937408','737938432','737939456','737940480','737941504','737944576','737945600','737946624','737947648','737948672','737949696','737950720','737951744','737953792','737954816','737955840','737956864','737957888','737959936','737960960','737961984','737963008','737965056','737966080','737967104','737969152','737970176','737971200','737972224','737973248','737974272','737975296','737976320','737981440','737982464','737983488','737986560','737987584','737988608','737989632','737991680','737992192','737992704','737993728','737994752','737995776','737996800','737997824','737998848','737999872','738000896','738066432','738069504','738070528','738071552','738072576','738073600','738075648','738076672','738077696','738078720','738079744','738080768','738081792','738082816','738083840','738084864','738085888','738086912','738087936','738091008','738092032',
245
- '738094080','738095104','738097152','738098176','738099200','738100224','738101248','738107392','738108416','738109440','738111488','738112512','738118656','738119680','738120704','738121728','738122752','738128896','738129920','738135040','738136064','738137088','738138112','738139136','738140160','738141184','738142208','738143232','738144256','738145280','738146304','738147328','738152448','738153472','738154496','738156544','738157568','738158592','738159616','738160640','738161664','738163712','738164736','738165760','738166784','738167808','738168832','738169856','738170880','738171904','738172928','738173952','738174976','738176000','738177024','738178048','738179072','738180096','738181120','738182144','738183168','738187264','738188288','738189312','738192384','738193408','738194432','738195456','738197504','756023296','757186560','757190656','757600256','757604352','757612544','757616640','757686272','757694464','757729280','757731328','757733376','757734400','757736448','757737472','757745664','757747712','757751808','757760000','757858304','757956608','758779904','758784000','758796288','758804480','758824960','758841344','758972416','758976512','758984704','758988800','759054336','759070720','759087104','759103488','759169024','759171072','759174144','759175168','759176192','759178240','759179264','759180288','759181312','759182336','759183360','759184384','759185408','759186432','759187456','759187968','759188480','759189504','759190528','759193600','759195648','759196672','759197696','759198208','759198720','759199744','759200768','759201792','759202816','759204864','759206912','759207936','759208960','759209984','759211008','759212032','759213056','759214080','759215104','759216128','759217152','759220224','759221248','759227392','759229440','759230464','759232512','759233536','759234560','759235584','759236608','759237632','759693312','759726080','759791616','759840768','759857152','759889920','759955456','760086528','761266176','762314752','762315776','762316800','762320896','762321920','762323968','762324992','762330112','762331136','762332160','762333184','762334208','762335744','762336256','762337280','762345472','762346496','762347520','762348544','762349568','762350592','762351616','762353664','762358784','762359808','762360832','762362880','762363904','762364928','762365952','762366976','762368000','762372096','762373120','762376192','762377216','762378240','762380288','762381312','762382336','762383360','762388480','762389504','762390528','762391552','762393600','762395648','762396160','762397696','762398720','762399744','762400768','762401792','762402816','762403840','762404864','762407936','762408960','762409984','762411008','762412032','762413056','762414080','762415104','762416128','762417152','762419200',
246
- '762420224','762421248','762422272','762423296','762424320','762425344','762426368','762427392','762428416','762429440','762430464','762431488','762437632','762438656','762439680','762440704','762441728','762442752','762443776','762444800','762447872','762448896','762449920','762450944','762451968','762452992','762454016','762455040','762456064','762457088','762458112','762459136','762460160','762467328','762469376','762470400','762471424','762472448','762473472','762475520','762476544','762478592','762479616','762480640','762481664','762486784','762487808','762490880','762491904','762492928','762493952','762494976','762496000','762498048','762499072','762500096','762502144','762503168','762504192','762505216','762506240','762507264','762510336','762511360','762514432','762515456','762516480','762517504','762519552','762520576','762522624',
247
- '762523648','762523904','762524160','762524672','762527744','762528768','762529792','762530816','762532864','762533888','762536960','762537984','762540032','762541056','762541568','762542080','762543104','762544128','762545152','762546176','762547200','762548224','762549248','762550272','762551296','762552320','762553344','762554368','762560512','762561536','762562560','762563584','762564608','762565632','762567680','767557632','769130496','771751936','771817472','771948544','772014080','772145152','772210688','772276224','772341760','772407296','772472832','772538368','772603904','772669440','772734976','772800512','772802560','772804608','772806656','772808704','772810752','772812800','772814848','772816896','772818944','772820992','772823040','772825088','772827136','772829184','772831232','772833280','772835328','772837376','772839424','772841472','772843520','772845568','772847616','772849664','772851712','772853760','772855808','772857856','772859904','772861952','772864000','772870144',
248
- '772872192','772874240','772876288','772880384','772882432','772884480','772886528','772888576','772890624','772892672','772894720','772896768','772898816','772900864','772902912','772904960','772907008','772909056','772911104','772913152','772915200','772917248','772919296','772923392','772925440','772927488','772929536','772931584','772933632','772935680','772937728','772939776','772941824','772943872','772945920','772947968','772950016','772952064','772954112','772958208','772962304','772966400','772968448','772970496','772972544','772974592','772978688','772980736','772982784','772984832','772986880','772988928','772990976','772993024','772995072','772997120','772999168','773001216','773003264','773005312','773007360','773009408','773011456','773013504','773015552','773017600','773019648','773021696','773023744','773025792','773027840','773031936','773033984','773036032','773038080','773040128','773042176','773044224','773046272','773048320','773050368','773052416','773054464','773056512','773058560','773060608','773062656','773066752','773070848','773074944','773079040','773083136','773087232',
249
- '773091328','773095424','773099520','773103616','773107712','773111808','773115904','773120000','773124096','773128192','773132288','773136384','773140480','773144576','773148672','773152768','773156864','773165056','773173248','773177344','773181440','773185536','773189632','773197824','773201920','773206016','773210112','773214208','773218304','773222400','773226496','773230592','773234688','773238784','773242880','773246976','773251072','773255168','773259264','773263360','773267456','773271552','773275648','773279744','773283840','773287936','773292032','773296128','773300224','773304320','773308416','773312512','773316608','773318656','773320704','773324800','773586944','773588992','773591040','773593088','773595136','773597184','773599232','773601280','773603328','773605376','773607424','773609472','773611520','773613568','773615616','773617664','773619712','773621760','773623808','773625856','773627904','773629952','773632000','773634048','773636096','773638144','773640192','773642240','773644288','773646336','773648384','773650432','773652480','773654528','773656576','773660672','773662720','773664768','773666816','773668864','773670912',
250
- '773672960','773675008','773677056','773679104','773681152','773683200','773685248','773687296','773689344','773691392','773695488','773697536','773699584','773701632','773703680','773705728','773707776','773709824','773711872','773713920','773715968','773718016','773720064','773722112','773724160','773726208','773730304','773732352','773734400','773736448','773740544','773742592','773744640','773746688','773748736','773750784','773752832','773754880','773756928','773758976','773761024','773763072','773767168','773769216','773771264','773773312','773775360','773777408','773779456','773783552','773785600','773787648','773789696','773791744','773793792','773795840','773797888','773799936','773801984','773804032','773806080','773808128','773810176','773812224','773814272','773816320','773818368','773820416','773822464','773824512','773826560','773828608','773830656','773832704','773834752','773836800','773838848','773840896','773842944','773844992','773847040','773849088','773857280','773865472','773873664','773881856','773890048','773898240','773906432','773922816','773931008','773939200','773947392','773955584','773963776',
251
- '773971968','773980160','773988352','774004736','774012928','774021120','774029312','774037504','774045696','774053888','774062080','774070272','774078464','774086656','774094848','774103040','774111232','774119424','774127616','774135808','774144000','774152192','774160384','774163456','774166528','774168576','774176768','774184960','774193152','774209536','774217728','774225920','774234112','774242304','774258688','774266880','774275072','774283264','774291456','774299648','774307840','774324224','774332416','774340608','774348800','774356992','774365184','774373376','774389760','774406144','774422528','774438912','774455296','774471680','774488064','774504448','774520832','774537216','774553600','774569984','774586368','774602752','774619136','774651904','774668288','774684672','774701056','774717440','774733824','774750208','774782976','774799360','774815744','774832128','774848512','774864896','774881280','774963200','774995968','775028736','775061504','775094272','775127040','775159808','775192576','775225344','775258112',
252
- '775290880','775323648','775356416','775389184','775421952','775487488','775520256','775553024','775585792','775618560','775651328','775684096','775716864','775749632','775847936','775880704','775913472','775946240','776077312','776208384','776339456','776470528','776601600','776732672','776863744','778043392','778108928','778174464','778240000','778305536','778371072','778436608','778461184','778463232','778467328','778473472','778475520','778475776','778477568','778479616','778481920','778482944','778484736','778485248','778485760','778493952','778497792','778498048','778500864','778501120','778502144','778567680','778633216','778698752','778764288','778829824','778895360','778960896','779026432','779091968','779223040','779354112','779485184','779616256','779747328','779878400','780009472','780140544','780206080','780271616','780337152','780402688','780468224','780533760','780599296','780664832','780730368','780795904','780861440',
253
- '780926976','780992512','781058048','781123584','781189120','781320192','781451264','781455360','781459456','781463552','781467648','781475840','781479936','781484032','781488128','781496320','781516800','781520896','781524992','781529088','781533184','781537280','781545472','781549568','781553664','781557760','781565952','781570048','781574144','781578240','781582336','781590528','781598720','781615104','781631488','781639680','781651968','781654016','781656064','781658112','781662208','781664256','781666304','781668352','781670400','781672448','781674496','781676544','781678592','781682688','781684736','781686784','781688832','781690880','781692928','781694976','781697024','781699072','781701120','781703168','781705216','781707264','781709312','781711360','781713408','781844480','781975552','782106624','782254080','782270464','782319616','782336000','782352384','782368768','782385152','782401536','782417920','782434304','782450688','782467072',
254
- '782483456','782499840','782516224','782532608','782548992','782581760','782598144','782630912','782647296','782663680','782671872','782675968','782680064','782696448','782712832','782729216','782745600','782761984','783024128','783040512','783048704','783056896','783065088','783073280','783089664','783106048','783134720','783138816','783142912','783147008','783151104','783155200','783157248','783159296','783161344','783163392','783165440','783167488','783169536','783171584','783173632','783175680','783179776','783181824','783185920','783187968','783190016','783194112','783196160','783198208','783202304','783204352','783206400','783208448','783210496','783212544','783216640','783218688','783220736','783222784','783223808','783224064','783224320','783224832','783226880','783230976','783233024','783235072','783237120','783243264','783245312','783247360','783251456','783255552','783259648','783261696','783263744','783265792','783267840',
255
- '783269888','783278080','783282176','783286272','783417344','783548416','783679488','783681536','783683584','783685632','783687680','783689728','783691776','783693824','783695872','783697920','783699968','783702016','783704064','783706112','783708160','783710208','783712256','783714304','783718400','783720448','783722496','783724544','783726592','783728640','783730688','783732736','783734784','783736832','783738880','783740928','783745024','783747072','783749120','783751168','783753216','783755264','783757312','783759360','783763456','783765504','783767552','783769600','783771648','783773696','783775744','783777792','783779840','783781888','783783936','783785984','783788032','783790080','783794176','783798272','783800320','783802368','783804416','783806464','783810560','783843328','783876096','783908864','783941632','783974400','784007168','784039936','784072704','784105472','784138240','784171008','784203776','784236544','784269312','784302080','784334848','784465920','784596992','784728064','784859136','785121280','785252352','785383424','785448960','785514496','785580032','785645568','785711104',
256
- '785776640','785842176','785907712','785973248','786038784','786104320','786169856','786235392','786300928','786366464','786432000','786563072','786565120','786567168','786569216','786571264','786575360','786577408','786579456','786581504','786583552','786585600','786587648','786589696','786591744','786593792','786595840','786597888','786599936','786601984','786604032','786606080','786608128','786610176','786612224','786614272','786616320','786618368','786620416','786622464','786624512','786626560','786628608','786630656','786632704','786634752','786636800','786638848','786642944','786644992','786649088','786651136','786655232','786657280','786659328','786661376','786663424','786665472','786667520','786669568','786671616','786673664','786675712','786677760','786679808','786681856','786683904','786685952','786688000','786690048','786692096','786694144','786698240','786702336','786706432','786710528','786714624','786718720','786726912','786731008','786735104','786739200','786743296','786747392','786751488','786755584','786759680','786771968','786776064','786780160','786784256','786788352','786792448',
257
- '786796544','786800640','786804736','786808832','786812928','786817024','786821120','786825216','786857984','786890752','786892800','786894848','786896896','786900992','786905088','786907136','786909184','786911232','786913280','786915328','786917376','786919424','786921472','786923520','786925568','786927616','786929664','786931712','786933760','786935808','786937856','786939904','786941952','786944000','786946048','786948096','786950144','786952192','786954240','786956288','786989056','786991104','786995200','786997248','786999296','787001344','787003392','787005440','787007488','787009536','787011584','787013632','787015680','787017728','787021824','787038208','787054592','787070976','787087360','787095552','787103744','787111936','787120128','787128320','787136512','787152896','787154944','787156992','787159040','787161088','787163136','787165184','787167232','787169280','787171328','787173376','787175424','787177472','787179520','787183616','787185664','787187712','787189760','787191808','787193856','787195904','787197952','787200000','787202048','787206144','787208192','787210240',
258
- '787212288','787214336','787216384','787218432','787234816','787251200','787267584','787283968','787300352','787316736','787333120','787349504','787365888','787382272','787398656','787415040','787431424','787447808','787464192','787480576','787513344','787546112','787578880','787611648','787644416','787677184','787679232','787681280','787683328','787685376','787687424','787689472','787693568','787695616','787697664','787701760','787703808','787705856','787707904','787709952','787718144','787742720','787750912','787755008','787759104','787767296','787775488','787808256','787841024','787843072','787845120','787847168','787849216','787851264','787853312','787855360','787857408','787859456','787861504','787863552','787865600','787869696','787873792','787906560','787939328','787972096','788004864','788013056','788021248','788029440','788045824','788054016','788062208','788070400','788078592','788086784','788094976','788103168','788111360','788119552','788127744','788135936','788144128','788160512','788168704','788176896','788185088','788193280','788201472','788209664','788217856','788226048','788234240','788242432',
259
- '788250624','788258816','788267008','788271104','788275200','788279296','788283392','788291584','788295680','788299776','788303872','788307968','788312064','788316160','788320256','788324352','788328448','788332544','788336640','788340736','788344832','788353024','788357120','788361216','788365312','788369408','788373504','788377600','788381696','788385792','788389888','788393984','788398080','788400128','788402176','788406272','788410368','788412416','788414464','788416512','788418560','788422656','788424704','788426752','788428800','788430848','788432896','788434944','788436992','788439040','788441088','788443136','788445184','788451328','788453376','788455424','788457472','788459520','788461568','788465664','788467712','788469760','788471808','788473856','788475904','788477952','788480000','788482048','788484096','788486144','788488192','788490240','788492288','788494336','788496384','788498432','788500480','788502528','788504576','788506624','788508672','788510720','788512768','788514816','788516864','788518912','788520960',
260
- '788523008','788525056','788527104','788529152','789577728','790102016','790626304','791937024','792002560','792068096','792330240','793378816','794558464','795934720','805306368','822083584','822085632','822087680','822089728','822090752','822091776','822099968','822116352','822149120','822214656','822345728','822607872','822870016','823132160','824180736','825229312','825360384','825361408','825363456','825364480','825376768','825393152','825409536','825419776','825420800','825421824','825425920','825753600','826277888','828375040','829423616','830210048','830341120','830406656','830472192','830472448','830472704','830474240','830475264','830476288','830480384','830488576','830496768','830498816','830499840','830500864','830504960','830513152','830517248','830521344','830529536','830537728','830603264','830734336','830996480','831258624','831389696','831512576','831513600','831514624','831515648','831516672','831518720','831519744','831520768','832045056','832308224','832311296','832313344','832315392','832319488','832320512','832321536','832323584','832348160','832372736','832438272','832569344','833617920','835190784','835715072','835977216','836042752','836046848','836050944','836059136','836075520','836501504','836763648','837025792','837287936','837550080','837566464','837599232','837603328','837604352','837605376','837607424','837611520','837615616','837681152','837689344','837697536','837746688','837763072','837779456','837795840','837812224','838074368','838139904','838205440','838238208','838262784','838270976','838336512','838467584',
261
- '838729728','838795264','838860800','840269824','840273920','840278016','840282112','840294400','840298496','843055104','843644928','844890112','844988416','845283328','845545472','846442496','846446592','846561280','846594048','855638016','872415232','889192448','905969664','920518656','920649728','956301312','973078528','973209600','973275136','973471744','973602816','973864960','973996032','974782464','974880768','974913536','974979072','975044608','977272832','977305600','977338368','977346560','977354752','977371136','977395712','977397760','977399808','977401856','977403904','977534976','977567744','977600512','977666048','977731584','977764352','977797120','978321408','978452480','978485248','978501632','978518016','978599936',
262
- '978640896','978644992','978714624','978780160','978784256','978788352','978796544','978812928','979369984','979410944','979419136','979435520','979468288','979501056','979566592','979599360','979763200','979894272','980418560','980549632','980680704','980942848','981467136','981991424','982122496','982171648','982188032','982253568','982515712','982581248','982614016','982622208','982624256','982626304','982628352','982630400','982671360','982679552','982695936','982712320','982745088','982753280','982755328','982757376','982759424','982761472','982777856','983040000','983171072','983302144','983564288','984612864','984743936','984875008','984956928','984965120','984973312','985006080','985071616','985137152','985202688','985268224','985399296','985661440','987758592','988807168',
263
- '989855744','991952896','995360768','995532800','995540992','995557376','995622912','996409344','996573184','996605952','996671488','996802560','996868096','997195776','998244352','999292928','999424000','999555072','999686144','999751680','999784448','999800832','999817216','999839744','999849984','999866368','999948288','1000013824','1000079360','1000341504','1000734720','1000800256','1000865792','1001127936','1001390080','1002045440','1002176512','1002242048','1002307584','1002373120','1002405888','1002422272','1002434560','1008730112','1009778688','1010237440','1010302976','1010761728','1010827264','1017118720','1019215872','1019346944','1019478016','1019609088','1019740160','1021313024','1021837312','1021968384','1022033920','1022099456','1022361600','1022558208','1022623744','1022722048','1022754816','1022820352','1022885888','1023148032','1023213568','1023238144','1023246336','1023279104','1023311872','1023328256','1023344640','1023410176','1023672320','1023688704','1023692800','1023696896','1023705088','1023717376','1023721472','1023737856','1023770624','1023778816','1023787008','1023791104','1023795200','1023803392','1023852544','1023868928','1023901696','1023934464','1023950848','1023954944','1023959040','1023967232','1023975424','1023979520','1023983616','1024000000','1024032768','1024065536','1024131072','1024163840','1024184320','1024188416','1024196608','1024229376','1024262144','1024327680','1024344064','1024352256','1024360448','1024376832','1024393216','1024458752','1024491520','1024589824','1024655360','1024720896','1024786432','1025245184','1025277952','1025294336','1025302528','1025310720','1025343488','1025376256','1025507328','1026293760','1026392064','1026408448','1026416640','1026420736','1026422784','1026424832','1026523136','1026539520','1026555904','1027080192','1027866624','1027997696','1028128768','1029046272','1029160960','1029177344','1029242880','1029308416','1029439488','1029570560',
264
- '1029636096','1029668864','1029701632','1030750208','1031798784','1035993088','1037565952','1038614528','1039007744','1039138816','1039400960','1039466496','1039499264','1039507456','1039511552','1039515648','1039523840','1039532032','1039597568','1039613952',
265
- '1039638528','1039642624','1039646720','1039654912','1039663104','1040187392','1040252928','1040318464','1040384000','1040400384','1040416768','1040424960','1040433152','1040449536','1040457728','1040465920','1040474112','1040482304','1040515072','1040547840','1040580608','1040711680','1040719872','1040728064','1040736256','1040744448','1040777216','1040842752','1040973824','1040982016','1040990208','1041006592','1041039360','1041072128','1041080320','1041088512','1041096704','1041235968','1041244160','1041268736','1041301504','1041367040','1041498112','1041563648','1041596416','1041629184','1041694720','1041760256','1041768448','1041776640','1041784832','1041793024','1041825792','1041842176','1041891328','1042022400','1042087936','1042120704','1042153472','1042284544','1042292736','1042300928','1042309120','1042317312','1042350080','1042415616','1042546688','1042677760','1042743296','1042808832','1042817024','1042825216','1042833408','1042841600','1042874368','1042939904','1043070976','1043079168','1043087360','1043095552','1043103744','1043120128',
266
- '1043136512','1043202048','1043333120','1043341312','1043349504','1043357696','1043365888','1043398656','1043488768','1043496960','1043505152','1043513344','1043529728','1043595264','1043857408','1043922944','1043988480','1044119552','1044152320','1044185088','1044193280','1044201472','1044217856','1044226048','1044234240','1044250624','1044283392','1044316160','1044332544','1044348928','1044365312','1044381696','1044389888','1044398080','1044414464','1044447232','1044455424','1044463616','1044480000','1044488192','1044496384','1044512768','1044578304','1044643840','1044652032','1044660224','1044668416','1044676608','1044684800','1044692992','1044701184','1044709376','1044717568','1044742144','1044744192','1044746240','1044748288','1044750336','1044758528','1044774912','1044840448','1044905984','1044930560','1044946944','1044955136','1044963328','1044971520','1044979712','1044987904','1045004288','1045020672','1045037056','1045135360','1045168128','1045233664','1045241856','1045250048','1045266432','1045274624','1045282816','1045299200','1045307392','1045315584','1045319680',
267
- '1045323776','1045364736','1045430272','1045446656','1045454848','1045463040','1045471232','1045479424','1045487616','1045495808','1045692416','1045700608','1045708800','1045716992','1045725184','1045733376','1045749760','1045753856','1045755904','1045757952','1045790720','1045798912','1045889024','1045921792','1045954560','1045987328','1046020096','1046028288','1046036480','1046052864','1046061056','1046069248','1046085632','1046151168','1046216704','1046282240','1046290432','1046298624','1046315008','1046323200','1046331392','1046347776','1046413312','1046446080','1046478848','1046544384','1046560768','1046585344','1046609920','1046675456','1046708224','1046740992','1046757376','1046765568','1046773760','1046781952','1046798336','1046806528','1046814720','1046822912','1046839296','1046847488','1046855680','1046872064','1046904832','1046908928','1046910976','1046913024','1046921216','1046929408','1046937600','1047003136','1047068672','1047085056','1047101440','1047109632','1047117824','1047134208','1047150592','1047158784','1047166976','1047199744',
268
- '1047265280','1047273472','1047281664','1047289856','1047298048','1047306240','1047314432','1047322624','1047330816','1047339008','1047347200','1047363584','1047371776','1047379968','1047396352','1047461888','1047494656','1047527424','1047535616','1047552000','1047560192','1047568384','1047576576','1047584768','1047592960','1047601152','1047625728','1047633920','1047642112','1047658496','1047724032','1047789568','1047822336','1047838720','1047846912','1047855104','1047863296','1047871488','1047887872','1047920640','1047986176','1048051712','1048117248','1048125440','1048133632','1048158208','1048166400','1048182784','1048184832','1048186880','1048193024','1048195072','1048197120','1048203264','1048205312','1048209408','1048211456','1048215552','1048221696','1048223744','1048225792','1048227840','1048233984','1048236032','1048242176','1048244224','1048246272','1048248320','1048313856','1048510464','1048576000','1048584192','1048592384','1048600576','1048608768','1048616960','1048625152','1048633344','1048641536','1048649728','1048657920','1048674304',
269
- '1048682496','1048690688','1048707072','1048772608','1048838144','1048903680','1048920064','1048936448','1048944640','1048952832','1048969216','1049034752','1049067520','1049100288','1049231360','1049296896','1049362432','1049370624','1049378816','1049395200','1049411584','1049419776','1049427968','1049436160','1049444352','1049460736','1049468928','1049477120','1049493504','1049559040','1049698304','1049722880','1049731072','1049739264','1049755648','1049821184','1049886720','1049894912','1049903104','1049911296','1049919488','1049927680','1049935872','1049944064','1049952256','1049960448','1049968640','1049985024','1050017792','1050083328','1050148864','1050157056','1050173440','1050181632','1050189824','1050198016','1050206208','1050214400','1050673152','1050804224','1050869760','1050935296','1050968064','1051000832','1051017216','1051033600','1051049984','1051066368','1051131904','1051197440','1051213824','1051230208','1051238400','1051246592','1051254784','1051262976',
270
- '1051271168','1051279360','1051295744','1051303936','1051312128','1051328512','1051525120','1051533312','1051541504','1051557888','1051566080','1051574272','1051590656','1051721728','1051729920','1051738112','1051754496','1051762688','1051770880','1051779072','1051787264','1051795456','1051803648','1051820032','1051852800','1051983872','1052049408','1052057600','1052065792','1052082176','1052090368','1052098560','1052116992','1052119040','1052121088','1052127232','1052129280','1052131328','1052133376','1052135424','1052137472','1052141056','1052141568','1052143616','1052145664','1052147712','1052151808','1052153856','1052157952','1052160000','1052162048','1052164096','1052168192','1052170240','1052172288','1052174336','1052176384','1052178432','1052180480','1052213248','1052246016','1052508160','1052770304','1052778496','1052786688','1052803072','1052811264','1052819456','1052827648','1052835840','1052844032','1052852224','1052868608','1052884992','1052901376','1053032448','1053097984','1053106176',
271
- '1053114368','1053130752','1053138944','1053147136','1053163520','1053294592','1053360128','1053364224','1053368320','1053376512','1053392896','1053401088','1053409280','1053425664','1053556736','1053564928','1053573120','1053581312','1053589504','1053597696','1053605888','1053614080','1053622272','1053630464','1053638656','1053655040','1053663232','1053671424','1053687808','1053753344','1053818880','1053884416','1053892608','1053900800','1053917184','1053925376','1053933568','1053949952','1054015488','1054089216','1054097408','1054105600','1054113792','1054121984','1054130176','1054138368','1054146560','1054179328','1054187520','1054195712','1054212096','1054277632','1054343168','1054351360','1054359552','1054367744','1054375936','1054384128','1054400512','1054408704','1054416896','1054425088','1054441472','1054449664','1054457856','1054474240','1054539776','1054605312','1054613504','1054621696','1054629888','1054638080','1054646272','1054654464','1054662656','1054670848','1054679040','1054687232','1054703616','1054711808','1054720000','1054867456','1055129600','1055195136','1055326208','1055334400','1055342592','1055358976','1055367168','1055375360',
272
- '1055391744','1055457280','1055465472','1055473664','1055490048','1055522816','1055588352','1055653888','1055784960','1055850496','1055916032','1055924224','1055932416','1055940608','1055948800','1055956992','1055965184','1055973376','1055981568','1055989760','1055997952','1056014336','1056022528','1056030720','1056047104','1056178176','1056194560','1056210944','1056219136','1056227328','1056243712','1056251904','1056260096','1056276480','1056374784','1056440320','1056473088','1056505856','1056514048','1056522240','1056538624','1056546816','1056555008','1056571392','1056669696','1056702464','1056964608','1065611264','1065615360','1065811968','1065820160','1065873408','1065877504','1065906176','1065908224','1066311680','1066315776','1066352640','1066369024','1073373184','1073381376','1074020352','1074028544','1074118656','1074135040','1074184192','1074188288','1074233344','1074241536','1074733056','1074737152','1074745344','1074757632','1074765824','1074937856','1074946048','1074962432','1074970624','1075421184','1075429376','1075478528','1075494912','1075576832','1075585024','1075609600','1075613696','1075855360','1075871744','1076174848','1076178944','1076338688','1076346880','1076387840','1076396032','1076408320','1076412416','1076424704','1076428800','1076543488','1076559872','1076625408','1076690944','1076756480','1076772864','1077055488','1077059584','1077444608','1077452800','1077460992','1077469184','1077477376','1077506048','1077510144','1077641216','1077657600','1077977088','1077985280','1077993472','1078001664','1078067200','1078071296','1078075392','1078124544','1078128640','1078247424','1078251520','1078456320','1078460416','1078517760','1078525952','1079320576','1079328768','1079459840','1079508992','1079574528','1079578624','1079623680','1079627776','1079664640','1079668736','1079861248','1079865344','1080033280','1080164352',
273
- '1080295424','1080957952','1080963840','1080967168','1080983552','1080987648','1080988672','1080989952','1080990208','1080999936','1081016320','1081081856','1081131008','1081212928','1081278464','1081479168','1081483264','1081565184','1081573376','1081589760','1081593856','1081597952','1082314752','1082318848','1082679808','1082680320','1082683392','1082687488','1082753024','1082785792','1082945536','1082949632','1082982400','1083015168','1083396096','1083400192','1083437056','1083441152','1083621376','1083637760','1083686912','1083703296','1085440000','1085448192','1085456384','1085464576','1085526016','1085530112','1085538304','1085603840','1085849600','1085857792','1085915136','1085923328','1085997056','1086013440','1086042112','1086046208','1086050816','1086051328','1086922752','1086930944','1086955520','1086971904','1087016960','1087021056','1088684032','1088946176','1089167360','1089171456','1089191936','1089200128','1089306624','1089339392','1089961984','1089970176','1089974272','1090146304','1090150400','1090207744','1090215936','1090355200','1090363392','1090387968','1090396160','1090445312','1090453504','1091960832','1092026368','1092075520','1092091904','1093017600','1093021696','1093025792','1093033984','1093058560','1093066752','1093074944','1093091328','1093697536','1093730304','1094565888','1094582272','1095450624','1095467008','1095483392','1095491584','1096278016','1096286208','1096548352','1096810496','1096884224','1096888320','1096925184','1096941568','1097728000','1097736192','1097768960','1097785344',
274
- '1097793536','1097801728','1097830400','1097834496','1102389248','1102393344','1102512128','1102516224','1107243008','1107247104','1107275776','1107279872','1107288064','1107292160','1107701760','1107705856','1107820544','1107853312','1108025344','1108029440','1108033536','1108041728','1108054016','1108066304','1108492288','1108500480','1108525056','1108541440','1109688320','1109696512','1109819392','1109852160','1110126592','1110130688','1110310912','1110376448','1110540288','1110573056','1110638592','1110663168','1110675456','1110679552','1110683648','1110700032','1110704128','1110863872','1110867968','1110929408','1110933504','1111195648','1111212032','1111228416','1111244800','1112424448','1112432640','1112440832','1112530944','1112539136','1112867072','1112871936','1112872192','1112872960','1112873216','1112873984','1112875008','1112875520','1112875776','1112877312','1112877568','1112877824','1112878080','1112881152','1112881664','1112881920','1112882432','1112882688','1112883712','1112883968','1112884224','1112884480','1112885248','1112887296','1112888320','1112889344','1112890368','1112931328','1112932352','1113591808','1113595904','1113657344','1113661440','1113669632','1113677824','1113718784','1113743360','1113997312','1114005504','1114054656','1114062848','1114095616','1114103808','1114537984','1114550272','1114681344','1114685440','1114730496','1114734592','1115127808','1115131904','1115136000','1115144192','1115693056','1115697152','1115705344','1115709440','1115783168','1115791360','1115795456','1115799552','1115815936','1115947008','1116014080','1116014336','1116014592','1116014848','1116015872','1116016128','1116027136','1116027904','1116168192','1116176384','1116897280','1116905472','1117274112','1117282304','1117413376','1117421568','1117683712','1117691904','1117724672','1117728768','1117744128','1117749248','1117978624','1117986816','1117995008','1117999104','1118027776','1118031872','1118158848','1118167040','1118474240','1118478336','1118483456','1118484480','1118515200','1118519296','1118527488','1118531584','1118535680','1118539776','1118543872','1118547968','1119109120','1119110144','1119111168','1119211520','1119215616','1119289344','1119354880','1119428608','1119432704','1119436800','1119440896','1119444992','1119469568','1119477760','1119502336','1119510528','1119571968','1119576064','1119580160','1119584256','1119612928','1119617024','1120149504','1120153600','1120346112','1120350208','1120518144','1120534528','1120641024','1120657408','1120788480','1120796672','1120854016','1120862208','1120886784','1120894976','1120911360','1120919552','1121005568','1121009664','1121038336','1121042432','1121230848','1121239040','1121247232','1121255424','1121617408','1121763328','1121767424','1121878016','1121910784','1122074624','1122091008','1122140160','1122148352','1122156544','1122433024','1122434048','1122451456','1122455552','1122476032','1122480128','1122635776','1122639872','1123123200','1123127296','1123180544','1123184640','1123336192','1123352576','1123590144','1123598336','1123606528','1123651584','1123655680','1123794944','1123848192','1123852288','1123950592','1123958784','1125459456','1125459968','1125474304','1125478400','1125486592','1125490688','1125498880','1125515264','1125531648','1125543936','1125545984','1125552128','1125572608','1125576704','1125613568','1125617664','1126924288','1126928384','1126948864','1126952960','1127677952','1127694336','1127923712','1127931904','1128529920','1128792064','1134444544','1134448640','1134546944','1134551040','1136721920','1136787456','1137278976','1137295360','1137426432','1137442816','1137459200','1137491968','1137508352','1137524736','1137541120','1137623040','1137639424','1137704960','1137713152','1137836032','1137840128','1137868800','1137872896','1137876992','1137881088','1137889280','1137893376','1137917952','1137922048','1137926144','1137934336','1137950720','1137954816','1137963008','1137967104','1137975296','1137983488','1137991680','1138049024','1138061312','1138069504','1138073600','1138163712','1138167808','1138176000','1138180096','1138188288','1138191360','1138196480','1138204672','1138212864','1138216960','1138499584','1138503680','1138593792','1138597888','1138704384','1138716672','1138720768','1138728960','1138774016','1138778112','1138786304','1138819072','1138851840','1138917376','1138937856',
275
- '1138941952','1138950144','1139179520','1139195904','1139216384','1139220480','1139265536','1139269632','1145142272','1145142784','1145188352','1145192448','1145249792','1145257984','1145307136','1145311232','1145376768','1145380864','1145405440','1145413632','1145421824','1145430016','1145475072','1145479168','1145503744','1145520128','1150287872','1150812160','1151889408','1151897600','1152073728','1152077824','1152114688','1152122880','1152581632','1152614400','1152778240','1152843776','1156071424','1156079616','1156296704','1156300800','1157931008','1157935104','1157943296','1157947392','1158148096','1158152192','1158316032','1158324224','1158340608','1158344704','1158348800','1158381568','1158414592','1158415360','1158416384','1158416896','1158417152','1158417408','1158420736','1158421504','1158422528','1158423552','1158423808','1158424064','1158424320','1158424832','1158425600','1158427648','1158428160','1158428416','1158428672','1158440960','1158441216','1158441472','1158441984','1158443008','1158774784','1158791168','1158799360','1158807552','1158995968','1159004160','1159213056','1159217152','1159348224','1159356416','1159421952','1159430144','1159700480','1159725056','1160011776','1160019968','1160364032','1160368128','1160392704','1160396800','1160425472','1160429568','1160667136','1160675328','1160683520','1160691712','1160847360',
276
- '1160855552','1160921088','1160925184','1160945664','1160953856','1161019392','1161035776','1161293824','1161297920','1161363456','1161367552','1161416704','1161420800','1161428992','1161433088','1161437184','1161453568','1161457664','1161576448','1161580544','1161617408','1161625600','1161764864','1161773056','1161777152','1161818112','1161822208','1162018816','1162022912','1162027008','1162031104','1162059776','1162067968','1162215424','1162280960','1162297344','1162305536','1162461184','1162477568','1162715136','1162723328','1162870784','1162887168','1163407360','1163411456','1167851520','1168113664','1168138240','1168146432','1168211968','1168220160','1168420864','1168424960','1168461824','1168465920','1168474112','1168506880','1168508928','1168509440','1168510976','1168515072','1168535552','1168539648','1168670720','1168687104','1168859136','1168863232','1168867328','1168875520','1168916480','1168932864','1168936960','1168949248','1168973824','1168982016','1169203200','1169211392','1170472960','1170481152','1170489344','1170497536','1170505728','1170522112','1175977984','1176502272','1176702976','1176707072','1176731648','1176735744','1176739840','1176743936','1176752128','1176756224','1176764416','1176768512','1176776704','1176780800','1176895488','1176928256','1177354240','1177419776','1177550848','1178075136','1178599424','1179910144','1191673856','1191706624','1192296448','1192361984','1192427520','1192460288','1192464384','1192468480','1192476672','1192488960','1192493056','1207975936','1207980032','1208008704','1208016896','1208020992',
277
- '1208025088','1208074240','1208082432','1208090624','1208107008','1208590336','1208598528','1208647680','1208659968','1208721408','1208729600','1208770560','1208774656','1208778752','1208795136','1208852480','1208860672','1208918016','1208922112','1208954880','1208958976','1208975360','1208983552','1209204736','1209212928','1209434112','1209442304','1209647104','1209663488','1209729024','1209786368','1209810944','1209819136','1209917440','1209925632','1210449920','1210580992','1210851328','1210925056','1210941440','1211236352','1211269120','1211318272','1211334656','1211432960','1211473920','1211596800','1211613184','1216872448','1217396736','1219256320','1219264512','1219272704','1219276800','1241743360','1241759744','1242300416','1242562560','1244659712','1244790784','1244831744','1244839936','1244848128','1244852224','1244864512',
278
- '1244872704','1245184000','1245446144','1246904320','1246912512','1246937088','1246945280','1247494144','1248864256','1248866304','1248879616','1248880640','1248885760','1248886784','1248899072','1248900096','1248902144','1248902656','1248902912','1248903168','1248913408','1248915456','1248919552','1248920576','1248921600','1248922624','1248923648','1248924672','1248925696','1248937984','1248939008','1248946176','1248947200','1248956416','1248957440','1248958464','1248959488','1248964608','1248966656','1248970752','1248971776','1248998400','1248999424','1249003520','1249005568','1249010688','1249011712','1249019904','1249020928',
279
- '1249029120','1249030144','1249032192','1249033216','1249036288','1249037312','1249038336','1249040384','1249046528','1249047552','1249082368','1249083392','1249099776','1249101824','1249102848','1249103872','1249106944','1249107968','1249130496','1249131520','1249139712','1249140736','1249146880','1249147904','1249163264',
280
- '1249165312','1249171456','1249173504','1249191936','1249193984','1249195008','1249196032','1249203200','1249204224','1249210368','1249212416','1249217536','1249218560','1249236992','1249239040','1249245184','1249247232','1249256448','1249257472','1249260544','1249261568','1249267712','1249268736','1249272832','1249273856','1249281024','1249282048','1249310720','1249311744','1249312768','1249313792','1249335296','1249337344','1249359872','1249361920','1249373184','1249374208','1249379328','1249380352','1249383424','1249384448','1249386496','1249391616','1249392640','1249396736','1249397760','1249398784','1249409024','1249410048','1249434624',
281
- '1249435648','1249449984','1249451008','1249452032','1249453056','1249474560','1249475584','1249481728','1249482752','1249484800','1249486848','1249506304','1249507328','1249522688','1249523712','1249531904','1249533952','1249542144','1249544192','1249562624','1249564672','1249571840',
282
- '1249572864','1249576960','1249577984','1249592320','1249593344','1249598464','1249599488','1249609728','1249611776','1249796096','1249804288','1249886208','1249902592','1254490112','1254555648','1254621184','1254629376','1254989824','1254998016','1255002112','1255006208','1255047168','1255055360','1255276544','1255342080','1255489536','1255505920','1255514112','1255522304','1255571456','1255579648','1255669760','1255735296','1255972864','1255981056','1256001536','1256005632','1256030208','1256034304','1256079360','1256087552','1264746496','1264750592','1264762880','1264766976','1266147328','1266155520','1268252672','1268776960','1275600896','1275604992','1275621376','1275625472','1275666432','1275674624','1275707392','1275715584','1275756544','1275772928','1275789312','1275822080','1279262720','1279787008','1279848448','1279852544','1280000000','1280032768','1280040960','1280049152','1280073728','1280081920','1280090112','1280098304','1280102400','1280126976','1280131072','1280139264','1291845632','1292894208','1293156352','1293549568','1293680640','1293811712','1293942784','1294073856','1294204928','1294237696','1294270464','1294303232','1294336000','1294368768','1294401536','1294434304','1294467072','1294499840','1294532608','1294598144','1294630912','1294663680','1294696448','1294729216','1294761984','1294794752','1294827520','1294860288','1294893056','1294925824','1294958592','1294991360','1295056896','1295122432','1295253504','1295319040','1295384576','1295450112','1295515648','1295777792','1296039936','1296072704','1296105472','1296171008','1296203776','1296236544','1296269312','1296302080','1296334848','1296367616','1296400384','1296433152','1296465920','1296498688','1296531456','1296564224','1296566272','1296568320',
283
- '1296570368','1296574464','1296576512','1296578560','1296580608','1296582656','1296584704','1296586752','1296588800','1296590848','1296592896','1296594944','1296596992','1296599040','1296601088','1296605184','1296607232','1296609280','1296611328','1296613376','1296615424','1296617472','1296619520','1296621568','1296623616','1296625664','1296629760','1296635904','1296637952','1296640000','1296642048','1296644096','1296646144','1296648192','1296650240','1296652288','1296654336','1296656384','1296658432','1296662528','1296664576','1296666624','1296670720','1296672768','1296674816','1296676864','1296678912','1296680960','1296683008','1296685056','1296687104','1296689152','1296691200','1296693248','1296695296','1296697344','1296699392','1296701440','1296703488','1296705536','1296707584','1296709632','1296711680','1296713728','1296715776','1296717824','1296719872','1296721920','1296723968','1296726016','1296728064','1296730112','1296732160','1296734208','1296736256','1296738304','1296740352','1296744448','1296748544','1296750592','1296752640','1296754688','1296756736','1296758784','1296760832','1296764928','1296769024','1296771072','1296773120','1296775168',
284
- '1296779264','1296781312','1296783360','1296785408','1296787456','1296789504','1296791552','1296793600','1296795648','1296797696','1296799744','1296801792','1296803840','1296805888','1296807936','1296812032','1296814080','1296816128','1296818176','1296820224','1296822272','1296824320','1296826368','1296842752','1296859136','1296875520','1296891904','1296908288','1296924672','1296941056','1296957440','1296973824','1296990208','1297006592','1297022976','1297039360','1297055744','1297072128','1297088512','1297121280','1297154048','1297168384','1297170432','1297170944','1297171456','1297172480','1297172992','1297173504','1297175552','1297176320','1297176832','1297177600','1297182720','1297184768','1297185280','1297190144','1297190400','1297203200','1297211392','1297217536','1297219584','1297350656','1297416192','1297481728','1297514496','1297547264','1297549312','1297551360','1297553408','1297555456','1297559552','1297561600','1297563648','1297565696','1297567744','1297569792','1297571840','1297573888','1297575936',
285
- '1297577984','1297580032','1297582080','1297584128','1297588224','1297590272','1297592320','1297594368','1297596416','1297598464','1297602560','1297604608','1297606656','1297610752','1297612800','1297629184','1297645568','1297661952','1297678336','1297694720','1297711104','1297727488','1297743872','1297760256','1297776640','1297793024','1297809408','1297825792','1297842176','1297858560','1297860608','1297862656','1297864704','1297866752','1297868800','1297870848','1297872896','1297874944','1297883136','1297891328','1297899520','1297915904','1297924096','1297932288','1297940480','1297948672','1297956864','1297965056','1297973248','1297981440','1297989632','1297997824','1298006016','1298022400','1298030592','1298038784','1298046976','1298063360','1298065408','1298067456','1298071552','1298073600','1298075648','1298077696','1298079744','1298081792','1298083840','1298085888','1298087936','1298089984','1298092032','1298094080','1298096128','1298098176','1298100224','1298102272','1298104320','1298106368','1298108416','1298110464','1298112512','1298114560','1298116608','1298118656','1298120704','1298122752','1298124800','1298126848','1298128896',
286
- '1298130944','1298132992','1298135040','1298137088','1298661376','1298677760','1298694144','1298710528','1298726912','1298743296','1298759680','1298776064','1298792448','1298825216','1298841600','1298857984','1298874368','1298907136','1298923520','1298939904','1298956288','1298972672','1298989056','1299005440','1299021824','1299038208','1299054592','1299070976','1299087360','1299103744','1299120128','1299136512','1299169280','1299174400','1299178496','1299185664','1299447808','1299709952','1299972096','1300234240','1302331392','1303379968','1304428544','1305477120','1305739264','1306001408','1306263552','1306271744','1306279936','1306288128','1306296320','1306312704','1306320896','1306329088','1306337280','1306345472','1306353664','1306361856','1306370048','1306378240','1306386432','1306394624','1306402816','1306411008','1306419200','1306427392','1306435584','1306451968','1306460160','1306468352','1306476544','1306492928','1306501120','1306509312','1306525696','1307049984','1307066368','1307074560','1307082752','1307092992','1307095040','1307097088','1307099136','1307107328','1307115520','1307123712',
287
- '1307131904','1307140096','1307148288','1307156480','1307172864','1307181056','1307189248','1307191296','1307193344','1307195392','1307197440','1307205632','1307213824','1307222016','1307230208','1307238400','1307246592','1307254784','1307262976','1307271168','1307279360','1307287552','1307295744','1307303936','1307312128','1307320320','1307336704','1307344896','1307353088','1307361280','1307369472','1307377664','1307385856','1307394048','1307402240','1307410432','1307418624','1307426816','1307435008','1307437056','1307441152','1307443200','1307451392','1307459584','1307467776','1307484160','1307492352','1307500544','1307508736','1307516928','1307525120','1307533312','1307541504','1307549696','1307557888','1307574272','1307578368','1307582464','1307586560','1307590656','1307594752','1307598848','1307602944','1307607040','1307611136','1307619328','1307623424','1307627520','1307631616','1307635712','1307639808','1307643904','1307652096','1307656192','1307660288','1307664384','1307668480','1307672576','1307676672','1307680768','1307684864','1307688960','1307693056','1307697152','1307701248','1307709440','1307713536','1307717632','1307721728','1307725824','1307729920',
288
- '1307734016','1307738112','1307742208','1307746304','1307750400','1307754496','1307758592','1307762688','1307766784','1307770880','1307774976','1307779072','1307787264','1307795456','1307803648','1307807744','1307811840','1307815936','1307820032','1307824128','1307828224','1307832320','1307836416','1307840512','1307844608','1307848704','1307852800','1307856896','1307860992','1307865088','1307869184','1307873280','1307877376','1307881472','1307885568','1307889664','1307893760','1307897856','1307901952','1307906048','1307910144','1307914240','1307918336','1307922432','1307926528','1307930624','1307934720','1307938816','1307942912','1307947008','1307951104','1307959296','1307963392','1307967488','1307971584','1307983872','1307987968','1307992064','1307996160','1308000256','1308004352','1308008448','1308012544','1308016640','1308020736','1308024832','1308033024','1308037120','1308041216','1308049408','1308053504','1308055552','1308065792','1308069888','1308073984','1308078080','1308080128','1308082176','1308084224','1308086272','1308088320','1308090368','1308092416','1308096512','1308098560','1308360704','1308622848','1308884992','1309147136','1309409280','1309671424','1309933568',
289
- '1310195712','1310197760','1310199808','1310201856','1310203904','1310205952','1310208000','1310210048','1310212096','1310214144','1310216192','1310222336','1310224384','1310226432','1310228480','1310230528','1310232576','1310234624','1310236672','1310238720','1310240768','1310242816','1310244864','1310246912','1310248960','1310251008','1310255104','1310257152','1310259200','1310261248','1310277632','1310310400','1310326784','1310343168','1310359552','1310392320','1310408704','1310425088','1310457856','1310474240','1310490624','1310507008','1310523392','1310556160','1310572544','1310588928','1310605312','1310621696','1310638080','1310654464','1310656512','1310658560','1310660608','1310662656','1310664704','1310666752','1310668800','1310670848','1310672896','1310674944','1310676992','1310679040','1310681088','1310683136','1310685184','1310687232','1310689280','1310695424','1310695936','1310696448','1310696704','1310696960','1310697472','1310699520','1310705664','1310707712','1310707968','1310708224','1310708480','1310708736','1310709248','1310709760','1310711808','1310713856','1310715904','1310717952','1310720000','1310851072','1310982144','1311113216','1311244288',
290
- '1311246336','1311248384','1311250432','1311252480','1311254528','1311256576','1311258624','1311262720','1311264768','1311266816','1311268864','1311270912','1311272960','1311275008','1311277056','1311279104','1311281152','1311285248','1311289344','1311291392','1311293440','1311295488','1311297536','1311299584','1311301632','1311303680','1311307776','1311309824','1311311872','1311315968','1311318016','1311320064','1311324160','1311326208','1311328256','1311332352','1311338496','1311340544','1311342592','1311344640','1311346688','1311348736','1311350784','1311352832','1311354880','1311356928','1311358976','1311361024','1311363072','1311365120','1311367168','1311369216','1311371264','1311373312','1311375360','1311506432','1311637504','1312292864','1312817152','1313865728','1313931264','1313996800','1314062336','1314127872','1314193408','1314258944','1314324480','1314390016','1314455552','1314521088','1314586624','1314652160','1314717696','1314783232','1314848768','1314914304','1315045376','1315176448','1315307520','1315438592','1315504128','1315569664','1315700736','1315704832','1315708928','1315713024','1315717120','1315725312','1315729408',
291
- '1315733504','1315737600','1315741696','1315745792','1315749888','1315758080','1315762176','1315766272','1315770368','1315774464','1315778560','1315780608','1315782656','1315786752','1315790848','1315794944','1315803136','1315807232','1315815424','1315819520','1315823616','1315827712','1315831808','1315835904','1315840000','1315844096','1315848192','1315852288','1315856384','1315860480','1315864576','1315868672','1315872768','1315876864','1315880960','1315885056','1315889152','1315893248','1315897344','1315901440','1315905536','1315909632','1315913728','1315917824','1315921920','1315926016','1315930112','1315934208','1315938304','1315942400','1315946496','1315950592','1315954688','1315958784','1315962880','1317011456','1317044224','1317076992','1317109760','1317142528','1317175296','1317208064','1317240832','1317273600','1317306368','1317339136','1317371904','1317404672','1317437440','1317470208','1317502976','1317535744','1317552128','1317568512','1317584896','1317601280','1317617664','1317625856','1317627904','1317629952','1317634048','1317650432','1317666816','1317683200','1317699584','1317715968','1317732352','1317748736','1317765120','1317781504','1317814272','1317830656',
292
- '1317847040','1317863424','1317879808','1317896192','1317912576','1317928960','1317945344','1317978112','1317994496','1318010880','1318027264','1318043648','1318584320','1318592512','1318600704','1318608896','1318617088','1318625280','1318633472','1318649856','1318658048','1318666240','1318674432','1318682624','1318690816','1318699008','1318707200','1318715392','1318723584','1318731776','1318739968','1318748160','1318756352','1318764544','1318780928','1318789120','1318797312','1318805504','1318813696','1318821888','1318838272','1318846464','1318854656','1318862848','1318871040','1318879232','1318887424','1318895616','1318903808','1318912000','1318920192','1318928384','1318936576','1318944768','1318961152','1318969344','1318977536','1318985728','1319002112','1319010304','1319018496','1319026688','1319034880','1319043072','1319051264','1319059456','1319067648','1319075840','1319084032','1319092224','1319100416','1319108608','1321205760','1325400064','1329594368','1330642944','1331691520','1331757056','1331822592','1331824640','1331826688','1331828736','1331830784',
293
- '1331832832','1331834880','1331836928','1331838976','1331841024','1331843072','1331845120','1331847168','1331849216','1331851264','1331853312','1331855360','1331857408','1331859456','1331861504','1331863552','1331865600','1331871744','1331873792','1331877888','1331879936','1331881984','1331886080','1331888128','1331890176','1331892224','1331894272','1331896320','1331898368','1331900416','1331902464','1331904512','1331908608','1331912704','1331914752','1331916800','1331918848','1331920896','1331922944','1331924992','1331927040','1331929088','1331931136','1331933184','1331935232','1331937280','1331939328','1331941376','1331943424','1331945472','1331947520','1331949568','1331951616','1331953664','1332019200','1332084736','1332150272','1332215808','1332346880','1332412416','1332477952','1332609024','1332613120','1332617216','1332625408','1332629504','1332633600','1332637696','1332641792','1332645888','1332654080','1332658176','1332662272','1332670464','1332740096','1333264384','1333297152','1333362688','1333395456','1333428224','1333460992','1333493760','1333526528','1333551104','1333559296','1333592064','1333624832','1333657600','1333690368','1333723136','1333755904',
294
- '1333788672','1334050816','1334059008','1334067200','1334075392','1334083584','1334091776','1334099968','1334108160','1334116352','1334124544','1334132736','1334165504','1334173696','1334181888','1334190080','1334198272','1334206464','1334214656','1334222848','1334231040','1334239232','1334247424','1334255616','1334263808','1334272000','1334280192','1334288384','1334296576','1334304768','1334312960','1334345728','1334378496','1334411264','1334444032','1334509568','1334542336','1334575104','1334579200','1334583296','1334591488','1334595584','1334599680','1334603776','1334607872','1334611968','1334616064','1334620160','1334624256','1334628352','1334632448','1334636544','1334640640','1334644736','1334648832','1334652928','1334661120','1334665216','1334669312','1334673408','1334677504','1334681600','1334685696','1334689792','1334693888','1334702080','1334706176','1334710272','1334714368','1334718464','1334722560','1334726656','1334734848','1334738944','1334743040','1334747136','1334755328','1334759424','1334763520','1334767616','1334771712','1334779904','1334784000','1334788096','1334792192','1334794240','1334796288','1334800384','1334804480','1334808576',
295
- '1334812672','1334816768','1334820864','1334824960','1334829056','1334833152','1334837248','1335885824','1336016896','1336147968','1336279040','1336410112','1336541184','1336543232','1336545280','1336547328','1336549376','1336551424','1336553472','1336555520','1336557568','1336559616','1336561664','1336563712','1336567808','1336569856','1336571904','1336573952','1336576000','1336580096','1336584192','1336586240','1336588288','1336590336','1336592384','1336594432','1336596480','1336598528','1336600576','1336602624','1336604672','1336606720','1336608768','1336610816','1336612864','1336614912','1336616960','1336619008','1336621056','1336623104','1336625152','1336627200','1336629248','1336631296','1336633344','1336635392','1336637440','1336639488','1336643584','1336645632','1336647680','1336649728','1336651776','1336653824','1336655872','1336657920','1336659968','1336662016','1336664064','1336668160','1336670208','1336672256','1336705024','1336721408','1336737792','1336754176','1336770560','1336786944','1336811520','1336827904','1336836096','1336838144','1336842240','1336844288','1336846336','1336848384','1336850432','1336852480','1336868864','1336885248','1336901632','1336918016','1336934400',
296
- '1337458688','1337982976','1342177280','1342701568','1343225856','1343750144','1344798720','1345323008','1345847296','1345978368','1346109440','1346240512','1346371584','1346375680','1346379776','1346383872','1346387968','1346392064','1346396160','1346400256','1346404352','1346408448','1346412544','1346416640','1346420736','1346428928','1346433024','1346441216','1346445312','1346449408','1346453504','1346461696','1346469888','1346473984','1346478080','1346482176','1346486272','1346494464','1346498560','1346502656','1346510848','1346519040','1346527232','1346531328','1346535424','1346539520','1346543616','1346547712','1346555904','1346560000','1346564096','1346568192','1346572288','1346580480','1346584576','1346592768','1346596864','1346600960','1346605056','1346609152','1346617344','1346621440','1346625536','1346629632','1346637824','1346650112','1346654208','1346658304','1346666496','1346670592','1346674688','1346678784','1346686976','1346691072','1346695168','1346699264','1346707456','1346711552','1346715648','1346723840','1346732032',
297
- '1346736128','1346740224','1346744320','1346748416','1346752512','1346756608','1346760704','1346764800','1346768896','1346772992','1346777088','1346781184','1346789376','1346793472','1346797568','1346801664','1346805760','1346818048','1346822144','1346826240','1346830336','1346838528','1346842624','1346846720','1346854912','1346859008','1346863104','1346867200','1346871296','1346879488','1346883584','1346887680','1346891776','1346895872','1346899968','1346904064','1346908160','1346912256','1346920448','1346924544','1346928640','1346932736','1346936832','1346940928','1346945024','1346949120','1346957312','1346961408','1346965504','1346969600','1346973696','1346977792','1346985984','1346994176','1346998272','1347002368','1347006464','1347010560','1347014656','1347018752','1347022848','1347026944','1347035136','1347039232','1347043328','1347047424','1347051520','1347059712','1347067904','1347072000','1347076096','1347084288','1347092480','1347096576','1347100672','1347108864','1347112960','1347117056','1347121152','1347125248','1347129344','1347133440','1347141632','1347145728','1347149824','1347153920','1347158016','1347162112','1347166208','1347174400','1347182592','1347186688','1347190784','1347194880','1347198976','1347203072','1347207168','1347215360','1347223552','1347227648','1347231744','1347235840','1347239936','1347244032','1347248128','1347252224','1347256320','1347260416','1347264512','1347268608','1347272704','1347276800','1347280896','1347284992','1347289088','1347293184','1347297280','1347305472','1347309568','1347313664','1347325952','1347330048','1347338240','1347342336','1347346432','1347350528','1347354624','1347358720','1347362816','1347366912','1347371008','1347375104','1347379200','1347383296','1347387392','1347391488','1347395584','1347399680','1347403776','1347407872','1347411968','1347416064','1347420160','1347428352','1347432448','1347436544','1347440640','1347444736','1347452928','1347461120','1347465216','1347469312','1347473408','1347477504','1347481600','1347485696','1347493888','1347502080','1347518464','1347522560','1347526656','1347534848','1347538944','1347543040','1347547136',
298
- '1347551232','1347555328','1347559424','1347567616','1347571712','1347575808','1347579904','1347588096','1347592192','1347600384','1347602432','1347608576','1347612672','1347616768','1347620864','1347624960','1347633152','1347637248','1347641344','1347649536','1347653632','1347657728','1347661824','1347665920','1347670016','1347674112','1347682304','1347686400','1347690496','1347694592','1347706880','1347710976','1347715072','1347723264','1347727360','1347731456','1347739648','1347747840','1347751936','1347756032','1347760128','1347764224','1347772416','1347776512','1347780608','1347784704','1347788800','1347792896','1347796992','1347801088','1347805184','1347809280','1347813376','1347817472','1347821568','1347825664','1347829760','1347833856','1347837952','1347846144','1347850240','1347854336','1347862528','1347866624','1347870720','1347874816','1347878912','1347887104','1347891200','1347895296','1347903488','1347907584','1347911680','1347915776','1347919872','1347923968','1347928064',
299
- '1347932160','1347936256','1347940352','1347945472','1347947520','1347948544','1347952640','1347956736','1347960832','1347964928','1347969024','1347977216','1347985408','1347989504','1347993600','1348001792','1348005888','1348009984','1348014080','1348018176','1348026368','1348030464','1348034560','1348038656','1348042752','1348050944','1348055040','1348059136','1348063232','1348067328','1348071424','1348075520','1348083712','1348091904','1348096000','1348100096','1348104192','1348108288','1348112384','1348116480','1348120576','1348124672','1348128768','1348132864','1348136960','1348141056','1348145152','1348149248','1348153344','1348157440','1348165632','1348169728','1348173824','1348177920','1348182016','1348190208','1348194304','1348198400','1348202496','1348206592','1348218880','1348222976','1348231168','1348235264','1348239360','1348243456','1348247552','1348251648','1348255744','1348263936','1348268032','1348272128','1348280320','1348284416','1348288512','1348292608','1348296704','1348300800','1348304896','1348308992','1348313088','1348317184','1348321280','1348325376','1348329472',
300
- '1348337664','1348341760','1348345856','1348349952','1348354048','1348358144','1348362240','1348366336','1348370432','1348374528','1348378624','1348382720','1348386816','1348390912','1348395008','1348399104','1348403200','1348407296','1348411392','1348415488','1348419584','1348427776','1348435968','1348440064','1348444160','1348448256','1348456448','1348460544','1348464640','1348468736','1348599808','1348730880','1348861952','1348993024','1349124096','1349255168','1349517312','1349763072','1349771264','1349779456','1349910528','1350041600','1350303744','1350434816','1350565888','1352663040','1353187328','1353318400','1353383936','1353449472','1353515008','1353646080','1353842688','1353973760','1354235904','1354301440','1354366976','1354432512','1354498048','1354563584','1354629120','1354694656','1354760192','1355022336','1355284480','1355415552','1355546624','1355808768','1356070912','1356201984','1356333056','1356464128','1356595200','1356857344',
301
- '1356922880','1356988416','1357053952','1357119488','1357185024','1357250560','1357316096','1357381632','1357414400','1357447168','1357479936','1357512704','1357545472','1357578240','1357611008','1357643776','1357676544','1357709312','1357742080','1357774848','1357791232','1357807616','1357840384','1357873152','1357905920','1357910016','1357914112','1357922304','1357926400','1357930496','1357938688','1357942784','1357946880','1357955072','1357959168','1357963264','1357967360','1357971456','1357975552','1357979648','1357983744','1357985792','1357987840','1357991936','1357996032','1358000128','1358004224','1358008320','1358012416','1358016512','1358020608','1358028800','1358032896','1358036992','1358041088','1358045184','1358049280','1358061568','1358065664','1358069760','1358086144','1358090240','1358094336','1358102528','1358106624','1358110720','1358118912','1358123008','1358127104','1358131200','1358135296','1358139392','1358143488','1358147584','1358151680','1358155776','1358163968','1358168064','1358172160',
302
- '1358176256','1358180352','1358184448','1358192640','1358196736','1358200832','1358209024','1358213120','1358217216','1358221312','1358225408','1358229504','1358233600','1358237696','1358249984','1358254080','1358262272','1358266368','1358274560','1358278656','1358282752','1358286848','1358290944','1358295040','1358299136','1358303232','1358307328','1358315520','1358323712','1358327808','1358331904','1358336000','1358344192','1358352384','1358356480','1358360576','1358364672','1358372864','1358376960','1358381056','1358385152','1358389248','1358397440','1358405632','1358409728','1358413824','1358422016','1358426112','1358430208','1358434304','1358438400','1358442496','1358446592','1358450688','1358454784','1358462976','1358467072','1358471168','1358475264','1358479360','1358483456','1358487552','1358491648','1358495744','1358499840','1358503936','1358508032','1358512128','1358516224','1358520320','1358528512','1358536704','1358540800','1358548992','1358551040','1358553088','1358557184','1358561280','1358573568','1358577664','1358585856','1358589952',
303
- '1358594048','1358598144','1358602240','1358610432','1358614528','1358622720','1358626816','1358635008','1358639104','1358643200','1358647296','1358651392','1358655488','1358667776','1358675968','1358680064','1358688256','1358692352','1358696448','1358700544','1358704640','1358708736','1358712832','1358716928','1358721024','1358725120','1358733312','1358741504','1358745600','1358749696','1358753792','1358757888','1358766080','1358770176','1358774272','1358778368','1358782464','1358794752','1358798848','1358802944','1358807040','1358811136','1358815232','1358819328','1358823424','1358827520','1358831616','1358835712','1358839808','1358843904','1358848000','1358856192','1358860288','1358864384','1358872576','1358876672','1358884864','1358888960','1358893056','1358897152','1358905344','1358909440','1358913536','1358917632','1358921728','1358929920','1358934016','1358938112','1358946304','1358950400','1358954496','1358970880','1358987264','1359003648','1359020032','1359036416','1359052800','1359101952','1359118336','1359134720','1359151104',
304
- '1359167488','1359183872','1359200256','1359216640','1359233024','1359249408','1359265792','1359282176','1359298560','1359314944','1359331328','1359347712','1359364096','1359380480','1359396864','1359413248','1359429632','1359446016','1359462400','1359470592','1359478784','1359511552','1359544320','1359577088','1359609856','1359642624','1359675392','1359708160','1359740928','1359773696','1359806464','1359839232','1359872000','1359904768','1359937536','1359970304','1360003072','1360011264','1360015360','1360019456','1360023552','1360027648','1360031744','1360039936','1360044032','1360048128','1360052224','1360056320','1360060416','1360064512','1360068608','1360072704','1360076800','1360084992','1360089088','1360093184','1360101376','1360105472','1360109568','1360113664','1360117760','1360121856','1360125952','1360130048','1360134144','1360138240','1360142336','1360146432','1360150528','1360158720','1360162816','1360175104','1360179200','1360183296','1360191488','1360195584','1360199680','1360203776','1360207872','1360211968','1360216064','1360224256','1360228352','1360232448','1360236544','1360240640','1360244736','1360257024','1360265216',
305
- '1360269312','1360273408','1360281600','1360285696','1360289792','1360293888','1360302080','1360306176','1360310272','1360314368','1360318464','1360322560','1360326656','1360330752','1360334848','1360338944','1360343040','1360347136','1360351232','1360355328','1360359424','1360363520','1360365568','1360367616','1360371712','1360375808','1360379904','1360384000','1360388096','1360392192','1360396288','1360400384','1360404480','1360408576','1360420864','1360424960','1360429056','1360433152','1360437248','1360441344','1360445440','1360453632','1360457728','1360461824','1360465920','1360470016','1360474112','1360478208','1360482304','1360486400','1360494592','1360498688','1360515072','1360519168','1360531456','1360535552','1360539648','1360543744','1360547840','1360551936','1360556032','1360564224','1360568320','1360572416','1360576512','1360580608','1360584704','1360588800','1360590848','1360592896','1360596992','1360601088','1360605184','1360613376','1360617472','1360621568','1360625664','1360629760','1360633856','1360637952','1360642048','1360646144','1360650240','1360654336','1360658432','1360666624',
306
- '1360674816','1360676864','1360678912','1360683008','1360691200','1360698880','1360699392','1360703488','1360707584','1360709632','1360711680','1360715776','1360728064','1360732160','1360736256','1360740352','1360752640','1360756736','1360760832','1360764928','1360769024','1360773120','1360777216','1360781312','1360785408','1360793600','1360797696','1360805888','1360809984','1360814080','1360818176','1360822272','1360826368','1360830464','1360838656','1360842752','1360846848','1360855040','1360859136','1360863232','1360867328','1360879616','1360883712','1360887808','1360891904','1360896000','1360900096','1360916480','1360920576','1360928768','1360932864','1360936960','1360941056','1360945152','1360949248','1360953344','1360957440','1360961536','1360965632','1360977920','1360986112','1360994304','1360998400','1361002496','1361006592','1361010688','1361018880','1361022976','1361027072','1361039360','1361041408','1361043456','1361051648','1362100224','1362755584','1362886656','1363017728',
307
- '1363148800','1363410944','1363673088','1363935232','1364197376','1364262912','1364328448','1364459520','1364525056','1364590592','1364721664','1364725760','1364733952','1364738048','1364742144','1364746240','1364750336','1364754432','1364758528','1364762624','1364766720','1364770816','1364774912','1364779008','1364787200','1364795392','1364799488','1364803584','1364809728','1364815872','1364819968','1364824064','1364828160','1364832256','1364836352','1364840448','1364844544','1364852736','1364856832','1364860928','1364865024','1364869120','1364873216','1364877312','1364881408','1364885504','1364889600','1364893696','1364897792','1364901888','1364905984','1364910080','1364914176','1364918272','1364922368','1364924416','1364926464','1364934656','1364938752','1364942848','1364946944','1364951040','1364959232','1364963328','1364967424','1364971520','1364975616','1364979712','1364983808','1364992000','1364996096','1365000192','1365004288','1365008384','1365012480','1365016576','1365020672','1365024768','1365028864','1365032960','1365041152','1365045248','1365049344','1365057536','1365061632','1365065728',
308
- '1365073920','1365078016','1365082112','1365090304','1365094400','1365098496','1365102592','1365106688','1365110784','1365114880','1365118976','1365127168','1365131264','1365139456','1365147648','1365155840','1365159936','1365164032','1365172224','1365176320','1365180416','1365184512','1365192704','1365196800','1365200896','1365204992','1365209088','1365213184','1365217280','1365221376','1365225472','1365229568','1365233664','1365237760','1365241856','1365245952','1366294528','1367343104','1369440256','1369473024','1369505792','1369509888','1369518080','1369520128','1369520640','1369520896','1369521152','1369521664','1369521920','1369522176','1369530368','1369530880','1369531392','1369534976','1369535232','1369535488','1369538560','1369554944','1369559040','1369567232','1369571328','1369585664','1369591808','1369595904','1369604096','1369620480','1369624576','1369626624','1369636864','1369638912','1369640960','1369655296','1369657344','1369659392','1369661440','1369665536','1369677824',
309
- '1369686016','1369690112','1369694208','1369702400','1369833472','1369964544','1369997312','1370030080','1370062848','1370095616','1370128384','1370161152','1370193920','1370226688','1370259456','1370292224','1370324992','1370357760','1370390528','1370423296','1370439680','1370456064','1370488832','1370619904','1370750976','1370882048','1371013120','1371078656','1371144192','1371201536','1371205632','1371209728','1371275264','1371340800','1371406336','1371471872','1371537408','1371602944','1371668480','1371734016','1371799552','1371865088','1371930624','1371996160','1372061696','1372069888','1372073984','1372078080','1372082176','1372086272','1372090368','1372094464','1372098560','1372102656','1372106752','1372110848','1372114944','1372119040','1372123136','1372127232','1372131328','1372135424','1372139520','1372143616','1372147712','1372151808','1372160000','1372164096','1372168192','1372172288','1372176384','1372180480','1372184576','1372188672','1372192768','1372323840','1372585984','1372618752','1372651520',
310
- '1372684288','1372717056','1372749824','1372782592','1372815360','1372848128','1373110272','1373175808','1373241344','1373306880','1373372416','1373437952','1373503488','1373569024','1373634560','1374683136','1375207424','1375731712','1378877440','1379926016','1380188160','1380450304','1380712448','1380974592','1381105664','1381236736','1381367808','1381498880','1381761024','1382023168','1382039552','1382055936','1382072320','1382088704','1382105088','1382137856','1382154240','1382170624','1382187008','1382203392','1382205440','1382213632','1382219776','1382252544','1382268928','1382285312','1382301696','1382318080','1382334464','1382350848','1382367232','1382400000','1382416384','1382432768','1382449152','1382465536','1382481920','1382498304','1382514688','1382531072','1382547456','1382809600','1383071744','1383088128','1383096320','1383104512','1383112704','1383114752','1383116800','1383120896','1383129088','1383137280','1383145472','1383153664','1383161856','1383170048','1383186432','1383194624','1383202816','1383211008','1383219200','1383227392','1383243776','1383251968','1383260160','1383268352','1383272192','1383272448','1383276544','1383284736','1383292928','1383301120','1383309312','1383317504','1383325696','1383333888','1383350272','1383358464','1383374848','1383383040','1383391232','1383399424','1383407616','1383415808','1383424000','1383432192','1383440384','1383448576','1383456768','1383464960','1383469056','1383471104','1383473152','1383481344','1383497728','1383505920','1383514112','1383522304','1383530496','1383538688','1383546880','1383555072','1383563264','1383571456','1383579648','1383587840','1383591936','1383596032','1384120320','1384153088','1384185856','1384218624','1384251392','1384267776','1384284160','1384316928','1384349696','1384382464','1384415232','1384480768','1384513536','1384546304','1384579072','1384611840','1384644608','1384660992','1384677376','1384693760','1384710144','1384726528','1384742912','1384759296','1384775680','1384792064','1384808448','1384824832','1384841216','1384857600','1384873984','1384890368','1384923136','1384939520','1384955904','1384972288','1384988672','1385005056','1385021440','1385037824','1385054208','1385070592','1385086976','1385103360','1385119744',
311
- '1385136128','1385152512','1385168896','1385177088','1385185280','1385193472','1385201664','1385209856','1385218048','1385226240','1385234432','1385242624','1385250816','1385259008','1385267200','1385275392','1385283584','1385287680','1385291776','1385299968','1385308160','1385316352','1385324544','1385332736','1385340928','1385349120','1385357312','1385365504','1385373696','1385381888','1385398272','1385406464','1385414656','1385422848','1385431040','1385439232','1385447424','1385455616','1385463808','1385480192','1385488384','1385496576','1385504768','1385512960','1385521152','1385529344','1385537536','1385545728','1385553920','1385562112','1385570304','1385578496','1385586688','1385594880','1385603072','1385611264','1385619456','1385627648','1385635840','1385644032','1385652224','1385660416','1385668608','1385676800','1385684992','1385824256','1385955328','1386086400','1386217472','1386283008','1386348544','1386414080','1386479616','1386545152','1386610688','1386676224','1386741760','1387331584','1387397120',
312
- '1387462656','1387528192','1387593728','1387659264','1387790336','1388314624','1388322816','1388331008','1388339200','1388347392','1388363776','1388371968','1388380160','1388396544','1388404736','1388412928','1388421120','1388429312','1388437504','1388445696','1388453888','1388462080','1388470272','1388478464','1388486656','1388494848','1388503040','1388519424','1388527616','1388535808','1388544000','1388552192','1388560384','1388568576','1388576768','1388580864','1388584960','1388593152','1388601344','1388609536','1388617728','1388625920','1388634112','1388642304','1388650496','1388658688','1388666880','1388675072','1388683264','1388691456','1388699648','1388707840','1388716032','1388724224','1388732416','1388740608','1388748800','1388756992','1388765184','1388773376','1388781568','1388789760','1388797952','1388806144','1388814336','1388822528','1388830720','1388838912','1388871680','1388904448','1388937216','1388969984','1389002752','1389035520','1389068288','1389101056','1389133824','1389166592','1389199360','1389232128','1389264896','1389297664','1389330432','1389363200','1389379584','1389395968','1389412352','1389428736','1389445120','1389461504','1389477888','1389494272',
313
- '1389510656','1389527040','1389543424','1389576192','1389592576','1389608960','1389625344','1389641728','1389658112','1389674496','1389690880','1389707264','1389723648','1389756416','1389772800','1389789184','1389805568','1389821952','1389838336','1389854720','1389871104','1389887488','1389953024','1390018560','1390084096','1390149632','1390215168','1390280704','1390346240','1390411776','1392508928','1394606080','1396703232','1396834304','1396899840','1396965376','1396973568','1396981760','1396989952','1396998144','1397006336','1397014528','1397022720','1397030912','1397039104','1397047296','1397063680','1397071872','1397096448','1397227520','1397489664','1397751808','1398276096','1398800384','1398833152','1398865920','1398867968','1398872064','1398874112','1398876160','1398880256','1398882304','1398884352','1398886400','1398888448','1398890496','1398892544','1398896640','1398898688','1398931456','1398964224','1398996992','1399029760','1399062528','1399095296','1399128064','1399160832','1399193600','1399226368','1399259136','1399291904','1399324672','1399586816','1399717888','1399848960','1400111104','1400373248','1400635392','1400897536',
314
- '1400963072','1401028608','1401094144','1401159680','1401225216','1401290752','1401356288','1401421824','1401423872','1401425920','1401427968','1401430016','1401432064','1401436160','1401438208','1401440256','1401444352','1401446400','1401448448','1401450496','1401452544','1401454592','1401456640','1401460736','1401462784','1401464832','1401466880','1401468928','1401470976','1401473024','1401475072','1401477120','1401479168','1401481216','1401485312','1401487360','1401489408','1401491456','1401493504','1401495552','1401497600','1401499648','1401501696','1401503744','1401505792','1401509888','1401511936','1401513984','1401516032','1401518080','1401520128','1401522176','1401526272','1401528320','1401530368','1401532416','1401534464','1401536512','1401538560','1401540608','1401542656','1401544704','1401546752','1401548800','1401550848','1401552896','1401554944','1401556992','1401563136','1401565184','1401567232','1401569280','1401585664','1401602048','1401618432','1401634816','1401651200','1401667584','1401683968','1401749504','1401765888','1401782272','1401815040','1401817088','1401819136','1401821184','1401825280','1401829376','1401831424','1401833472','1401835520','1401837568','1401839616',
315
- '1401841664','1401843712','1401847808','1401849856','1401851904','1401853952','1401856000','1401858048','1401868288','1401870336','1401872384','1401874432','1401876480','1401878528','1401880576','1401882624','1401884672','1401886720','1401888768','1401890816','1401892864','1401894912','1401896960','1401901056','1401903104','1401905152','1401911296','1401913344','1401917440','1401919488','1401921536','1401923584','1401925632','1401927680','1401929728','1401931776','1401933824','1401935872','1401937920','1401939968','1401942016','1401944064','1401946112','1401962496','1401978880','1401995264','1402011648','1402028032','1402044416','1402060800','1402077184','1402093568','1402109952','1402142720','1402159104','1402175488','1402191872','1402208256','1402224640','1402241024','1402257408','1402273792','1402290176','1402306560','1402322944','1402339328','1402355712','1402372096','1402388480','1402404864','1402408960','1402413056','1402417152','1402421248','1402437632','1402454016','1402470400','1402994688','1403256832','1403322368','1403387904','1403396096','1403404288','1403412480','1403420672','1403428864','1403437056','1403445248','1403461632','1403469824','1403486208','1403494400','1403502592','1403510784','1403518976','1403535360','1403551744','1403568128','1403584512','1403600896','1403617280','1403633664','1403650048','1403666432','1403699200','1403715584','1403731968','1403748352','1403764736','1403781120','1403797504','1403813888','1403830272','1403846656','1403863040','1403879424','1403895808','1403912192','1403928576','1403944960','1403953152','1403961344','1403977728','1403994112','1404010496','1404026880','1404043264','1405091840','1406140416','1406205952','1406271488','1406337024','1406402560','1406468096','1406533632','1406599168','1406664704','1406672896','1406681088','1406689280','1406697472','1406705664','1406713856','1406722048','1406730240','1406746624','1406754816','1406763008','1406771200','1406779392','1406787584','1406795776','1406803968','1406812160','1406820352','1406828544','1406836736','1406844928','1406853120','1406861312','1406869504','1406877696','1406887936','1406889984','1406894080','1406902272','1406910464','1406918656','1406926848','1406935040','1406951424','1406959616','1406967808','1406976000','1406984192','1407000576',
316
- '1407016960','1407025152','1407033344','1407049728','1407057920','1407066112','1407074304','1407090688','1407098880','1407107072','1407115264','1407123456','1407131648','1407139840','1407148032','1407156224','1407164416','1407172608','1407180800','1407188992','1407320064','1407451136','1407483904','1407516672','1407549440','1407582208','1407614976','1407680512','1407713280','1407778816','1407844352','1407909888','1407975424','1408040960','1408106496','1408172032','1408237568','1408270336','1408303104','1408335872','1408368640','1408376832','1408385024','1408393216','1408397312','1408401408','1408434176','1408436224','1408438272','1408440320','1408442368','1408444416','1408450560','1408454656','1408456704','1408458752','1408460800','1408462848','1408466944','1408499712','1408532480','1408598016','1408630784','1408663552','1408696320','1408729088','1408761856','1409286144','1409548288','1409810432','1409941504','1410007040','1410072576','1410203648','1410269184','1410334720','1410342912','1410351104','1410359296','1410367488','1410375680','1410383872','1410392064','1410400256','1410408448','1410416640','1410424832','1410433024','1410441216','1410449408','1410457600',
317
- '1410465792','1410473984','1410490368','1410498560','1410506752','1410514944','1410523136','1410531328','1410539520','1410547712','1410555904','1410564096','1410572288','1410588672','1410596864','1410605056','1410613248','1410621440','1410629632','1410637824','1410646016','1410654208','1410662400','1410670592','1410678784','1410686976','1410695168','1410711552','1410719744','1410727936','1410736128','1410744320','1410752512','1410760704','1410768896','1410777088','1410785280','1410793472','1410801664','1410809856','1410818048','1410826240','1410834432','1410842624','1410850816','1410859008','1411383296','1411448832','1411514368','1411579904','1411645440','1411710976','1411776512','1411778560','1411780608','1411784704','1411788800','1411792896','1411796992','1411805184','1411809280','1411813376','1411817472','1411821568','1411825664','1411829760','1411833856','1411837952','1411842048','1411850240','1411858432','1411870720','1411872768','1411874816','1411876864','1411878912','1411880960','1411883008','1411887104','1411889152','1411895296','1411899392','1411901440','1411903488','1411907584','1411923968','1411940352','1411973120',
318
- '1412005888','1412038656','1412071424','1412104192','1412136960','1412169728','1412202496','1412235264','1412300800','1412333568','1412366336','1412399104','1412400128','1412400640','1412403712','1412403968','1412405760','1412406272','1412408832','1412409344','1412412160','1412412672','1412413440','1412413952','1412414720','1412414976','1412415488','1412431872','1412562944','1412628480','1412644864','1412661248','1412677632','1412685824','1412694016','1412710400','1412726784','1412743168','1412775936','1412792320','1412808704','1412825088','1412841472','1412857856','1412874240','1412890624','1412907008','1412923392','1412939776','1412956160','1413480448','1414004736','1414266880','1414529024','1415053312','1415184384','1415315456','1415446528','1415577600','1416101888','1416364032','1416626176','1417150464','1417674752','1421869056','1422393344','1422491648','1422508032','1422512128','1422516224','1422520320','1422524416','1422589952','1422655488','1422721024','1422729216','1422737408','1422745600','1422753792','1422761984','1422770176','1422786560','1422852096','1422917632',
319
- '1423441920','1423704064','1423966208','1424097280','1424228352','1424359424','1424490496','1424523264','1424556032','1424588800','1424621568','1424625664','1424629760','1424633856','1424637952','1424642048','1424646144','1424650240','1424654336','1424687104','1424719872','1424752640','1424785408','1424818176','1424850944','1424883712','1424916480','1424949248','1424965632','1424982016','1425014784','1425031168','1425047552','1425063936','1425080320','1425096704','1425113088','1425145856','1425162240','1425178624','1425195008','1425211392','1425227776','1425244160','1425260544','1425276928','1425293312','1425309696','1425326080','1425342464','1425358848','1425375232','1425391616','1425408000','1425424384','1425426432','1425428480','1425430528','1425432576','1425434624','1425436672','1425438720','1425440768','1425442816','1425444864','1425446912','1425448960','1425451008','1425461248','1425463296','1425467392','1425469440','1425471488',
320
- '1425473536','1425474560','1425475584','1425481728','1425483776','1425484800','1425485824','1425506304','1425522688','1425539072','1425801216','1425833984','1425850368','1425866752','1425883136','1425899520','1425915904','1425932288','1425948672','1425965056','1425981440','1425997824','1426014208','1426030592','1426046976','1426063360','1426587648','1426604032','1426636800','1426653184','1426669568','1426685952','1426702336','1426718720','1426731008','1426735104','1426751488','1426767872','1426784256','1426800640','1426817024','1426833408','1426849792','1426866176','1426882560','1426898944','1426915328','1426931712','1426948096','1426964480','1426980864','1426997248','1427013632','1427030016','1427046400','1427062784','1427095552','1427111936','1427177472','1427243008','1427308544','1427374080','1427439616','1427505152','1427570688','1427636224','1427668992','1427701760','1427767296','1427800064','1427832832','1427865600','1427898368','1427914752','1427931136','1427947520','1427963904','1427980288','1427996672','1428013056','1428029440','1428045824','1428062208','1428078592','1428094976','1428103168','1428119552','1428121600','1428123648','1428127744','1428129792','1428131840','1428133888','1428135936','1428137984','1428140032','1428142080','1428144128','1428152320','1428160512','1429209088','1430257664','1430388736','1430519808','1430650880','1430781952','1431044096','1431306240','1431568384','1431830528','1431838720','1431846912','1431855104','1431863296','1431871488','1431879680','1431887872','1431896064','1431904256','1431912448','1431920640','1431928832','1431937024','1431945216','1431953408','1431961600','1431969792','1431977984','1431986176','1431994368','1432002560','1432010752','1432018944','1432024064','1432025088','1432027136','1432035328','1432043520','1432051712','1432054016','1432054272','1432054528','1432055808','1432056832','1432057344','1432058624','1432059904','1432068096','1432076288','1432084480','1432092672','1432100864','1432109056','1432125440','1432133632','1432150016','1432158208','1432166400','1432174592','1432182784','1432190976','1432199168','1432207360','1432215552','1432223744','1432240128','1432248320','1432256512','1432264704','1432272896','1432281088','1432289280','1432297472','1432305664','1432313856',
321
- '1432322048','1432338432','1432346624','1433403392','1433411584','1433419776','1433427968','1433436160','1433444352','1433452544','1433460736','1433468928','1433477120','1433485312','1433493504','1433501696','1433509888','1433518080','1433526272','1433534464','1433542656','1433550848','1433559040','1433567232','1433575424','1433583616','1433591808','1433600000','1433608192','1433616384','1433624576','1433632768','1433640960','1433649152','1433657344','1433665536','1433673728','1433681920','1433690112','1433698304','1433706496','1433714688','1433722880','1433731072','1433739264','1433747456','1433755648','1433763840','1433772032','1433796608','1433804800','1433812992','1433821184','1433829376','1433831424','1433833472','1433835520','1433837568','1433839616','1433841664','1433843712','1433845760','1433847808','1433849856','1433851904','1433853952','1433856000','1433858048','1433860096','1433862144','1433864192','1433866240','1433870336','1433872384','1433874432','1433876480','1433878528','1433880576','1433882624','1433884672','1433886720','1433888768','1433890816','1433892864','1433894912','1433896960','1433899008','1433901056','1433905152','1433907200','1433909248','1433911296','1433913344','1433915392','1433917440',
322
- '1433919488','1433921536','1433923584','1433925632','1433927680','1434189824','1434451968','1434517504','1434550272','1434583040','1434615808','1434648576','1434681344','1434714112','1434746880','1434779648','1434812416','1434845184','1434877952','1434910720','1434943488','1434976256','1435107328','1435238400','1435500544','1436024832','1436090368','1436155904','1436221440','1436286976','1436418048','1436422144','1436424192','1436426240','1436428288','1436430336','1436432384','1436436480','1436438528','1436440576','1436442624','1436444672','1436446720','1436450816','1436452864','1436454912','1436456960','1436459008','1436461056','1436463104','1436465152','1436467200','1436469248','1436471296','1436473344','1436475392','1436477440','1436479488','1436481536','1436483584','1436485632','1436487680','1436489728','1436491776','1436495872','1436497920','1436499968','1436504064','1436508160','1436510208','1436512256','1436514304','1436516352','1436520448','1436522496','1436524544','1436526592','1436528640','1436530688','1436532736','1436536832','1436538880','1436540928','1436542976','1436545024','1436547072','1436549120','1436811264','1437073408','1437335552',
323
- '1437597696','1438121984','1438187520','1438253056','1438318592','1438384128','1438400512','1438433280','1438515200','1438580736','1438646272','1438662656','1438679040','1438695424','1438711808','1438728192','1438744576','1438748672','1438752768','1438760960','1438777344','1438793728','1438810112','1438826496','1438838784','1438840832','1438841856','1438842368','1438842880','1438859264','1438875648','1438892032','1438908416','1438924800','1438941184','1438957568','1438973952','1439006720','1439023104','1439039488','1439055872','1439072256','1439088640','1439105024','1439121408','1439154176','1439170560','1439236096','1439301632','1439305728','1439309824','1439318016','1439326208','1439330304','1439334400','1439338496','1439346688','1439354880','1439358976','1439367168','1439383552','1439399936','1439432704','1439437824','1439438336','1439438848','1439439360','1439440384','1439440896','1439441920','1439442944','1439446528','1439447040','1439449088','1439450112','1439451648','1439451904','1439452160','1439452672','1439453184','1439457280','1439457792','1439459328','1439459840','1439461376','1439462400','1439463424','1439463936','1439466496','1439467008','1439467520','1439468032','1439470592','1439471616','1439473664','1439474688','1439482368','1439482880','1439485952','1439490048','1439498240','1439563776','1439629312','1439694848','1439825920','1439956992','1440251904','1440284672','1440317440','1440350208','1440382976','1440415744','1440448512','1440481280','1440514048','1440546816','1440579584','1440645120','1440653312','1440669696','1440671744','1440672768','1440710656','1440743424','1441267712','1441275904','1441284096','1441292288','1441300480','1441308672','1441316864','1441325056','1441333248','1441349632',
324
- '1441357824','1441366016','1441374208','1441382400','1441390592','1441398784','1441415168','1441423360','1441431552','1441439744','1441447936','1441456128','1441464320','1441472512','1441480704','1441488896','1441497088','1441505280','1441521664','1441529856','1441538048','1441546240','1441554432','1441564672','1441566720','1441568768','1441570816','1441579008','1441587200','1441603584','1441611776','1441619968','1441628160','1441636352','1441644544','1441652736','1441660928','1441669120','1441677312','1441685504','1441693696','1441701888','1441710080','1441718272','1441726464','1441734656','1441742848','1441751040','1441759232','1441767424','1441775616','1441783808','1441792000','1442316288','1442381824','1442447360','1442512896','1442578432','1442643968','1442709504','1442775040','1442779136','1442783232','1442787328','1442791424','1442799616','1442803712','1442807808','1442811904','1442816000','1442820096','1442822144','1442824192','1442828288','1442832384','1442836480','1442840576','1444937728','1445068800','1445199872','1445330944','1445396480','1445462016','1445986304','1446051840','1446117376','1446182912','1446248448','1446313984','1446445056','1446510592',
325
- '1446543360','1446576128','1446608896','1446641664','1446674432','1446707200','1446739968','1446772736','1446805504','1446838272','1446871040','1446920192','1446936576','1446952960','1446969344','1446985728','1447010304','1447018496','1447026688','1448083456','1449132032','1449394176','1449459712','1449525248','1449590784','1449656320','1449657088','1449660160','1449660416','1449661440','1449662464','1449664512','1449668608','1449672704','1449673728','1449674752','1449676800','1449684992','1449687040','1449688064','1449695232','1449697280','1449699328','1449707520','1449709568','1449710592','1449711104','1449713152','1449714176','1449715712','1449719808','1449720832','1449722112','1449722368','1449723136','1449723392','1449726976','1449728000','1449730048','1449732096','1449734144','1449736192','1449750528','1449752576','1449754624','1449758720','1449768960','1449769472','1449769984','1449771008','1449773056','1449774080','1449776128','1449776640','1449780480','1449780992','1449782016','1449782272','1449783296','1449783552','1449783808','1449784320','1449785344','1449786368','1449789440','1449790208','1449790720','1449791488','1449792512','1449793280','1449793536','1449811200','1449811456','1449811968','1449812992','1449813504','1449814272','1449815040','1449815296','1449816064','1449816576','1449817856','1449820928','1449821184','1449822720','1449823744','1449828352','1449830400','1449831936','1449832448','1449852928','1449857024','1449859584','1449860608','1449863680','1449863936','1449870848','1449871616','1449871872','1449872384','1449873408','1449877504','1449878528','1449879040','1449879296','1449883648','1449885696','1449889792','1449893888','1449901824','1449902080','1449902336','1449903104','1449906176','1449910272','1449918464','1449951232','1449984000','1449992192','1450000384','1450008576','1450016768','1450024960','1450033152','1450041344','1450049536','1450057728','1450065920','1450074112','1450082304','1450090496','1450106880','1450115072','1450123264','1450131456','1450139648','1450147840','1450151936','1450153984',
326
- '1450156032','1450164224','1450166272','1450170368','1450172416','1450174464','1450176512','1450178560','1450180608','1450311680','1450442752','1450704896','1451229184','1455423488','1459617792','1461714944','1462763520','1463812096','1464074240','1464336384','1464467456','1464598528','1464602624','1464606720','1464614912','1464664064','1464860672','1465384960','1465647104','1465909248','1465942016','1465974784','1466007552','1466040320','1466073088','1466105856','1466122240','1466130432','1466138624','1466171392','1466204160','1466236928','1466241024','1466249216','1466253312','1466261504','1466265600','1466269696','1466302464','1466335232','1466368000','1466400768','1466433536','1466499072','1466564608','1466630144','1466695680','1466761216','1466826752','1466892288','1466957824','1467219968','1467236352','1467252736','1467269120','1467285504','1467301888','1467318272','1467334656','1467351040','1467367424','1467383808','1467400192','1467416576','1467432960','1467449344','1467457536',
327
- '1467465728','1467473920','1467482112','1467613184','1467744256','1467875328','1467940864','1468006400','1472200704','1472266240','1472331776','1472397312','1472462848','1472528384','1472593920','1472659456','1472724992','1472856064','1472987136','1473249280','1473773568','1474297856','1474330624','1474396160','1474428928','1474461696','1474494464','1474527232','1474560000','1474592768','1474625536','1474658304','1474691072','1474723840','1474756608','1474822144','1474887680','1474953216','1475018752','1475084288','1475086336','1475092480','1475094528','1475096576','1475098624','1475102720','1475104768','1475106816','1475108864','1475110912','1475112960','1475115008','1475117056','1475119104','1475121152','1475123200','1475125248','1475127296','1475129344','1475131392','1475133440','1475135488','1475137536','1475139584','1475141632','1475143680','1475145728','1475147776','1475149824','1475151872','1475153920','1475155968','1475158016','1475160064','1475162112','1475170304','1475172352','1475174400','1475176448','1475178496','1475180544','1475184640','1475186688','1475188736','1475190784','1475192832','1475194880','1475196928','1475198976',
328
- '1475201024','1475203072','1475205120','1475207168','1475209216','1475211264','1475213312','1475215360','1475223552','1475233792','1475235840','1475237888','1475239936','1475241984','1475244032','1475248128','1475250176','1475252224','1475254272','1475256320','1475258368','1475260416','1475262464','1475266560','1475268608','1475270656','1475272704','1475274752','1475276800','1475278848','1475280896','1475282944','1475284992','1475287040','1475291136','1475295232','1475297280','1475299328','1475301376','1475303424','1475305472','1475307520','1475309568','1475311616','1475313664','1475315712','1475317760','1475319808','1475321856','1475323904','1475328000','1475330048','1475332096','1475334144','1475336192','1475338240','1475340288','1475342336','1475344384','1475344640','1475345920','1475346432','1475362816','1475379200','1475395584','1475411968','1475428352','1475444736','1475461120','1475477504','1475493888','1475510272','1475543040','1475545088','1475559424','1475575808','1475592192','1475608576','1475624960','1475641344','1475657728','1475674112','1475690496','1475706880','1475723264','1475739648',
329
- '1475756032','1475772416','1475788800','1475805184','1475821568','1475837952','1475846144','1475854336','1475862528','1475864576','1475866624','1475868672','1475870720','1475878912','1475887104','1475895296','1475903488','1475911680','1475919872','1475928064','1475952640','1475960832','1475969024','1475977216','1475985408','1476009984','1476018176','1476026368','1476034560','1476042752','1476050944','1476067328','1476075520','1476083712','1476116480','1476124672','1476132864','1476141056','1476149248','1476157440','1476165632','1476173824','1476182016','1476190208','1476198400','1476206592','1476214784','1476222976','1476231168','1476239360','1476247552','1476255744','1476257792','1476259840','1476263936','1476272128','1476280320','1476288512','1476296704','1476304896','1476313088','1476321280','1476329472','1476337664','1476345856','1476354048','1476362240','1476370432','1476378624','1476386816','1476395008','1478492160','1480589312','1481637888','1481646080','1481654272','1481662464','1481678848','1481684992','1481687040','1481695232','1481703424','1481711616','1481719808','1481728000','1481736192','1481744384','1481752576',
330
- '1481760768','1481768960','1481777152','1481785344','1481793536','1481801728','1481809920','1481818112','1481826304','1481834496','1481842688','1481850880','1481859072','1481867264','1481875456','1481883648','1481891840','1481900032','1481908224','1481916416','1481924608','1481932800','1481940992','1481949184','1481957376','1481965568','1481973760','1481981952','1481990144','1481998336','1482006528','1482022912','1482031104','1482039296','1482047488','1482055680','1482063872','1482072064','1482080256','1482088448','1482096640','1482104832','1482113024','1482121216','1482129408','1482137600','1482145792','1482153984','1482162176','1482686464','1482948608','1483210752','1483735040','1483997184','1484128256','1484259328','1484783616','1484849152','1484914688','1484980224','1485045760','1485111296','1485148160','1485150208','1485242368','1485246464','1485250560','1485254656','1485258752','1485266944','1485271040','1485275136','1485283328','1485291520','1485307904','1485832192','1485963264','1486028800','1486061568','1486094336','1486127104','1486159872','1486192640','1486225408','1486258176','1486292992','1486295040','1486297088','1486299136','1486301184','1486303232','1486305280','1486307328','1486309376','1486311424','1486313472','1486315520','1486317568','1486321664','1486323712','1486325760','1486327808','1486329856','1486331904','1486333952','1486336000','1486338048','1486340096','1486342144','1486344192','1486346240','1486348288','1486350336','1486352384','1486354432','1486356480','1486487552','1486618624','1486684160','1486749696','1486815232','1486880768','1488977920','1489240064','1489305600','1489338368','1489371136','1489436672','1489502208','1489534976','1489567744','1489600512','1489633280','1489666048','1489674240','1489676288','1489698816','1489731584','1489764352','1489797120','1489829888','1489862656','1489928192','1489960960','1489993728','1490026496','1490042880','1490059264','1490075648','1490092032','1490108416','1490124800','1490157568','1490173952','1490190336','1490206720','1490223104','1490255872','1490272256','1490288640','1490305024','1490321408','1490337792','1490354176','1490386944','1490403328','1490419712','1490436096','1490452480','1490468864',
331
- '1490501632','1490518016','1490534400','1490550784','1490616320','1490681856','1490747392','1490812928','1490878464','1490944000','1491075072','1493172224','1493303296','1493434368','1493565440','1493696512','1493958656','1494220800','1494228992','1494237184','1494245376','1494253568','1494261760','1494269952','1494278144','1494286336','1494294528','1494302720','1494310912','1494319104','1494327296','1494335488','1494343680','1494351872','1494360064','1494368256','1494376448','1494384640','1494392832','1494401024','1494409216','1494417408','1494433792','1494441984','1494450176','1494458368','1494474752','1494482944','1494499328','1494507520','1494523904','1494532096','1494540288','1494548480','1494556672','1494564864','1494573056','1494581248','1494589440','1494597632','1494605824','1494614016','1494616064','1494618112','1494622208','1494624256','1494626304','1494626560','1494626816','1494627072','1494627328','1494630400','1494638592','1494646784','1494663168','1494665216','1494667264','1494669312','1494675456','1494679552','1494695936','1494704128',
332
- '1494736896','1494745088','1494810624','1494843392','1494876160','1494908928','1494941696','1494974464','1495007232','1495040000','1495042048','1495044096','1495046144','1495048192','1495050240','1495052288','1495054336','1495056384','1495058432','1495060480','1495062528','1495064576','1495066624','1495068672','1495070720','1495072768','1495105536','1495138304','1495171072','1495203840','1495205888','1495207936','1495212032','1495214080','1495216128','1495218176','1495220224','1495222272','1495224320','1495228416','1495230464','1495236608','1495238656','1495240704','1495242752','1495244800','1495246848','1495248896','1495250944','1495252992','1495255040','1495257088','1495259136','1495261184','1495263232','1495265280','1495267328','1495269376','1495277568','1495279616','1495279872','1495280384','1495280640','1495285760','1495287808','1495289856','1495293952','1495298048','1495300096','1495301120','1495312384','1495312896','1495313152','1495314432','1495316480','1495316992','1495317504','1495318528','1495319552',
333
- '1495320064','1495322624','1495324672','1495332864','1495333888','1495336448','1495336960','1495339008','1495339264','1495339520','1495340032','1495345152','1495346176','1495346688','1495347200','1495351296','1495351552','1495351808','1495352320','1495353344','1495362560','1495363584','1495364608','1495364864','1495367680','1495368192','1495369216','1495369472','1495369728','1495371776','1495376896','1495377408','1495385600','1495386624','1495387136','1495387648','1495387904','1495388160','1495392256','1495394816','1495395328','1495396352','1495396864','1495398912','1495399424','1495399936','1495400448','1495405568','1495406080','1495408640','1495416832','1495419392','1495419904','1495422976','1495423488','1495424512','1495425024','1495426560','1495426816','1495427072','1495427584','1495428864','1495429120','1495433216','1495441408','1495442432','1495443456','1495443968','1495444480','1495444736','1495445504','1495446016','1495447552','1495449600','1495451648','1495452160','1495461888','1495463936','1495473152','1495474176','1495479808','1495480064','1495480832','1495481344','1495482368','1495482880','1495488768','1495489280','1495492608','1495494656','1495498240','1495498496','1495499776','1495500288','1495505920','1495506432','1495508992','1495510016','1495511040',
334
- '1495511552','1495511808','1495515648','1495516160','1495517184','1495535616','1495536128','1495539712','1495540736','1495541248','1495541760','1495543808','1495547904','1495549952','1495556096','1495560192','1495566848','1495567360','1495576576','1495580672','1495581184','1495581696','1495589376','1495589888','1495591936','1495592960','1495596032','1495596544','1495597056','1495601152','1495603200','1495604736','1495605248','1495607296','1495607808','1495608320','1495613440','1495614464','1495617536','1495618560','1495620608','1495621376','1495623168','1495623680','1495630080','1495631360','1495642112','1495644160','1495647744','1495648256','1495652864','1495653376','1495655424','1495656448','1495657472','1495658496','1495662592','1495668736','1495669248','1495669760','1495670784','1495672832','1495674880','1495683072','1495687168','1495688192','1495688704','1495689216','1495703552','1495704576','1495717888','1495719936','1495724544','1495725056','1495745792','1495746048','1495754752','1495755776','1495759360','1495759616',
335
- '1495760896','1495762944','1495764992','1495765760','1495766016','1495771136','1495772160','1495774208','1495775232','1495775744','1495776256','1495781376','1495782400','1495782656','1495783168','1495783424','1495789824','1495790080','1495790336','1495790848','1495793664','1495795712','1495803392','1495803904','1495805952','1495810048','1495813632','1495814144','1495815168','1495816192','1495816704','1495817216','1495817472','1495818240','1495820800','1495821312','1495821824','1495822336','1495826432','1495826944','1495829504','1495830016','1495837696','1495838720','1495846912','1495847424',
336
- '1495855104','1495859200','1495861248','1495865344','1495866112','1495866880','1495867392','1495867904','1495870464','1495871488','1495871744','1495872512','1495873536','1495874048','1495874560','1495900160','1495902208','1495907584','1495908352','1495922688','1495926784','1495927040','1495927296','1495927552','1495932928','1495933440','1495939072','1495939584','1495942144','1495942656','1495963136','1495963648','1495964416','1495966720','1495967744','1495968768','1495977984','1495979008','1495983104','1495983616','1495985152','1495986176','1495990272','1495994368','1495998464','1495998720','1495999488','1496000000','1496004608','1496005632','1496005888','1496008192','1496008704','1496012800','1496016896','1496018944','1496020992','1496036864','1496037376','1496038400','1496038912','1496042496','1496043008','1496045568','1496049664','1496051712','1496055808','1496057856','1496058112','1496059904','1496064000','1496066048','1496067072','1496074240','1496075264','1496079360','1496081408','1496084480','1496084992','1496086016','1496086528','1496093184','1496093696','1496095744',
337
- '1496096768','1496104448','1496104960','1496107520','1496108032','1496111104','1496113152','1496119296','1496121344','1496122368','1496130560','1496131584','1496133632','1496137728','1496138496','1496138752','1496139264','1496141824','1496142336','1496150016','1496152064','1496153088','1496153600','1496154112','1496180224','1496180736','1496182784','1496188928','1496189952','1496190976','1496193024','1496198144','1496198656','1496202240','1496202752','1496203264','1496205312','1496210944','1496211456','1496213504','1496215552','1496231936','1496233984','1496236032','1496238080','1496240128','1496256512','1496260608','1496263680','1496264704','1496268800','1496272896','1496285184','1496293376','1496299520','1496301568','1496317952','1497366528','1498415104','1499463680','1499594752','1499725824','1499856896','1499987968','1499996160','1500004352','1500020736','1500028928','1500037120','1500045312','1500061696','1500069888','1500078080','1500086272','1500094464','1500102656','1500110848','1500119040','1500127232','1500135424','1500143616','1500151808','1500153856','1500155904','1500157952','1500160000','1500162048','1500164096',
338
- '1500166144','1500168192','1500170240','1500172288','1500174336','1500176384','1500178432','1500180480','1500182528','1500184576','1500186624','1500188672','1500192768','1500194816','1500196864','1500198912','1500200960','1500203008','1500205056','1500207104','1500209152','1500211200','1500213248','1500217344','1500219392','1500221440','1500223488','1500225536','1500227584','1500229632','1500231680','1500233728','1500237824','1500241920','1500243968','1500246016','1500248064','1500250112','1500266496','1500282880','1500299264','1500315648','1500332032','1500348416','1500397568','1500413952','1500430336','1500446720','1500463104','1500479488','1500495872','1500512256','1500643328','1500774400','1500905472','1501036544','1501298688','1501560832','1501822976','1502085120','1502216192','1502347264','1502478336','1502609408','1502625792','1502642176','1502658560','1502674944','1502691328','1502707712','1502715904','1502717952','1502720000','1502722048','1502724096','1502740480','1502756864','1502773248','1502789632','1502806016','1502822400','1502838784','1502855168','1502871552','1502887936','1502904320','1502920704','1502937088','1502953472','1502969856','1502986240','1503002624','1503006720','1503010816','1503019008',
339
- '1503051776','1503068160','1503084544','1503100928','1503117312','1503133696','1503395840','1503657984','1503690752','1503723520','1503789056','1503821824','1503854592','1503887360','1503920128','1503985664','1504018432','1504051200','1504083968','1504116736','1504149504','1504247808','1504313344','1504378880','1504444416','1504509952','1504575488','1504641024','1504706560','1504837632','1504968704','1505099776','1505230848','1505239040','1505247232','1505255424','1505263616','1505271808','1505280000','1505288192','1505296384','1505304576','1505312768','1505320960','1505329152','1505337344','1505345536','1505353728','1505361920','1505370112','1505378304','1505386496','1505394688','1505402880','1505411072','1505413120','1505415168','1505417216','1505419264','1505427456','1505435648','1505443840','1505460224','1505478656','1505482752','1505484800','1505492992','1505501184','1505509376','1505511424','1505517568','1505525760','1505533952','1505542144','1505550336','1505566720','1505574912','1505583104','1505607680','1505615872','1505624064','1505632256','1505648640','1505665024','1505673216','1505681408',
340
- '1505689600','1505697792','1505705984','1505714176','1505722368','1505738752','1505746944','1505755136','1506017280','1506082816','1506148352','1506279424','1506312192','1506316288','1506322432','1506324480','1506328576','1506330624','1506332672','1506334720','1506336768','1506338816','1506340864','1506342912','1506344960','1506377728','1506410496','1506443264','1506476032','1506508800','1506541568','1506574336','1506582528','1506607104','1506639872','1506672640','1506689024','1506705408','1506742272','1506744320','1506746368','1506750464','1506752512','1506754560','1506758656','1506760704','1506764800','1506766848','1506768896','1506770944','1506772992','1506775040','1506777088','1506785280','1506787328','1506789376','1506791424','1506793472','1506795520','1506799616','1506801664','1506803712','1506869248','1506934784','1507000320','1507065856','1507131392','1507196928','1507262464','1507328000','1507393536','1507459072','1507524608','1507525632',
341
- '1507531776','1507540992','1507557376','1507573760','1507590144','1507655680','1507659776','1507663872','1507667968','1507672064','1507676160','1507680256','1507684352','1507688448','1507696640','1507700736','1507704832','1507708928','1507713024','1507717120','1507721216','1507753984','1507819520','1507852288','1508114432','1508376576','1508392960','1508442112','1508458496','1508466688','1508468736','1508470784','1508474880','1508491264','1508507648','1508524032','1508540416','1508556800','1508573184','1508589568','1508605952','1508622336','1508638720','1508655104','1508671488','1508687872','1508704256','1508720640','1508737024','1508753408','1508769792','1508786176','1508802560','1508818944','1508835328','1508851712','1508868096','1508884480','1508900864','1509163008','1509425152','1509429248','1509433344','1509437440','1509443584','1509445632','1509449728','1509453824','1509457920','1509462016','1509466112','1509470208','1509478400','1509482496','1509486592','1509490688','1509494784','1509498880','1509502976','1509507072','1509511168','1509515264','1509519360','1509535744','1509537792','1509539840','1509543936','1509548032','1509564416','1509568512','1509572608','1509576704','1509580800','1509584896','1509588992','1509593088','1509601280','1509605376','1509609472','1509617664','1509621760','1509625856','1509629952','1509634048','1509638144','1509642240','1509646336','1509650432','1509654528','1509658624','1509666816','1509670912','1509679104','1509683200','1509687296','1509703680','1509720064','1509736448','1509752832','1509769216','1509785600','1509801984','1509818368','1509851136','1509867520','1509883904','1509900288','1509916672','1509933056','1509937152','1509939200','1509941248','1509947392','1509949440','1518338048','1519452160','1519517696','1519583232','1519648768','1519714304','1519779840','1519910912','1519943680','1519976448','1520009216','1520041984','1520074752','1520107520','1520140288','1520173056','1520205824','1520271360','1520304128','1520435200','1521483776','1522008064','1522139136','1522270208','1522401280','1522532352','1524629504','1525678080','1526726656','1531183104','1531445248','1531707392','1531969536','1532100608','1532231680','1532362752','1532493824','1532559360','1532624896',
342
- '1532626944','1532631040','1532633088','1532635136','1532637184','1532639232','1532641280','1532643328','1532647424','1532649472','1532651520','1532653568','1532655616','1532657664','1532661760','1532665856','1532674048','1532682240','1532690432','1532755968','1532821504','1532887040','1532952576','1533018112','1533149184','1533280256','1533411328','1533413376','1533415424','1533417472','1533419520','1533421568','1533423616','1533425664','1533429760','1533431808','1533433856','1533435904','1533437952','1533442048','1533444096','1533446144','1533448192','1533450240','1533452288','1533454336','1533456384','1533458432','1533460480','1533462528','1533464576','1533466624','1533468672','1533470720','1533472768','1533474816','1533476864','1533480960','1533483008','1533485056','1533487104','1533489152','1533491200','1533493248','1533499392','1533501440','1533503488','1533505536','1533507584','1533509632','1533511680','1533513728','1533515776','1533517824','1533519872','1533526016','1533532160','1533534208','1533536256','1533538304','1533540352','1533542400','1533607936','1533640704','1533659136','1533661184','1533663232','1533665280','1533667328',
343
- '1533669376','1533671424','1533673472','1533677568','1533679616','1533681664','1533689856','1533698048','1533702144','1533704192','1533722624','1533724672','1533726720','1533728768','1533730816','1533732864','1533734912','1533739008','1533820928','1533837312','1533845504','1533847552','1533849600','1533851648','1533853696','1533870080','1533874176','1533878272','1533880320','1533882368','1533886464','1533894656','1533896704','1533900800','1533902848','1533911040','1533913088','1533915136','1533919232','1533921280','1533923328','1533925376','1533927424','1533929472','1533933568','1533935616','1534066688','1534328832','1534459904','1534590976','1534656512','1534722048','1534787584','1534791680','1534795776','1534803968','1534808064','1534812160','1534816256','1534820352','1534824448','1534828544','1534836736','1534840832','1534844928','1534849024','1534853120','1534918656','1534984192','1534988288','1535049728','1535115264','1535377408','1535442944','1535451136','1535459328','1535475712','1535508480','1535574016','1535578112','1535582208','1535590400','1535594496','1535598592','1535602688','1535606784','1535610880','1535614976','1535619072',
344
- '1535623168','1535627264','1535631360','1535635456','1535639552','1535672320','1535737856','1535770624','1535803392','1535836160','1535868928','1535901696','1535934464','1535967232','1536000000','1536032768','1536036864','1536040960','1536045056','1536049152','1536051200','1536057344','1536061440','1536065536','1536065792','1536066304','1536067072','1536067328','1536067584','1536067840','1536068096','1536068352','1536068864','1536069120','1536069376','1536069632','1536073728','1536077824','1536081920','1536086016','1536090112','1536094208','1536098304','1536114688','1536118784','1536122880','1536126976','1536131072','1536143360','1536147456','1536151552','1536155648','1536159744','1536163840','1536180224','1536196608','1536212992','1536229376','1536245760','1536262144','1536278528','1536294912','1536311296','1536319488','1536321536','1536325632','1536327680','1536344064','1536360448','1536376832','1536393216','1536409600','1536425984','1536442368','1536458752','1536475136','1536491520','1536507904','1536524288','1536540672','1536557056','1536573440',
345
- '1536589824','1536614400','1536622592','1536626688','1536630784','1536634880','1536643072','1536647168','1536651264','1536655360','1536659456','1536663552','1536667648','1536675840','1536679936','1536684032','1536688128','1537212416','1538260992','1538785280','1538793472','1538801664','1538809856','1538818048','1538826240','1538834432','1538842624','1538850816','1538859008','1538875392','1538883584','1538891776','1538897920','1538899968','1538908160','1538916352','1538924544','1538932736','1538940928','1538949120','1538957312','1538965504','1538973696','1538981888','1538990080','1538998272','1539006464','1539014656','1539022848','1539031040','1539039232','1539047424','1539055616','1539063808','1539072000','1539080192','1539088384','1539112960','1539115008','1539117056','1539123200','1539125248','1539127296','1539129344','1539131392','1539133440','1539135488','1539137536','1539139584','1539141632','1539143680','1539145728','1539147776','1539149824','1539151872','1539153920','1539155968','1539162112','1539164160','1539166208','1539168256','1539170304','1539172352','1539176448','1539178496','1539186688','1539194880',
346
- '1539203072','1539207168','1539211264','1539213312','1539215360','1539219456','1539221504','1539223552','1539225600','1539227648','1539229696','1539231744','1539233792','1539235840','1539237888','1539239936','1539244032','1539260416','1539276800','1539280896','1539284992','1539289088','1539293184','1539297280','1539301376','1539309568','1539311616','1539312640','1539314688','1539316736','1539317760','1539318784','1539319808','1539320832','1539321856','1539322880','1539323904','1539324928','1539325952','1539326976','1539329024','1539330048','1539331072','1539332096','1539333120','1539335168','1539336192','1539337216','1539338240','1539339264','1539340288','1539341312','1539342336','1539345408','1539346432','1539347456','1539348480','1539351552','1539352576','1539355648','1539357696','1539358720','1539359744','1539360768','1539361280','1539361792','1539362816','1539363840','1539364864','1539365888','1539366912','1539368960','1539369984','1539371008','1539373056','1539374080','1539375104','1539377152','1539378176','1539380224','1539381248','1539382272','1539383296','1539384320','1539385344','1539385856','1539386368',
347
- '1539387392','1539388416','1539389440','1539389952','1539391488','1539392512','1539393536','1539393792','1539394048','1539394304','1539394560','1539396608','1539397632','1539398144','1539398656','1539399680','1539401728','1539402240','1539402752','1539403264','1539405824','1539406848','1539408896','1539409920','1539410944','1539411968','1539412992','1539415040','1539416064','1539417088','1539418112','1539419136','1539420160','1539421184','1539422208','1539423232','1539425280','1539426304','1539427328','1539428352','1539429376','1539434496','1539435520','1539437568','1539439616','1539441152','1539441664','1539442176','1539442688','1539443200','1539444736','1539445248','1539445760','1539446272','1539447296','1539447808','1539448832','1539449344','1539449856','1539450368','1539450880','1539451392','1539452416','1539452928','1539453440','1539454976','1539455488','1539456000','1539456512','1539457024','1539457536','1539458048','1539459072','1539459584','1539460096','1539460608','1539461632','1539462144','1539462656','1539463168','1539463680','1539464192','1539464704','1539465216','1539466752','1539467776','1539468288',
348
- '1539468800','1539469824','1539470336','1539471360','1539471872','1539472896','1539473408','1539473920','1539474432','1539474944','1539475456','1539475968','1539476992','1539477504','1539478016','1539478528','1539479040','1539480064','1539480576','1539481088','1539481600','1539482112','1539482624','1539483648','1539484672','1539485696','1539486208','1539486720','1539487744','1539488256','1539488768','1539489280','1539490816','1539491328','1539491840','1539492352','1539492864','1539493376','1539493888','1539494400','1539494912','1539495936','1539496448','1539496960','1539497472','1539497984','1539498496','1539499008','1539499520','1539500544','1539501056','1539501568','1539502592','1539503104','1539504128','1539504640','1539505152','1539506176','1539506688','1539507200','1539508224','1539508736','1539509760','1539510272','1539510784','1539511296','1539511808','1539512320','1539512832','1539513344','1539513856','1539514368','1539514880','1539515392','1539515904','1539516416','1539516928','1539517440','1539517952','1539518464','1539519488','1539520000','1539520512','1539521024','1539521536','1539522048','1539523584','1539524096','1539524608','1539525120','1539525632','1539526144',
349
- '1539526656','1539527168','1539527680','1539528192','1539528704','1539529216','1539529728','1539530240','1539530752','1539531264','1539531776','1539532800','1539533312','1539533824','1539534336','1539534848','1539535360','1539535872','1539536384','1539536896','1539537408','1539537920','1539540480','1539540992','1539541504','1539542016','1539542528','1539543040','1539543552','1539544064','1539544576','1539545088','1539545600','1539546112','1539546624','1539547136','1539547648','1539548160','1539548672','1539549184','1539549696','1539550208','1539550720','1539551232','1539551744','1539552256','1539552768','1539553280','1539553792','1539554304','1539554816','1539555328','1539555840','1539556864','1539557376','1539557888','1539558400','1539558912','1539559424','1539560960','1539561472','1539561984','1539563008','1539563520','1539564032','1539564544','1539565056','1539565568','1539566080','1539567104','1539567616','1539568128','1539568640','1539569152','1539569664','1539570176','1539570688','1539571712','1539572736','1539573760','1539576832','1539577856','1539578880','1539579904','1539580928','1539582976','1539584000','1539585024','1539586048',
350
- '1539587072','1539590144','1539591168','1539592192','1539593216','1539594240','1539598336','1539599360','1539600384','1539601408','1539602432','1539603456','1539604480','1539605504','1539606528','1539607552','1539609600','1539610624','1539611648','1539614720','1539615744','1539616768','1539618816','1539619840','1539620864','1539623936','1539624960','1539625984','1539627008','1539629056','1539630080','1539632128','1539633152','1539634176','1539638272','1539639296','1539640320','1539641344','1539642368','1539643392','1539644416','1539645440','1539648512','1539649024','1539649536','1539650560','1539651584','1539652608','1539653632','1539655680','1539656704','1539657728','1539658752','1539659776','1539660800','1539661824','1539662848','1539663872','1539664896','1539665920','1539666944','1539668992','1539670016','1539672064','1539673088','1539674112','1539675136','1539677184','1539678208','1539679232','1539680256','1539681280','1539684352','1539685376','1539689472','1539690496','1539691520','1539692544','1539694592','1539695616','1539696640','1539697664','1539699712',
351
- '1539700736','1539701760','1539702784','1539703040','1539703296','1539703552','1539703808','1539704064','1539704320','1539704576','1539704832','1539705088','1539705344','1539705600','1539706112','1539706368','1539706624','1539707136','1539707392','1539707648','1539707904','1539708160','1539708416','1539708672','1539708928','1539709184','1539709440','1539709696','1539710208','1539710464','1539710720','1539710976','1539711232','1539711488','1539711744','1539712000','1539712512','1539713024','1539713536','1539713792','1539714048','1539714304','1539714560','1539714816','1539715328','1539715584','1539715840','1539716096','1539716352','1539716608','1539716864','1539717376','1539717632','1539717888','1539718144','1539718400','1539718656','1539718912','1539719168','1539719424','1539719680','1539720192','1539720704','1539720960','1539721216','1539721728','1539721984','1539722240','1539722752','1539723008','1539723264','1539723520','1539723776','1539724032','1539724288','1539724544','1539724800','1539725056','1539725312','1539725568','1539725824','1539726080','1539726336','1539726592','1539726848','1539727104','1539727360','1539727616','1539727872','1539728128','1539728384','1539728640','1539728896',
352
- '1539729152','1539729408','1539729664','1539729920','1539730176','1539730944','1539731456','1539731712','1539732480','1539732736','1539732992','1539733248','1539733504','1539733760','1539734016','1539734272','1539734528','1539734784','1539735040','1539735296','1539735552','1539735808','1539736064','1539736320','1539736576','1539736832','1539737088','1539737344','1539737600','1539737856','1539738112','1539738368','1539738624','1539738880','1539739136','1539739392','1539739648','1539739904','1539740672','1539740928','1539741184','1539741440','1539741696','1539741952','1539742208','1539742464','1539742720','1539742976','1539743488','1539743744','1539744000','1539744256','1539744512','1539744768','1539745024','1539745280','1539745792','1539746560','1539746816','1539747072','1539747328','1539747584','1539747840','1539748096','1539748352','1539748608','1539748864','1539749120','1539749376','1539749632','1539749888','1539750400','1539750656','1539750912','1539751168','1539751424','1539751680','1539752192','1539752448','1539752704','1539753216','1539753472','1539753728','1539754240','1539754496','1539754752','1539755008','1539755264','1539755520','1539755776','1539756288','1539756800','1539757056','1539757568',
353
- '1539757824','1539758080','1539758336','1539758848','1539759360','1539759616','1539759872','1539760128','1539760384','1539760640','1539760896','1539761152','1539761408','1539761920','1539762176','1539762432','1539762688','1539762944','1539763200','1539763456','1539763712','1539763968','1539764224','1539764480','1539764736','1539764992','1539765248','1539765504','1539766016','1539766272','1539766528','1539766784','1539767040','1539767296','1539767552','1539768064','1539768320','1539768576','1539768832','1539769088','1539769344','1539769600','1539769856','1539770112','1539770368','1539770880','1539771136','1539771392','1539771648','1539771904','1539772160','1539772416','1539772672','1539772928','1539773184','1539773440','1539773696','1539773952','1539774208','1539774464','1539774720','1539774976','1539775488','1539775744','1539776256','1539776768','1539777024','1539777280','1539777536','1539777792','1539778048','1539778304','1539778560','1539778816','1539779328','1539779840','1539780096','1539780608','1539780864','1539781120','1539781376','1539781632','1539781888','1539782144','1539782400','1539782656','1539782912','1539783168','1539783680','1539783936','1539784192','1539784448','1539784704','1539784960','1539785216','1539785472','1539785728','1539785984',
354
- '1539786240','1539786496','1539786752','1539787008','1539787264','1539787520','1539787776','1539788032','1539788288','1539788544','1539788800','1539789568','1539789824','1539790080','1539790336','1539790848','1539791104','1539791616','1539792384','1539792640','1539792896','1539793152','1539793408','1539793664','1539794176','1539794688','1539794944','1539795200','1539795456','1539795712','1539795968','1539796224','1539796480','1539796736','1539796992','1539797248','1539797504','1539797760','1539798016','1539798272','1539798528','1539798784','1539799040','1539799296','1539799552','1539800064','1539800320','1539800576','1539800832','1539801088','1539801344','1539801856','1539802112','1539802368','1539802624','1539802880','1539803136','1539803392','1539803648','1539804160','1539804672','1539804928','1539805440','1539805696','1539806208','1539806464','1539806720','1539806976','1539807232','1539807488','1539807744','1539808000','1539808256','1539808512','1539808768','1539809024','1539809536','1539809792','1539810304','1539810560','1539810816','1539811072','1539811584','1539811840','1539812096','1539812608','1539812864','1539813120','1539813376','1539813632','1539813888','1539814400',
355
- '1539814912','1539815168','1539815936','1539816192','1539816448','1539816704','1539816960','1539817216','1539817472','1539817984','1539818240','1539818496','1539819008','1539819264','1539819520','1539819776','1539820032','1539820288','1539820544','1539820800','1539821056','1539821312','1539821568','1539821824','1539822080','1539822592','1539822848','1539823104','1539823360','1539823616','1539823872','1539824128','1539824384','1539824640','1539824896','1539825152','1539825408','1539825920','1539826176','1539826432','1539826688','1539826944','1539827200','1539827456','1539827712','1539827968','1539828480','1539828736','1539828992','1539829248','1539829504','1539829760','1539830016','1539830272','1539830528','1539830784','1539831040','1539831296','1539831552','1539832064','1539832320','1539832576','1539832832','1539833088','1539833344','1539833856','1539837952','1539838976','1539840000','1539841024','1539842048','1539844096','1539846144','1539847168','1539849472','1539849728','1539850240','1539851264','1539852288','1539853312','1539854336','1539855360','1539857408','1539858432','1539860480',
356
- '1539861504','1539862528','1539863552','1539864576','1539865600','1539866624','1539867648','1539868672','1539869696','1539870720','1539872768','1539873792','1539875840','1539876864','1539877888','1539879936','1539880960','1539883008','1539884032','1539885056','1539886080','1539887104','1539888128','1539889152','1539890176','1539891200','1539893248','1539894272','1539897344','1539899392','1539901440','1539902464','1539903488','1539904512','1539905536','1539908608','1539910656','1539911680','1539913728','1539914752','1539916800','1539917824','1539918848','1539920896','1539921920','1539922944','1539923968','1539924992','1539927040','1539928064','1539930112','1539932160','1539933184','1539934208','1539936256','1539937280','1539938304','1539939328','1539940352','1539941376','1539942400','1539943424','1539944448','1539946496','1539947520','1539948544','1539950592','1539950848','1539951104','1539951616','1539953664','1539954176','1539954688','1539956736','1539957760','1539958784','1539960064','1539960576','1539962880','1539964928','1539965952','1539966976','1539968000','1539974144','1539975168','1539976192','1539977216','1539978240','1539979264','1539980288','1539981312','1539982336','1539983360','1539984384','1539985408','1539986432','1539987456','1539988480','1539990528','1539991552','1539993600','1539994624','1539995648','1539996672','1539997696','1539999744','1540000768','1540001792','1540002816','1540003840','1540004864','1540005888','1540006912','1540007936','1540008960','1540011008','1540014080','1540015104','1540016128','1540017152','1540018176','1540020224','1540022272','1540023296','1540024320','1540025344','1540026368','1540029440','1540031488','1540032512','1540033536','1540034560','1540035584','1540036608','1540037632','1540038656','1540039680','1540040704','1540041728','1540042752','1540043776','1540044800','1540045824','1540046848','1540047872','1540048896','1540050944','1540052992','1540055040','1540057088','1540057344','1540057600','1540057856','1540058112','1540059136','1540060160','1540061184','1540062208','1540063232','1540064256','1540065280','1540068352','1540069376','1540070400','1540071424','1540072448','1540073472','1540074496','1540075520',
357
- '1540077568','1540078592','1540081664','1540082688','1540083712','1540084736','1540085760','1540087808','1540089856','1540092928','1540094976','1540096000','1540097024','1540099072','1540100096','1540103168','1540105216','1540110336','1540111360','1540112384','1540113408','1540115456','1540116480','1540117504','1540118528','1540119552','1540120576','1540124672','1540125696','1540126720','1540127744','1540128768','1540129792','1540130816','1540131840','1540132864','1540134912','1540135936','1540136960','1540137984','1540139008','1540140032','1540141056','1540142080','1540143104','1540144128','1540145152','1540146176','1540147200','1540148224','1540149248','1540150272','1540151296','1540153344','1540156416','1540157440','1540158464','1540159488','1540160512','1540162560','1540163584','1540164608','1540165632','1540166656','1540167680','1540168704','1540169728','1540170752','1540171776','1540172800','1540173824','1540174848','1540175872','1540176896','1540177920','1540178944','1540179968','1540180992','1540182016','1540183040','1540184064','1540185088',
358
- '1540186112','1540187136','1540190208','1540191232','1540192256','1540195328','1540198400','1540199424','1540200448','1540201472','1540202496','1540203520','1540204544','1540205568','1540206592','1540208640','1540210688','1540211456','1540212736','1540213760','1540214784','1540215808','1540216832','1540217856','1540218880','1540219904','1540220928','1540221952','1540224000','1540225024','1540226048','1540227072','1540227584','1540228096','1540228608','1540229120','1540229632','1540230144','1540232192','1540232704','1540233216','1540233728','1540234240','1540234752','1540235776','1540236288','1540236800','1540237312','1540238848','1540239360','1540239872','1540240384','1540240896','1540242432','1540242944','1540243456','1540243968','1540244992','1540245504','1540246016','1540246528','1540247552','1540248064','1540248576','1540249088','1540249600','1540250112','1540250368','1540251136','1540251648','1540252160','1540252672','1540253184','1540253696','1540254208','1540254720','1540255232','1540255744','1540256256','1540256768','1540257280','1540257792','1540258304','1540258816','1540259328','1540259840',
359
- '1540260352','1540260864','1540261376','1540261888','1540262400','1540262912','1540263424','1540263936','1540264448','1540265984','1540266496','1540267008','1540267520','1540268544','1540269056','1540269568','1540270080','1540270592','1540271104','1540271616','1540272128','1540272640','1540273664','1540274176','1540274688','1540275200','1540275712','1540276224','1540276736','1540277248','1540277760','1540278272','1540278784','1540279808','1540280320','1540280832','1540281344','1540281856','1540282368','1540282880','1540283392','1540284416','1540284928','1540285440','1540285952','1540286464','1540286976','1540287488','1540288512','1540289536','1540290048','1540290560','1540291072','1540291584','1540292096','1540293120','1540293632','1540295168','1540296192','1540296704','1540297216','1540298240','1540298752','1540299264','1540299776','1540300288','1540300800','1540301312','1540301824','1540302848','1540303872','1540304896','1540305408','1540305920','1540306432','1540306944','1540307456','1540307968','1540308480','1540308992','1540309504','1540310016','1540311040','1540313088',
360
- '1540313600','1540315136','1540315648','1540316160','1540316672','1540317696','1540318208','1540318720','1540319232','1540320768','1540321280','1540321792','1540322304','1540322816','1540323328','1540323840','1540324352','1540324864','1540325376','1540325888','1540326400','1540326912','1540327424','1540327936','1540328448','1540329984','1540330496','1540331008','1540331520','1540332544','1540333056','1540333568','1540334080','1540334592','1540335104','1540336128','1540337664','1540338688','1540339200','1540339712','1540340736','1540341248','1540341760','1540342272','1540343296','1540343808','1540344832','1540345344','1540345856','1540346368','1540346880','1540347392','1540347904','1540348416','1540348928','1540349952','1540350464','1540350976','1540352000','1540353024','1540353536','1540354048','1540354560','1540355072','1540355584','1540356608','1540357120','1540357632','1540358144','1540358400','1540358656','1540358912','1540359168','1540359424','1540359680','1540359936','1540360192','1540360448','1540360704','1540360960','1540361216','1540361472','1540361728','1540361984','1540362496','1540363264','1540363776','1540364032','1540364288','1540364544',
361
- '1540364800','1540365056','1540365312','1540365568','1540365824','1540366336','1540366592','1540366848','1540367104','1540367360','1540367616','1540367872','1540368128','1540368384','1540368640','1540368896','1540369408','1540369664','1540370176','1540370432','1540370688','1540370944','1540371200','1540371456','1540371712','1540371968','1540372224','1540372480','1540372736','1540372992','1540373248','1540373504','1540373760','1540374016','1540374272','1540374528','1540374784','1540375040','1540375552','1540376064','1540376320','1540376576','1540376832','1540377088','1540377344','1540377600','1540377856','1540378112','1540378368','1540378624','1540378880','1540379136','1540379392','1540379648','1540379904','1540380160','1540380416','1540380672','1540380928','1540381184','1540381440','1540381696','1540381952','1540382208','1540382464','1540382720','1540382976','1540383232','1540383488','1540383744','1540384000','1540384256','1540384512','1540385024','1540385280','1540385536','1540385792','1540386304','1540386560','1540386816','1540387328','1540387584','1540388096','1540388352','1540388608','1540388864','1540389120','1540389376','1540389632','1540389888','1540390144','1540390400','1540390656','1540391168','1540391424','1540391680',
362
- '1540391936','1540392192','1540392448','1540392704','1540392960','1540393472','1540393728','1540394240','1540394496','1540394752','1540395008','1540395264','1540395520','1540395776','1540396032','1540396288','1540396544','1540396800','1540397056','1540397312','1540397824','1540398080','1540398336','1540398592','1540399360','1540399872','1540400128','1540400384','1540400640','1540400896','1540401152','1540401408','1540401664','1540401920','1540402176','1540402432','1540402688','1540402944','1540403200','1540403456','1540403712','1540404224','1540404480','1540404736','1540404992','1540405248','1540405504','1540405760','1540406016','1540406272','1540406528','1540407040','1540407808','1540408064','1540408320','1540408832','1540409088','1540409344','1540409600','1540409856','1540410112','1540410368','1540410624','1540411136','1540411648','1540411904','1540412160','1540412416','1540412672','1540412928','1540413184','1540413440','1540413696','1540413952','1540414208','1540414464','1540414720','1540414976','1540415232','1540415488','1540415744','1540416000','1540416256','1540416768','1540417280','1540417536','1540417792','1540418048','1540418816','1540419072','1540419328',
363
- '1540419840','1540420096','1540420608','1540420864','1540421376','1540421632','1540422144','1540422400','1540422656','1540422912','1540423424','1540423680','1540423936','1540424192','1540424448','1540424704','1540424960','1540425216','1540425472','1540425728','1540425984','1540426240','1540426496','1540426752','1540427520','1540427776','1540428288','1540428544','1540428800','1540429568','1540429824','1540430080','1540430336','1540430592','1540430848','1540431104','1540431360','1540431616','1540431872','1540432128','1540432384','1540432640','1540432896','1540433152','1540433408','1540433664','1540434176','1540434432','1540434688','1540434944','1540435200','1540435456','1540436224','1540436480','1540436736','1540436992','1540437248','1540437504','1540438016','1540438272','1540438784','1540439040','1540439296','1540440064','1540440320','1540440576','1540440832','1540441344','1540441856','1540442112','1540442368','1540442624','1540442880','1540443136','1540443648','1540443904','1540444160','1540444416','1540444672','1540445184','1540445440','1540445696','1540445952','1540446208','1540446464','1540446720','1540446976','1540447232','1540447488','1540447744',
364
- '1540448000','1540448256','1540448512','1540448768','1540449536','1540449792','1540450048','1540450304','1540450560','1540450816','1540451072','1540451328','1540451584','1540451840','1540452096','1540452352','1540452608','1540452864','1540453376','1540453632','1540453888','1540454144','1540454400','1540454912','1540455168','1540455424','1540455680','1540455936','1540456192','1540457216','1540457472','1540457728','1540457984','1540458240','1540458496','1540458752','1540459008','1540459520','1540459776','1540460032','1540460288','1540460544','1540460800','1540461056','1540461312','1540462080','1540462592','1540463104','1540463360','1540463616','1540463872','1540464128','1540464384','1540464896','1540465664','1540465920','1540466176','1540466432','1540466688','1540466944','1540467456','1540467712','1540467968','1540468224','1540468736','1540468992','1540469248','1540469760','1540470016','1540470272','1540471040','1540471552','1540471808','1540472064','1540472320','1540472576','1540472832','1540473088','1540473344','1540473600','1540473856','1540474368','1540474624','1540474880','1540475136','1540475904','1540476160','1540476416','1540476672','1540476928',
365
- '1540477440','1540477696','1540477952','1540478208','1540478464','1540478976','1540479232','1540479488','1540479744','1540480000','1540480256','1540480768','1540481280','1540481536','1540482048','1540482304','1540482816','1540483072','1540483328','1540483840','1540484096','1540484352','1540484608','1540484864','1540485120','1540485376','1540485632','1540485888','1540486144','1540486400','1540486656','1540486912','1540487168','1540487424','1540487680','1540487936','1540488192','1540488448','1540488704','1540488960','1540489216','1540491264','1540492288','1540493312','1540494336','1540495360','1540496384','1540499456','1540500480','1540501504','1540502528','1540504576','1540505600','1540506624','1540507648','1540508672','1540509696','1540510720','1540511744','1540512768','1540515840','1540516864','1540517888','1540518912','1540520960','1540521984','1540523008','1540524032','1540525056','1540526080','1540528128','1540529152','1540530176','1540531200','1540532224','1540533248','1540534272','1540535296','1540536320','1540537344','1540538368','1540542464','1540543488','1540544512','1540545536','1540546560','1540548608','1540549632','1540552704','1540553728','1540555776','1540556800','1540557824','1540559872','1540562944','1540563968','1540564992','1540566016','1540567040','1540568064','1540572160','1540573184','1540574208','1540576256','1540578304','1540579328','1540580352','1540581376','1540582400','1540583424','1540584448','1540586496','1540588544','1540589568','1540594688','1540596736','1540597760','1540598784','1540600832','1540602880','1540603904','1540605952','1540606976','1540608000','1540609024','1540610048','1540611072','1540613120','1540614144','1540615168','1540616192','1540617216','1540619264','1540620288','1540620544','1540620800','1540621056','1540621312','1540621568','1540621824','1540622336','1540622592','1540622848','1540623360','1540623616','1540624128','1540624384','1540624640','1540624896','1540625664','1540625920','1540626176','1540626432','1540626688','1540626944','1540627456','1540627712','1540627968','1540628224','1540628480','1540628736','1540628992','1540629248','1540629504','1540629760','1540630272','1540630528','1540631040','1540631296','1540631552','1540632064',
366
- '1540632320','1540632576','1540633088','1540633600','1540633856','1540634624','1540634880','1540635136','1540635392','1540635648','1540636160','1540636416','1540636672','1540637184','1540637440','1540637696','1540637952','1540638208','1540638464','1540639232','1540639488','1540639744','1540640000','1540640256','1540640512','1540640768','1540641024','1540641536','1540641792','1540642048','1540642304','1540642560','1540642816','1540643072','1540643328','1540643584','1540643840','1540644096','1540644608','1540644864','1540645120','1540645376','1540645632','1540646144','1540646400','1540646656','1540646912','1540647168','1540647424','1540647936','1540648192','1540648448','1540648960','1540649216','1540649472','1540649728','1540649984','1540650240','1540650496','1540650752','1540651008','1540651264','1540651520','1540651776','1540652032','1540652544','1540652800','1540653056','1540653312','1540653568','1540653824','1540654080','1540654336','1540654592','1540654848','1540655104','1540655360','1540655616','1540655872','1540656640','1540656896','1540657152','1540657408','1540657664','1540657920','1540658176','1540658432','1540659200','1540659456','1540659968','1540660224',
367
- '1540660480','1540660736','1540660992','1540661248','1540661504','1540662016','1540662272','1540662528','1540662784','1540663040','1540663296','1540663552','1540664064','1540664320','1540664576','1540665088','1540665344','1540665600','1540665856','1540666112','1540666368','1540666624','1540666880','1540667136','1540667648','1540668160','1540668416','1540668672','1540668928','1540669696','1540669952','1540670208','1540670464','1540670720','1540670976','1540671232','1540671488','1540671744','1540672000','1540672256','1540672512','1540672768','1540673024','1540673280','1540673536','1540673792','1540674048','1540674304','1540674560','1540674816','1540675072','1540675328','1540675584','1540675840','1540676352','1540676608','1540677120','1540677376','1540677632','1540677888','1540678400','1540678656','1540678912','1540679168','1540679680','1540679936','1540680192','1540680448','1540680