module std/time/utcstd/time/utc
import std/num/float64std/num/float64
import std/num/ddoublestd/num/ddouble
import std/text/parsestd/text/parse
import std/time/timestampstd/time/timestamp
import std/time/durationstd/time/duration
import std/time/instantstd/time/instant
pubstd/time/utc/utc: (E, V) -> V effect fun utcstd/time/utc/utc: (E, V) -> V() : timescalestd/time/instant/timescale: V
pub fun @default-utc( actionaction: () -> <utc|$2034> $2033 : () -> <utcstd/time/utc/utc: (E, V) -> V|std/core/types/effect-extend: (X, E) -> Eee: E> aa: V)result: -> 2098 2097 : ee: E aa: V
withhandler: (() -> <utc|$2034> $2033) -> $2034 $2033 fun utcutc: () -> $2034 timescale() { ts-tistd/time/utc/ts-ti: timescale }
actionaction: () -> <utc|$2034> $2033()
pub fun float64/unix-instantstd/time/utc/float64/unix-instant: (u : float64, frac : ? float64, ts : ? timescale) -> instant( uu: float64 : float64std/core/types/float64: V, fracfrac: ? float64 : float64std/core/types/float64: V = 0.0literal: float64
hex64= 0x0p+0, tsts: ? timescale : timescalestd/time/instant/timescale: V = ts-tistd/time/utc/ts-ti: timescale )result: -> total instant : instantstd/time/instant/instant: V
val tt: timespan = timespanstd/time/timestamp/tuple64/timespan: (secs : float64, frac : float64) -> timespan(uu: float64,fracfrac: float64.fractionstd/num/float64/fraction: (d : float64) -> float64)
val leapleap: int = fracfrac: float64.truncatestd/num/float64/truncate: (d : float64) -> float64.intstd/num/float64/int: (f : float64) -> int
unix-instantstd/time/utc/timespan/unix-instant: (t : timespan, leap : ? int, ts : ? timescale) -> instant(tt: timespan,leapleap: int,tsts: timescale)
pub fun int/unix-instantstd/time/utc/int/unix-instant: (u : int, frac : ? float64, ts : ? timescale) -> instant( uu: int : intstd/core/types/int: V, fracfrac: ? float64 : float64std/core/types/float64: V = 0.0literal: float64
hex64= 0x0p+0, tsts: ? timescale : timescalestd/time/instant/timescale: V = ts-tistd/time/utc/ts-ti: timescale )result: -> total instant : instantstd/time/instant/instant: V
val tt: timespan = timespanstd/time/timestamp/ddouble/timespan: (secs : ddouble) -> timespan(uu: int.ddoublestd/num/ddouble/int/ddouble: (i : int) -> ddouble +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble fracfrac: float64.fractionstd/num/float64/fraction: (d : float64) -> float64.ddoublestd/num/ddouble/float64/ddouble: (d : float64) -> ddouble)
val leapleap: int = fracfrac: float64.truncatestd/num/float64/truncate: (d : float64) -> float64.intstd/num/float64/int: (f : float64) -> int
unix-instantstd/time/utc/timespan/unix-instant: (t : timespan, leap : ? int, ts : ? timescale) -> instant(tt: timespan,leapleap: int,tsts: timescale)
pub fun timespan/unix-instantstd/time/utc/timespan/unix-instant: (t : timespan, leap : ? int, ts : ? timescale) -> instant( tt: timespan : timespanstd/time/timestamp/timespan: V, leapleap: ? int : intstd/core/types/int: V = 0literal: int
dec = 0
hex8 = 0x00
bit8 = 0b00000000, tsts: ? timescale : timescalestd/time/instant/timescale: V = ts-tistd/time/utc/ts-ti: timescale )result: -> total instant : instantstd/time/instant/instant: V
ts-tistd/time/utc/ts-ti: timescale.instantstd/time/instant/timescale/instant: (ts : timescale, t : timestamp) -> instant( timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> timestamp(tt: timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble unix2000std/time/utc/unix2000: timespan, leapleap: int) ).use-timescalestd/time/instant/use-timescale: (i : instant, tscale : timescale) -> instant(tsts: timescale)
pub fun unix-timestampstd/time/utc/unix-timestamp: (i : instant) -> ddouble( ii: instant :instantstd/time/instant/instant: V )result: -> total ddouble : ddoublestd/num/ddouble/ddouble: V
(unix2000std/time/utc/unix2000: timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble ii: instant.timestamp-instd/time/instant/timestamp-in: (i : instant, tscale : timescale) -> timestamp(ts-tistd/time/utc/ts-ti: timescale).unsafe-timespan-withleapstd/time/timestamp/unsafe-timespan-withleap: (ts : timestamp) -> timespan)
val unix2000std/time/utc/unix2000: timespan = timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan(946684800literal: int
dec = 946684800
hex32= 0x386D4380
bit32= 0b00111000011011010100001110000000)
pub fun ntp-instantstd/time/utc/ntp-instant: (ntp : ddouble, leap : ? int) -> instant( ntpntp: ddouble : ddoublestd/num/ddouble/ddouble: V, leapleap: ? int : intstd/core/types/int: V = 0literal: int
dec = 0
hex8 = 0x00
bit8 = 0b00000000 )result: -> total instant : instantstd/time/instant/instant: V
ts-ntpstd/time/utc/ts-ntp: timescale.instantstd/time/instant/timescale/instant: (ts : timescale, t : timestamp) -> instant( timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> timestamp(ntpntp: ddouble,leapleap: int) -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp ntp2000std/time/utc/ntp2000: timespan )
pub fun ntp-timestampstd/time/utc/ntp-timestamp: (i : instant) -> ddouble( ii: instant : instantstd/time/instant/instant: V )result: -> total ddouble : ddoublestd/num/ddouble/ddouble: V
ntp2000std/time/utc/ntp2000: timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble ii: instant.timestamp-instd/time/instant/timestamp-in: (i : instant, tscale : timescale) -> timestamp(ts-ntpstd/time/utc/ts-ntp: timescale).unsafe-timespan-withleapstd/time/timestamp/unsafe-timespan-withleap: (ts : timestamp) -> timespan
val ntp2000std/time/utc/ntp2000: timespan = timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan(3155673600literal: int
dec = 3155673600
hex64= 0x00000000BC17C200
bit64= 0b0000000000000000000000000000000010111100000101111100001000000000)
pub fun utc-timescalestd/time/utc/utc-timescale: (name : string, leaps : leaps-table) -> timescale( namename: string : stringstd/core/types/string: V, leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total timescale : timescalestd/time/instant/timescale: V
fun from-taifrom-tai: (tai : duration) -> timestamp(taitai: duration:durationstd/time/duration/duration: V)result: -> total timestamp { utc-from-taistd/time/utc/utc-from-tai: (leaps : leaps-table, tai-since : duration) -> timestamp(leapsleaps: leaps-table,taitai: duration) }
fun to-taito-tai: (utc : timestamp) -> duration(utcutc: timestamp:timestampstd/time/timestamp/timestamp: V)result: -> total duration { utc-to-taistd/time/utc/utc-to-tai: (leaps : leaps-table, utc : timestamp) -> duration(leapsleaps: leaps-table,utcutc: timestamp) }
fun seconds-in-dayseconds-in-day: (utc : timestamp) -> timespan(utcutc: timestamp:timestampstd/time/timestamp/timestamp: V)result: -> total timespan{ utc-seconds-in-daystd/time/utc/utc-seconds-in-day: (leaps : leaps-table, utc : timestamp) -> timespan(leapsleaps: leaps-table,utcutc: timestamp) }
fun to-mjdto-mjd: (utc : timestamp, tzdelta : timespan) -> ddouble(utcutc: timestamp:timestampstd/time/timestamp/timestamp: V,tzdeltatzdelta: timespan:timespanstd/time/timestamp/timespan: V)result: -> total ddouble{ utc-to-mjdstd/time/utc/utc-to-mjd: (leaps : leaps-table, utc : utc-timestamp, tzdelta : timespan) -> ddouble(leapsleaps: leaps-table,utcutc: timestamp,tzdeltatzdelta: timespan) }
fun from-mjdfrom-mjd: (days : int, frac : ddouble) -> utc-timestamp(daysdays: int:intstd/core/types/int: V,fracfrac: ddouble:ddoublestd/num/ddouble/ddouble: V)result: -> total utc-timestamp{ utc-from-mjdstd/time/utc/utc-from-mjd: (leaps : leaps-table, days : int, frac : ddouble) -> utc-timestamp(leapsleaps: leaps-table,daysdays: int,fracfrac: ddouble) }
timescalestd/time/instant/timescale: (name : string, from-tai : (duration) -> timestamp, to-tai : (timestamp) -> duration, unit : ? string, seconds-in-day : ? (maybe<(timestamp) -> timespan>), to-mjd2000 : ? (maybe<(t : timestamp, tzdelta : timespan) -> ddouble>), from-mjd2000 : ? (maybe<(days : int, frac : ddouble) -> timestamp>)) -> timescale(
namename: string,
from-taifrom-tai: (tai : duration) -> timestamp,
to-taito-tai: (utc : timestamp) -> duration,
"UTC"literal: string
count= 3,
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>(seconds-in-dayseconds-in-day: (utc : timestamp) -> timespan),
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>(to-mjdto-mjd: (utc : timestamp, tzdelta : timespan) -> ddouble),
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>(from-mjdfrom-mjd: (days : int, frac : ddouble) -> utc-timestamp)
)
pub fun ts-utc-createstd/time/utc/ts-utc-create: (leaps : leaps-table) -> timescale( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total timescale : timescalestd/time/instant/timescale: V
utc-timescalestd/time/utc/utc-timescale: (name : string, leaps : leaps-table) -> timescale( "UTC"literal: string
count= 3, leapsleaps: leaps-table )
pub fun ts-unix-createstd/time/utc/ts-unix-create: (leaps : leaps-table) -> timescale( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total timescale : timescalestd/time/instant/timescale: V
ts-utc-createstd/time/utc/ts-utc-create: (leaps : leaps-table) -> timescale(leapsleaps: leaps-table)
pub fun ts-ntp-createstd/time/utc/ts-ntp-create: (leaps : leaps-table) -> timescale( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total timescale : timescalestd/time/instant/timescale: V
ts-utc-createstd/time/utc/ts-utc-create: (leaps : leaps-table) -> timescale(leapsleaps: leaps-table)
pub val ts-tistd/time/utc/ts-ti: timescale : timescalestd/time/instant/timescale: V = utc-timescalestd/time/utc/utc-timescale: (name : string, leaps : leaps-table) -> timescale( ""literal: string
count= 0, leaps-table-tistd/time/utc/leaps-table-ti: leaps-table )
pub val ts-unixstd/time/utc/ts-unix: timescale : timescalestd/time/instant/timescale: V = ts-tistd/time/utc/ts-ti: timescale
pub val ts-ntpstd/time/utc/ts-ntp: timescale : timescalestd/time/instant/timescale: V = ts-tistd/time/utc/ts-ti: timescale
fun utc-sls-timescalestd/time/utc/utc-sls-timescale: (name : string, leaps : leaps-table, smooth : ? timespan) -> timescale( namename: string : stringstd/core/types/string: V, leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, smoothsmooth: ? timespan : timespanstd/time/timestamp/timespan: V = 1000literal: int
dec = 1000
hex16= 0x03E8
bit16= 0b0000001111101000.timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan )result: -> total timescale : timescalestd/time/instant/timescale: V
fun from-taifrom-tai: (tai : duration) -> timestamp(taitai: duration:durationstd/time/duration/duration: V)result: -> total timestamp { utc-sls-from-taistd/time/utc/utc-sls-from-tai: (leaps : leaps-table, smooth : timespan, tai-since : duration) -> timestamp(leapsleaps: leaps-table,smoothsmooth: timespan,taitai: duration) }
fun to-taito-tai: (utc : timestamp) -> duration(utcutc: timestamp:timestampstd/time/timestamp/timestamp: V)result: -> total duration { utc-sls-to-taistd/time/utc/utc-sls-to-tai: (leaps : leaps-table, smooth : timespan, sls : utc-timestamp) -> duration(leapsleaps: leaps-table,smoothsmooth: timespan,utcutc: timestamp) }
timescalestd/time/instant/timescale: (name : string, from-tai : (duration) -> timestamp, to-tai : (timestamp) -> duration, unit : ? string, seconds-in-day : ? (maybe<(timestamp) -> timespan>), to-mjd2000 : ? (maybe<(t : timestamp, tzdelta : timespan) -> ddouble>), from-mjd2000 : ? (maybe<(days : int, frac : ddouble) -> timestamp>)) -> timescale(
namename: string,
from-taifrom-tai: (tai : duration) -> timestamp,
to-taito-tai: (utc : timestamp) -> duration,
"UTC-SLS"literal: string
count= 7
)
pub fun ts-utc-sls-createstd/time/utc/ts-utc-sls-create: (leaps : leaps-table) -> timescale( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total timescale : timescalestd/time/instant/timescale: V
utc-sls-timescalestd/time/utc/utc-sls-timescale: (name : string, leaps : leaps-table, smooth : ? timespan) -> timescale( "UTC-SLS"literal: string
count= 7, leapsleaps: leaps-table )
pub val ts-ti-slsstd/time/utc/ts-ti-sls: timescale : timescalestd/time/instant/timescale: V = utc-sls-timescalestd/time/utc/utc-sls-timescale: (name : string, leaps : leaps-table, smooth : ? timespan) -> timescale( "TI-SLS"literal: string
count= 6, leaps-table-tistd/time/utc/leaps-table-ti: leaps-table )
fun utc-to-taistd/time/utc/utc-to-tai: (leaps : leaps-table, utc : timestamp) -> duration( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, utcutc: timestamp : timestampstd/time/timestamp/timestamp: V )result: -> total duration : durationstd/time/duration/duration: V
val dtaidtai: timespan = utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan(leapsleaps: leaps-table,utcutc: timestamp)
(utcutc: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp dtaidtai: timespan).unsafe-durationstd/time/duration/unsafe-duration: (t : timestamp) -> duration
fun utc-from-taistd/time/utc/utc-from-tai: (leaps : leaps-table, tai-since : duration) -> timestamp( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, tai-sincetai-since: duration : durationstd/time/duration/duration: V )result: -> total timestamp : timestampstd/time/timestamp/timestamp: V
val taitai: timestamp = tai-sincetai-since: duration.timestampstd/time/duration/timestamp: (d : duration) -> timestamp
val dtai0dtai0: timespan = utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan(leapsleaps: leaps-table,taitai: timestamp)
val utc0utc0: timestamp = taitai: timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp dtai0dtai0: timespan
val dtai1dtai1: timespan = utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan(leapsleaps: leaps-table,utc0utc0: timestamp)
val diffdiff: ddouble = (dtai0dtai0: timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble dtai1dtai1: timespan)
val hasgaphasgap: bool = (diffdiff: ddouble.round-to-precstd/num/ddouble/round-to-prec: (x : ddouble, prec : int) -> ddouble(3literal: int
dec = 3
hex8 = 0x03
bit8 = 0b00000011).is-posstd/num/ddouble/is-pos: (x : ddouble) -> bool) val inleapinleap: bool = (hasgaphasgap: bool &&std/core/types/(&&): (x : bool, y : bool) -> bool utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan(leapsleaps: leaps-table,utc0utc0: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp diffdiff: ddouble) !=std/num/ddouble/(!=): (x : ddouble, y : ddouble) -> bool dtai1dtai1: timespan)
if !std/core/types/bool/(!): (b : bool) -> boolinleapinleap: bool then utc0utc0: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp diffdiff: ddouble else utc0utc0: timestamp.add-leap-secondsstd/time/timestamp/add-leap-seconds: (ts : timestamp, leaps : timespan) -> timestamp(diffdiff: ddouble)
fun utc-leap-in-daystd/time/utc/utc-leap-in-day: (leaps : leaps-table, days : int) -> maybe<(timestamp, timespan)>( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, daysdays: int : intstd/core/types/int: V )result: -> total maybe<(timestamp, timespan)> : maybestd/core/types/maybe: V -> V<(std/core/types/tuple2: (V, V) -> Vtimestampstd/time/timestamp/timestamp: V,timespanstd/time/timestamp/timespan: V)>
val utc0utc0: timestamp = timestamp-daysstd/time/timestamp/timestamp-days: (days : int, secs : ? timespan, leap : ? int) -> timestamp(daysdays: int)
val utc1utc1: timestamp = timestamp-daysstd/time/timestamp/timestamp-days: (days : int, secs : ? timespan, leap : ? int) -> timestamp(daysdays: int +std/core/int/(+): (x : int, y : int) -> int 1literal: int
dec = 1
hex8 = 0x01
bit8 = 0b00000001)
val la1la1: leap-adjust = utc-to-leap-adjuststd/time/utc/utc-to-leap-adjust: (leaps : leaps-table, utc : utc-timestamp) -> leap-adjust(leapsleaps: leaps-table,utc1utc1: timestamp)
if la1la1: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp <std/time/timestamp/(<): (i : timestamp, j : timestamp) -> bool utc0utc0: timestamp then returnreturn: maybe<(timestamp, timespan)> Nothingstd/core/types/Nothing: forall<a> maybe<a>
val dtai0dtai0: timespan = utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan(leapsleaps: leaps-table,utc0utc0: timestamp)
val dtai1dtai1: timespan = la1la1: leap-adjust.delta-taistd/time/utc/delta-tai: (la : leap-adjust, utc : utc-timestamp) -> timespan(utc1utc1: timestamp)
val diffdiff: ddouble = (dtai1dtai1: timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble dtai0dtai0: timespan).round-to-precstd/num/ddouble/round-to-prec: (x : ddouble, prec : int) -> ddouble(3literal: int
dec = 3
hex8 = 0x03
bit8 = 0b00000011) Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)la1la1: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp, diffdiff: ddouble)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b))
fun utc-seconds-in-daystd/time/utc/utc-seconds-in-day: (leaps : leaps-table, utc : timestamp) -> timespan( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, utcutc: timestamp : timestampstd/time/timestamp/timestamp: V )result: -> total timespan : timespanstd/time/timestamp/timespan: V
match(utc-leap-in-daystd/time/utc/utc-leap-in-day: (leaps : leaps-table, days : int) -> maybe<(timestamp, timespan)>(leapsleaps: leaps-table,utcutc: timestamp.daysstd/time/timestamp/days: (ts : timestamp) -> int))
Nothingstd/core/types/Nothing: forall<a> maybe<a> -> solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)_,diffdiff: timespan)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)) -> solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble diffdiff: timespan
fun utc-to-mjdstd/time/utc/utc-to-mjd: (leaps : leaps-table, utc : utc-timestamp, tzdelta : timespan) -> ddouble( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V, tzdeltatzdelta: timespan : timespanstd/time/timestamp/timespan: V )result: -> total ddouble : ddoublestd/num/ddouble/ddouble: V
val (std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)days1days1: int,secs1secs1: ddouble)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b) = (utcutc: utc-timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp tzdeltatzdelta: timespan).days-secondsstd/time/timestamp/days-seconds: (ts : timestamp) -> (int, ddouble)
val fracfrac: ddouble = match(utc-leap-in-daystd/time/utc/utc-leap-in-day: (leaps : leaps-table, days : int) -> maybe<(timestamp, timespan)>(leapsleaps: leaps-table,utcutc: utc-timestamp.daysstd/time/timestamp/days: (ts : timestamp) -> int))
Nothingstd/core/types/Nothing: forall<a> maybe<a> -> (secs1secs1: ddouble +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble utcutc: utc-timestamp.leapstd/time/timestamp/leap: (t : timestamp) -> int.ddoublestd/num/ddouble/int/ddouble: (i : int) -> ddouble) /std/num/ddouble/(/): (x : ddouble, y : ddouble) -> ddouble solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)startstart: timestamp,diffdiff: timespan)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)) ->
val secs-in-daysecs-in-day: ddouble = solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble diffdiff: timespan
val secssecs: ddouble = if utcutc: utc-timestamp <std/time/timestamp/(<): (i : timestamp, j : timestamp) -> bool startstart: timestamp then secs1secs1: ddouble +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble utcutc: utc-timestamp.leapstd/time/timestamp/leap: (t : timestamp) -> int.ddoublestd/num/ddouble/int/ddouble: (i : int) -> ddouble
else secs1secs1: ddouble +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble diffdiff: timespan
(secssecs: ddouble /std/num/ddouble/(/): (x : ddouble, y : ddouble) -> ddouble secs-in-daysecs-in-day: ddouble)
(days1days1: int.ddoublestd/num/ddouble/int/ddouble: (i : int) -> ddouble +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble fracfrac: ddouble)
fun utc-from-mjdstd/time/utc/utc-from-mjd: (leaps : leaps-table, days : int, frac : ddouble) -> utc-timestamp( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, daysdays: int : intstd/core/types/int: V, fracfrac: ddouble : ddoublestd/num/ddouble/ddouble: V )result: -> total utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V
match(utc-leap-in-daystd/time/utc/utc-leap-in-day: (leaps : leaps-table, days : int) -> maybe<(timestamp, timespan)>(leapsleaps: leaps-table,daysdays: int))
Nothingstd/core/types/Nothing: forall<a> maybe<a> -> timestamp-daysstd/time/timestamp/timestamp-days: (days : int, secs : ? timespan, leap : ? int) -> timestamp( daysdays: int, fracfrac: ddouble*std/num/ddouble/(*): (x : ddouble, y : ddouble) -> ddoublesolar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan)
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)startstart: timestamp,diffdiff: timespan)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)) ->
val secssecs: ddouble = fracfrac: ddouble*std/num/ddouble/(*): (x : ddouble, y : ddouble) -> ddouble(solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble diffdiff: timespan)
val utcutc: timestamp = timestamp-daysstd/time/timestamp/timestamp-days: (days : int, secs : ? timespan, leap : ? int) -> timestamp(daysdays: int,secssecs: ddouble)
if utcutc: timestamp <std/time/timestamp/(<): (i : timestamp, j : timestamp) -> bool startstart: timestamp then utcutc: timestamp
elif utcutc: timestamp >std/time/timestamp/(>): (i : timestamp, j : timestamp) -> bool startstart: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp diffdiff: timespan then utcutc: timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp diffdiff: timespan
else (utcutc: timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp diffdiff: timespan).add-leap-secondsstd/time/timestamp/add-leap-seconds: (ts : timestamp, leaps : timespan) -> timestamp(diffdiff: timespan)
fun utc-sls-leap-in-daystd/time/utc/utc-sls-leap-in-day: (leaps : leaps-table, smooth : timespan, utc : utc-timestamp) -> maybe<(timestamp, timestamp, timespan, timespan)>( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, smoothsmooth: timespan : timespanstd/time/timestamp/timespan: V, utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total maybe<(timestamp, timestamp, timespan, timespan)> : maybestd/core/types/maybe: V -> V<(std/core/types/tuple4: (V, V, V, V) -> Vtimestampstd/time/timestamp/timestamp: V,timestampstd/time/timestamp/timestamp: V,timespanstd/time/timestamp/timespan: V,timespanstd/time/timestamp/timespan: V)>
match(utc-leap-in-daystd/time/utc/utc-leap-in-day: (leaps : leaps-table, days : int) -> maybe<(timestamp, timespan)>(leapsleaps: leaps-table, utcutc: utc-timestamp.daysstd/time/timestamp/days: (ts : timestamp) -> int))
Nothingstd/core/types/Nothing: forall<a> maybe<a> -> Nothingstd/core/types/Nothing: forall<a> maybe<a> Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)startstart: timestamp,diffdiff: timespan)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)) ->
val smooth-startsmooth-start: timestamp = (startstart: timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp smoothsmooth: timespan) +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp diffdiff: timespan
val smooth-endsmooth-end: timestamp = startstart: timestamp.add-leap-secondsstd/time/timestamp/add-leap-seconds: (ts : timestamp, leaps : timespan) -> timestamp(diffdiff: timespan)
if utcutc: utc-timestamp <=std/time/timestamp/(<=): (i : timestamp, j : timestamp) -> bool smooth-startsmooth-start: timestamp then Nothingstd/core/types/Nothing: forall<a> maybe<a> elif utcutc: utc-timestamp >std/time/timestamp/(>): (i : timestamp, j : timestamp) -> bool smooth-endsmooth-end: timestamp then Nothingstd/core/types/Nothing: forall<a> maybe<a> else
val smooth-totalsmooth-total: ddouble = smooth-endsmooth-end: timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble smooth-startsmooth-start: timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan
val dtdt: ddouble = (utcutc: utc-timestamp.unsafe-timespan-withleapstd/time/timestamp/unsafe-timespan-withleap: (ts : timestamp) -> timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble smooth-startsmooth-start: timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan)
Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)startstart: timestamp,smooth-startsmooth-start: timestamp,smooth-totalsmooth-total: ddouble,dtdt: ddouble)std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d))
fun utc-sls-from-taistd/time/utc/utc-sls-from-tai: (leaps : leaps-table, smooth : timespan, tai-since : duration) -> timestamp( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, smoothsmooth: timespan : timespanstd/time/timestamp/timespan: V, tai-sincetai-since: duration : durationstd/time/duration/duration: V )result: -> total timestamp : timestampstd/time/timestamp/timestamp: V
val utcutc: timestamp = utc-from-taistd/time/utc/utc-from-tai: (leaps : leaps-table, tai-since : duration) -> timestamp(leapsleaps: leaps-table,tai-sincetai-since: duration)
match(utc-sls-leap-in-daystd/time/utc/utc-sls-leap-in-day: (leaps : leaps-table, smooth : timespan, utc : utc-timestamp) -> maybe<(timestamp, timestamp, timespan, timespan)>(leapsleaps: leaps-table, smoothsmooth: timespan, utcutc: timestamp))
Nothingstd/core/types/Nothing: forall<a> maybe<a> -> utcutc: timestamp Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)_start,smooth-startsmooth-start: timestamp,smooth-totalsmooth-total: timespan,dtdt: timespan)std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)) ->
val fracfrac: ddouble = dtdt: timespan /std/num/ddouble/(/): (x : ddouble, y : ddouble) -> ddouble smoothsmooth: timespan
smooth-startsmooth-start: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp (fracfrac: ddouble *std/num/ddouble/(*): (x : ddouble, y : ddouble) -> ddouble smooth-totalsmooth-total: timespan)
fun utc-sls-to-taistd/time/utc/utc-sls-to-tai: (leaps : leaps-table, smooth : timespan, sls : utc-timestamp) -> duration( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, smoothsmooth: timespan : timespanstd/time/timestamp/timespan: V, slssls: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total duration : durationstd/time/duration/duration: V
val utcutc: utc-timestamp = match(utc-sls-leap-in-daystd/time/utc/utc-sls-leap-in-day: (leaps : leaps-table, smooth : timespan, utc : utc-timestamp) -> maybe<(timestamp, timestamp, timespan, timespan)>(leapsleaps: leaps-table,smoothsmooth: timespan,slssls: utc-timestamp)) Nothingstd/core/types/Nothing: forall<a> maybe<a> -> slssls: utc-timestamp Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>((std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)startstart: timestamp,smooth-startsmooth-start: timestamp,smooth-totalsmooth-total: timespan,dtdt: timespan)std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)) ->
val fracfrac: ddouble = dtdt: timespan /std/num/ddouble/(/): (x : ddouble, y : ddouble) -> ddouble smooth-totalsmooth-total: timespan
val utc0utc0: timestamp = smooth-startsmooth-start: timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp (fracfrac: ddouble *std/num/ddouble/(*): (x : ddouble, y : ddouble) -> ddouble smoothsmooth: timespan)
if utc0utc0: timestamp <=std/time/timestamp/(<=): (i : timestamp, j : timestamp) -> bool startstart: timestamp then utc0utc0: timestamp else
val ldiffldiff: ddouble = utc0utc0: timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble startstart: timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan
startstart: timestamp.add-leap-secondsstd/time/timestamp/add-leap-seconds: (ts : timestamp, leaps : timespan) -> timestamp(ldiffldiff: ddouble)
utc-to-taistd/time/utc/utc-to-tai: (leaps : leaps-table, utc : timestamp) -> duration(leapsleaps: leaps-table,utcutc: utc-timestamp)
pub alias utc-timestampstd/time/utc/utc-timestamp: V = timestampstd/time/timestamp/timestamp: V
abstract struct leaps-tablestd/time/utc/leaps-table: V(
pub expirestd/time/utc/leaps-table/expire: (leaps-table) -> instant : instantstd/time/instant/instant: V,
adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>: liststd/core/types/list: V -> V<leap-adjuststd/time/utc/leap-adjust: V>
)
abstract struct leap-adjuststd/time/utc/leap-adjust: V(
utc-startutc-start: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V, offsetoffset: timespan : timespanstd/time/timestamp/timespan: V, drift-startdrift-start: utc-timestamp: utc-timestampstd/time/utc/utc-timestamp: V = timestamp0std/time/timestamp/timestamp0: timestamp, driftdrift: ddouble : ddoublestd/num/ddouble/ddouble: V = ddouble/zerostd/num/ddouble/zero: ddouble
)
val leaps-table0std/time/utc/leaps-table0: leaps-table = Leaps-tablestd/time/utc/Leaps-table: (expire : instant, adjusts : list<leap-adjust>) -> leaps-table(epochstd/time/instant/epoch: instant,[std/core/types/Nil: forall<a> list<a>]std/core/types/Nil: forall<a> list<a>)
val zerostd/time/utc/zero: leap-adjust : leap-adjuststd/time/utc/leap-adjust: V = Leap-adjust(timestamp0std/time/timestamp/timestamp0: timestamp,timespan0std/time/timestamp/timespan0: timespan,timestamp0std/time/timestamp/timestamp0: timestamp,zerostd/num/ddouble/zero: ddouble)
fun is-zerostd/time/utc/is-zero: (la : leap-adjust) -> bool( lala: leap-adjust : leap-adjuststd/time/utc/leap-adjust: V )result: -> total bool : boolstd/core/types/bool: V
lala: leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan.is-zerostd/num/ddouble/is-zero: (x : ddouble) -> bool &&std/core/types/(&&): (x : bool, y : bool) -> bool lala: leap-adjust.driftstd/time/utc/leap-adjust/drift: (leap-adjust) -> ddouble.is-zerostd/num/ddouble/is-zero: (x : ddouble) -> bool
pub fun leap-adjust/showstd/time/utc/leap-adjust/show: (l : leap-adjust) -> string( ll: leap-adjust : leap-adjuststd/time/utc/leap-adjust: V )result: -> total string : stringstd/core/types/string: V
[std/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>ll: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp.showstd/time/instant/timestamp/show: (t : timestamp, max-prec : ? int, secs-width : ? int, unit : ? string) -> string,": offset: "literal: string
count= 10,ll: leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan.showstd/num/ddouble/show: (x : ddouble, prec : ? int) -> string,", drift-start: "literal: string
count= 15,ll: leap-adjust.drift-startstd/time/utc/leap-adjust/drift-start: (leap-adjust) -> utc-timestamp.showstd/time/instant/timestamp/show: (t : timestamp, max-prec : ? int, secs-width : ? int, unit : ? string) -> string,", drift: "literal: string
count= 9,ll: leap-adjust.driftstd/time/utc/leap-adjust/drift: (leap-adjust) -> ddouble.showstd/num/ddouble/show: (x : ddouble, prec : ? int) -> string]std/core/types/Nil: forall<a> list<a>.joinstd/core/list/join: (xs : list<string>) -> string
pub fun leaps-table/showstd/time/utc/leaps-table/show: (t : leaps-table) -> string( tt: leaps-table : leaps-tablestd/time/utc/leaps-table: V )result: -> total string : stringstd/core/types/string: V
tt: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>.mapstd/core/list/map: (xs : list<leap-adjust>, f : (leap-adjust) -> string) -> list<string>(showstd/time/utc/leap-adjust/show: (l : leap-adjust) -> string).unlinesstd/core/list/unlines: (xs : list<string>) -> string
val utc1958std/time/utc/utc1958: timestamp = timestampstd/time/timestamp/int/timestamp: (t : int, frac : ? float64, leap : ? int) -> timestamp(-1325376000literal: int
dec = -1325376000
hex32= 0xB1005E00
bit32= 0b10110001000000000101111000000000)
fun utc-to-delta-taistd/time/utc/utc-to-delta-tai: (leaps : leaps-table, utc : utc-timestamp) -> timespan( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total timespan : timespanstd/time/timestamp/timespan: V
utc-to-leap-adjuststd/time/utc/utc-to-leap-adjust: (leaps : leaps-table, utc : utc-timestamp) -> leap-adjust(leapsleaps: leaps-table,utcutc: utc-timestamp).delta-taistd/time/utc/delta-tai: (la : leap-adjust, utc : utc-timestamp) -> timespan(utcutc: utc-timestamp)
fun utc-to-leap-adjuststd/time/utc/utc-to-leap-adjust: (leaps : leaps-table, utc : utc-timestamp) -> leap-adjust( leapsleaps: leaps-table : leaps-tablestd/time/utc/leaps-table: V, utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total leap-adjust : leap-adjuststd/time/utc/leap-adjust: V
if utcutc: utc-timestamp <std/time/timestamp/(<): (i : timestamp, j : timestamp) -> bool utc1958std/time/utc/utc1958: timestamp
then zerostd/time/utc/zero: leap-adjust
else find-leap-adjuststd/time/utc/find-leap-adjust: (utc : utc-timestamp, leaps : list<leap-adjust>) -> leap-adjust(utcutc: utc-timestamp,leapsleaps: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>)
fun find-leap-adjuststd/time/utc/find-leap-adjust: (utc : utc-timestamp, leaps : list<leap-adjust>) -> leap-adjust( utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V, leapsleaps: list<leap-adjust> : liststd/core/types/list: V -> V<leap-adjuststd/time/utc/leap-adjust: V> )result: -> total leap-adjust : leap-adjuststd/time/utc/leap-adjust: V
match leapsleaps: list<leap-adjust>
Nilstd/core/types/Nil: forall<a> list<a> -> zerostd/time/utc/zero: leap-adjust Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(lala: leap-adjust,earlierearlier: list<leap-adjust>) ->
if lala: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp >std/time/timestamp/(>): (i : timestamp, j : timestamp) -> bool utcutc: utc-timestamp
then find-leap-adjuststd/time/utc/find-leap-adjust: (utc : utc-timestamp, leaps : list<leap-adjust>) -> leap-adjust(utcutc: utc-timestamp,earlierearlier: list<leap-adjust>)
else lala: leap-adjust
fun delta-taistd/time/utc/delta-tai: (la : leap-adjust, utc : utc-timestamp) -> timespan( lala: leap-adjust : leap-adjuststd/time/utc/leap-adjust: V, utcutc: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total timespan : timespanstd/time/timestamp/timespan: V
if lala: leap-adjust.driftstd/time/utc/leap-adjust/drift: (leap-adjust) -> ddouble.is-zerostd/num/ddouble/is-zero: (x : ddouble) -> bool then lala: leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan else
val daysdays: ddouble = (utcutc: utc-timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> ddouble lala: leap-adjust.drift-startstd/time/utc/leap-adjust/drift-start: (leap-adjust) -> utc-timestamp.timespan-noleapstd/time/timestamp/timespan-noleap: (ts : timestamp) -> timespan) /std/num/ddouble/(/): (x : ddouble, y : ddouble) -> ddouble solar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan
lala: leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan +std/num/ddouble/(+): (x : ddouble, y : ddouble) -> ddouble (lala: leap-adjust.driftstd/time/utc/leap-adjust/drift: (leap-adjust) -> ddouble *std/num/ddouble/(*): (x : ddouble, y : ddouble) -> ddouble daysdays: ddouble)
pub val leaps-table-pre1972std/time/utc/leaps-table-pre1972: leaps-table : leaps-tablestd/time/utc/leaps-table: V =
parse-leap-seconds-datstd/time/utc/parse-leap-seconds-dat: (leaps : string) -> leaps-table( default-leap-seconds-pre72std/time/utc/default-leap-seconds-pre72: string )
pub val leaps-table-tistd/time/utc/leaps-table-ti: leaps-table : leaps-tablestd/time/utc/leaps-table: V =
val post72post72: leaps-table = parse-leap-secondsstd/time/utc/parse-leap-seconds: (leaps : string) -> leaps-table( default-iers-leap-secondsstd/time/utc/default-iers-leap-seconds: string )
post72post72: leaps-table.extendstd/time/utc/extend: (leap1 : leaps-table, leap2 : leaps-table) -> leaps-table(leaps-table-pre1972std/time/utc/leaps-table-pre1972: leaps-table)
pub val leaps-table-y2017std/time/utc/leaps-table-y2017: leaps-table : leaps-tablestd/time/utc/leaps-table: V = leaps-table-tistd/time/utc/leaps-table-ti: leaps-table.uptostd/time/utc/upto: (lt : leaps-table, end : utc-timestamp) -> leaps-table(536544000literal: int
dec = 536544000
hex32= 0x1FFB0300
bit32= 0b00011111111110110000001100000000.timestampstd/time/timestamp/int/timestamp: (t : int, frac : ? float64, leap : ? int) -> timestamp)
pub fun extendstd/time/utc/extend: (leap1 : leaps-table, leap2 : leaps-table) -> leaps-table(leap1leap1: leaps-table : leaps-tablestd/time/utc/leaps-table: V, leap2leap2: leaps-table : leaps-tablestd/time/utc/leaps-table: V)result: -> total leaps-table : leaps-tablestd/time/utc/leaps-table: V
match leap1leap1: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>.reversestd/core/list/reverse: (xs : list<leap-adjust>) -> list<leap-adjust>
Nilstd/core/types/Nil: forall<a> list<a> -> leap2leap2: leaps-table
Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(lala: leap-adjust,_) ->
leap1leap1: leaps-table( adjusts = leap1leap1: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust> ++std/core/list/(++): (xs : list<leap-adjust>, ys : list<leap-adjust>) -> list<leap-adjust> leap2leap2: leaps-table.uptostd/time/utc/upto: (lt : leaps-table, end : utc-timestamp) -> leaps-table(lala: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp 1literal: int
dec = 1
hex8 = 0x01
bit8 = 0b00000001.timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan).adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust> )
fun uptostd/time/utc/upto: (lt : leaps-table, end : utc-timestamp) -> leaps-table( ltlt: leaps-table : leaps-tablestd/time/utc/leaps-table: V, endend: utc-timestamp : utc-timestampstd/time/utc/utc-timestamp: V )result: -> total leaps-table : leaps-tablestd/time/utc/leaps-table: V
ltlt: leaps-table( adjusts = ltlt: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>.drop-whilestd/core/list/drop-while: (xs : list<leap-adjust>, predicate : (leap-adjust) -> bool) -> list<leap-adjust>(fnfn: (la : leap-adjust) -> bool(lala: leap-adjust) { lala: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp >std/time/timestamp/(>): (i : timestamp, j : timestamp) -> bool endend: utc-timestamp }) )
pub fun get-leap-stepsstd/time/utc/get-leap-steps: (table : ? leaps-table) -> list<(utc-timestamp, timespan, timespan, (timespan, utc-timestamp, ddouble))>( tabletable: ? leaps-table : leaps-tablestd/time/utc/leaps-table: V = leaps-table-tistd/time/utc/leaps-table-ti: leaps-table )result: -> total list<(utc-timestamp, timespan, timespan, (timespan, utc-timestamp, ddouble))> : liststd/core/types/list: V -> V<(std/core/types/tuple4: (V, V, V, V) -> Vutc-timestampstd/time/utc/utc-timestamp: V,timespanstd/time/timestamp/timespan: V,timespanstd/time/timestamp/timespan: V,(std/core/types/tuple3: (V, V, V) -> Vtimespanstd/time/timestamp/timespan: V,utc-timestampstd/time/utc/utc-timestamp: V,ddoublestd/num/ddouble/ddouble: V))>
val adjustsadjusts: list<leap-adjust> = tabletable: leaps-table.adjustsstd/time/utc/leaps-table/adjusts: (leaps-table) -> list<leap-adjust>.reversestd/core/list/reverse: (xs : list<leap-adjust>) -> list<leap-adjust>
zipstd/core/list/zip: (xs : list<leap-adjust>, ys : list<leap-adjust>) -> list<(leap-adjust, leap-adjust)>(Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(utc/zerostd/time/utc/zero: leap-adjust,adjustsadjusts: list<leap-adjust>),adjustsadjusts: list<leap-adjust>).mapstd/core/list/map: (xs : list<(leap-adjust, leap-adjust)>, f : ((leap-adjust, leap-adjust)) -> (utc-timestamp, timespan, timespan, (timespan, utc-timestamp, ddouble))) -> list<(utc-timestamp, timespan, timespan, (timespan, utc-timestamp, ddouble))> fnfn: (las : (leap-adjust, leap-adjust)) -> (utc-timestamp, timespan, timespan, (timespan, utc-timestamp, ddouble))(laslas: (leap-adjust, leap-adjust))
val startstart: utc-timestamp = laslas: (leap-adjust, leap-adjust).sndstd/core/types/tuple2/snd: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp
val ofs1ofs1: timespan = laslas: (leap-adjust, leap-adjust).fststd/core/types/tuple2/fst: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.delta-taistd/time/utc/delta-tai: (la : leap-adjust, utc : utc-timestamp) -> timespan(startstart: utc-timestamp)
val ofs2ofs2: timespan = laslas: (leap-adjust, leap-adjust).sndstd/core/types/tuple2/snd: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.delta-taistd/time/utc/delta-tai: (la : leap-adjust, utc : utc-timestamp) -> timespan(startstart: utc-timestamp)
(std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)startstart: utc-timestamp,ofs1ofs1: timespan,ofs2ofs2: timespan,(std/core/types/Tuple3: forall<a,b,c> (fst : a, snd : b, thd : c) -> (a, b, c)laslas: (leap-adjust, leap-adjust).sndstd/core/types/tuple2/snd: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan,laslas: (leap-adjust, leap-adjust).sndstd/core/types/tuple2/snd: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.drift-startstd/time/utc/leap-adjust/drift-start: (leap-adjust) -> utc-timestamp,laslas: (leap-adjust, leap-adjust).sndstd/core/types/tuple2/snd: (tuple2 : (leap-adjust, leap-adjust)) -> leap-adjust.driftstd/time/utc/leap-adjust/drift: (leap-adjust) -> ddouble)std/core/types/Tuple3: forall<a,b,c> (fst : a, snd : b, thd : c) -> (a, b, c))std/core/types/Tuple4: forall<a,b,c,d> (fst : a, snd : b, thd : c, field4 : d) -> (a, b, c, d)
pub fun parse-leap-secondsstd/time/utc/parse-leap-seconds: (leaps : string) -> leaps-table( leapsleaps: string : stringstd/core/types/string: V )result: -> total leaps-table : leaps-tablestd/time/utc/leaps-table: V
val adjustsadjusts: list<leap-adjust> = leapsleaps: string.linesstd/core/list/lines: (s : string) -> list<string>.flatmap-maybestd/core/list/flatmap-maybe: (xs : list<string>, f : (string) -> maybe<leap-adjust>) -> list<leap-adjust>(parse-leapstd/time/utc/parse-leap: (line : string) -> maybe<leap-adjust>).reversestd/core/list/reverse: (xs : list<leap-adjust>) -> list<leap-adjust>
val expireexpire: instant = parse-leap-expirestd/time/utc/parse-leap-expire: (leaps : string, adjusts : list<leap-adjust>) -> instant(leapsleaps: string,adjustsadjusts: list<leap-adjust>)
Leaps-tablestd/time/utc/Leaps-table: (expire : instant, adjusts : list<leap-adjust>) -> leaps-table(expireexpire: instant,adjustsadjusts: list<leap-adjust>)
fun parse-leapstd/time/utc/parse-leap: (line : string) -> maybe<leap-adjust>( lineline: string : stringstd/core/types/string: V )result: -> total maybe<leap-adjust> : maybestd/core/types/maybe: V -> V<leap-adjuststd/time/utc/leap-adjust: V>
if (lineline: string.trim-leftstd/core/sslice/trim-left: (s : string, sub : string) -> string(" "literal: string
count= 1).starts-withstd/core/sslice/starts-with: (s : string, pre : string) -> maybe<sslice>("#"literal: string
count= 1).is-juststd/core/types/is-just: (maybe : maybe<sslice>) -> bool)
then Nothingstd/core/types/Nothing: forall<a> maybe<a>
else lineline: string.slicestd/core/sslice/slice: (s : string) -> sslice.parsestd/text/parse/parse: (input0 : sslice, p : () -> parse leap-adjust) -> parse-error<leap-adjust>(pleapstd/time/utc/pleap: () -> parse leap-adjust).maybestd/text/parse/maybe: (perr : parse-error<leap-adjust>) -> maybe<leap-adjust>
fun pleapstd/time/utc/pleap: () -> parse leap-adjust()result: -> parse leap-adjust : parsestd/text/parse/parse: (E, V) -> V leap-adjuststd/time/utc/leap-adjust: V
whitespace0std/text/parse/whitespace0: () -> parse string()
val ntpsecsntpsecs: int = pintstd/text/parse/pint: () -> parse int()
whitespacestd/text/parse/whitespace: () -> parse string()
val adjustadjust: int = pintstd/text/parse/pint: () -> parse int()
Leap-adjust(timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> parse timestamp(ntpsecsntpsecs: int.timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> parse timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> parse ddouble ntp2000std/time/utc/ntp2000: timespan), adjustadjust: int.timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> parse timespan, timestamp0std/time/timestamp/timestamp0: timestamp, timespan0std/time/timestamp/timespan0: timespan)
val default-iers-leap-secondsstd/time/utc/default-iers-leap-seconds: string = "\n # From: https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list\n #\tUpdated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)\n # File expires on: 28 December 2024\n #\n #@\t3944332800\n #\n 2272060800 10 # 1 Jan 1972\n 2287785600 11 # 1 Jul 1972\n 2303683200 12 # 1 Jan 1973\n 2335219200 13 # 1 Jan 1974\n 2366755200 14 # 1 Jan 1975\n 2398291200 15 # 1 Jan 1976\n 2429913600 16 # 1 Jan 1977\n 2461449600 17 # 1 Jan 1978\n 2492985600 18 # 1 Jan 1979\n 2524521600 19 # 1 Jan 1980\n 2571782400 20 # 1 Jul 1981\n 2603318400 21 # 1 Jul 1982\n 2634854400 22 # 1 Jul 1983\n 2698012800 23 # 1 Jul 1985\n 2776982400 24 # 1 Jan 1988\n 2840140800 25 # 1 Jan 1990\n 2871676800 26 # 1 Jan 1991\n 2918937600 27 # 1 Jul 1992\n 2950473600 28 # 1 Jul 1993\n 2982009600 29 # 1 Jul 1994\n 3029443200 30 # 1 Jan 1996\n 3076704000 31 # 1 Jul 1997\n 3124137600 32 # 1 Jan 1999\n 3345062400 33 # 1 Jan 2006\n 3439756800 34 # 1 Jan 2009\n 3550089600 35 # 1 Jul 2012\n 3644697600 36 # 1 Jul 2015\n 3692217600 37 # 1 Jan 2017\n // 3723753600 35 # 1 Jan 2018"literal: string
count= 1125
val jd-epoch-shiftstd/time/utc/jd-epoch-shift: timespan = 2400000.5literal: float64
hex64= 0x1.24f804p21.timespanstd/time/timestamp/float64/timespan: (secs : float64) -> timespan val mjd-epoch-shiftstd/time/utc/mjd-epoch-shift: timespan = 51544literal: int
dec = 51544
hex32= 0x0000C958
bit32= 0b00000000000000001100100101011000.timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan
pub fun parse-leap-seconds-datstd/time/utc/parse-leap-seconds-dat: (leaps : string) -> leaps-table( leapsleaps: string : stringstd/core/types/string: V )result: -> total leaps-table : leaps-tablestd/time/utc/leaps-table: V
val adjustsadjusts: list<leap-adjust> = leapsleaps: string.linesstd/core/list/lines: (s : string) -> list<string>.flatmap-maybestd/core/list/flatmap-maybe: (xs : list<string>, f : (string) -> maybe<leap-adjust>) -> list<leap-adjust>(parse-taiadjuststd/time/utc/parse-taiadjust: (line : string) -> maybe<leap-adjust>).reversestd/core/list/reverse: (xs : list<leap-adjust>) -> list<leap-adjust>
val expireexpire: instant = parse-leap-expirestd/time/utc/parse-leap-expire: (leaps : string, adjusts : list<leap-adjust>) -> instant(leapsleaps: string,adjustsadjusts: list<leap-adjust>)
Leaps-tablestd/time/utc/Leaps-table: (expire : instant, adjusts : list<leap-adjust>) -> leaps-table(expireexpire: instant,adjustsadjusts: list<leap-adjust>)
fun parse-leap-expirestd/time/utc/parse-leap-expire: (leaps : string, adjusts : list<leap-adjust>) -> instant( leapsleaps: string : stringstd/core/types/string: V, adjustsadjusts: list<leap-adjust> : liststd/core/types/list: V -> V<leap-adjuststd/time/utc/leap-adjust: V>)result: -> total instant : instantstd/time/instant/instant: V
val la-finalla-final: leap-adjust = adjustsadjusts: list<leap-adjust>.headstd/core/list/head: (xs : list<leap-adjust>) -> maybe<leap-adjust>.defaultstd/core/maybe/default: (m : maybe<leap-adjust>, nothing : leap-adjust) -> leap-adjust(zerostd/time/utc/zero: leap-adjust)
val utc-expiresutc-expires: list<timestamp> = leapsleaps: string.linesstd/core/list/lines: (s : string) -> list<string>.flatmap-maybestd/core/list/flatmap-maybe: (xs : list<string>, f : (string) -> maybe<timestamp>) -> list<timestamp>(parse-expirestd/time/utc/parse-expire: (line : string) -> maybe<timestamp>)
val utc-expireutc-expire: timestamp = utc-expiresutc-expires: list<timestamp>.headstd/core/list/head: (xs : list<timestamp>) -> maybe<timestamp>.defaultstd/core/maybe/default: (m : maybe<timestamp>, nothing : timestamp) -> timestamp(la-finalla-final: leap-adjust.utc-startstd/time/utc/leap-adjust/utc-start: (leap-adjust) -> utc-timestamp +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp (182literal: int
dec = 182
hex16= 0x00B6
bit16= 0b0000000010110110*std/core/int/(*): (int, int) -> intisolar-secs-per-daystd/time/timestamp/isolar-secs-per-day: int).timespanstd/time/timestamp/int/timespan: (seconds : int, frac : ? float64) -> timespan) ts-taistd/time/instant/ts-tai: timescale.instantstd/time/instant/timescale/instant: (ts : timescale, t : timestamp) -> instant( utc-expireutc-expire: timestamp -std/time/timestamp/(-): (ts : timestamp, t : timespan) -> timestamp ntp2000std/time/utc/ntp2000: timespan +std/time/timestamp/(+): (ts : timestamp, t : timespan) -> timestamp la-finalla-final: leap-adjust.offsetstd/time/utc/leap-adjust/offset: (leap-adjust) -> timespan )
fun parse-expirestd/time/utc/parse-expire: (line : string) -> maybe<timestamp>( lineline: string : stringstd/core/types/string: V )result: -> total maybe<timestamp> : maybestd/core/types/maybe: V -> V<timestampstd/time/timestamp/timestamp: V>
if (lineline: string.trim-leftstd/core/sslice/trim-left: (s : string, sub : string) -> string(" "literal: string
count= 1).starts-withstd/core/sslice/starts-with: (s : string, pre : string) -> maybe<sslice>("#@"literal: string
count= 2).is-juststd/core/types/is-just: (maybe : maybe<sslice>) -> bool)
then lineline: string.slicestd/core/sslice/slice: (s : string) -> sslice.parsestd/text/parse/parse: (input0 : sslice, p : () -> parse timestamp) -> parse-error<timestamp>(pexpirestd/time/utc/pexpire: () -> parse timestamp).maybestd/text/parse/maybe: (perr : parse-error<timestamp>) -> maybe<timestamp>
else Nothingstd/core/types/Nothing: forall<a> maybe<a>
fun pexpirestd/time/utc/pexpire: () -> parse timestamp()result: -> parse timestamp : parsestd/text/parse/parse: (E, V) -> V timestampstd/time/timestamp/timestamp: V
whitespace0std/text/parse/whitespace0: () -> parse string()
pstringstd/text/parse/pstring: (s : string) -> parse string("#@"literal: string
count= 2)
whitespace0std/text/parse/whitespace0: () -> parse string()
val ntpexntpex: ddouble = pddoublestd/num/ddouble/pddouble: () -> parse ddouble()
timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> parse timestamp(ntpexntpex: ddouble.timespanstd/time/timestamp/ddouble/timespan: (secs : ddouble) -> parse timespan -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> parse ddouble ntp2000std/time/utc/ntp2000: timespan)
fun parse-taiadjuststd/time/utc/parse-taiadjust: (line : string) -> maybe<leap-adjust>( lineline: string : stringstd/core/types/string: V )result: -> total maybe<leap-adjust> : maybestd/core/types/maybe: V -> V<leap-adjuststd/time/utc/leap-adjust: V>
lineline: string.slicestd/core/sslice/slice: (s : string) -> sslice.parse-eofstd/text/parse/parse-eof: (input : sslice, p : () -> parse leap-adjust) -> parse-error<leap-adjust>(ptaiadjuststd/time/utc/ptaiadjust: () -> parse leap-adjust).maybestd/text/parse/maybe: (perr : parse-error<leap-adjust>) -> maybe<leap-adjust>
fun ptaiadjuststd/time/utc/ptaiadjust: () -> parse leap-adjust()result: -> parse leap-adjust : parsestd/text/parse/parse: (E, V) -> V leap-adjuststd/time/utc/leap-adjust: V
whitespace0std/text/parse/whitespace0: () -> parse string()
many1std/text/parse/many1: (p : parser<total,char>) -> parse list<char>{ none-ofstd/text/parse/none-of: (chars : string) -> parse char("="literal: string
count= 1) }
pstringstd/text/parse/pstring: (s : string) -> parse string("=JD"literal: string
count= 3)
whitespace0std/text/parse/whitespace0: () -> parse string()
val mjdmjd: ddouble = pddoublestd/num/ddouble/pddouble: () -> parse ddouble() -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> parse ddouble jd-epoch-shiftstd/time/utc/jd-epoch-shift: timespan
whitespace0std/text/parse/whitespace0: () -> parse string()
pstringstd/text/parse/pstring: (s : string) -> parse string("TAI-UTC="literal: string
count= 8)
whitespace0std/text/parse/whitespace0: () -> parse string()
val ofsofs: ddouble = pddoublestd/num/ddouble/pddouble: () -> parse ddouble()
many1std/text/parse/many1: (p : parser<total,char>) -> parse list<char>{ no-digitstd/text/parse/no-digit: () -> parse char() }
val dmjddmjd: ddouble = pddoublestd/num/ddouble/pddouble: () -> parse ddouble()
many1std/text/parse/many1: (p : parser<total,char>) -> parse list<char>{ no-digitstd/text/parse/no-digit: () -> parse char() }
val driftdrift: ddouble = pddoublestd/num/ddouble/pddouble: () -> parse ddouble()
whitespace0std/text/parse/whitespace0: () -> parse string()
pstringstd/text/parse/pstring: (s : string) -> parse string("S"literal: string
count= 1)
whitespace0std/text/parse/whitespace0: () -> parse string()
val startstart: timestamp = ((mjdmjd: ddouble -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> parse ddouble mjd-epoch-shiftstd/time/utc/mjd-epoch-shift: timespan)*std/num/ddouble/(*): (x : ddouble, y : ddouble) -> parse ddoublesolar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan).roundstd/num/ddouble/round: (x : ddouble) -> parse ddouble.timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> parse timestamp
val dstartdstart: timestamp = ((dmjddmjd: ddouble -std/num/ddouble/(-): (x : ddouble, y : ddouble) -> parse ddouble mjd-epoch-shiftstd/time/utc/mjd-epoch-shift: timespan)*std/num/ddouble/(*): (x : ddouble, y : ddouble) -> parse ddoublesolar-secs-per-daystd/time/timestamp/solar-secs-per-day: timespan).roundstd/num/ddouble/round: (x : ddouble) -> parse ddouble.timestampstd/time/timestamp/timestamp: (t : timespan, leap : ? int) -> parse timestamp
Leap-adjust( startstart: timestamp, ofsofs: ddouble, dstartdstart: timestamp, driftdrift: ddouble )
val default-leap-seconds-pre72std/time/utc/default-leap-seconds-pre72: string = "\n # from: Explanatory Supplement to the Astronomical Almanac, 1992 edition, pages 86--87.\n 1958 JAN 1 =JD 2436204.5 TAI-UTC= 0.0 S + (MJD - 36204.) X 0.00073458 S\n 1958 JAN 15 =JD 2436219.29167 TAI-UTC= 0.02 S + (MJD - 36204.) X 0.00073458 S\n 1958 FEB 5 =JD 2436240.29167 TAI-UTC= 0.04 S + (MJD - 36204.) X 0.00073458 S\n 1958 FEB 19 =JD 2436254.29167 TAI-UTC= 0.06 S + (MJD - 36204.) X 0.00073458 S\n 1958 APR 9 =JD 2436303.29167 TAI-UTC= 0.08 S + (MJD - 36204.) X 0.00073458 S\n 1958 JUN 11 =JD 2436366.29167 TAI-UTC= 0.10 S + (MJD - 36204.) X 0.00073458 S\n 1958 JUL 2 =JD 2436387.29167 TAI-UTC= 0.12 S + (MJD - 36204.) X 0.00073458 S\n 1958 JUL 16 =JD 2436401.29167 TAI-UTC= 0.14 S + (MJD - 36204.) X 0.00073458 S\n 1958 OCT 22 =JD 2436499.29167 TAI-UTC= 0.16 S + (MJD - 36204.) X 0.00073458 S\n 1958 NOV 26 =JD 2436534.29167 TAI-UTC= 0.18 S + (MJD - 36204.) X 0.00073458 S\n 1958 DEC 24 =JD 2436562.29167 TAI-UTC= 0.20 S + (MJD - 36204.) X 0.00073458 S\n\n 1959 JAN 1 =JD 2436569.5 TAI-UTC= 0.4681220 S + (MJD - 36569.) X 0.000864 S\n 1959 JAN 28 =JD 2436597.29167 TAI-UTC= 0.4881220 S + (MJD - 36569.) X 0.000864 S\n 1959 FEB 25 =JD 2436625.29167 TAI-UTC= 0.5081220 S + (MJD - 36569.) X 0.000864 S\n 1959 APR 5 =JD 2436664.29167 TAI-UTC= 0.5281220 S + (MJD - 36569.) X 0.000864 S\n 1959 AUG 26 =JD 2436807.29167 TAI-UTC= 0.5481220 S + (MJD - 36569.) X 0.000864 S\n 1959 SEP 30 =JD 2436842.29167 TAI-UTC= 0.5681220 S + (MJD - 36569.) X 0.000864 S\n 1959 NOV 4 =JD 2436877.29167 TAI-UTC= 0.5881220 S + (MJD - 36569.) X 0.000864 S\n 1959 NOV 18 =JD 2436891.29167 TAI-UTC= 0.6081220 S + (MJD - 36569.) X 0.000864 S\n 1959 DEC 16 =JD 2436919.29167 TAI-UTC= 0.6281220 S + (MJD - 36569.) X 0.000864 S\n 1960 JAN 1 =JD 2436934.5 TAI-UTC= 0.9434820 S + (MJD - 36934.) X 0.001296 S\n\n # from: https://maia.usno.navy.mil/ser7/tai-utc.dat\n 1961 JAN 1 =JD 2437300.5 TAI-UTC= 1.4228180 S + (MJD - 37300.) X 0.001296 S\n 1961 AUG 1 =JD 2437512.5 TAI-UTC= 1.3728180 S + (MJD - 37300.) X 0.001296 S\n 1962 JAN 1 =JD 2437665.5 TAI-UTC= 1.8458580 S + (MJD - 37665.) X 0.0011232S\n 1963 NOV 1 =JD 2438334.5 TAI-UTC= 1.9458580 S + (MJD - 37665.) X 0.0011232S\n 1964 JAN 1 =JD 2438395.5 TAI-UTC= 3.2401300 S + (MJD - 38761.) X 0.001296 S\n 1964 APR 1 =JD 2438486.5 TAI-UTC= 3.3401300 S + (MJD - 38761.) X 0.001296 S\n 1964 SEP 1 =JD 2438639.5 TAI-UTC= 3.4401300 S + (MJD - 38761.) X 0.001296 S\n 1965 JAN 1 =JD 2438761.5 TAI-UTC= 3.5401300 S + (MJD - 38761.) X 0.001296 S\n 1965 MAR 1 =JD 2438820.5 TAI-UTC= 3.6401300 S + (MJD - 38761.) X 0.001296 S\n 1965 JUL 1 =JD 2438942.5 TAI-UTC= 3.7401300 S + (MJD - 38761.) X 0.001296 S\n 1965 SEP 1 =JD 2439004.5 TAI-UTC= 3.8401300 S + (MJD - 38761.) X 0.001296 S\n 1966 JAN 1 =JD 2439126.5 TAI-UTC= 4.3131700 S + (MJD - 39126.) X 0.002592 S\n 1968 FEB 1 =JD 2439887.5 TAI-UTC= 4.2131700 S + (MJD - 39126.) X 0.002592 S"literal: string
count= 2922