JCAAC (2025), 2, 105–120
SECTION: SOFTWARE FOR PHOTOMETRY & ASTROMETRY
Astrometría con Tycho
Ramón Naves1 and MontseCampàs2
1Obs.Montcabrer - MPC 213, Cabrils–Barcelona, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
2Obs.Montcabrer - MPC 213, Cabrils–Barcelona, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: astrometría, fotometría, Tycho
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Resumen
Se discuten las utilidades del software Tycho, un excelente programa para hacer astrometría y fotometría de asteroides, cometas, variables, etc. Presentamos algunos ejemplos de uso y diversas técnicas de análisis.
Abstract
Tools and procedures of the Tycho software are discussed. Tycho is an excellent program to perform astrometry and photometry for asteroids, comets, variable stars, etc. We present some examples where different analysis tools are employed.
JCAAC (2025), 2, 87–103
SECTION: ASTRONOMICAL COMPUTING
Cálculo de ángulos de orientación de la Tierra y transformaciones de coordenadas
Tomás Alonso Albi1
1Starion/European Space Agency, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: programación, programming, efemérides, ephemerides, cálculo astronómico, astronomical computing
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Resumen
En esta entrega de la sección discutimos el cálculo de la diferencia TT−UT1, que resulta básico para cualquier cálculo de fenómenos, ya que relaciona el tiempo en el que se expresan las efemérides planetarias con el tiempo asociado a la rotación de la Tierra y, por tanto, a la posición de un observador sobre la misma. El Tiempo Sidéreo Aparente, que es esencialmente el ángulo de rotación terrestre, se relaciona de manera directa con UT1 y con la ecuación de los equinoccios. Además, se discute el cálculo de los parámetros de precesión y nutación, y de la oblicuidad de la eclíptica, necesarios para diversas y necesarias transformaciones entre sistemas de coordenadas astronómicas, que se tratan al final del artículo.
Abstract
In this article we discuss the calculation of the TT−UT1 difference, which is fundamental for any calculation of astronomical phenomena, as it relates the time in which planetary ephemerides are expressed to the time associated with the Earth’s rotation and, therefore, to the position of an observer on its surface. Apparent Sidereal Time, which is essentially the Earth’s rotation angle, is directly related to UT1 and the equation of the equinoxes. Additionally, the calculation of precession and nutation parameters, as well as the obliquity of the ecliptic, is discussed, as these are necessary for various essential transformations between astronomical coordinate systems, which are addressed at the end of the article.
JCAAC (2025), 2, 61–74
SECTION: HERRAMIENTAS DEL OBSERVATORIO VIRTUAL
Caracterización de cúmulos estelares abiertos
Joaquín Álvaro Contreras1
1FAAE, Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: cúmulos estelares, herramientas VO, TOPCAT, Aladin, observatorio virtual, Gaia
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Resumen
El problema de discriminar qué estrellas forman parte de un cúmulo estelar abierto, en adelante OC (Open Cluster), descartando aquellas que no son parte del cúmulo, es fundamental para determinar la existencia de un OC, y en definitiva caracterizarlo, atribuyéndole una estimación precisa de sus componentes y a partir de estos, la masa del cúmulo, edad, distancia, movimientopropio relativo en la galaxia, composición química, etc. El proceso de caracterizar un OC no es fácil y, aunque ya se utilizan técnicas de inteligencia artificial eficaces, conocer los fundamentos y tareas para resolver este problema es conveniente si se desea trabajar en este campo, ya sea para refinar datos de OCs conocidos como para descubrir otros que aún no lo son. Afortunadamente hay algunas herramientas del Observatorio Virtual (VO) que facilitan la tarea. En este artículo, y los siguientes de esta serie, haremos un repaso amplio sobre algunos casos prácticos utilizando herramientas VO como TOPCAT[1], Aladin[2], Clusterix2.0[3] y VOSA[4], e intentaremos finalmente un desarrollo con técnicas de inteligencia artificial con este mismo propósito.
Abstract
The problem of identifying which stars belong to an open star cluster (hereinafter OC, Open Cluster), while discarding those that do not, is fundamental to determining the existence of an OC and, ultimately, characterizing it. This involves providing an accurate estimate of its members and, based on them, calculating properties such as the cluster’s mass, age, distance, relative proper motion within the galaxy, chemical composition, and more. The process of characterizing an OC is not straightforward, and although effective artificial intelligence techniques are already in use, understanding the fundamentals and tasks required to address this problem is essential for those who wish to work in this field, whether to refine data for known OCs or to discover previously unidentified ones. Fortunately, there are tools from the Virtual Observatory (VO) that make this task easier. In this article, and in subsequent ones in this series, we will provide a comprehensive review of practical cases using VO tools such as TOPCAT [1], Aladin [2], Clusterix 2.0 [3] and VOSA [4], and we will conclude by attempting a development using artificial intelligence techniques for the same purpose.
JCAAC (2025), 2, 75–86
SECTION: PROGRAMACIÓN DE DISPOSITIVOS ELECTRÓNICOS
Diseño, construcción y programación de dispositivos electrónicos: una introducción
Sergio Alonso1 and JavierFlores2
1Dpto. de Lenguajes y Sistemas Informáticos, Universidad de Granada, Sociedad Astronómica Granadina, España. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
2Observatorio Astronómico de Calar Alto, Sociedad Astronómica Granadina, España. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: dispositivos astronómicos, astronomical devices, hardware, software, controlador, driver, INDI, INDIGO, panel de flats, flats panel
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Resumen
En este primer artículo de la serie dedicada al diseño, construcción y programación de dispositivos astronómicos hacemos una introducción a como los sistemas operativos actuales son capaces de gestionar los dispositivos que usualmente conectamos a nuestros ordenadores. En el caso particular de la astronomía, por la especificidad de los dispositivos que manejamos (que pueden no ser de interés para el usuario general de la informática) además existen varias plataformas de más alto nivel (ASCOM, INDI, INDIGO) que permiten tanto el desarrollo de nuevo instrumental como el control del mismo, incluso de manera distribuida. Hacemos un repaso de las características principales de dos de estas plataformas (INDI e INDIGO) y presentaremos de manera breve el dispositivo (un panel de flats/dark) que usaremos a modo de ejemplo en los siguientes artículos de la serie.
Abstract
In this first article of the series dedicated to the design, construction and programming of astronomical devices we make an introduction to how current operating systems are able to manage the devices that we usually connect to our computers. In the particular case of astronomy, due to the specificity of the devices we handle (which may not be of interest to the general computer user) there are also several higher level platforms (ASCOM, INDI, INDIGO) that allow both the development of new instruments and their control, even in a distributed environment. We review the main features of two of these platforms (INDI and INDIGO) and briefly introduce the device (a flats/dark panel )that we will use as an example in the following articles of the series.
JCAAC (2025), 2, 21–59
APPLICATIONS
Asteroide Apophis, el destructor
Juan Carlos Terradillos1
1Aula de Astronomía de Fuenlabrada, Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: Apophis, asteroides, órbitas
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Este artículo contiene material suplementario.
Resumen
Este artículo aborda el asteroide (99942) Apophis, descubierto en 2004, cuyo potencial riesgo de colisión con la Tierra ha captado la atención de la comunidad científica desde entonces. Su próximo acercamiento, el 13 de abril de 2029, lo llevará a aproximadamente 29000 km de la superficie terrestre, situándolo por debajo de la órbita de los satélites geoestacionarios. Además de describir las características principales de Apophis y contextualizar el peligro que representan asteroides de este tipo para la Tierra, analizamos en detalle los cálculos sobre la distancia mínima a la que pasará y exploramos las misiones espaciales en curso y en desarrollo destinadas a estudiar este objeto potencialmente peligroso.
Abstract
This article discusses the asteroid (99942) Apophis, discovered in 2004, whose potential risk of collision with Earth has captured the attention of the scientific community ever since. Its next approach, on April 13, 2029, will bring it to approximately 29000 km from Earth’s surface, placing it below the orbit of geostationary satellites. In addition to describing Apophis’ main characteristics and contextualizing the threat posed by such asteroids to Earth, we thoroughly analyze the calculations regarding its minimum passing distance and explore ongoing and developing space missions aimed at studying this potentially hazardous object.
JCAAC (2025), 2, 5–19
APPLICATIONS
El planisferio FAAE
Sergio Díaz Ruiz1
1Asociación Astronomía Sevilla, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords:planisferio celeste, catálogo, proyección geográfica, python, cartopy
© Este artículo está protegido bajo una licencia Creative Commons Attribution 4.0License
Este artículo adjunta un software accesible en https://github.com/JCAAC-FAAE/No02-Mar2025-El_planisferio_FAAE
Resumen
El planisferio FAAE es una aplicación web que permite generar planisferios personalizados para cualquier ubicación geográfica con latitud comprendida entre 20º a 66º norte o sur, y para la zona horaria indicada. Al tener en cuenta la longitud geográfica y la zona horaria, la aplicación corrige automáticamente el desfase horario en los planisferios que genera, por lo que se pueden usar con la hora local, a diferencia de los planisferios clásicos, que están rotulados en Tiempo Universal. En el presente artículo se describe la arquitectura de la aplicación así como los aspectos clave para su desarrollo, incluyendo las fuentes de datos utilizadas, los procedimientos de cálculo aplicados y los detalles de implementación más relevantes. A este respecto, el artículo va acompañado de un notebook Jupyter [1]que permite reproducir los elementos más significativos del planisferio con una extensión mínima y reduciendo en lo posible las dependencias a librerías externas.
Abstract
The FAAE planisphere is a web application that generates customized planispheres for any geographic location with latitude between 20º to 66º north or south, and for the time zone indicated. By taking into account the geographical longitude and the time zone, the application automatically corrects the time offset in the planispheres it generates, so that they can be used with local time, unlike the classic planispheres, which are labeled in Universal Time. This article describes the architecture of the application as well as the key aspects for its development, including the data sources used, the calculation procedures applied and the most relevant implementation details. In this regard, the article is accompanied by a Jupyter notebook [1] that reproduces the most significant elements of the planisphere witha minimum extension and reducing as much as possible the dependencies to external libraries.
JCAAC (2024), 1, 5–14
M E T H O D S & A L G O R I T H M S
Computational celestial navigation at sea
Luis Mederos1
1Consejo Superior de Investigaciones Científicas, Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo..
Keywords: astronomical navigation, problem of longitude
@ This article is licensed under a Creative Commons Attribution 4.0 License
Abstract
Finding the geographic longitude of a ship when sailing in high seas, frequently referred to as the longitude problem, is one of the longest scientific problems in history that it took almost three centuries to be solved. The final solution to that problem, based on measuring the height of stars above the horizon, is briefly summarized in sections I and II. Section III is then devoted to explain how the traditional solution can be today implemented using simple calculations instead of the usual tedious graphical method.
Resumen
El cálculo de la longitud geográfica de un barco que navega en alta mar, denominado frecuentemente como el problema de la longitud, es uno de los problemas científicos más antiguos de la historia, que tardó casi tres siglos en resolverse. Además de resumir la solución final al problema, basada en la medida de la altura de las estrellas sobre el horizonte, presentamos en este artículo una versión de la solución tradicional basada en procedimientos simples, que sustituyen a los tediosos métodos gráficos usuales.
JCAAC (2024), 1, 15–24
M E T H O D S & A L G O R I T H M S
Orbits of binary stars from lunar occultations
Enrique Velasco 1
1 Agrupación Astronómica de Madrid and Universidad Autónoma de Madrid, 28049 Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Keywords: lunar occultations, double stars
@ This article is licensed under a Creative Commons Attribution 4.0 License
Abstract
A method is presented to incorporate single observations of lunar occultations of binary stars into the calculation of their orbits. The standard method of orbit estimation, based on optimisation of a merit function, is designed to use two-dimensional astrometric measurements obtained observationally. In the new method the merit function is augmented to include an extra term, containing the one-dimensional solution extracted from the lunar occultation. Comparison between the two methods is provided, and it is shown that, in some circumstances, the partial information contained in one-dimensional solutions is enough to estimate orbits very close to those derived from fully two-dimensional sets of measurements. Some examples of real binary stars are provided.
Resumen
Presentamos un método para utilizar las observaciones de ocultaciones lunares de estrellas dobles por parte de una única estación en el cálculo de las órbitas de estas estrellas. El método clásico de estimación de órbitas se basa en la optimización de una función de mérito, y se utiliza sobre conjuntos de medidas astrométricas bidimensionales obtenidas mediante observaciones. El nuevo método extiende la función de mérito para incluir un término extra, que contiene la solución unidimensionales obtenida a partir de la ocultación lunar. Se muestra una comparación entre los dos métodos, y se discute el resultado de que, en algunas circunstancias, la información parcial contenida en una solución unidimensional puede ser equivalente a la de una medida bidimensional para estimar la órbita. Se discuten algunos ejemplos sobre estrellas dobles y medidas reales.
JCAAC (2024), 1, 25–48
APPLICATIONS
El catálogo de estrellas de Hiparco
César González Crespán 1
1 Asociación Astronómica de Vigo, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Keywords: catálogos, catalogues, Hipparco, historia de la astronomía, history of astronómy
@ This article is licensed under a Creative Commons Attribution 4.0 License
Este artículo adjunta un software accesible en https://github.com/JCAAC-FAAE/No01-Nov2024-El_catalogo_de_estrellas_de_Hiparco
Resumen
Se quiere demostrar que Hiparco realizó el Catálogo de Estrellas del Almagesto, antes que Claudio Ptolomeo, quién giró los puntos solsticiales y equinocciales, el número de grados que él pensaba de la precesión, 1→/100 años, desde la época Hiparco. A comienzos del siglo XIX, Delambre, sugería que Ptolomeo no había realizado ninguna medición, copiando las observaciones y mediciones de Hiparco, con algunas posteriores, mal ejecutadas, para obtener el resultado esperado. Las observaciones y descripciones de eclipses que aparecen en el Almagesto están bien descritas, y se corresponden con hechos reales, hasta la época de Hiparco. Según Delambre, y otros autores más modernos, las observaciones y descripciones posteriores, son inventadas. Se han monitorizado las longitudes y latitudes eclípticas de las estrellas del Almagesto, en proyección Plate Carrée. Se han construido gráficos en proyección azimutal equidistante. Igualmente, se han tomado las mismas coordenadas de las estrellas más significativas de veinte constelaciones, en fecha J2000. Por medio de dos programas en Python/Cartopy, se han construido los gráficos de las estrellas en las dos eras, la del año primero de Antonino Pío, año 138 d.C., y la de fecha juliana J2000, girada retrocediendo los grados de la precesión real, 26,01→, entre ambas fechas. Hay una diferencia de 1,05→, entre las longitudes eclípticas de las estrellas J2000, giradas, y las del catálogo de estrellas del Almagesto, situadas hacia fechas 75 años más antiguas, lo que sugiere la existencia de un error sistemático.
Abstract
We aim to demonstrate that Hipparcos created the Star Catalogue in the Almagest before Claudius Ptolemy, who shifted the solstitial and equinoctial points by the number of degrees he believed corresponded to precession, at a rate of 1→/100 years, starting from Hipparcos’ time. In the early 19th century, Delambre suggested that Ptolemy had not made any measurements of his own, instead copying Hipparcos’ observations and measurements, along with some later ones that were poorly made, to achieve the desired result. The eclipse observations and descriptions in the Almagest are well described and correspond to real events up until Hipparcos’ time. According to Delambre and other more modern authors, the later observations and descriptions are fabricated. The ecliptic longitudes and latitudes of the stars in the Almagest have been monitored using a Plate Carrée projection. Azimuthal equidistant projection charts have also been constructed. Likewise, the same coordinates of the most significant stars from twenty constellations have been taken from the J2000 epoch. Using two textttPython/Cartopy programs, star charts have been generated for two eras: the first year of Antoninus Pius (138 AD) and the Julian date J2000, with the real precession of 26,01→ rotated backwards between these two dates. There is a di!erence of 1,05→ between the rotated J2000 ecliptic longitudes of the stars and those in the Almagest star catalogue, which are dated approximately 75 years earlier. This suggests the presence of a systematic error.
download .pdf - supplement.pdf
JCAAC (2024), 1, 49–56
SOFTWARE
Uso de scripting en Stellarium
Sergio Díaz Ruiz 1
1 Asociación Astronómica Astronomía Sevilla, 41092 Sevilla, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Keywords: scripting, stellarium
@ This article is licensed under a Creative Commons Attribution 4.0 License
Resumen
En nuestros proyectos de cálculo de fenómenos obtenemos como resultado final un conjunto de fechas, entre otros datos de interés. Lejos de terminar aquí, la siguiente tarea, no menos importante y que puede requerir un esfuerzo considerable, es la presentación de los resultados. En este artículo proponemos el uso de Stellarium para este fin. Para ello mostraremos cómo generar desde nuestro programa un script de Stellarium que empaquete las fechas de los fenómenos que hemos calculado. Si bien es posible entregar directamente este script al usuario para que lo ejecute sobre Stellarium, aquí exploramos la opción de que el script capture imágenes de los fenómenos tal como los representa Stellarium, que posteriormente podamos emplear para ilustrar un documento o página web.
Abstract
In our phenomena computation projects we obtain as a final result a set of dates, among other data of interest. Far from ending here, the next task, which is no less important and may require considerable e!ort, is the presentation of the results. In this article we propose the use of Stellarium for this purpose. To do so, we will show how to generate a Stellarium script from our program that packages the dates of the phenomena we have calculated. Although it is possible to deliver this script directly to the user to run it on Stellarium, here we explore the option of having the script capture images of the phenomena as they are represented by Stellarium, which we can then use to illustrate a document or web page.
JCAAC (2024), 1, 57–63
SECTION
Astronomical Computing
Tomás Alonso Albi 1
1 Agrupación Astronómica de Madrid and Universidad Autónoma de Madrid, 28049 Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Keywords: programación, programming, efemérides, ephemerides, cálculo astronómico, astronomical computing
@ This article is licensed under a Creative Commons Attribution 4.0 License
Este artículo adjunta un software accesible en https://github.com/JCAAC-FAAE
Presentación
El objetivo de esta sección es desarrollar los fundamentos del cálculo de efemérides astronómicas desde una perspectiva más moderna en comparación con otras fuentes disponibles. Este tipo de cálculos ha sido muy habitual en el pasado en otras publicaciones conocidas como Sky & Telescope, pero con el tiempo esta tradición se ha perdido, a pesar de que hoy día las aplicaciones y posibilidades de la programación se han multiplicado. Existen nuevos lenguajes de programación que facilitan el trabajo, y la potencia de los ordenadores permite obtener resultados más precisos y rápidos que nunca. Por otro lado, la mayoría de las fuentes de información disponibles en este campo están escritas en inglés, lo que puede resultar un obstáculo para algunos aficionados.
Por tanto, en esta sección se presentará y explicará en castellano piezas de código que permitirán hacer multitud de cálculos en astronomía. Para no excluir al público anglosajón se incluyen los comentarios del código en inglés, además del resumen al principio del artículo. El lenguaje de programación elegido para presentar el código es Java, que resulta muy verboso y fácil de leer e interpretar, si bien esto depende mucho de cómo se escriba y documente el código. No es necesario que el lector lo escriba por sí mismo, sino que puede ser copiado desde el repositorio de software disponible, para evitar errores de transcripción en las operaciones matemáticas. A lo largo de múltiples artículos veremos desde los fundamentos más básicos como escalas de tiempo y cambios de coordenadas, hasta aplicaciones más interesantes que incluirán obtener la posición precisa del Sol, los planetas, la Luna y otros satélites, y la predicción de eclipses y otros eventos astronómicos. En esta primera ocasión veremos cómo transformar fechas entre nuestro calendario y el día Juliano, que es la base para calcular intervalos de tiempo, y así poder posteriormente obtener las posiciones de los astros.
El objetivo de esta sección no es servir como curso de programación, de manera que partimos de la idea de que el lector ya tiene suficientes conocimientos de programación en un determinado lenguaje como para portar el código a su lenguaje favorito, en el caso de que no sea Java. Históricamente estuvo muy extendido el uso de Basic, lo que sigue siendo posible hoy día gracias a las múltiples herramientas de programación gratuitas que existen para tan entrañable lenguaje (algunas como FreeBasic muy evolucionadas en comparación con el lenguaje original).
Habitualmente los ficheros de código Java se integran en un proyecto utilizando un Entorno de Desarrollo Integrado, o IDE en inglés, que facilita mucho el trabajo, permitiendo también el uso del código Java para la programación en dispositivos móviles como Android. El lector es libre de decidir cómo organizar su código y establecer los objetivos que pretenda conseguir con él, pues el código presentado aquí puede utilizarse libremente respetando las normas de distribución del repositorio.
Presentation
In this section we will develop algorithms to cover from the most basic calculations, like obtaining the Julian day in this first chapter, to more complex ones that will allow us to calculate the positions of the celestial bodies and astronomical events like eclipses and many others. The programming language chosen to present the code is Java, but the readers are expected to write this code in their preferred language, taking advantage of the software repository to avoid errors in the transcription of the mathematical operations.
The Julian day is basically a continuous count of days, with the day 1 set to January 1, 4713 B.C, at noon (UTC). It was developed by Joseph Scaliger and became soon a very useful system to count the time interval between events. In astronomy is essential to compute how much the celestial bodies have moved in a given interval of time, so the Julian day is used in most calculations. In the code presented, the relevant calculations are located around lines 143 (to obtain the Julian day from a civil date in the Gregorian calendar we use today, or even the old civil Julian calendar if the input boolean is set to true), and from line 53, to do the opposite calculation from the Julian day to the civil calendar. The output in the latter is set automatically to the Julian civil calendar for dates corresponding officially to this calendar, before October, 5, 1582. Inexistent dates in 1582 between October, 5 and October, 14 cannot be used and will throw an error. The code follows the astronomical convention for negative years, so year cero in the program is year one B.C. in the calendar, and the first Julian day belongs to the year number -4712 in the program.
The comments included, the results presented in the main program at the end of the Java code, and the many tools available on line to obtain the Julian day should be enough for the reader to test the calculations presented here.
Edited by The Federación de Asociaciones Astronómicas de España in Madrid (C/ Serrano, 117) - ISSN: 3045-5693
The Journal of Computational Astronomy & Astronomical Computing is an effort by the FAAE - Grupo de Cálculo Astronómico (GCA) to encourage the use of software tools and the development of codes and algorithms for astronomical applications within the framework of amateur astronomy, as well as to connect the amateur community with the professional astronomy community and promote cross-collaboration and ProAm projects between both groups.
This work is licensed under a Creative Commons Attribution 4.0 License