File encoding preservation + content structure to help browse the code

This commit is contained in:
Alexandre Fontoura
2021-10-28 15:20:01 +01:00
parent c5f4f6ba25
commit 23151219b2
90 changed files with 1946 additions and 1815 deletions

View File

@@ -54,7 +54,7 @@ EY0 dd 0000
extrn nolanguage P_SinTab:WORD
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
.code
public NoLanguage Rot2D
@@ -69,12 +69,12 @@ EY0 dd 0000
public NoLanguage GetRealValue
public NoLanguage GetRealAngle
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ÛßßßÛ Ûßßßß ÛßßßÛ Û ßßÛßß Û ÛÜ ÜÛ Ûßßßß
; ÛÛßÛß ÛÛßß ÛÛßßÛ ÛÛ ÛÛ ÛÛ ÛÛß Û ÛÛßß
; ßß ß ßßßßß ßß ß ßßßßß ßßßßß ßß ßß ßß ß ßßßßß
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*/
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
;*══════════════════════════════════════════════════════════════════════════*
; █▀▀▀█ █▀▀▀▀ █▀▀▀█ █ ▀▀█▀▀ █▄ ▄█ █▀▀▀▀
; ██▀█▀ ██▀▀ ██▀▀█ ██ ██ ██ ██▀ █ ██▀▀
; ▀▀ ▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀▀ ▀▀ ▀ ▀▀▀▀▀
;*══════════════════════════════════════════════════════════════════════════*/
;*──────────────────────────────────────────────────────────────────────────*/
InitRealValue proc \
StartValue:DWORD,\
@@ -124,7 +124,7 @@ InitRealValue endp
@
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
;*──────────────────────────────────────────────────────────────────────────*/
InitRealAngle proc \
StartValue:DWORD,\
@@ -180,7 +180,7 @@ InitRealAngle endp
@
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
;*──────────────────────────────────────────────────────────────────────────*/
InitRealAngleConst proc \
StartValue:DWORD,\
@@ -260,7 +260,7 @@ InitRealAngleConst endp
@
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*──────────────────────────────────────────────────────────────────────────*
GetRealValue proc uses ebx,\
@@ -336,7 +336,7 @@ GetRealValue endp
@
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*──────────────────────────────────────────────────────────────────────────*
GetRealAngle proc uses ebx,\
ptrstruct:DWORD
@@ -449,7 +449,7 @@ GetRealAngle endp
@
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*──────────────────────────────────────────────────────────────────────────*
comment #
StopRealValue proc uses ds si,\
@@ -478,12 +478,12 @@ StopRealValue endp
#
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ÛßßßÛ Ûßßßß Ûßßßß Û Ûßßßß ßßßÛÛ
; ÛÛßÛß ÛÛßß ÛÛ ßÛ ÛÛ ÛÛßß ßßßÛÛ
; ßß ß ßßßßß ßßßßß ßßßßß ßßßßß ßßßßß ßßßßß
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*══════════════════════════════════════════════════════════════════════════*
; █▀▀▀█ █▀▀▀▀ █▀▀▀▀ █ █▀▀▀▀ ▀▀▀██
; ██▀█▀ ██▀▀ ██ ▀█ ██ ██▀▀ ▀▀▀██
; ▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀
;*══════════════════════════════════════════════════════════════════════════*
;*──────────────────────────────────────────────────────────────────────────*
BoundRegleTrois proc \
Valeur1:DWORD, Valeur2:DWORD, \
@@ -613,14 +613,14 @@ erreur: xor ax, ax
RegleTrois endp
#
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ÛÛßßß ÛßßßÛ ÛßßßÛ
; ßßßßÛ ÛÛ ÜÛ ÛÛßÛß
; ßßßßß ßßßß ßß ß
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*══════════════════════════════════════════════════════════════════════════*
; ██▀▀▀ █▀▀▀█ █▀▀▀█
; ▀▀▀▀█ ██ ▄█ ██▀█▀
; ▀▀▀▀▀ ▀▀▀▀ ▀▀
;*══════════════════════════════════════════════════════════════════════════*
;*──────────────────────────────────────────────────────────────────────────*
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
; EAX = Sqr(EAX)
Sqr PROC NEAR USES EBX
@@ -631,11 +631,11 @@ Sqr PROC NEAR USES EBX
xor edx, edx
mov ebx, eax
bsr eax, ebx ; cherche dernier bit 1
bsr eax, ebx ; cherche dernier bit à 1
mov cl, 33
sub cl, al
and cl, -2 ; calcul de combien decaler
; gauche pour avoir le
; à gauche pour avoir le
; premier doublet non nul
; dans edx
shld edx, ebx, cl
@@ -677,7 +677,7 @@ Sqr ENDP
comment @
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
; EAX = Sqr(EAX)
Sqr proc near
@@ -689,12 +689,12 @@ Sqr proc near
mov eax, 1
xor edx, edx
bsr ebx, esi ; cherche dernier bit 1
bsr ebx, esi ; cherche dernier bit à 1
mov cx, 33
sub cx, bx
and cx, -2 ; calcul de combien decaler
; gauche pour avoir le
; à gauche pour avoir le
; premier doublet non nul
; dans edx
shld edx, esi, cl
@@ -744,7 +744,7 @@ Sqr endp
comment @
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
; AX = Sqr(DX:AX)
Sqr proc near
@@ -818,28 +818,28 @@ Sqr endp
@
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ÛßßßÜ Û ÛÛßßß ßßÛßß ÛßßßÛ ÛÛÜ Û Ûßßßß Ûßßßß
; ÛÛ Û ÛÛ ßßßßÛ ÛÛ ÛÛßßÛ ÛÛßÛÛ ÛÛ ÛÛßß
; ßßßß ßß ßßßßß ßß ßß ß ßß ß ßßßßß ßßßßß
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*══════════════════════════════════════════════════════════════════════════*
; █▀▀▀▄ ██▀▀▀ ▀▀█▀▀ █▀▀▀█ ██▄ █ █▀▀▀▀ █▀▀▀▀
; ██ ██ ▀▀▀▀█ ██ ██▀▀█ ██▀██ ██ ██▀▀
; ▀▀▀▀ ▀▀ ▀▀▀▀▀ ▀▀ ▀▀ ▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀
;*══════════════════════════════════════════════════════════════════════════*
;*──────────────────────────────────────────────────────────────────────────*
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
Distance2D proc \
px0:DWORD,py0:DWORD, px1:DWORD,py1:DWORD
mov eax, px1
sub eax, px0 ; Dx = x1-x0
imul eax, eax ; Dxý
imul eax, eax ; Dx²
mov ecx, py1
sub ecx, py0 ; Dy = y1-y0
imul ecx, ecx ; Dyý
add eax, ecx ; Dxý + Dyý
imul ecx, ecx ; Dy²
add eax, ecx ; Dx² + Dy²
call Sqr ; eax = û (Dxý+Dyý)
call Sqr ; eax = (Dx²+Dy²)
ret
@@ -852,14 +852,14 @@ Distance2D proc uses ebx,\
mov eax, px1
sub eax, px0 ; Dx = x1-x0
imul eax, eax ; Dxý
imul eax, eax ; Dx²
mov ebx, py1
sub ebx, py0 ; Dy = y1-y0
imul ebx, ebx ; Dyý
add eax, ebx ; Dxý + Dyý
imul ebx, ebx ; Dy²
add eax, ebx ; Dx² + Dy²
call Sqr ; eax = û (Dxý+Dyý)
call Sqr ; eax = (Dx²+Dy²)
ret
@@ -867,7 +867,7 @@ Distance2D endp
@
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
Distance3D proc \
px0:DWORD,py0:DWORD,pz0:DWORD, px1:DWORD,py1:DWORD,pz1:DWORD
@@ -875,19 +875,19 @@ Distance3D proc \
mov eax, px1
sub eax, px0
imul eax, eax ; Dxý
imul eax, eax ; Dx²
mov ecx, py1
sub ecx, py0
imul ecx, ecx ; Dyý
imul ecx, ecx ; Dy²
add eax, ecx
mov ecx, pz1
sub ecx, pz0
imul ecx, ecx ; Dzý
imul ecx, ecx ; Dz²
add eax, ecx
call Sqr ; eax = û (Dxý+Dyý+Dzý)
call Sqr ; eax = (Dx²+Dy²+Dz²)
ret
@@ -901,19 +901,19 @@ Distance3D proc uses ebx,\
mov eax, px1
sub eax, px0
imul eax, eax ; Dxý
imul eax, eax ; Dx²
mov ebx, py1
sub ebx, py0
imul ebx, ebx ; Dyý
imul ebx, ebx ; Dy²
add eax, ebx
mov ebx, pz1
sub ebx, pz0
imul ebx, ebx ; Dzý
imul ebx, ebx ; Dz²
add eax, ebx
call Sqr ; eax = û (Dxý+Dyý+Dzý)
call Sqr ; eax = (Dx²+Dy²+Dz²)
ret
@@ -921,14 +921,14 @@ Distance3D endp
@
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ßßÛßß ÛßßßÛ Û Ûßßßß ÛßßßÛ
; ÛÛ ÛÛßÛß ÛÛ ÛÛ ßÛ ÛÛ Û
; ßß ßß ß ßß ßßßßß ßßßßß
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*
;*══════════════════════════════════════════════════════════════════════════*
; ▀▀█▀▀ █▀▀▀█ █▀▀▀▀ █▀▀▀█
; ██ ██▀█▀ ██ ██ ▀█ ██
; ▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀▀
;*══════════════════════════════════════════════════════════════════════════*
;*──────────────────────────────────────────────────────────────────────────*
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
GetAngle proc uses esi edi ebx ebp,\
x0:DWORD, z0:DWORD, x1:DWORD, z1:DWORD
@@ -942,8 +942,8 @@ GetAngle proc uses esi edi ebx ebp,\
sub eax, x0 ; x = x1 - x0
mov ebp, eax ; save x
imul eax, eax ; xý
imul edx, edx ; zý
imul eax, eax ; x²
imul edx, edx ; z²
cmp eax, edx
jae noswap
xchg ebp, edi ; permute x z
@@ -952,8 +952,8 @@ GetAngle proc uses esi edi ebx ebp,\
noswap:
and ebp, -2
carre:
add eax, edx ; eax = xý + zý
call Sqr ; eax = sqr(xý + zý)
add eax, edx ; eax = x² + z²
call Sqr ; eax = sqr(x² + z²)
mov [Distance], eax
@@ -1042,7 +1042,7 @@ noswap:
carre:
imul eax, eax
imul edx, edx
add eax, edx ; eax = xý + zý
add eax, edx ; eax = x² + z²
call Sqr
@@ -1111,15 +1111,15 @@ GetAngle endp
comment @
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
; Rotation 2D autour d'un axe
; entre: eax=X ecx=Y edx=T
; entrée: eax=X ecx=Y edx=T
;
; sortie: eax = X'=X*cos(T)-Y*sin(T)
; ecx = Y'=X*sin(T)+Y*cos(T)
;
; ( ebx, ebp, edi dtruits )
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ( ebx, ebp, edi détruits )
;*══════════════════════════════════════════════════════════════════════════*
RotEXY proc
@@ -1148,15 +1148,15 @@ norot: ret
RotEXY endp
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
; Rotation 2D autour d'un axe
; entre: ebx=X ecx=Y ebp=T
; entrée: ebx=X ecx=Y ebp=T
;
; sortie: eax = X'=X*cos(T)-Y*sin(T)
; edx = Y'=X*sin(T)+Y*cos(T)
;
; ( ebx, ebp, edi dtruits )
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
; ( ebx, ebp, edi détruits )
;*══════════════════════════════════════════════════════════════════════════*
RotEXY proc
@@ -1199,7 +1199,7 @@ RotEXY endp
@
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
Rot2D proc uses ebx,\
coorx:DWORD,coory:DWORD,angle:DWORD
@@ -1254,6 +1254,6 @@ Rot2D endp
@
;*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
;*══════════════════════════════════════════════════════════════════════════*
END