aboutsummaryrefslogtreecommitdiff
path: root/doc/notes.v215
blob: a92fdfc5124c212d7c80799c105cc58e057c3029 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
System Notes File for IRAF Version 2.15.
Begun with V2.15 code freeze 22 Nov 2010.
-------------------------------------------

unix/hlib/install
    Fixed an old bug when creating the imtoolrc link in cases where the
    system doesn't already have a /usr/local directory (11/23/10)

unix/hlib/extpkg.cl
    Changed the test used to define an external package to check for
    either a ".installed" file (e.g. when using the makefile) or a
    package .cl script (e.g. when pointing a symlink) (11/23/10)

New distribution files cut.....
-------------------------------

unix/hlib/irafuser.csh
unix/hlib/irafarch.csh
    On 32-bit mac systems the arch wasn't being properly detected (11/24/10)

New distribution files cut.....
-------------------------------

util/pkginst
util/pkginit
util/pkgclean
util/pkgupdate
    Updates to allow IRAFARCH to specify the architecture to be installed.
    Also modified to update script to automatically update all currently
    installed architectures regardless of IRAFARCH (11/30/10)

unix/hlib/install
    Added a fix to the '-m' flag

sys/libc/cimdrcur.c
    The 'wcs' field was not properly converted from int to/from XINT in
    the interface, causing the value to always be returned as 0 on 64-bit
    platforms (12/6/10)

pkg/ecl/mkpkg
    Changed the -ltermcap to -lncurses to use the newer form of this library
    and eliminate problems with users having to manually created links to
    satisfy the shared libs (12/6/10)

pkg/ecl/mkpkg
    Added changes needed for FreeBSD port. (12/23/10)

unix/boot/spp/xc.c
    Added changes needed for FreeBSD port. (12/23/10)
    
unix/hlib/mkpkg.inc
unix/hlib/irafuser.csh
    Added changes needed for FreeBSD port. (12/23/10)

util/pkgget
util/mksrc
util/mkclean
util/mkbindist
    An ERRMSG alias was being used but not defined (12/30/10) 

unix/hlib/irafarch.csh
    Added 'power macintosh' as a valid uname value for 10.4 PPC systems.
    (12/31/10)

unix/hlib/irafarch.csh
    The uname cmd for Solaris had an extra '|' pipe definition (1/3/11)

unix/boot/spp/xc.c
    The fork() procedure was declared as type int instead of pid_t (1/3/11)

lib/libimc.a -> ../bin/libimc.a +
pkg/images/immatch/src/imcombine/src/generic/mkpkg
pkg/images/immatch/src/imcombine/src/mkpkg
pkg/images/immatch/src/imcombine/mkpkg
pkg/images/mkpkg
    Converted the generic combining code into a core library so that
    other versions of combine (such as in ccdred, mscred, nfextern)
    will share the same code rather than have copies.  (1/4/11, Valdes)

pkg/tbtables/Revisions+
tbhanp.x
tbhpnp.x
tbttyp.x
    A couple of trivial changes (see the Revisions file) and:
    1.  Changes to better control the types and extensions.  The accepted
        extensions are |tab|fits|fit|fxb|txt|dat|cat|tmp|.
    2.  If no extensions is given the default is now text instead of STSDAS
        table.
    (1/7/11, Valdes)

unix/hlib/extpkg.cl
    Fixed a typo where 'dp' was defined instead of 'dpkg' (1/14/11)

sys/vops/mkpkg
    Forced the generation of the ACHT code when compiling the VOPS lib.
    These routines are doubly-generic but allow for in-place conversion,
    however there is a difference in the relative datatype size on 32-
    and 64-bit system (e.g. real and int are the same on 32-bit, int is
    larger on 64-bit) which causes the loop indexing to be different.
    By forcing the regeneration of the code on each system we ensure that
    during a sysgen the code appropriate for the platform will be used.
    (1/18/11)

unix/os/zzdbg.c			+
unix/os/zzstrt.c
    Moved all the (undocumented) debug print functions from the zzstrt.c
    code into a separate zzdbg.c simply to collect them.  These routines
    can be used to debug low-level VOS routines but aren't generally used
    outside of a port situation (1/18/11)

sys/osb/mkpkg
sys/osb/ieee.gx
sys/osb/iand32.c		+
    IEEE NaN masking was being done using only a 32-bit mask.  On 64-bit 
    systems this would lead to the interpretation of a double-precision
    exponent as always being zero.  This meant that all TY_DOUBLE FITS
    files on 64-bit systems would appear to contain only zero pixels. (1/18/11)

sys/imio/imfls.gx
    Data types needed to be converted on 64-bit systems even when the types
    are the same due to the need to pack/unpack int pixels (assumed to be
    32-bit values)  (1/18/11)

sys/imio/impak.gx
sys/imio/imupk.gx
    Earlier 64-bit mods to these routines were attempts to work around the
    in-place conversion bug discovered above.  In impak.gx it is still nec-
    essary to pack int/long into 32-bit values written to the file  (1/18/11)

pkg/images/imutil/src/nhedit.x
    The comfile parameter check was modified to allow the "NULL" string as
    an option to indicate no comfile was present (standard use is the null
    string "", as was done when the task was first imported to the core
    system).  More time has been spent whining about this supposed
    'incompatability' than would have taken to resolve it but this change
    should work for users even if the external package version of the
    task is not available.  I don't expect the whining will ever stop, 
    though.  (1/18/11)

unix/os/zgcmdl.c
    Changed declaration of 'environ' to quiet warning messages. (1/19/11)

pkg/ecl/readline/mkpkg
    Changed the execution of the configure cmd to explicityly use "./" (1/20/11)

sys/fmtio/evexpr.y
sys/fmtio/evvexpr.gy
    A typo meant that the GT token precedence was set twice (1/24/11)

Makefile
    Added a 'self_update' target to allow future updates (1/25/11)

.version
    Added a file with a simple version string for use in scripts (1/25/11)

util/pkgget
util/pkginit
util/pkgclean
util/pkgconfig
    Minor error-code checks (1/25/11)

pkg/cl/cl.par
pkg/ecl/cl.par
unix/hlib/motd
unix/hlib/install
unix/hlib/login.cl
unix/hlib/irafarch.csh
unix/hlib/zzsetenv.def
    Updated to v2.15.1 (1/25/11)

pkg/utilities/nttools/stxtools/vexcompile.y
    Added declaration of vex_gettok() to source grammar. (1/25/11)

sys/fmtio/evexpr.y
sys/fmtio/evvexpr.gy
pkg/tbtables/selector/trsopen.y
noao/digiphot/photcal/parser/parser.y
pkg/utilities/nttools/tunits/parseunits.y
pkg/utilities/nttools/stxtools/vexcompile.y
    Touched the file mod time to force regeneration of parsers. (1/25/11)

unix/boot/xyacc/files		-
unix/boot/xyacc/dextern		-
unix/boot/xyacc/yaccnews	-
unix/boot/xyacc/yaccdiffs	-
unix/boot/xyacc/dextern.h	+
unix/boot/xyacc/y[1234].c	+
unix/boot/xyacc/cddllicense.txt         +
unix/boot/xyacc/README
    Replaced XYACC code with a version built from the OpenSolaris project
    and distributed under the free 'Common Development and Distribution
    License' (CDDL).  Except for minor line number changes in the generated
    parser, the production tables and variables used are identical to the
    earlier XYACC.  This version of XYACC is now free of license restrictions
    other than those required by the CDDL.  The README file has been updated
    to reflect these changes. Total effort for the project was 1 day. (1/25/11)

pkg/images/imutil/src/imexpr.gx
    A use of Memr in the struct was not declared with P2R in the generic code.
    (1/25/11)

pkg/images/imutil/src/imexpr.gx
    Modified the behavior of the task so that when a scalar expression is
    used, all pixels are set to that value.  Previously, only the first pixel
    was set with the remainder of the image undefined. (1/25/11)


------------------------------------------------------
System Frozen for V2.15.1 Patch         (1/25/11)
------------------------------------------------------

unix/gdev/sgidev/sgi2uapl.c
unix/gdev/sgidev/sgi2ueps.c
    Declaration of the timestamp variable was failing on 64-bit system (2/4/11)

sys/mwcs/wftnx.x
sys/mwcs/wfzpx.x
sys/mwcs/wfzpn.x
    The interative inversion method could runaway leading to an arithmetic
    exception.  Added a maximum change to each iteration to avoid this.
    (2/18/11, Valdes)

sys/osb/ieee.gx
sys/osb/ieeed.x
unix/osb/ieeer.x
unix/as.linux64/ieee.gx
unix/as.linux64/ieeed.x
unix/as.linux64/ieeer.x
unix/as.macintel/ieee.gx
unix/as.macintel/ieeed.x
unix/as.macintel/ieeer.x
     The earlier update to fix the double-precision problem left a debug
     value in the generic code that was never updated in the patch build.
     This meant that zero pixels in FITS files were being interpreted as
     128 (the debug value).  (2/17/11)

pkg/dataio/fits/fits_rpixels.x
pkg/dataio/fits/fits_wpixels.x
    Buffer sizes were being computed using SZ_INT instead of SZ_INT32 (2/18/11)

sys/fmtio/evexpr.y
sys/fmtio/evexpr.x
sys/fmtio/evvexpr.gy
sys/fmtio/evvexpr.y
sys/fmtio/evvexpr.x
    An earlier change to the token declarations had the strange effect of
    changing the processing of string comparison.  This effectively broke
    tasks like HSELECT.  Fell back to the earlier (and original) code until
    this is better understood, however it doesn't appear to be releated to
    the XYACC changes.  (2/18/11)

pkg/images/tv/imexamine/imexam.h
    The coordinates arrays in the main structure were improperly indexed
    with the P2R macro (2/10/11)

.version
pkg/cl/cl.par
pkg/ecl/cl.par
unix/hlib/motd
unix/hlib/install
unix/hlib/login.cl
unix/hlib/irafarch.csh
unix/hlib/zzsetenv.def
    Updated to v2.15.1a (2/21/11)

------------------------------------------------------
System Frozen for V2.15.1a Patch         (2/21/11)
------------------------------------------------------
 
pkg/tbtables/fitsio/fttrnn.f
    Disabled NaN checking for this function.  It doesn't work properly on
    64-bit systems and NaN is seldom used anyway (2/22/11)

sys/imio/imggsc.x
    The pixels size indexing was incorrect in the case of e.g. 32-bit int
    pixels and access as a real array.  This was causing access to image
    columns and higher dimensional data to get bogus values.  (4/4/11)

util/mkup
    Added extra step to do the core "mkpkg update" (5/2/11)

sys/etc/urlget.x		+
sys/etc/zzdebug.x
sys/etc/mkpkg
    Added a new url_get() procedure for downloading URLs to a named file.
    Method signature is

	nread = url_get (char url[], char outname[], pointer reply)

    If a 'reply' pointer is supplied, the HTTP reply header is returned
    as a string which must be allocated to at least SZ_LINE. (5/30/11)

sys/imio/imt/			+
    Added enhanced IMT expansion interface.  See details in the
    imio$imt/README file. (6/7/11)

unix/hlib/libc/knames.h
    Added definitions for imul32() and strsum() (6/17/11)

sys/osb/imul32.c
    Added code comments forgotten from the initial 64-bit port (6/17/11)

sys/osb/mkpkg
sys/osb/strsum.c
    Added a new strsum() procedure to return the 32-bit checksum of an
    SPP string.  This is used in e.g. generating the filenames for the
    URL cache.  (6/17/11)

sys/fio/mkpkg
sys/fio/fcache.x
    Implemented a proper URL cache mechanism for IRAF that provides
    programmatic and application interfaces and can be shared with VOClient.
    Cache names are generated from the filename/URI string (its checksum)
    to map a URL to a local file resource, access is blocked until the
    local resource becomes available for use.  Names aren't guaranteed to
    be unique but collisions should be rare and the mechanism allows URLs
    to be dealt with easily at the application level. (6/21/11)

unix/os/mkpkg
unix/os/zfrmdr.c		+
unix/hlib/libc/knames.h
unix/hlib/libc/kproto.h
    Added a new kernel routine to delete directories (6/21/11)

sys/ki/mkpkg
sys/ki/ki.x
sys/ki/ki.h
sys/ki/kfrmdr.x			+
unix/hlib/knet.h
    Added KI routines to delete directories (6/21/11)

lib/syserr.h
lib/syserrmsg
    Added error messages for rmdir function (6/21/11)

sys/fio/mkpkg
sys/fio/frmdir.x
    Added VOS routine to delete directories. (6/21/11)

sys/fio/open.x
sys/imio/immapz.x
pkg/tbtables/tbtopn.x
    Modified file open to handle URLs.  If the filename begins with "http"
    the file is downloaded to the cache and the cached file is opened. (6/24/11)

unix/hlib/login.cl
unix/hlib/mkiraf.csh
unix/hlib/install
    Added user-specific cache directory name. (6/26/11)

.version
pkg/cl/cl.par
pkg/ecl/cl.par
unix/hlib/motd
unix/hlib/install
unix/hlib/login.cl
unix/hlib/irafarch.csh
unix/hlib/zzsetenv.def
    Updated to v2.16DEV (6/30/11)

unix/os/zmaloc.c
unix/os/zraloc.c
    Number of bytes was being cast as (int) meaning allocations > 2GB were
    not being handled properly (6/30/11)

unix/os/zgcmdl.c
    On OSX systems apps can no longer reliably get the environ pointer,
    meaning we can't get the argv vector of arguments using the old method.
    Ifdef'd the code to use the _NSGetArgv() and _NSGetArgc() methods to
    get pointers to these values from the dynamic libs.  Fixes a problem
    with cmdline args from IMFORT programs.  (7/15/11)

sys/etc/votable.x
    Added a new file of VOTable utility procedures. (7/15/11)

unix/os/zfacss.c
    Modified to check if non-existent file is a symlink, if so, return the
    access status of the link itself (9/6/11)

unix/hlib/iraf32.h
unix/hlib/iraf64.h
unix/hlib/libc/spp.h
    Added definitions for SYMLINK_FILE type (9/6/11)

sys/fio/delete.x
    Modified to allow deletion of zombie symlinks (9/6/11)

sys/fio/open.x
sys/imio/immapz.x
pkg/tbtables/tbtopn.x
    Modified to handle file:// URIs (9/6/11)

sys/imio/imt/imxpreproc.x
    Allowed file:// URIs, no longer confused with concatenation (9/6/11)

sys/libc/strdup.c		+
sys/libc/proto.h
unix/hlib/libc/libc.h
    Added a binding for a strdup() function (9/14/11)

*.hlp
    Minor modifications to MANY help files to remove duplicate words (9/19/11)

unix/hlib/login.cl
    Added some (commented out) code to allow user control of SAMP startup
    on login.  The system-wide method is to turn on the 'samp_onstart'
    variable in hlib$zzsetenv.def  (9/21/11)

ys/mwcs/wftnx.x
sys/mwcs/wfzpx.x
sys/mwcs/wfzpn.x
    The maximum change revision (2/18/11) did not think through the units.
    So the value was 1 degree which is probably too large.  This was changed
    to 30 arcsec.
    (9/28/11, Valdes)

sys/mwcs/mkpkg
sys/mwcs/wfinit.x
sys/mwcs/wftpv.x +
    Added a new function driver for a WCS called TPV; tangent plane with
    PV distortion coefficients as described by Calabretta & Greisen in 2000
    (http://www.astromatic.net/forum/showthread.php?tid=271).
    (9/28/11, Valdes)

lib/syserr.h
lib/syserrmsg
sys/etc/urlget.x
    Added support for URL redirection (code 300) to access (10/5/11)

system/system.hd
system/system.men
system/doc/bench.hlp
    Added help page for the BENCH task, fixed src entry for SPY task. (10/24/11)

util/fget
    Added wrapper script around URLGET task that can be used as a backup
    when there is no WGET command on the machine (11/19/11)

pkg/tbtables/tbbnll.x 
pkg/tbtables/tbfnew.x 
pkg/tbtables/tbfopn.x
pkg/tbtables/tbfpri.x 
pkg/tbtables/tbttyp.x
    Commented out the equivalence statements being used to force alignment
    of local variables.  Was causing 64-bit problems.  (12/1/11)

pkg/tbtables/fitsio/fttdnn.f
    Disabled NaN checking for this function.  This was done previously for
    the real-value function but missed for doubles.  Will need to be
    revisited once there is more time.  (12/2/11)

sys/imio/imrbpx.x
    Fixed a problem with getting 'nearest' boundary extension values from
    int images on 64-bit systems (12/14/11)

sys/imio/iki/fxf/fxfupk.x
    Fixed a problem on 64-bit systems where BITPIX=32 data with bscale/bzero
    values was garbage values.  Needed to unpack int array before scaling
    (12/20/11)

local/cache		+
local/login.cl
    Updated the login.cl file for the iraf user, added a 'cache' directory
    to be used for the account (1/4/12)

unix/hlib/install
    Turned off the installation of the /dev fifo pipes as a default since
    these are rarely used any more.  If needed, "install -f" will create
    them on platforms that support FIFOs (1/15/12)

unix/hlib/install
    Added code to install the voclientd/voclient.jar files in the local
    bindir as a symlink.  (1/15/12)

unix/hlib/iraf.h
    Increased the size of SZ_FNAME to 511 to accomodate lengthy URLs.  The
    max HTTP URL size is typically 1024, but this seemed escessive (1/15/12)

sys/etc/main.x
    Added checks for a "hlib$zzsetenv.def" file or a file pointed to by an
    'irafinit' environment variable to set or override the system
    zzsetenv.def file.  The first case allows for an alternate 'hlib'
    definition (as is used in the pipeline), the second for a file that
    may only partially override the environment (1/17/12)

sys/etc/prpsio.x
sys/gio/gki/gkiopen.x
sys/gio/gki/gkiclose.x
sys/gio/gki/gkideact.x
sys/gio/gki/gkireact.x
sys/gio/gki/gkisetwcs.x
sys/gio/gki/gkigetwcs.x
    The pseudofile i/o to the graphics stream has been broken all this time.
    When opening the GKI stream, set/get wcs etc the xmit packet is preceeded
    with the file descriptor number, written as SZ_INT in the GKI code and
    read as SZ_INT in the prpsio.x code.  In cases where a 32-bit task binary 
    is being used on a 64-bit system, the CL is trying to read a 64-bit int
    from a stream written with a 32-bit value, leading to a corrupted 
    descriptor number and usually a segfault.  Modified so the descriptor is
    written/read as SZ_INT32 to be compatible.  (2/2/12)

local/COPYRIGHTS
local/LICENSES			+
    Modified the COPYRIGHTS statement and included the text for the CDDL
    and UCAR licenses.  As far as we now know, IRAF is now "free". (2/17/12)

sys/imio/imflsh.x
    Fixed a bug in which TY_INT images weren't being handled properly by
    the system (2/24/12)

sys/etc/urlget.x
    Added support for Content-Length header values to avoid a socket 
    timeout behavior from some web servers (3/2/12)

.version
pkg/cl/cl.par
pkg/ecl/cl.par
pkg/vocl/cl.par
unix/hlib/motd
unix/hlib/install
unix/hlib/login.cl
unix/hlib/irafarch.csh
unix/hlib/zzsetenv.def
    Updated version strings to final export (3/5/12)

unix/boot/mkpkg/tok.c
    Modified the $ifnewer behavior to return a 'true' value if the 
    second argument doesn't yet exist.  (3/6/12)

sys/osb/mkpkg
sys/osb/iscl32.c
sys/osb/iscl64.c
unix/hlib/libc/knames.h
sys/imio/iki/fxf/fxfupk.x
    Added a new OSB routine ISCL32/ISCL64 that applies the FITS bscale/bzero
    to pixel data.  This is required in the FITS kernel where the buffer
    is a XCHAR array but there are alignment issues on linux systems when
    passing arrays between spp/C codes.  (3/7/12)

sys/imio/imt/imxexpand.x
sys/imio/imt/imxpreproc.x
    The use of "@file" and the contents of the file contained extns or
    sections on the images, was broken.  The file was being read correctly,
    however the square brackets weren't being properly escaped when 
    passed to the fntgfn code to create the list.  (3/9/12)

Makefile
util/iraf_update	+
util/iraf_latest	+
util/self_update
    Added stub routines to permit simple updates of the system.  New Makefile
    targets include:

	latest			Update entire system
	check_latest		Check system update status
	latest_src		Update source code only
	latest_core		Update core system only
	latest_noao		Update NOAO package only
	latest_vo		Update VO package only

    The 'iraf_latest' script is the workhorse for the update, but the details
    of how the patches will be built or packaged are still TBD.  Because the
    first thing done is to update the build/util scripts, we can defer this
    until the first release.  (3/11/12)

sys/imio/imrbpx.x
    There was still a problem with boundary extension using constant values.
    For int data, the IM_OOBPIX value was being converted to int in impakr()
    but was packed as a 32-bit value.  However, it was not then being
    unpacked to a 64-bit INT in imrbpx() as was done for the nearest pixel
    values.  (3/12/12)

------------------------------------------------------
System Frozen for V2.16.0 Release         (3/12/12)
------------------------------------------------------

sys/imio/imrbpx.x
    Use of constant boundary extension wasn't being properly unpacked on
    64-bit systems (3/12/12)

sys/imt/imt.x
sys/imt/imxexpand.x
sys/imt/imxpreproc.x
    Fixed a bug in which @files containing files with section/extension 
    info weren't being properly expanded.  (3/14/12)

imcoords/src/t_ccmap.x
imcoords/ccmap.par
lib/geofit.x
lib/geogmap.gx
    Updates to the previous changes.  A new option "tweak" was added to
    the values for the "refpoint" parameter to allow controlling whether
    to tweak the input tangent point.  (3/16/12, Valdes)

noao/lib/obsdb.dat
    Added an entry for the Langkawi National Observatory (Malaysia) submitted
    by user.  (3/18/12)

------------------------------------------------------
System Frozen for V2.16.0 Release         (3/18/12)
------------------------------------------------------