Welcome to iraf.net Thursday, March 28 2024 @ 09:03 AM GMT


 Forum Index > Help Desk > Systems New Topic Post Reply
 IRAF install using Cygwin - Stuck at XGterm
   
Tim-H
 04/17/2015 10:18PM (Read 6836 times)  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Hi all,

I'm installing IRAF under Cygwin using the following guide http://www.iac.es/sieinvens/siepedia/pmwiki.php?n=HOWTOs.IrafCygwin

After getting stuck on 'mkiraf' for a while I finally got it to work. Now the issue seems to be Xgterm. When i try and run it i get the error "/usr/local/bin/xgterm.exe: error while loading shared libraries: cygncurses7.dll: cannot open shared object file: No such file or directory" Now when I use cygwin install (the 32bit one) to install pacakges, I can and have installed ncurses 9 and 10, but get no option for 7. The file "cygncurses7.dll" isn't on my system.

Can you guys offer some ideas on how to fix this? I feel like I'm so close, can't give up now.

Tim

 
Profile Email
 Quote
fitz
 04/17/2015 10:22PM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
Google for 'cygncurses7.dll' and you'll find multiple download sites for it. An alternative is to just use the XTerm that comes with the Cygwin install as the graphics terminal instead of XGTerm, but be sure to reset the terminal type when you do a MKIRAF.

 
Profile Email
 Quote
Tim-H
 04/17/2015 10:56PM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Ok, that seemed to get me to the next stage....

Now these are the following error, depending on what I input:

I'm in Cygwin X.

1st input: "xgterm": errror: Unable to find termcap entry.

Ok fine, I'll try it with xterm.

xterm runs fine.

I've changed mkiraf to use xterm

under my home directory: /home/tim/iraf/

Command: cl
Error: Cannot fid /iraf/iraf//bin.xxx/ecl.e

Command: ecl
Error: /usr/local/bin/ecl: line 1 cl.csh: command not found.

Yet another road block. This had better be worth it.....

 
Profile Email
 Quote
fitz
 04/17/2015 11:18PM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
1st input: "xgterm": errror: Unable to find termcap entry.


Check the value of the 'TERM' environment variable. If it's something like 'xterm-color' try changing it to just 'xterm' and if it still fails see whether you have a /etc/termcap file. The binary is rather old and Cygwin X may now be using the newer terminfo system.


Command: cl
Error: Cannot fid /iraf/iraf//bin.xxx/ecl.e


Try setting the environment variable IRAFARCH to be "cygwin". The system should determine this automatically but may be failing if the test used in the original port is no longer valid.


Command: ecl
Error: /usr/local/bin/ecl: line 1 cl.csh: command not found.


The cl.csh script is located in the $iraf/unix/hlib directory but /usr/local/bin/ecl is a symlink to this file. Do both of these exist on your system and does the symlink point to an actual file or an invalid path?


Yet another road block. This had better be worth it.....


Keep in mind Cygwin is no longer a supported platform and has evolved since the v2.14 system port was done. Whether it's all worth it depends on what you're trying to do, for something critical I'd recommend a supported Linux platform, perhaps run using a virtual machine on your windows system (e.g. VirtualBox).

 
Profile Email
 Quote
Tim-H
 04/18/2015 11:12PM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
You're right.....

I thought I could be clever and have it running as a windows program. Biting the bullet and getting Wubi now. Hopefully that will be a bit smoother. One of these days i'll make the full switch to Linux.

Thanks for the help, i felt like i was close, but obviously not.

Tim

 
Profile Email
 Quote
Tim-H
 04/19/2015 12:37AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
I think i'm going to really try with Cgywin. I can feel that i'm just so close.

I just tried installing Ubuntu and had no end of troubles. This machine has very limited hdd space and no cd drive.

I'll try find some solutions to the issues you posted. I get the feeling I'll have to solve all of them.

Tim

 
Profile Email
 Quote
Tim-H
 04/19/2015 12:52AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Quote by: fitz

1st input: "xgterm": errror: Unable to find termcap entry.


Check the value of the 'TERM' environment variable. If it's something like 'xterm-color' try changing it to just 'xterm' and if it still fails see whether you have a /etc/termcap file. The binary is rather old and Cygwin X may now be using the newer terminfo system.



Humm I'm not sure how to do that. I do have a Termcap file, it's in /iraf/iraf/ directory. I tried copying it to the /etc/ directory, but to no avail.

Quote by: fitz




Command: cl
Error: Cannot fid /iraf/iraf//bin.xxx/ecl.e



Try setting the environment variable IRAFARCH to be "cygwin". The system should determine this automatically but may be failing if the test used in the original port is no longer valid.



Again, I'm not sure how to set the environmental variables.


Quote by: fitz



Command: ecl
Error: /usr/local/bin/ecl: line 1 cl.csh: command not found.


The cl.csh script is located in the $iraf/unix/hlib directory but /usr/local/bin/ecl is a symlink to this file. Do both of these exist on your system and does the symlink point to an actual file or an invalid path?



Both of them exist. I check the ecl symlink and it does go to the correct path. Same thing with the cl sysmlink. I checked this in notepad, and there are some asian characters infront. I copied the file and tried deleting them, but that caused another exe error so I went back to the normal one.

Thanks again for your help, i really feel so close.

Tim

 
Profile Email
 Quote
Tim-H
 04/19/2015 01:13AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
So I've gotten part way with the xgterm issue - it would help if i had the Termcap package installed. I've now done so and ther eis a termcap in my /etc/ folder. But the issue still remains.

 
Profile Email
 Quote
Tim-H
 04/19/2015 03:40AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Hi fitz,

So I think I may have progressed a little.....

With the IRAFARCH environmental not being autoset to Cygwin, I found the IRAFARCH environmental in .login (under /iraf/iraf/local) and it seems to be correctly identifying cygwin. I tried hard overriding it, but to no avail. I also tried creating a .login (under my home directory). I guess i'm not sure where to define this environment variable. Perhaps, the program isn't finding .login under /iraf/iraf/ or something.

Also, my wife suggested that the shell may be the whole issue. I'm in Bash at the moment. Do I need to change to tcsh shell? If so how?

Tim

 
Profile Email
 Quote
fitz
 04/19/2015 03:48AM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
IRAF is usable from a Bash shell, and presumably you already have tcsh installed to run the IRAF command scripts. To set environment variables just use something like:

PHP Formatted Code

    export IRAFARCH=cygwin
    export TERM=xterm
 


Put these in your $HOME/.bashrc file or on the commandline before you login to the CL. I think the default TERM set by iraf is 'xterm-color' which may no longer be an entry under Cygwin. The $iraf/dev/termcap file is one used by iraf itself and won't work as the /etc file.

The normal way to change your user shell is with the 'chsh' command, but this does exist under Cygwin. Instead, edit the /etc/passwd file and change the /bin/sh in your account to /bin/csh (or perhaps /bin/tcsh if /bin/csh does exist specifically).

Lastly, you can execute the command:

% csh -x /usr/local/bin/cl (or 'ecl')

to trace the script as it runs, this may give you a clue as to why it isn't finding the proper architecture.

 
Profile Email
 Quote
Tim-H
 04/19/2015 04:20AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Ahh cool, thanks

This is the output from the csh -x /usr/local/bin/cl

csh -x /usr/local/bin/cl
set cl_binary = ecl.e
if ( `echo $0 | egrep ecl` != ) then
egrep ecl
echo /usr/local/bin/cl
if ( `echo $0 | egrep vo` != ) then
egrep vo
echo /usr/local/bin/cl
if ( 0 \$this->_split2($m[0]) 0 ) then
set d_iraf = /iraf/iraf/
if ( 0 ) then
if ( 0 == 0 ) then
setenv iraf /iraf/iraf/
endif
if ( 0 \$this->_split2($m[0]) 0 ) then
if ( 1 ) then
if ( -e /iraf/iraf//bin.cygwin/ecl.e ) then
endif
if ( ! 0 ) then
set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6`
uname -s
cut -c1-6
tr [A-Z] [a-z]
if ( -f /etc/redhat-release ) then
set mach = `uname -s | tr '[A-Z]' '[a-z]'`
tr [A-Z] [a-z]
uname -s
endif
if ( cygwin_nt-6.1-wow == darwin ) then
if ( cygwin == cygwin ) then
setenv mach cygwin
endif
if ( -e /iraf/iraf//bin.cygwin_nt-6.1-wow/ecl.e ) then
if ( -e /iraf/iraf//bin.freebsd/ecl.e ) then
if ( -e /iraf/iraf//bin.macosx/ecl.e ) then
if ( -e /iraf/iraf//bin.macintel/ecl.e ) then
if ( -e /iraf/iraf//bin.cygwin/ecl.e ) then
if ( -e /iraf/iraf//bin.linux/ecl.e ) then
if ( -e /iraf/iraf//bin.redhat/ecl.e ) then
if ( -e /iraf/iraf//bin.linuxppc/ecl.e ) then
if ( -e /iraf/iraf//bin.sunos/ecl.e ) then
if ( -e /iraf/iraf//bin.linuz/ecl.e ) then
echo cannot find /iraf/iraf//bin.xxx/ecl.e
cannot find /iraf/iraf//bin.xxx/ecl.e
exit 1


I very much appreciate you helping me out with this.

Tim

 
Profile Email
 Quote
fitz
 04/19/2015 04:33AM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040

The fix would appear to be to edit the $iraf/unix/hlib/cl.csh startup script. On line 96 you should see

set mach = `uname -s | tr '[A-Z]' '[a-z]'`

Change this to read

set mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6`

The reason is that the system name returned by the "uname -s" command is now "cygwin_nt-6.1-wow" instead of just "cygwin" and so isn't matching any of the cases.

Assuming you actually have a /iraf/iraf/bin.cygwin/cl.e (or 'ecl.e') binary it should now be found. If is still doesn't start up, try executing the binary at that path directly, if there is a host error message (e.g. "cannot execute" or somesuch) let me know, it could indicate an incompatibility of the binaries in general.

 
Profile Email
 Quote
Tim-H
 04/19/2015 02:43PM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Very similar output. I changed it as you said and still got the same error.

$ csh -x /usr/local/bin/cl
set cl_binary = ecl.e
if ( `echo $0 | egrep ecl` != ) then
echo /usr/local/bin/cl
egrep ecl
if ( `echo $0 | egrep vo` != ) then
egrep vo
echo /usr/local/bin/cl
if ( 0 \$this->_split2($m[0]) 0 ) then
set d_iraf = /iraf/iraf/
if ( 0 ) then
if ( 0 == 0 ) then
setenv iraf /iraf/iraf/
endif
if ( 0 \$this->_split2($m[0]) 0 ) then
if ( 1 ) then
if ( -e /iraf/iraf//bin.cygwin/ecl.e ) then
endif
if ( ! 0 ) then
set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6`
uname -s
cut -c1-6
tr [A-Z] [a-z]
if ( -f /etc/redhat-release ) then
set mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6`
uname -s
tr [A-Z] [a-z]
cut -c1-6
endif
if ( cygwin == darwin ) then
if ( cygwin == cygwin ) then
setenv mach cygwin
endif
if ( -e /iraf/iraf//bin.cygwin/ecl.e ) then
if ( -e /iraf/iraf//bin.freebsd/ecl.e ) then
if ( -e /iraf/iraf//bin.macosx/ecl.e ) then
if ( -e /iraf/iraf//bin.macintel/ecl.e ) then
if ( -e /iraf/iraf//bin.cygwin/ecl.e ) then
if ( -e /iraf/iraf//bin.linux/ecl.e ) then
if ( -e /iraf/iraf//bin.redhat/ecl.e ) then
if ( -e /iraf/iraf//bin.linuxppc/ecl.e ) then
if ( -e /iraf/iraf//bin.sunos/ecl.e ) then
if ( -e /iraf/iraf//bin.linuz/ecl.e ) then
echo cannot find /iraf/iraf//bin.xxx/ecl.e
cannot find /iraf/iraf//bin.xxx/ecl.e
exit 1

 
Profile Email
 Quote
fitz
 04/20/2015 03:48PM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
The script is somehow not detecting the /iraf/iraf/bin.cygwin/cl.e as an executable file. To find out why, first do:

PHP Formatted Code
% ls -l /iraf/iraf/bin.cygwin/cl.e             # and/or 'ecl.e'


to make sure the path is valid and the execute permissions are set. If the file exists at that path, try running it directly and let me know what the error message is. The command

PHP Formatted Code
% ldd /iraf/iraf/bin.cygwin/cl.e


will tell you whether there are any missing shared libraries, but my recollection is this is a static binary.

Lastly, be aware that IRAF v2.14 was a 32-bit only application, if you're using a 64-bit version of Cygwin then you'll either need to install 32-bit compatibility libraries (sorry I don't have a list of specific packages to install) or else use 32-bit Cygwin. The IRAF v2.15 and later systems support 64-bit, but unfortunately not Cygwin.

 
Profile Email
 Quote
Tim-H
 04/21/2015 01:18AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
ok, another step closer.....

I had the bin.cygwin folder in /iraf/irafbin/ with a file bin.cygwin in the main directory. I had to rename the file to bin.cygwin.OLD, to put the file in. Now when i run cl i get:

Error: Syntax error
Called as: 'cl()'
Called as: 'cl()'
Error while reading login.cl file - may need to be rebuilt with mkiraf
Fatal startup error. CL dies.

I have remade it with mkiraf and setting the terminal type: xterm, withe same error.


When i do the load dependencies i get:

ldd /iraf/iraf/bin.cygwin/cl.e
ntdll.dll =\$this->_split2($m[0]) /cygdrive/c/windows/SysWOW64/ntdll.dll (0x77840000)
kernel32.dll =\$this->_split2($m[0]) /cygdrive/c/windows/syswow64/kernel32.dll (0x761b0000)
KERNELBASE.dll =\$this->_split2($m[0]) /cygdrive/c/windows/syswow64/KERNELBASE.dll (0x75d70000)
cygwin1.dll =\$this->_split2($m[0]) /usr/bin/cygwin1.dll (0x61000000)

I did make sure I download the 32bit edition of both Cygwin and IRAF.

Does this help?

 
Profile Email
 Quote
fitz
 04/21/2015 05:48AM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
In a normal installation, the /iraf/iraf/bin.cygwin is a symlink pointing to "../irafbin/bin.cygwin", where the actual directory containing the binaries is then /iraf/irafbin/bin.cygwin. If you're /iraf/iraf/bin.cygwin is an actual file then it probably means you did a copy of the iraf tree from someplace else which turned the symlink into an empty directory and made the path invalid.

That means you don't actually have a valid path to the binary and explains the messages. The fix then is to do:

PHP Formatted Code

    % cd /iraf/iraf            # go to iraf root
   % rm -rf bin.cygwin noao/bin.cygwin            # remove empty dirs
   % ln -s ../irafbin/bin.cygwin bin.cygwin          # fix core binary directory
   % cd noao ; ln -s ../../irafbin/noao.bin.cygwin bin.cygwin      # fix NOAO package binaries
 


Alternatively you could just erase /iraf/iraf files and then unpack the distribution file again in the /iraf/iraf directory to recreate what should be a symlink.

In the end, you should be able to execute /iraf/iraf/bin.cygwin/cl.e directly, and the path /iraf/iraf/bin.cygwin should contain all the core binaries (i.e. the IB distribution file). Later versions of IRAF use a single-file installation to avoid much of this headache. Hope this helps.[/code]

 
Profile Email
 Quote
Tim-H
 04/22/2015 03:38AM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Still no luck.

I ran the code as suggested, but it gave the same syntax error.

I originally downloaded and unpacked the files (as http://www.iac.es/sieinvens/siepedia/pmwiki.php?n=HOWTOs.IrafCygwin sugested) from the NOAO ftp. They are all v 2.14, as this was the latest version that worked with cygwin.

I tried running the cl.e file directly from /iraf/irafbin/bin.cygwin/cl.e . /iraf/iraf/bin.cygwin/ is not a directory that exists, unless I copy it over from irafbin. This just crashed the smae way, but it has a 'Warning: no login.cl found in login directory'.

So far the best is running cl from my home/tim/iraf directory. Note: this is where I ran the mkiraf command from.

 
Profile Email
 Quote
fitz
 04/27/2015 06:17AM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
There may be several things to sort out here:

I ran the code as suggested, but it gave the same syntax error.


The message indicates a CL syntax error (as opposed to a script error with the 'cl' command itself). The MKIRAF command takes a template login.cl file and substitutes various user parameters to create the login.cl to be used. IF you are running 'cl' from the $iraf/unix/hlib directory then you're actually using the template file, but the error should be more specific. To find out exactly where the error is, put the command "d_trace" at the top of the login.cl file and post the last bit of the output, and be sure you're running in the /home/tim/iraf directory where you did the MKIRAF.

I tried running the cl.e file directly from /iraf/irafbin/bin.cygwin/cl.e . /iraf/iraf/bin.cygwin/ is not a directory that exists, unless I copy it over from irafbin.


The /iraf/iraf/bin.cygwin is normally a symlink pointing to /iraf/irafbin/bin.cygwin, but apparently in your case this was turned into a file (e.g. because you did a copy of the iraf tree that didn't preserve the link). Copying the irafbin directory to /iraf/iraf/bin.cygwin is fine (i.e. it can be a real directory and isn't required to be a symlink, so long as the path to the /iraf/iraf/bin.cygwin/cl.e binary is valid). Verify this path is valid.

This just crashed the smae way, but it has a 'Warning: no login.cl found in login directory'.


That message means the binary actually ran (you should have seen a "cl\$this->_split2($m[0])" prompt), but didn't read the login.cl file, which is why I questioned what directory you were in.

 
Profile Email
 Quote
Tim-H
 04/27/2015 10:23PM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Quote by: fitz

There may be several things to sort out here:

I ran the code as suggested, but it gave the same syntax error.


The message indicates a CL syntax error (as opposed to a script error with the 'cl' command itself). The MKIRAF command takes a template login.cl file and substitutes various user parameters to create the login.cl to be used. IF you are running 'cl' from the $iraf/unix/hlib directory then you're actually using the template file, but the error should be more specific. To find out exactly where the error is, put the command "d_trace" at the top of the login.cl file and post the last bit of the output, and be sure you're running in the /home/tim/iraf directory where you did the MKIRAF.




I tried this and got the same error with no additional information. I put "d_trace" at the top of the login.cl file and ran it from the /home/tim/iraf directory. Is that all I have to put there, or is there something like "command="?

 
Profile Email
 Quote
fitz
 04/27/2015 10:55PM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
The 'd_trace' is a CL toggle command, i.e. it will print out a trace of everything that follows until it is seen again to turn it off. Putting it at the top of the login.cl will cause it to trace everything done in the file (and the command prompt afterwards).

 
Profile Email
 Quote
Tim-H
 04/27/2015 11:45PM  
+----
Newbie

Status: offline


Registered: 04/17/2015
Posts: 14
Quote by: fitz

The 'd_trace' is a CL toggle command, i.e. it will print out a trace of everything that follows until it is seen again to turn it off. Putting it at the top of the login.cl will cause it to trace everything done in the file (and the command prompt afterwards).



Here is a copy of my login.cl file:
PHP Formatted Code

d_trace
# LOGIN.CL -- User login file for the IRAF command language.

# Identify login.cl version (checked in images.cl).
if (defpar ("logver"))
    logver = "IRAF V2.14.1 September 2008"

set     home            = "/iraf/"
set     imdir           = "/iraf/imdirs/Tim/"
set     uparm           = "home$uparm/"
set     userid          = "Tim"

# Set the terminal type.  We assume the user has defined this correctly
# when issuing the MKIRAF and no longer key off the unix TERM to set a
# default.
if (access (".hushiraf") == no)
    print "setting terminal type to xterm..."
stty xterm


# Uncomment and edit to change the defaults.
#set    editor          = vi
#set    printer         = lp
#set    pspage          = "letter"
#set    stdimage        = imt800
#set    stdimcur        = stdimage
#set    stdplot         = lw
#set    clobber         = no
#set    filewait        = yes
#set    cmbuflen        = 512000
#set    min_lenuserarea = 64000
#set    imtype          = "imh"
set     imextn          = "oif:imh fxf:fits,fit fxb:fxb plf:pl qpf:qp stf:hhh,??h"


# XIMTOOL/DISPLAY stuff.  Set node to the name of your workstation to
# enable remote image display.  The trailing "!" is required.
#set    node            = "my_workstation!"

# CL parameters you mighth want to change.
#ehinit   = "nostandout eol noverify"
#epinit   = "standout showall"
showtype = yes


# Load the default CL package.  Doing so here allows us to override package
 


When I run cl I now get this error:

**:
^
ERROR: syntax error
called as: `cl ()'
called as: `cl ()'
Error while reading login.cl file - may need to rebuild with mkiraf
Fatal startup error. CL dies.

Have I used d_trace correctly?

 
Profile Email
 Quote
fitz
 04/27/2015 11:54PM  
AAAAA
Admin

Status: offline


Registered: 09/30/2005
Posts: 4040
Did you install any external packages as mentioned in the guide you used? If the d_trace isn't being activated then the error is coming sooner in the login process, most likely from the hlib$extern.pkg file you might have edited. Look for unescaped newlines in the 'helpdb' string definition (i.e. lines without a backslash escape or perhaps a space/tab after the backslash, a missing end quote, etc). Also be sure the last line of the file is 'keep" and that it ends with a newline (some editors like emacs can close a file without putting a newline at the end or without a proper EOF, causing the CL parser to gag.

 
Profile Email
 Quote
Tim-H
 04/28/2015 10:04PM  
+----
Newbie
excited

Status: offline


Registered: 04/17/2015
Posts: 14
Quote by: fitz

Did you install any external packages as mentioned in the guide you used? If the d_trace isn't being activated then the error is coming sooner in the login process, most likely from the hlib$extern.pkg file you might have edited. Look for unescaped newlines in the 'helpdb' string definition (i.e. lines without a backslash escape or perhaps a space/tab after the backslash, a missing end quote, etc). Also be sure the last line of the file is 'keep" and that it ends with a newline (some editors like emacs can close a file without putting a newline at the end or without a proper EOF, causing the CL parser to gag.



That was the issue. I had originally in my ignorance edited extern.pkg in notepad. What I ended up doing is making a bakup file, creating an new extern.pkg file and pasting in the code.

It worked. I now have a working IRAF, time to start learning how to use it

Many thanks Mike, if ever we meet up at a conference I definitely owe you a beer.

 
Profile Email
 Quote
   
Content generated in: 0.67 seconds
New Topic Post Reply

Normal Topic Normal Topic
Sticky Topic Sticky Topic
Locked Topic Locked Topic
New Post New Post
Sticky Topic W/ New Post Sticky Topic W/ New Post
Locked Topic W/ New Post Locked Topic W/ New Post
View Anonymous Posts 
Anonymous users can post 
Filtered HTML Allowed 
Censored Content 
dog allergies remedies cialis 20 mg chilblain remedies


Privacy Policy
Terms of Use

User Functions

Login