update ChangeClient

This commit is contained in:
NikitaOnianov 2025-03-09 22:57:01 +03:00
parent b008bbb7c3
commit f63e4d41bc
22 changed files with 186 additions and 106 deletions

View File

@ -2,6 +2,26 @@
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\functions\\changeclient.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:functions\\changeclient.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\functions\\heir.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:functions\\heir.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\functions\\heir.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:functions\\heir.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\functions\\deleteclient.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:functions\\deleteclient.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\functions\\changeclient.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:functions\\changeclient.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@ -14,7 +34,7 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 5,
"Children": [
{
"$type": "Bookmark",
@ -24,9 +44,72 @@
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Heir.axaml.cs",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\Heir.axaml.cs",
"RelativeDocumentMoniker": "Functions\\Heir.axaml.cs",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\Heir.axaml.cs",
"RelativeToolTip": "Functions\\Heir.axaml.cs",
"ViewState": "AgIAACoAAAAAAAAAAAAAABsAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-09T19:44:15.189Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Heir.axaml",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\Heir.axaml",
"RelativeDocumentMoniker": "Functions\\Heir.axaml",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\Heir.axaml",
"RelativeToolTip": "Functions\\Heir.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2025-03-09T19:43:26.417Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "DeleteClient.axaml.cs",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\DeleteClient.axaml.cs",
"RelativeDocumentMoniker": "Functions\\DeleteClient.axaml.cs",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\DeleteClient.axaml.cs",
"RelativeToolTip": "Functions\\DeleteClient.axaml.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-09T19:41:40.367Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "ChangeClient.axaml.cs",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\ChangeClient.axaml.cs",
"RelativeDocumentMoniker": "Functions\\ChangeClient.axaml.cs",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\ChangeClient.axaml.cs*",
"RelativeToolTip": "Functions\\ChangeClient.axaml.cs*",
"ViewState": "AgIAACIAAAAAAAAAAAAwwDEAAABSAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-09T19:39:06.531Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "ChangeClient.axaml",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\ChangeClient.axaml",
"RelativeDocumentMoniker": "Functions\\ChangeClient.axaml",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Functions\\ChangeClient.axaml",
"RelativeToolTip": "Functions\\ChangeClient.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2025-03-09T19:39:02.539Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "Client.cs",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Models\\Client.cs",
"RelativeDocumentMoniker": "Models\\Client.cs",

View File

@ -1,12 +1,7 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|c:\\users\\vivobook 15x\\desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\demo_blagodat\\demo_blagodat\\demo_blagodat\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B40AB1D5-A904-4458-95A8-8CAE49BE0884}|demo_blagodat.csproj|solutionrelative:models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
@ -14,7 +9,7 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
@ -23,19 +18,6 @@
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Client.cs",
"DocumentMoniker": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Models\\Client.cs",
"RelativeDocumentMoniker": "Models\\Client.cs",
"ToolTip": "C:\\Users\\VivoBook 15X\\Desktop\\\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0435 \u043C\u043E\u0434\u0443\u043B\u0438\\Demo_Blagodat\\demo_blagodat\\demo_blagodat\\Models\\Client.cs",
"RelativeToolTip": "Models\\Client.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAcAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-09T19:24:32.315Z",
"EditorCaption": ""
}
]
}

View File

@ -4,15 +4,25 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="demo_blagodat.ChangeClient"
xmlns:vm="using:demo_blagodat.Models"
Title="Изменить клиента">
<StackPanel Spacing="15" Orientation="Vertical">
<TextBlock Text="Введите имя клиента, которого хотите изменить:"/>
<TextBox x:Name="Name"/>
<TextBlock Text="Выберите Клиента"/>
<ComboBox Name="ListClients" SelectionChanged="ComboBox_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="vm:Client">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ClientName}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<StackPanel Spacing="15" HorizontalAlignment="Center" Orientation="Horizontal">
<StackPanel Orientation="Vertical">
<TextBlock Text="Введите ФИО"/>
<TextBlock Text="Введите новое имя"/>
<TextBox Width="300" x:Name="TextNewName" Text=""/>
</StackPanel>

View File

@ -5,16 +5,30 @@ using Avalonia.Markup.Xaml;
using demo_blagodat.Models;
using System.Linq;
using System;
using System.Collections.ObjectModel;
using System.Xml.Linq;
namespace demo_blagodat;
public partial class ChangeClient : Window
{
public Employee User;
static User11Context db = new User11Context();
ObservableCollection<Client> clients = new ObservableCollection<Client>(db.Clients);
public ChangeClient(Employee user)
{
InitializeComponent();
User = user;
ListClients.ItemsSource = clients;
}
private void ComboBox_SelectionChanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
{
if (sender != null)
{
}
}
private void changeClient(object sender, RoutedEventArgs e)
@ -22,7 +36,7 @@ public partial class ChangeClient : Window
try // Êîíñòðóêöèÿ äëÿ îáðàáîòêè èñêëþ÷åíèé
{
// Îáîçíà÷àåì êîíêðåòíîãî ïîëüçîâàòåëÿ
string? name = Name.Text;
//string? name = Name.Text;
// Ñîáèðàåì âñå äàííûå ñ ýêðàíà
string? newname = TextNewName.Text;
@ -32,94 +46,85 @@ public partial class ChangeClient : Window
string? newemail = TextNewEmail.Text;
string? newpassword = TextNewPassword.Text;
if (name != "")
Client? client = db.Clients.Where(it => it == ListClients.SelectedItem).FirstOrDefault();
if (client != null)
{
using (User11Context db = new User11Context()) // Ïîäêëþ÷åíèå ê ÁÄ
if (newname != "")
{
Client? client = db.Clients.Where(it => it.ClientName == name).FirstOrDefault();
if (client != null)
{
if (newname != "")
{
client.ClientName = newname; // Ìåíÿåì ïàðàìåíò "Èìÿ"
client.ClientName = newname; // Ìåíÿåì ïàðàìåíò "Èìÿ"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newpas != "")
{
client.ClientPassport = newpas; // Ìåíÿåì ïàðàìåíò "Ïàñïîðò"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newdate != null)
{
client.ClientBirthday = (DateOnly) newdate;// Ìåíÿåì ïàðàìåíò "Äåíü ðîæäåíèÿ"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newemail != "")
{
client.ClientEmail = newemail; // Ìåíÿåì ïàðàìåíò "Ïî÷òà"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newpassword != "")
{
client.ClientPassword = newpassword; // Ìåíÿåì ïàðàìåíò "Ïàðîëü"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newaddress != "")
{
client.ClientAddress = newaddress; // Ìåíÿåì ïàðàìåíò "Ïàðîëü"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if(TextNewName.Text == "" && TextNewPassport.Text == "" && TextNewBirthday.Text == "" && TextNewEmail.Text == "" && TextNewPassword.Text == "" && TextNewAddress.Text == "")
{
// Ñîîáùåíèå
MesAdd.Text = "";
MesAddError.Text = "Ââåäèòå íîâûå äàííûå";
}
check(client);
}
else
{
MesAdd.Text = "";
MesAddError.Text = "Òàêîãî êëèåíòà íåò";
}
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newpas != "")
{
client.ClientPassport = newpas; // Ìåíÿåì ïàðàìåíò "Ïàñïîðò"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newdate != null)
{
client.ClientBirthday = (DateOnly)newdate;// Ìåíÿåì ïàðàìåíò "Äåíü ðîæäåíèÿ"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newemail != "")
{
client.ClientEmail = newemail; // Ìåíÿåì ïàðàìåíò "Ïî÷òà"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newpassword != "")
{
client.ClientPassword = newpassword; // Ìåíÿåì ïàðàìåíò "Ïàðîëü"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (newaddress != "")
{
client.ClientAddress = newaddress; // Ìåíÿåì ïàðàìåíò "Ïàðîëü"
db.SaveChanges(); // Ñîõðàíÿåì èçìåíåíèÿ
// Ñîîáùåíèå
MesAdd.Text = "Äàííûå èçìåíåíû";
MesAddError.Text = "";
}
if (TextNewName.Text == "" && TextNewPassport.Text == "" && TextNewBirthday.Text == "" && TextNewEmail.Text == "" && TextNewPassword.Text == "" && TextNewAddress.Text == "")
{
// Ñîîáùåíèå
MesAdd.Text = "";
MesAddError.Text = "Ââåäèòå íîâûå äàííûå";
}
check(client);
}
else
{
MesAddError.Text = "Ñíà÷àëà îáîçíà÷üòå èçìåíÿåìîãî êëèåíòà";
MesAdd.Text = "";
MesAddError.Text = "Òàêîãî êëèåíòà íåò";
}
}
catch (Exception ex)
{

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("demo_blagodat")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+00ae76a0ab3d956dbf5f59daa534e063baa7213b")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b008bbb7c3b4872362ba133dab1e4e56d88879b1")]
[assembly: System.Reflection.AssemblyProductAttribute("demo_blagodat")]
[assembly: System.Reflection.AssemblyTitleAttribute("demo_blagodat")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
df5338b29169336180b002de0b7cc972e3611af3b3c1f8aff16ee2a8a3a2faa9
1996c7c7b98fd58da02e7dbb702e3e22f04fe74dad563ed472a35d21f12b144d