| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -271,14 +271,13 @@ void yon_hide_passwords(template_saving_window *window){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if(!yon_char_is_empty(old_value)){
 | 
					 | 
					 | 
					 | 
								if(!yon_char_is_empty(old_value)){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									config_str parsed = NULL;
 | 
					 | 
					 | 
					 | 
									config_str parsed = NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									parsed = yon_char_parse(old_value,&size,":");
 | 
					 | 
					 | 
					 | 
									parsed = yon_char_parse(old_value,&size,":");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")&&parsed[5][0]!='%'&&parsed[5][1]!='%'){
 | 
					 | 
					 | 
					 | 
									if (size>5&&!yon_char_is_empty(parsed[5])&&!check_is_password_hash(parsed[5])){
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										free(old_value);
 | 
					 | 
					 | 
					 | 
										free(old_value);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										free(parsed[5]);
 | 
					 | 
					 | 
					 | 
										free(parsed[5]);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										parsed[5]=yon_char_new("*******");
 | 
					 | 
					 | 
					 | 
										parsed[5]=yon_char_new("*******");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										old_value = yon_char_parsed_to_string(parsed,size,":");
 | 
					 | 
					 | 
					 | 
										old_value = yon_char_parsed_to_string(parsed,size,":");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									} else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) {
 | 
					 | 
					 | 
					 | 
									} else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										free(old_value);
 | 
					 | 
					 | 
					 | 
										free(old_value);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										free(yon_char_divide(parsed[5],1));
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										old_value = yon_char_parsed_to_string(parsed,size,":");
 | 
					 | 
					 | 
					 | 
										old_value = yon_char_parsed_to_string(parsed,size,":");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									}
 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									if (parsed){
 | 
					 | 
					 | 
					 | 
									if (parsed){
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -979,6 +978,18 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								full_groups=extend_groups;
 | 
					 | 
					 | 
					 | 
								full_groups=extend_groups;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AddNewCheck))){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							char *custom_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->AddNewEntry));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (!yon_char_is_empty(custom_groups)){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								char *temp = yon_char_unite(full_groups,",",custom_groups,NULL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								if (!yon_char_is_empty(full_groups)) free(full_groups);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								full_groups=temp;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								yon_ubl_status_highlight_incorrect(window->AddNewEntry);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_entry_set_text(output,full_groups);
 | 
					 | 
					 | 
					 | 
						gtk_entry_set_text(output,full_groups);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else {
 | 
					 | 
					 | 
					 | 
						} else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							gtk_entry_set_text(output,config(USERGROUPS_parameter));
 | 
					 | 
					 | 
					 | 
							gtk_entry_set_text(output,config(USERGROUPS_parameter));
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -988,6 +999,7 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){
 | 
					 | 
					 | 
					 | 
					void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
 | 
					 | 
					 | 
					 | 
						ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gtk_widget_show(window->AddNewBox);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1313,6 +1325,7 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_windo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void on_user_choose(GtkWidget *, GtkEntry *target){
 | 
					 | 
					 | 
					 | 
					void on_user_choose(GtkWidget *, GtkEntry *target){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1);
 | 
					 | 
					 | 
					 | 
						ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gtk_widget_hide(window->DefaultCheck);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),UID_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),UID_LABEL);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1615,11 +1628,17 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
 | 
					 | 
					 | 
					 | 
						window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
 | 
					 | 
					 | 
					 | 
						window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck");
 | 
					 | 
					 | 
					 | 
						window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						window->AddNewCheck=yon_gtk_builder_get_widget(builder,"AddNewCheck");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						window->AddNewEntry=yon_gtk_builder_get_widget(builder,"AddNewEntry");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						window->AddNewBox=yon_gtk_builder_get_widget(builder,"AddNewBox");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						window->list = gtk_list_store_new(3,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT);
 | 
					 | 
					 | 
					 | 
						window->list = gtk_list_store_new(3,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),2,GTK_SORT_ASCENDING);
 | 
					 | 
					 | 
					 | 
						gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),2,GTK_SORT_ASCENDING);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						yon_gtk_entry_block_symbols(GTK_ENTRY(window->AddNewEntry),";.'\"*%$#!-=+\\|/_@^&()№:?<>");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
 | 
					 | 
					 | 
					 | 
						yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
 | 
					 | 
					 | 
					 | 
						gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						g_signal_connect(G_OBJECT(window->AddNewCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->AddNewEntry);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->GroupsTree);
 | 
					 | 
					 | 
					 | 
						g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->GroupsTree);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window);
 | 
					 | 
					 | 
					 | 
						g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						GtkTreeIter iter;
 | 
					 | 
					 | 
					 | 
						GtkTreeIter iter;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |