Commit cc8b2b36 by Mac Stephens

additional confirmation modal updates to users and main, also set status updated

parent bae0384f
...@@ -47,7 +47,6 @@ type ...@@ -47,7 +47,6 @@ type
function GetUserInfo: string; function GetUserInfo: string;
procedure setActive(page: string); procedure setActive(page: string);
procedure ConfirmLogout; procedure ConfirmLogout;
procedure OnConfirmLogout(Event: TJSEvent);
public public
{ Public declarations } { Public declarations }
class procedure Display(LogoutProc: TLogoutProc); class procedure Display(LogoutProc: TLogoutProc);
...@@ -209,47 +208,22 @@ begin ...@@ -209,47 +208,22 @@ begin
ConfirmLogout; ConfirmLogout;
end; end;
procedure TFViewMain.ConfirmLogout;
var
yesBtn: TJSElement;
begin
document.getElementById('modal_body').innerHTML := 'Are you sure you want to log out?';
document.getElementById('btn_confirm_cancel').innerText := 'No';
document.getElementById('btn_confirm_delete').innerText := 'Yes';
asm
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
end;
// Detach any existing click handler (optional cleanup if reused often)
yesBtn := document.getElementById('btn_confirm_delete');
if Assigned(yesBtn) then
begin
TJSElement(yesBtn).removeEventListener('click', @OnConfirmLogout);
TJSElement(yesBtn).addEventListener('click', @OnConfirmLogout);
end;
asm procedure TFViewMain.ConfirmLogout;
var confirmationModal = new bootstrap.Modal(document.getElementById('confirmation_modal'), {
keyboard: false
});
confirmationModal.show();
end;
end;
procedure TFViewMain.OnConfirmLogout(Event: TJSEvent);
begin begin
if Assigned(FLogoutProc) then ShowConfirmationModal(
FLogoutProc(''); 'Are you sure you want to log out?',
'Yes',
'No',
procedure(confirmed: Boolean)
begin
if confirmed and Assigned(FLogoutProc) then
FLogoutProc('');
end
);
end; end;
procedure TFViewMain.wllblUserProfileClick(Sender: TObject); procedure TFViewMain.wllblUserProfileClick(Sender: TObject);
begin begin
ShowCrudForm(TFViewUserProfile); ShowCrudForm(TFViewUserProfile);
......
object FSetStatus: TFSetStatus object FSetStatus: TFSetStatus
Width = 640 Width = 640
Height = 361 Height = 278
OnShow = WebFormShow OnShow = WebFormShow
object lblStatus1: TWebLabel object lblStatus1: TWebLabel
Left = 326 Left = 328
Top = 80 Top = 32
Width = 38 Width = 38
Height = 14 Height = 14
Caption = 'Status:' Caption = 'Status:'
...@@ -18,8 +18,8 @@ object FSetStatus: TFSetStatus ...@@ -18,8 +18,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel1: TWebLabel object WebLabel1: TWebLabel
Left = 484 Left = 486
Top = 80 Top = 32
Width = 91 Width = 91
Height = 14 Height = 14
Caption = 'Date Completed:' Caption = 'Date Completed:'
...@@ -33,8 +33,8 @@ object FSetStatus: TFSetStatus ...@@ -33,8 +33,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel2: TWebLabel object WebLabel2: TWebLabel
Left = 14 Left = 16
Top = 80 Top = 32
Width = 48 Width = 48
Height = 14 Height = 14
Caption = 'Order ID:' Caption = 'Order ID:'
...@@ -48,8 +48,8 @@ object FSetStatus: TFSetStatus ...@@ -48,8 +48,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel3: TWebLabel object WebLabel3: TWebLabel
Left = 172 Left = 174
Top = 78 Top = 30
Width = 57 Width = 57
Height = 14 Height = 14
Caption = 'Job Name:' Caption = 'Job Name:'
...@@ -63,8 +63,8 @@ object FSetStatus: TFSetStatus ...@@ -63,8 +63,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel4: TWebLabel object WebLabel4: TWebLabel
Left = 11 Left = 13
Top = 142 Top = 94
Width = 51 Width = 51
Height = 14 Height = 14
Caption = 'Ship Due:' Caption = 'Ship Due:'
...@@ -78,8 +78,8 @@ object FSetStatus: TFSetStatus ...@@ -78,8 +78,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel5: TWebLabel object WebLabel5: TWebLabel
Left = 169 Left = 171
Top = 142 Top = 94
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -93,8 +93,8 @@ object FSetStatus: TFSetStatus ...@@ -93,8 +93,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblMount: TWebLabel object lblMount: TWebLabel
Left = 324 Left = 326
Top = 200 Top = 152
Width = 62 Width = 62
Height = 14 Height = 14
Caption = 'Mount Due:' Caption = 'Mount Due:'
...@@ -108,8 +108,8 @@ object FSetStatus: TFSetStatus ...@@ -108,8 +108,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblMountNew: TWebLabel object lblMountNew: TWebLabel
Left = 482 Left = 484
Top = 200 Top = 152
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -123,8 +123,8 @@ object FSetStatus: TFSetStatus ...@@ -123,8 +123,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblPlate: TWebLabel object lblPlate: TWebLabel
Left = 11 Left = 13
Top = 200 Top = 152
Width = 54 Width = 54
Height = 14 Height = 14
Caption = 'Plate Due:' Caption = 'Plate Due:'
...@@ -138,8 +138,8 @@ object FSetStatus: TFSetStatus ...@@ -138,8 +138,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblPlateNew: TWebLabel object lblPlateNew: TWebLabel
Left = 169 Left = 171
Top = 200 Top = 152
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -153,8 +153,8 @@ object FSetStatus: TFSetStatus ...@@ -153,8 +153,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblArt: TWebLabel object lblArt: TWebLabel
Left = 324 Left = 326
Top = 142 Top = 94
Width = 44 Width = 44
Height = 14 Height = 14
Caption = 'Art Due:' Caption = 'Art Due:'
...@@ -168,8 +168,8 @@ object FSetStatus: TFSetStatus ...@@ -168,8 +168,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblArtNew: TWebLabel object lblArtNew: TWebLabel
Left = 482 Left = 484
Top = 142 Top = 94
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -183,8 +183,8 @@ object FSetStatus: TFSetStatus ...@@ -183,8 +183,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object wlcbStatus: TWebLookupComboBox object wlcbStatus: TWebLookupComboBox
Left = 326 Left = 328
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
ElementClassName = 'custom-select' ElementClassName = 'custom-select'
...@@ -194,8 +194,8 @@ object FSetStatus: TFSetStatus ...@@ -194,8 +194,8 @@ object FSetStatus: TFSetStatus
LookupValues = <> LookupValues = <>
end end
object dtpDate: TWebDateTimePicker object dtpDate: TWebDateTimePicker
Left = 484 Left = 486
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -206,8 +206,8 @@ object FSetStatus: TFSetStatus ...@@ -206,8 +206,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object btnConfirm: TWebButton object btnConfirm: TWebButton
Left = 14 Left = 16
Top = 273 Top = 225
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Confirm' Caption = 'Confirm'
...@@ -222,8 +222,8 @@ object FSetStatus: TFSetStatus ...@@ -222,8 +222,8 @@ object FSetStatus: TFSetStatus
OnClick = btnConfirmClick OnClick = btnConfirmClick
end end
object btnCancel: TWebButton object btnCancel: TWebButton
Left = 125 Left = 127
Top = 273 Top = 225
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Cancel' Caption = 'Cancel'
...@@ -238,8 +238,8 @@ object FSetStatus: TFSetStatus ...@@ -238,8 +238,8 @@ object FSetStatus: TFSetStatus
OnClick = btnCancelClick OnClick = btnCancelClick
end end
object edtOrderID: TWebEdit object edtOrderID: TWebEdit
Left = 14 Left = 16
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
HelpType = htKeyword HelpType = htKeyword
...@@ -259,31 +259,9 @@ object FSetStatus: TFSetStatus ...@@ -259,31 +259,9 @@ object FSetStatus: TFSetStatus
TabOrder = 1 TabOrder = 1
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object edtNotification: TWebEdit
Left = 14
Top = 24
Width = 303
Height = 22
HelpType = htKeyword
TabStop = False
ChildOrder = 8
ElementClassName = 'form-control'
ElementFont = efCSS
Enabled = False
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -8
Font.Name = 'Arial'
Font.Style = []
HeightPercent = 100.000000000000000000
HideSelection = False
ParentFont = False
TabOrder = 1
WidthPercent = 100.000000000000000000
end
object edtJobName: TWebEdit object edtJobName: TWebEdit
Left = 172 Left = 174
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
HelpType = htKeyword HelpType = htKeyword
...@@ -304,8 +282,8 @@ object FSetStatus: TFSetStatus ...@@ -304,8 +282,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object dtpShipDue: TWebDateTimePicker object dtpShipDue: TWebDateTimePicker
Left = 11 Left = 13
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -317,8 +295,8 @@ object FSetStatus: TFSetStatus ...@@ -317,8 +295,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewShipDue: TWebDateTimePicker object dtpNewShipDue: TWebDateTimePicker
Left = 169 Left = 171
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -329,8 +307,8 @@ object FSetStatus: TFSetStatus ...@@ -329,8 +307,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpMountDue: TWebDateTimePicker object dtpMountDue: TWebDateTimePicker
Left = 324 Left = 326
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -342,8 +320,8 @@ object FSetStatus: TFSetStatus ...@@ -342,8 +320,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewMountDue: TWebDateTimePicker object dtpNewMountDue: TWebDateTimePicker
Left = 482 Left = 484
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -354,8 +332,8 @@ object FSetStatus: TFSetStatus ...@@ -354,8 +332,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpPlateDue: TWebDateTimePicker object dtpPlateDue: TWebDateTimePicker
Left = 11 Left = 13
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -367,8 +345,8 @@ object FSetStatus: TFSetStatus ...@@ -367,8 +345,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewPlateDue: TWebDateTimePicker object dtpNewPlateDue: TWebDateTimePicker
Left = 169 Left = 171
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -379,8 +357,8 @@ object FSetStatus: TFSetStatus ...@@ -379,8 +357,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpArtDue: TWebDateTimePicker object dtpArtDue: TWebDateTimePicker
Left = 324 Left = 326
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -392,8 +370,8 @@ object FSetStatus: TFSetStatus ...@@ -392,8 +370,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewArtDue: TWebDateTimePicker object dtpNewArtDue: TWebDateTimePicker
Left = 482 Left = 484
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
......
...@@ -17,7 +17,6 @@ type ...@@ -17,7 +17,6 @@ type
btnCancel: TWebButton; btnCancel: TWebButton;
WebLabel2: TWebLabel; WebLabel2: TWebLabel;
edtOrderID: TWebEdit; edtOrderID: TWebEdit;
edtNotification: TWebEdit;
edtJobName: TWebEdit; edtJobName: TWebEdit;
WebLabel3: TWebLabel; WebLabel3: TWebLabel;
WebLabel4: TWebLabel; WebLabel4: TWebLabel;
......
...@@ -57,35 +57,19 @@ begin ...@@ -57,35 +57,19 @@ begin
Exit; Exit;
end; end;
asm ShowConfirmationModal(
var modal = document.getElementById('confirmation_modal'); 'Are you sure you want to save changes to your profile?',
var btnCancel = document.getElementById('btn_confirm_cancel'); 'Save',
var btnConfirm = document.getElementById('btn_confirm_delete'); 'Cancel',
var modalBody = document.getElementById('modal_body'); procedure(confirmed: Boolean)
var self = this; begin
if confirmed then
if (modal && btnCancel && btnConfirm && modalBody) { EditUser;
modalBody.innerText = 'Are you sure you want to save changes to your profile?'; end
btnCancel.innerText = 'Cancel'; );
btnConfirm.innerText = 'Save';
if (modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.show();
btnConfirm.onclick = function () {
self.EditUser();
bsModal.hide();
};
}
end;
end; end;
[async] procedure TFViewUserProfile.EditUser; [async] procedure TFViewUserProfile.EditUser;
var var
xdcResponse: TXDataClientResponse; xdcResponse: TXDataClientResponse;
...@@ -114,28 +98,33 @@ begin ...@@ -114,28 +98,33 @@ begin
end; end;
procedure TFViewUserProfile.btnCancelClick(Sender: TObject); procedure TFViewUserProfile.btnCancelClick(Sender: TObject);
var
xdcResponse: TXDataClientResponse;
userList: TJSObject;
data: TJSArray;
user: TJSObject;
begin begin
GetUser(); ShowConfirmationModal(
showToast('Failure: Changes discarded'); 'Are you sure you want to cancel all your changes?',
'Yes',
'No',
procedure(confirmed: Boolean)
begin
if confirmed then
begin
GetUser();
ShowToast('Changes discarded', 'danger');
end;
end
);
end; end;
procedure TFViewUserProfile.WebFormShow(Sender: TObject); procedure TFViewUserProfile.WebFormShow(Sender: TObject);
begin begin
GetUser(); GetUser();
//edtJwt.Text := TJSJSON.stringify(AuthService.TokenPayload); //edtJwt.Text := TJSJSON.stringify(AuthService.TokenPayload);
// View.UserProfile.WebFormShow // View.UserProfile.WebFormShow
chkAdminUser.Checked := SameText(string(AuthService.TokenPayload.Properties['user_admin']), 'true'); chkAdminUser.Checked := SameText(string(AuthService.TokenPayload.Properties['user_admin']), 'true');
end; end;
procedure TFViewUserProfile.GetUser; procedure TFViewUserProfile.GetUser;
var var
xdcResponse: TXDataClientResponse; xdcResponse: TXDataClientResponse;
......
...@@ -43,22 +43,5 @@ ...@@ -43,22 +43,5 @@
</div> </div>
</div> </div>
</div> </div>
<!--</div> -->
<!--</div> -->
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Are you sure you want to make these changes?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete" >Confirm</button>
</div>
</div>
</div>
</div>
...@@ -87,6 +87,7 @@ uses ...@@ -87,6 +87,7 @@ uses
System.Generics.Collections, System.Generics.Collections,
XData.Sys.Exceptions, uLibrary, rOrderWeb, rOrderCutting; XData.Sys.Exceptions, uLibrary, rOrderWeb, rOrderCutting;
procedure TLookupService.AfterConstruction; procedure TLookupService.AfterConstruction;
begin begin
inherited; inherited;
...@@ -94,12 +95,14 @@ begin ...@@ -94,12 +95,14 @@ begin
end; end;
procedure TLookupService.BeforeDestruction; procedure TLookupService.BeforeDestruction;
begin begin
ordersDB.Free; ordersDB.Free;
inherited; inherited;
end; end;
function TLookupService.DelShippingAddress(AddressID, CustomerID: string): TJSONObject; function TLookupService.DelShippingAddress(AddressID, CustomerID: string): TJSONObject;
var var
SQL: string; SQL: string;
...@@ -300,7 +303,6 @@ begin ...@@ -300,7 +303,6 @@ begin
end; end;
function TLookupService.AddShippingAddress(AddressInfo: string): TJSONObject; function TLookupService.AddShippingAddress(AddressInfo: string): TJSONObject;
var var
JSONData: TJSONObject; JSONData: TJSONObject;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
MemoLogLevel=3 MemoLogLevel=3
FileLogLevel=5 FileLogLevel=5
webClientVersion=0.9.6 webClientVersion=0.9.6
LogFileNum=783 LogFileNum=787
[Database] [Database]
--Server=192.168.159.153 --Server=192.168.159.153
...@@ -18,5 +18,5 @@ CompanyID=9341454272655710 ...@@ -18,5 +18,5 @@ CompanyID=9341454272655710
ClientID=ABgO14uvjh8XqLud7spQ8lkb98AUpcdA7HbyMJfCAtl65sQ5yy ClientID=ABgO14uvjh8XqLud7spQ8lkb98AUpcdA7HbyMJfCAtl65sQ5yy
ClientSecret=bQ06TRemHeAGFzVHRaTUvUoBU9jpU9itK6MOMgqN ClientSecret=bQ06TRemHeAGFzVHRaTUvUoBU9jpU9itK6MOMgqN
RefreshToken=RT1-55-H0-1760199851kjdi3btbxslf7tq8m7cl RefreshToken=RT1-55-H0-1760199851kjdi3btbxslf7tq8m7cl
AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..O3e979eZoknEyMWs1-5Q5w.-z37ae8MYhIzRcekkINv43asF8sdeAzWmwRNHjt5btSaQGgK9yIK-ClhdmUaDUBuUyHYVu-rJyqTZ_2BjZUQZEDHNxC43iTtZGPNawcjJMEmVR6PdftSizoqz_ITuTVeyBCa0eKNFOcodeROFXVN0gW2Iu8fWiRbAk08vwGfuHoWR5B6v4Wipmc3EzVVFYHfzgifsomn3EwavpK33n6g4TrZ7nEOIEHZNHKXFpJ4fS1Y1DgYSJu1QEqDqQ6ONG7DfB5dm8OBy0dbMVJ3d7ajSSigLBpWKzGhfFDM_wlxk_cfWLHTqJ1vrZm1c0GmNozHcWqGkQAtKoucq6jua22L-3EM0UWryjBHIh3tDFqRdLtl9g8vLYPtXukTnefCst985xcG00jPyQNmxN4CBlgMlfD8Y0s76usKQzNBd6_LlF46StKXyX0f1EWehoEDZ7xya8jeh8Xu4cKJPPquRV4soGHgMQ76LCyHA8QfSHNdH8bYtNLVmX2PUjHFiO0PUFDSfI9ukjfeBv4gZmlPycf_7YNucdNAPogqWwyQ0WBRnkRCR4GmPIOI6XEIn5b_RavaYlwaLVxMch9Hz7yJLFkTINDP0u9VoZT1NOARdXCuRIyk1FdmI4j-rWE8UOsM1Bnl.AMj-4o-sgsryeHsA8ED04Q AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..SfER6nQ3SXAYYnEHK1PyTQ.D7j-TLHc2sTn73hXvNqdDM130yMmQjJjdOcY4RFA6sbpOePs0tcvdk3dg3BDZtPMLF4wHBsF49s6tlkUSgfe-p2LhBLzXUw_hUzLIOEUkJuvvM60Jq8s8X0L8fjy862UcpEF69tgg66_Tez6ENAZpi88iGfGOj5dmey2JMYJIkFiZ0_WnHUmW0BhiZPWqoxbCI6IAVCsigkkZMLSvV6FAYYhs6J20C9zHjvbrBnRrsJ6Ep_MZf3src6z8nv4BagVCl02A_u-em7M-V3Z4OnsoFaTHJpZ76zFlYFLS_pC2m3TaDPXw0KOhMH3Ax8pOjhK4WdEK2v4vcCq1dccqJjoNWhcQIIjwN-OhWAoe9BqUdtR8R-KQRJ49zys_zMCicepj3zLGJbkerMGPMLajXWNzd0rDwRGIFtNHnNXNhncnbK8vGpgI8idY2Da3Uj4WJ1tVFleKIhgxi1zQSWuypxC36MnD0Dg55jQA5Is0npfaNJKXG07qHuG4ro5SAALoTihuBewH57fKFGAkZK6XYOjm21al-Me2zf_PWQkO_S59XFQsgbbmB9l4j5qdr4xhdBnYin3O7T9hYo9UdP-qjIULEG0sQ-UIFoxFA5k3FQWEYTBZ337yJ3Qq7GATokzot6G.9FP-Ggly-5gd7suf8iM00w
LastRefresh=7/2/2025 2:45:23 PM LastRefresh=7/3/2025 9:23:39 AM
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment