Admin Custom Login - Version 1.0

Version Description

Download this release

Release Info

Developer weblizar
Plugin Icon 128x128 Admin Custom Login
Version 1.0
Comparing to
See all releases

Version 1.0

Files changed (64) hide show
  1. admin-custom-login.php +138 -0
  2. css/animate.css +3138 -0
  3. css/bootstrap.css +5293 -0
  4. css/demo.css +187 -0
  5. css/dialog/dialog-box-style.css +15 -0
  6. css/dialog/dialog-jamie.css +61 -0
  7. css/dialog/dialog.css +61 -0
  8. css/fontawesome-iconpicker.css +344 -0
  9. css/fonts/BebasNeue-webfont.eot +0 -0
  10. css/fonts/BebasNeue-webfont.svg +188 -0
  11. css/fonts/BebasNeue-webfont.ttf +0 -0
  12. css/fonts/BebasNeue-webfont.woff +0 -0
  13. css/fonts/Dharma Type Font License.txt +57 -0
  14. css/img/bg1.jpg +0 -0
  15. css/img/logo.png +0 -0
  16. css/img/pattern-1.png +0 -0
  17. css/img/pattern-2.png +0 -0
  18. css/img/photo.jpg +0 -0
  19. css/jquery-ui.css +1127 -0
  20. css/lightbox.css +210 -0
  21. css/slider-style1.php +302 -0
  22. css/slider-style2.php +580 -0
  23. css/slider-style3.php +657 -0
  24. css/slider-style4.php +579 -0
  25. css/smartech.css +2185 -0
  26. css/socialcss.php +259 -0
  27. font-awesome/css/font-awesome.css +1801 -0
  28. font-awesome/css/font-awesome.min.css +4 -0
  29. font-awesome/fonts/FontAwesome.otf +0 -0
  30. font-awesome/fonts/fontawesome-webfont.eot +0 -0
  31. font-awesome/fonts/fontawesome-webfont.svg +565 -0
  32. font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  33. font-awesome/fonts/fontawesome-webfont.woff +0 -0
  34. font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  35. font-awesome/less/animated.less +34 -0
  36. font-awesome/less/bordered-pulled.less +16 -0
  37. font-awesome/less/core.less +13 -0
  38. font-awesome/less/fixed-width.less +6 -0
  39. font-awesome/less/font-awesome.less +17 -0
  40. font-awesome/less/icons.less +596 -0
  41. font-awesome/less/larger.less +13 -0
  42. font-awesome/less/list.less +19 -0
  43. font-awesome/less/mixins.less +27 -0
  44. font-awesome/less/path.less +15 -0
  45. font-awesome/less/rotated-flipped.less +20 -0
  46. font-awesome/less/stacked.less +20 -0
  47. font-awesome/less/variables.less +606 -0
  48. font-awesome/scss/_animated.scss +34 -0
  49. font-awesome/scss/_bordered-pulled.scss +16 -0
  50. font-awesome/scss/_core.scss +13 -0
  51. font-awesome/scss/_fixed-width.scss +6 -0
  52. font-awesome/scss/_icons.scss +596 -0
  53. font-awesome/scss/_larger.scss +13 -0
  54. font-awesome/scss/_list.scss +19 -0
  55. font-awesome/scss/_mixins.scss +27 -0
  56. font-awesome/scss/_path.scss +15 -0
  57. font-awesome/scss/_rotated-flipped.scss +20 -0
  58. font-awesome/scss/_stacked.scss +20 -0
  59. font-awesome/scss/_variables.scss +606 -0
  60. font-awesome/scss/font-awesome.scss +17 -0
  61. fonts/bootstrap/glyphicons-halflings-regular-2.html +183 -0
  62. fonts/bootstrap/glyphicons-halflings-regular-3.html +183 -0
  63. fonts/bootstrap/glyphicons-halflings-regular-4.html +183 -0
  64. fonts/bootstrap/glyphicons-halflings-regular.html +131 -0
admin-custom-login.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: Admin Costum Login
4
+ * Version: 1.0
5
+ * Responsive Login Form Allow You Setting Of login Form.
6
+ * Author: weblizar
7
+ * Author URI: http://www.weblizar.com
8
+ * Plugin URI: http://weblizar.com/plugins/admin-custom-login
9
+ */
10
+
11
+ define("WEBLIZAR_NALF_PLUGIN_URL", plugin_dir_url(__FILE__));
12
+ define("WEBLIZAR_ACL", "WEBLIZAR_ACL" );
13
+
14
+ add_action('plugins_loaded', 'ACL_GetReadyTranslation');
15
+ function ACL_GetReadyTranslation() {
16
+ load_plugin_textdomain(WEBLIZAR_ACL, FALSE, dirname( plugin_basename(__FILE__)).'/languages/' );
17
+ }
18
+
19
+ /**
20
+ * Admin Costume Login installation script
21
+ */
22
+ register_activation_hook( __FILE__, 'ACL_WeblizarDoInstallation' );
23
+ function ACL_WeblizarDoInstallation() {
24
+ require_once('installation.php');
25
+ }
26
+
27
+ /**
28
+ * Admin Costume Login menu
29
+ */
30
+ require_once("login-form-screen.php");
31
+ add_action('admin_menu','acl_weblizar_admin_custom_login_menu');
32
+ function acl_weblizar_admin_custom_login_menu() {
33
+ //plugin menu name for Admin Costume Login
34
+ $acl_menu = add_menu_page('Admin custom Login', 'Admin custom Login','administrator', 'admin_custom_login','acl_admin_custom_login_content');
35
+
36
+ //add hook to add styles and scripts for Admin Costume Login admin page
37
+ add_action( 'admin_print_styles-' . $acl_menu, 'acl_admin_custom_login_js_css' );
38
+ }
39
+
40
+ function acl_admin_custom_login_js_css() {
41
+ //enqueue scripts page for Admin Costume Login plugin admin panel
42
+ wp_enqueue_script('theme-preview');
43
+ wp_enqueue_style('dashboard');
44
+ wp_enqueue_style('wp-color-picker');
45
+ wp_enqueue_style('thickbox');
46
+ wp_enqueue_style('acl-bootstrap-css', WEBLIZAR_NALF_PLUGIN_URL.'css/bootstrap.css');
47
+ wp_enqueue_style('acl-smartech-css', WEBLIZAR_NALF_PLUGIN_URL.'css/smartech.css');
48
+ wp_enqueue_style('acl-jquery-ui-css', WEBLIZAR_NALF_PLUGIN_URL.'css/jquery-ui.css');
49
+ wp_enqueue_style('acl-font-awesome_min', WEBLIZAR_NALF_PLUGIN_URL.'font-awesome/css/font-awesome.min.css');
50
+ wp_enqueue_style('acl-font-animate', WEBLIZAR_NALF_PLUGIN_URL.'css/animate.css');
51
+ wp_enqueue_style('acl-fontawesome-iconpicker', WEBLIZAR_NALF_PLUGIN_URL.'css/fontawesome-iconpicker.css');
52
+
53
+ wp_enqueue_style('acl-dialog', WEBLIZAR_NALF_PLUGIN_URL.'css/dialog/dialog.css');
54
+ wp_enqueue_style('acl-dialog-box-style', WEBLIZAR_NALF_PLUGIN_URL.'css/dialog/dialog-box-style.css');
55
+ wp_enqueue_style('acl-dialog-jamie', WEBLIZAR_NALF_PLUGIN_URL.'css/dialog/dialog-jamie.css');
56
+
57
+ wp_enqueue_script('jquery');
58
+
59
+ wp_enqueue_script('acl-media-uploads',WEBLIZAR_NALF_PLUGIN_URL.'js/acl-media-upload-script.js',array('media-upload','thickbox','jquery'));
60
+ wp_enqueue_script('acl-color-picker-script', WEBLIZAR_NALF_PLUGIN_URL.'js/acl-color-picker-script.js', array( 'wp-color-picker' ), false, true );
61
+
62
+ wp_enqueue_script('acl-bootstrap-min-js',WEBLIZAR_NALF_PLUGIN_URL.'js/bootstrap.min.js');
63
+ wp_enqueue_script('acl-metisMenu',WEBLIZAR_NALF_PLUGIN_URL.'js/plugins/metisMenu/metisMenu.min.js');
64
+ wp_enqueue_script('aclsmartech',WEBLIZAR_NALF_PLUGIN_URL.'js/smartech.js',array('jquery'));
65
+ wp_enqueue_script('acl-nalf-sidebar-nav',WEBLIZAR_NALF_PLUGIN_URL.'js/nalf_sidebar_nav.js');
66
+ wp_enqueue_script('acl-media-upload-script-2-js',WEBLIZAR_NALF_PLUGIN_URL.'js/acl-media-upload-script-2.js');
67
+ wp_enqueue_script('acl-font-icon-picker-js',WEBLIZAR_NALF_PLUGIN_URL.'js/fontawesome-iconpicker.js');
68
+
69
+ wp_enqueue_script('acl-snap-svg-min',WEBLIZAR_NALF_PLUGIN_URL.'js/dialog/snap.svg-min.js');
70
+ wp_enqueue_script('acl-modernizr-custom',WEBLIZAR_NALF_PLUGIN_URL.'js/dialog/modernizr.custom.js');
71
+ wp_enqueue_script('acl-classie',WEBLIZAR_NALF_PLUGIN_URL.'js/dialog/classie.js');
72
+ wp_enqueue_script('acl-dialogFx',WEBLIZAR_NALF_PLUGIN_URL.'js/dialog/dialogFx.js');
73
+ }
74
+
75
+ function acl_advanced_login_form_plugin() {
76
+ wp_enqueue_script('jquery');
77
+ $dashboard_page = unserialize(get_option('Admin_custome_login_dashboard'));
78
+ $top_page = unserialize(get_option('Admin_custome_login_top'));
79
+ if ($top_page['top_bg_type'] == "slider-background" && $dashboard_page['dashboard_status'] == "enable"){
80
+ wp_enqueue_script('modernizr',WEBLIZAR_NALF_PLUGIN_URL.'js/modernizr.custom.86080.js');
81
+ wp_enqueue_style('demo', WEBLIZAR_NALF_PLUGIN_URL.'css/demo.css');
82
+ }
83
+ wp_enqueue_style('font-awesome_min', WEBLIZAR_NALF_PLUGIN_URL.'font-awesome/css/font-awesome.min.css');
84
+ }
85
+ add_action('login_enqueue_scripts', 'acl_advanced_login_form_plugin');
86
+
87
+ function acl_footer_func() {
88
+ $text_and_color_page = unserialize(get_option('Admin_custome_login_text'));
89
+ $user_input_icon = $text_and_color_page['user_input_icon'];
90
+ $password_input_icon = $text_and_color_page['password_input_icon'];
91
+ $enable_inputbox_icon = $text_and_color_page['enable_inputbox_icon'];
92
+ $heading_font_color = $text_and_color_page['heading_font_color'];
93
+ $heading_font_size = $text_and_color_page['heading_font_size'];
94
+ $input_font_size = $text_and_color_page['input_font_size'];
95
+ $top_page = unserialize(get_option('Admin_custome_login_top'));
96
+ $Social_page = unserialize(get_option('Admin_custome_login_Social'));
97
+ ?>
98
+ <script>
99
+ jQuery(document).ready(function(){
100
+
101
+ jQuery('html body').attr('id', 'screen');
102
+ jQuery('#loginform label[for="user_login"]').attr('id', 'log_input_lable');
103
+ jQuery('#loginform label[for="user_pass"]').attr('id', 'pwd_input_lable');
104
+
105
+ <?php if($enable_inputbox_icon=='yes'){?>
106
+ document.getElementById("log_input_lable").innerHTML="User Name<div class='input-container'> <div class='icon-ph'><i class='fa <?php echo $user_input_icon; ?>'></i></div> <input id='user_login' name='log' class='input' type='text' placeholder='User Name'></div>";
107
+ document.getElementById("pwd_input_lable").innerHTML="Password<div class='input-container'> <div class='icon-ph'><i class='fa <?php echo $password_input_icon; ?>'></i></div> <input id='user_pass' name='pwd' class='input' type='password' placeholder='Password'></div>";
108
+ jQuery('body.login div#login form .input, .login input[type="text"]').css('padding','5px 5px 5px 45px');
109
+ <?php } else { ?>
110
+ jQuery('#loginform #user_login').attr('placeholder', 'User Name');
111
+ jQuery('#loginform #user_pass').attr('placeholder', 'Password');
112
+ jQuery('body.login div#login form .input, .login input[type="text"]').css('padding','5px 5px 5px 5px');
113
+ <?php }?>
114
+ <?php if ($top_page['top_bg_type'] == "slider-background"){ ?>
115
+ jQuery('#screen').prepend('<ul class="cb-slideshow"> <li><span>Image 01</span></li> <li><span>Image 02</span></li> <li><span>Image 03</span></li> <li><span>Image 04</span></li> <li><span>Image 05</span></li> <li><span>Image 06</span></li> </ul>')
116
+ <?php } ?>
117
+
118
+ //enable Social Icon In inner login form
119
+ <?php if($Social_page['enable_social_icon'] == "inner" || $Social_page['enable_social_icon'] == "both") {?>
120
+ jQuery( ".forgetmenot" ).append('<div style="padding-top:10px"><div style="color:<?php echo $heading_font_color; ?>; font-size:<?php echo $heading_font_size;?>px; ">Connect Us :</div><div style="padding-top:5px"><?php if($Social_page['social_twitter_link']!=''){ ?><a href="<?php echo $Social_page['social_twitter_link'];?>" class="icon-button twitter"><i class="fa fa-twitter"></i><span></span></a><?php } if($Social_page['social_facebook_link']!=''){ ?> <a href="<?php echo $Social_page['social_facebook_link'];?>" class="icon-button facebook"><i class="fa fa-facebook"></i><span></span></a> <?php } if($Social_page['social_google_plus_link']!=''){ ?> <a href="<?php echo $Social_page['social_google_plus_link'];?>" class="icon-button google-plus"><i class="fa fa-google-plus"></i><span></span></a><?php } if($Social_page['social_linkedin_link']!=''){ ?> <a href="<?php echo $Social_page['social_linkedin_link'];?>" class="icon-button linkedin"> <i class="fa fa-linkedin"> </i> <span></span> </a> <?php } if($Social_page['social_pinterest_link']!=''){ ?><a href="<?php echo $Social_page['social_pinterest_link'];?>" class="icon-button pinterest"><i class="fa fa-pinterest"></i><span></span></a><?php } ?><div></div>' );
121
+ <?php } ?>
122
+ //enable Social Icon In outer login form
123
+ <?php if($Social_page['enable_social_icon'] == "outer" || $Social_page['enable_social_icon'] == "both") {?>
124
+ jQuery( "#backtoblog" ).append('<div class="divsocial"><?php if($Social_page['social_twitter_link']!=''){?> <a href="<?php echo $Social_page['social_twitter_link']; ?>" class="icon-button twitter"><i class="fa fa-twitter"></i><span></span></a><?php } if($Social_page['social_facebook_link']!=''){?><a href="<?php echo $Social_page['social_facebook_link']; ?>" class="icon-button facebook"><i class="fa fa-facebook"></i><span></span></a> <?php } if($Social_page['social_google_plus_link']!=''){?><a href="<?php echo $Social_page['social_google_plus_link']; ?>" class="icon-button google-plus"><i class="fa fa-google-plus"></i><span></span></a><?php } if($Social_page['social_linkedin_link']!=''){?><a href="<?php echo $Social_page['social_linkedin_link']; ?>" class="icon-button linkedin"><i class="fa fa-linkedin"></i><span></span></a><?php } if($Social_page['social_pinterest_link']!=''){?><a href="<?php echo $Social_page['social_pinterest_link']; ?>" class="icon-button pinterest"><i class="fa fa-pinterest"></i><span></span></a><?php } ?></div>');
125
+ <?php } ?>
126
+ })
127
+ </script>
128
+ <?php
129
+ }
130
+ $dashboard_page = unserialize(get_option('Admin_custome_login_dashboard'));
131
+ if($dashboard_page['dashboard_status'] == "enable") {
132
+ add_action('login_head', 'acl_footer_func');
133
+ }
134
+
135
+ function acl_admin_custom_login_content() {
136
+ require_once('includes/content.php');
137
+ }
138
+ ?>
css/animate.css ADDED
@@ -0,0 +1,3138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<