@@ -0,0 +1,9626 @@
4+function F(arity, fun, wrapper) {
11+ return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })
14+ return F(3, fun, function(a) {
15+ return function(b) { return function(c) { return fun(a, b, c); }; };
19+ return F(4, fun, function(a) { return function(b) { return function(c) {
20+ return function(d) { return fun(a, b, c, d); }; }; };
24+ return F(5, fun, function(a) { return function(b) { return function(c) {
25+ return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };
29+ return F(6, fun, function(a) { return function(b) { return function(c) {
30+ return function(d) { return function(e) { return function(f) {
31+ return fun(a, b, c, d, e, f); }; }; }; }; };
35+ return F(7, fun, function(a) { return function(b) { return function(c) {
36+ return function(d) { return function(e) { return function(f) {
37+ return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };
41+ return F(8, fun, function(a) { return function(b) { return function(c) {
42+ return function(d) { return function(e) { return function(f) {
43+ return function(g) { return function(h) {
44+ return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };
48+ return F(9, fun, function(a) { return function(b) { return function(c) {
49+ return function(d) { return function(e) { return function(f) {
50+ return function(g) { return function(h) { return function(i) {
51+ return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };
55+function A2(fun, a, b) {
56+ return fun.a === 2 ? fun.f(a, b) : fun(a)(b);
58+function A3(fun, a, b, c) {
59+ return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);
61+function A4(fun, a, b, c, d) {
62+ return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);
64+function A5(fun, a, b, c, d, e) {
65+ return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);
67+function A6(fun, a, b, c, d, e, f) {
68+ return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);
70+function A7(fun, a, b, c, d, e, f, g) {
71+ return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);
73+function A8(fun, a, b, c, d, e, f, g, h) {
74+ return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);
76+function A9(fun, a, b, c, d, e, f, g, h, i) {
77+ return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
80+console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');
83+var _JsArray_empty = [];
85+function _JsArray_singleton(value)
90+function _JsArray_length(array)
95+var _JsArray_initialize = F3(function(size, offset, func)
97+ var result = new Array(size);
99+ for (var i = 0; i < size; i++)
101+ result[i] = func(offset + i);
107+var _JsArray_initializeFromList = F2(function (max, ls)
109+ var result = new Array(max);
111+ for (var i = 0; i < max && ls.b; i++)
118+ return _Utils_Tuple2(result, ls);
121+var _JsArray_unsafeGet = F2(function(index, array)
123+ return array[index];
126+var _JsArray_unsafeSet = F3(function(index, value, array)
128+ var length = array.length;
129+ var result = new Array(length);
131+ for (var i = 0; i < length; i++)
133+ result[i] = array[i];
136+ result[index] = value;
140+var _JsArray_push = F2(function(value, array)
142+ var length = array.length;
143+ var result = new Array(length + 1);
145+ for (var i = 0; i < length; i++)
147+ result[i] = array[i];
150+ result[length] = value;
154+var _JsArray_foldl = F3(function(func, acc, array)
156+ var length = array.length;
158+ for (var i = 0; i < length; i++)
160+ acc = A2(func, array[i], acc);
166+var _JsArray_foldr = F3(function(func, acc, array)
168+ for (var i = array.length - 1; i >= 0; i--)
170+ acc = A2(func, array[i], acc);
176+var _JsArray_map = F2(function(func, array)
178+ var length = array.length;
179+ var result = new Array(length);
181+ for (var i = 0; i < length; i++)
183+ result[i] = func(array[i]);
189+var _JsArray_indexedMap = F3(function(func, offset, array)
191+ var length = array.length;
192+ var result = new Array(length);
194+ for (var i = 0; i < length; i++)
196+ result[i] = A2(func, offset + i, array[i]);
202+var _JsArray_slice = F3(function(from, to, array)
204+ return array.slice(from, to);
207+var _JsArray_appendN = F3(function(n, dest, source)
209+ var destLen = dest.length;
210+ var itemsToCopy = n - destLen;
212+ if (itemsToCopy > source.length)
214+ itemsToCopy = source.length;
217+ var size = destLen + itemsToCopy;
218+ var result = new Array(size);
220+ for (var i = 0; i < destLen; i++)
222+ result[i] = dest[i];
225+ for (var i = 0; i < itemsToCopy; i++)
227+ result[i + destLen] = source[i];
238+var _Debug_log = F2(function(tag, value)
240+ console.log(tag + ': ' + _Debug_toString(value));
247+function _Debug_todo(moduleName, region)
249+ return function(message) {
250+ _Debug_crash(8, moduleName, region, message);
254+function _Debug_todoCase(moduleName, region, value)
256+ return function(message) {
257+ _Debug_crash(9, moduleName, region, value, message);
265+function _Debug_toString(value)
267+ return _Debug_toAnsiString(false, value);
270+function _Debug_toAnsiString(ansi, value)
272+ if (typeof value === 'function')
274+ return _Debug_internalColor(ansi, '<function>');
277+ if (typeof value === 'boolean')
279+ return _Debug_ctorColor(ansi, value ? 'True' : 'False');
282+ if (typeof value === 'number')
284+ return _Debug_numberColor(ansi, value + '');
287+ if (value instanceof String)
289+ return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'");
292+ if (typeof value === 'string')
294+ return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"');
297+ if (typeof value === 'object' && '$' in value)
301+ if (typeof tag === 'number')
303+ return _Debug_internalColor(ansi, '<internals>');
309+ for (var k in value)
311+ if (k === '$') continue;
312+ output.push(_Debug_toAnsiString(ansi, value[k]));
314+ return '(' + output.join(',') + ')';
317+ if (tag === 'Set_elm_builtin')
319+ return _Debug_ctorColor(ansi, 'Set')
320+ + _Debug_fadeColor(ansi, '.fromList') + ' '
321+ + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));
324+ if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')
326+ return _Debug_ctorColor(ansi, 'Dict')
327+ + _Debug_fadeColor(ansi, '.fromList') + ' '
328+ + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));
331+ if (tag === 'Array_elm_builtin')
333+ return _Debug_ctorColor(ansi, 'Array')
334+ + _Debug_fadeColor(ansi, '.fromList') + ' '
335+ + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));
338+ if (tag === '::' || tag === '[]')
342+ value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)
344+ for (; value.b; value = value.b) // WHILE_CONS
346+ output += ',' + _Debug_toAnsiString(ansi, value.a);
348+ return output + ']';
352+ for (var i in value)
354+ if (i === '$') continue;
355+ var str = _Debug_toAnsiString(ansi, value[i]);
357+ var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0;
358+ output += ' ' + (parenless ? str : '(' + str + ')');
360+ return _Debug_ctorColor(ansi, tag) + output;
363+ if (typeof DataView === 'function' && value instanceof DataView)
365+ return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');
368+ if (typeof File !== 'undefined' && value instanceof File)
370+ return _Debug_internalColor(ansi, '<' + value.name + '>');
373+ if (typeof value === 'object')
376+ for (var key in value)
378+ var field = key[0] === '_' ? key.slice(1) : key;
379+ output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));
381+ if (output.length === 0)
385+ return '{ ' + output.join(', ') + ' }';
388+ return _Debug_internalColor(ansi, '<internals>');
391+function _Debug_addSlashes(str, isChar)
394+ .replace(/\\/g, '\\\\')
395+ .replace(/\n/g, '\\n')
396+ .replace(/\t/g, '\\t')
397+ .replace(/\r/g, '\\r')
398+ .replace(/\v/g, '\\v')
399+ .replace(/\0/g, '\\0');
403+ return s.replace(/\'/g, '\\\'');
407+ return s.replace(/\"/g, '\\"');
411+function _Debug_ctorColor(ansi, string)
413+ return ansi ? '\x1b[96m' + string + '\x1b[0m' : string;
416+function _Debug_numberColor(ansi, string)
418+ return ansi ? '\x1b[95m' + string + '\x1b[0m' : string;
421+function _Debug_stringColor(ansi, string)
423+ return ansi ? '\x1b[93m' + string + '\x1b[0m' : string;
426+function _Debug_charColor(ansi, string)
428+ return ansi ? '\x1b[92m' + string + '\x1b[0m' : string;
431+function _Debug_fadeColor(ansi, string)
433+ return ansi ? '\x1b[37m' + string + '\x1b[0m' : string;
436+function _Debug_internalColor(ansi, string)
438+ return ansi ? '\x1b[36m' + string + '\x1b[0m' : string;
441+function _Debug_toHexDigit(n)
443+ return String.fromCharCode(n < 10 ? 48 + n : 55 + n);
452+function _Debug_crash(identifier, fact1, fact2, fact3, fact4)
457+ throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.');
460+ throw new Error('Browser.application programs cannot handle URLs like this:\n\n ' + document.location.href + '\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');
463+ var jsonErrorString = fact1;
464+ throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString);
467+ var portName = fact1;
468+ throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.');
471+ var portName = fact1;
472+ var problem = fact2;
473+ throw new Error('Trying to send an unexpected type of value through port `' + portName + '`:\n' + problem);
476+ throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');
479+ var moduleName = fact1;
480+ throw new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');
483+ var moduleName = fact1;
485+ var message = fact3;
486+ throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message);
489+ var moduleName = fact1;
492+ var message = fact4;
494+ 'TODO in module `' + moduleName + '` from the `case` expression '
495+ + _Debug_regionToString(region) + '\n\nIt received the following value:\n\n '
496+ + _Debug_toString(value).replace('\n', '\n ')
497+ + '\n\nBut the branch that handles it says:\n\n ' + message.replace('\n', '\n ')
501+ throw new Error('Bug in https://github.com/elm/virtual-dom/issues');
504+ throw new Error('Cannot perform mod 0. Division by zero error.');
508+function _Debug_regionToString(region)
510+ if (region.start.line === region.end.line)
512+ return 'on line ' + region.start.line;
514+ return 'on lines ' + region.start.line + ' through ' + region.end.line;
521+function _Utils_eq(x, y)
524+ var pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);
525+ isEqual && (pair = stack.pop());
526+ isEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)
533+function _Utils_eqHelp(x, y, depth, stack)
540+ if (typeof x !== 'object' || x === null || y === null)
542+ typeof x === 'function' && _Debug_crash(5);
548+ stack.push(_Utils_Tuple2(x,y));
553+ if (x.$ === 'Set_elm_builtin')
555+ x = $elm$core$Set$toList(x);
556+ y = $elm$core$Set$toList(y);
558+ if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')
560+ x = $elm$core$Dict$toList(x);
561+ y = $elm$core$Dict$toList(y);
568+ x = $elm$core$Dict$toList(x);
569+ y = $elm$core$Dict$toList(y);
575+ if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))
583+var _Utils_equal = F2(_Utils_eq);
584+var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });
590+// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on
591+// the particular integer values assigned to LT, EQ, and GT.
593+function _Utils_cmp(x, y, ord)
595+ if (typeof x !== 'object')
597+ return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;
601+ if (x instanceof String)
603+ var a = x.valueOf();
604+ var b = y.valueOf();
605+ return a === b ? 0 : a < b ? -1 : 1;
610+ if (typeof x.$ === 'undefined')
616+ return (ord = _Utils_cmp(x.a, y.a))
618+ : (ord = _Utils_cmp(x.b, y.b))
620+ : _Utils_cmp(x.c, y.c);
623+ // traverse conses until end of a list or a mismatch
624+ for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES
625+ return ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);
628+var _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });
629+var _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });
630+var _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });
631+var _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });
633+var _Utils_compare = F2(function(x, y)
635+ var n = _Utils_cmp(x, y);
636+ return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;
642+var _Utils_Tuple0 = { $: '#0' };
644+function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }
646+function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }
648+function _Utils_chr(c) { return new String(c); }
653+function _Utils_update(oldRecord, updatedFields)
657+ for (var key in oldRecord)
659+ newRecord[key] = oldRecord[key];
662+ for (var key in updatedFields)
664+ newRecord[key] = updatedFields[key];
673+var _Utils_append = F2(_Utils_ap);
675+function _Utils_ap(xs, ys)
678+ if (typeof xs === 'string')
688+ var root = _List_Cons(xs.a, ys);
690+ for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS
692+ curr = curr.b = _List_Cons(xs.a, ys);
699+var _List_Nil = { $: '[]' };
701+function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }
704+var _List_cons = F2(_List_Cons);
706+function _List_fromArray(arr)
708+ var out = _List_Nil;
709+ for (var i = arr.length; i--; )
711+ out = _List_Cons(arr[i], out);
716+function _List_toArray(xs)
718+ for (var out = []; xs.b; xs = xs.b) // WHILE_CONS
725+var _List_map2 = F3(function(f, xs, ys)
727+ for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES
729+ arr.push(A2(f, xs.a, ys.a));
731+ return _List_fromArray(arr);
734+var _List_map3 = F4(function(f, xs, ys, zs)
736+ for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
738+ arr.push(A3(f, xs.a, ys.a, zs.a));
740+ return _List_fromArray(arr);
743+var _List_map4 = F5(function(f, ws, xs, ys, zs)
745+ for (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
747+ arr.push(A4(f, ws.a, xs.a, ys.a, zs.a));
749+ return _List_fromArray(arr);
752+var _List_map5 = F6(function(f, vs, ws, xs, ys, zs)
754+ for (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
756+ arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));
758+ return _List_fromArray(arr);
761+var _List_sortBy = F2(function(f, xs)
763+ return _List_fromArray(_List_toArray(xs).sort(function(a, b) {
764+ return _Utils_cmp(f(a), f(b));
768+var _List_sortWith = F2(function(f, xs)
770+ return _List_fromArray(_List_toArray(xs).sort(function(a, b) {
771+ var ord = A2(f, a, b);
772+ return ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;
780+var _Basics_add = F2(function(a, b) { return a + b; });
781+var _Basics_sub = F2(function(a, b) { return a - b; });
782+var _Basics_mul = F2(function(a, b) { return a * b; });
783+var _Basics_fdiv = F2(function(a, b) { return a / b; });
784+var _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });
785+var _Basics_pow = F2(Math.pow);
787+var _Basics_remainderBy = F2(function(b, a) { return a % b; });
789+// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf
790+var _Basics_modBy = F2(function(modulus, x)
792+ var answer = x % modulus;
793+ return modulus === 0
796+ ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))
804+var _Basics_pi = Math.PI;
805+var _Basics_e = Math.E;
806+var _Basics_cos = Math.cos;
807+var _Basics_sin = Math.sin;
808+var _Basics_tan = Math.tan;
809+var _Basics_acos = Math.acos;
810+var _Basics_asin = Math.asin;
811+var _Basics_atan = Math.atan;
812+var _Basics_atan2 = F2(Math.atan2);
817+function _Basics_toFloat(x) { return x; }
818+function _Basics_truncate(n) { return n | 0; }
819+function _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }
821+var _Basics_ceiling = Math.ceil;
822+var _Basics_floor = Math.floor;
823+var _Basics_round = Math.round;
824+var _Basics_sqrt = Math.sqrt;
825+var _Basics_log = Math.log;
826+var _Basics_isNaN = isNaN;
831+function _Basics_not(bool) { return !bool; }
832+var _Basics_and = F2(function(a, b) { return a && b; });
833+var _Basics_or = F2(function(a, b) { return a || b; });
834+var _Basics_xor = F2(function(a, b) { return a !== b; });
838+var _String_cons = F2(function(chr, str)
843+function _String_uncons(string)
845+ var word = string.charCodeAt(0);
847+ ? $elm$core$Maybe$Just(
848+ 0xD800 <= word && word <= 0xDBFF
849+ ? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))
850+ : _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))
852+ : $elm$core$Maybe$Nothing;
855+var _String_append = F2(function(a, b)
860+function _String_length(str)
865+var _String_map = F2(function(func, string)
867+ var len = string.length;
868+ var array = new Array(len);
872+ var word = string.charCodeAt(i);
873+ if (0xD800 <= word && word <= 0xDBFF)
875+ array[i] = func(_Utils_chr(string[i] + string[i+1]));
879+ array[i] = func(_Utils_chr(string[i]));
882+ return array.join('');
885+var _String_filter = F2(function(isGood, str)
888+ var len = str.length;
893+ var word = str.charCodeAt(i);
895+ if (0xD800 <= word && word <= 0xDBFF)
901+ if (isGood(_Utils_chr(char)))
906+ return arr.join('');
909+function _String_reverse(str)
911+ var len = str.length;
912+ var arr = new Array(len);
916+ var word = str.charCodeAt(i);
917+ if (0xD800 <= word && word <= 0xDBFF)
919+ arr[len - i] = str[i + 1];
921+ arr[len - i] = str[i - 1];
926+ arr[len - i] = str[i];
930+ return arr.join('');
933+var _String_foldl = F3(function(func, state, string)
935+ var len = string.length;
939+ var char = string[i];
940+ var word = string.charCodeAt(i);
942+ if (0xD800 <= word && word <= 0xDBFF)
947+ state = A2(func, _Utils_chr(char), state);
952+var _String_foldr = F3(function(func, state, string)
954+ var i = string.length;
957+ var char = string[i];
958+ var word = string.charCodeAt(i);
959+ if (0xDC00 <= word && word <= 0xDFFF)
962+ char = string[i] + char;
964+ state = A2(func, _Utils_chr(char), state);
969+var _String_split = F2(function(sep, str)
971+ return str.split(sep);
974+var _String_join = F2(function(sep, strs)
976+ return strs.join(sep);
979+var _String_slice = F3(function(start, end, str) {
980+ return str.slice(start, end);
983+function _String_trim(str)
988+function _String_trimLeft(str)
990+ return str.replace(/^\s+/, '');
993+function _String_trimRight(str)
995+ return str.replace(/\s+$/, '');
998+function _String_words(str)
1000+ return _List_fromArray(str.trim().split(/\s+/g));
1003+function _String_lines(str)
1005+ return _List_fromArray(str.split(/\r\n|\r|\n/g));
1008+function _String_toUpper(str)
1010+ return str.toUpperCase();
1013+function _String_toLower(str)
1015+ return str.toLowerCase();
1018+var _String_any = F2(function(isGood, string)
1020+ var i = string.length;
1023+ var char = string[i];
1024+ var word = string.charCodeAt(i);
1025+ if (0xDC00 <= word && word <= 0xDFFF)
1028+ char = string[i] + char;
1030+ if (isGood(_Utils_chr(char)))
1038+var _String_all = F2(function(isGood, string)
1040+ var i = string.length;
1043+ var char = string[i];
1044+ var word = string.charCodeAt(i);
1045+ if (0xDC00 <= word && word <= 0xDFFF)
1048+ char = string[i] + char;
1050+ if (!isGood(_Utils_chr(char)))
1058+var _String_contains = F2(function(sub, str)
1060+ return str.indexOf(sub) > -1;
1063+var _String_startsWith = F2(function(sub, str)
1065+ return str.indexOf(sub) === 0;
1068+var _String_endsWith = F2(function(sub, str)
1070+ return str.length >= sub.length &&
1071+ str.lastIndexOf(sub) === str.length - sub.length;
1074+var _String_indexes = F2(function(sub, str)
1076+ var subLen = sub.length;
1086+ while ((i = str.indexOf(sub, i)) > -1)
1092+ return _List_fromArray(is);
1098+function _String_fromNumber(number)
1100+ return number + '';
1106+function _String_toInt(str)
1109+ var code0 = str.charCodeAt(0);
1110+ var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;
1112+ for (var i = start; i < str.length; ++i)
1114+ var code = str.charCodeAt(i);
1115+ if (code < 0x30 || 0x39 < code)
1117+ return $elm$core$Maybe$Nothing;
1119+ total = 10 * total + code - 0x30;
1123+ ? $elm$core$Maybe$Nothing
1124+ : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);
1128+// FLOAT CONVERSIONS
1130+function _String_toFloat(s)
1132+ // check if it is a hex, octal, or binary number
1133+ if (s.length === 0 || /[\sxbo]/.test(s))
1135+ return $elm$core$Maybe$Nothing;
1138+ // faster isNaN check
1139+ return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;
1142+function _String_fromList(chars)
1144+ return _List_toArray(chars).join('');
1150+function _Char_toCode(char)
1152+ var code = char.charCodeAt(0);
1153+ if (0xD800 <= code && code <= 0xDBFF)
1155+ return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000
1160+function _Char_fromCode(code)
1163+ (code < 0 || 0x10FFFF < code)
1167+ ? String.fromCharCode(code)
1170+ String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)
1175+function _Char_toUpper(char)
1177+ return _Utils_chr(char.toUpperCase());
1180+function _Char_toLower(char)
1182+ return _Utils_chr(char.toLowerCase());
1185+function _Char_toLocaleUpper(char)
1187+ return _Utils_chr(char.toLocaleUpperCase());
1190+function _Char_toLocaleLower(char)
1192+ return _Utils_chr(char.toLocaleLowerCase());
1198+function _Json_errorToString(error)
1200+ return $elm$json$Json$Decode$errorToString(error);
1207+function _Json_succeed(msg)
1215+function _Json_fail(msg)
1223+function _Json_decodePrim(decoder)
1225+ return { $: 2, b: decoder };
1228+var _Json_decodeInt = _Json_decodePrim(function(value) {
1229+ return (typeof value !== 'number')
1230+ ? _Json_expecting('an INT', value)
1232+ (-2147483647 < value && value < 2147483647 && (value | 0) === value)
1233+ ? $elm$core$Result$Ok(value)
1235+ (isFinite(value) && !(value % 1))
1236+ ? $elm$core$Result$Ok(value)
1237+ : _Json_expecting('an INT', value);
1240+var _Json_decodeBool = _Json_decodePrim(function(value) {
1241+ return (typeof value === 'boolean')
1242+ ? $elm$core$Result$Ok(value)
1243+ : _Json_expecting('a BOOL', value);
1246+var _Json_decodeFloat = _Json_decodePrim(function(value) {
1247+ return (typeof value === 'number')
1248+ ? $elm$core$Result$Ok(value)
1249+ : _Json_expecting('a FLOAT', value);
1252+var _Json_decodeValue = _Json_decodePrim(function(value) {
1253+ return $elm$core$Result$Ok(_Json_wrap(value));
1256+var _Json_decodeString = _Json_decodePrim(function(value) {
1257+ return (typeof value === 'string')
1258+ ? $elm$core$Result$Ok(value)
1259+ : (value instanceof String)
1260+ ? $elm$core$Result$Ok(value + '')
1261+ : _Json_expecting('a STRING', value);
1264+function _Json_decodeList(decoder) { return { $: 3, b: decoder }; }
1265+function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }
1267+function _Json_decodeNull(value) { return { $: 5, c: value }; }
1269+var _Json_decodeField = F2(function(field, decoder)
1278+var _Json_decodeIndex = F2(function(index, decoder)
1287+function _Json_decodeKeyValuePairs(decoder)
1295+function _Json_mapMany(f, decoders)
1304+var _Json_andThen = F2(function(callback, decoder)
1313+function _Json_oneOf(decoders)
1324+var _Json_map1 = F2(function(f, d1)
1326+ return _Json_mapMany(f, [d1]);
1329+var _Json_map2 = F3(function(f, d1, d2)
1331+ return _Json_mapMany(f, [d1, d2]);
1334+var _Json_map3 = F4(function(f, d1, d2, d3)
1336+ return _Json_mapMany(f, [d1, d2, d3]);
1339+var _Json_map4 = F5(function(f, d1, d2, d3, d4)
1341+ return _Json_mapMany(f, [d1, d2, d3, d4]);
1344+var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)
1346+ return _Json_mapMany(f, [d1, d2, d3, d4, d5]);
1349+var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)
1351+ return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);
1354+var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)
1356+ return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);
1359+var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)
1361+ return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);
1367+var _Json_runOnString = F2(function(decoder, string)
1371+ var value = JSON.parse(string);
1372+ return _Json_runHelp(decoder, value);
1376+ return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));
1380+var _Json_run = F2(function(decoder, value)
1382+ return _Json_runHelp(decoder, _Json_unwrap(value));
1385+function _Json_runHelp(decoder, value)
1390+ return decoder.b(value);
1393+ return (value === null)
1394+ ? $elm$core$Result$Ok(decoder.c)
1395+ : _Json_expecting('null', value);
1398+ if (!_Json_isArray(value))
1400+ return _Json_expecting('a LIST', value);
1402+ return _Json_runArrayDecoder(decoder.b, value, _List_fromArray);
1405+ if (!_Json_isArray(value))
1407+ return _Json_expecting('an ARRAY', value);
1409+ return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);
1412+ var field = decoder.d;
1413+ if (typeof value !== 'object' || value === null || !(field in value))
1415+ return _Json_expecting('an OBJECT with a field named `' + field + '`', value);
1417+ var result = _Json_runHelp(decoder.b, value[field]);
1418+ return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));
1421+ var index = decoder.e;
1422+ if (!_Json_isArray(value))
1424+ return _Json_expecting('an ARRAY', value);
1426+ if (index >= value.length)
1428+ return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);
1430+ var result = _Json_runHelp(decoder.b, value[index]);
1431+ return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));
1434+ if (typeof value !== 'object' || value === null || _Json_isArray(value))
1436+ return _Json_expecting('an OBJECT', value);
1439+ var keyValuePairs = _List_Nil;
1440+ // TODO test perf of Object.keys and switch when support is good enough
1441+ for (var key in value)
1443+ if (Object.prototype.hasOwnProperty.call(value, key))
1445+ var result = _Json_runHelp(decoder.b, value[key]);
1446+ if (!$elm$core$Result$isOk(result))
1448+ return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));
1450+ keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);
1453+ return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));
1456+ var answer = decoder.f;
1457+ var decoders = decoder.g;
1458+ for (var i = 0; i < decoders.length; i++)
1460+ var result = _Json_runHelp(decoders[i], value);
1461+ if (!$elm$core$Result$isOk(result))
1465+ answer = answer(result.a);
1467+ return $elm$core$Result$Ok(answer);
1470+ var result = _Json_runHelp(decoder.b, value);
1471+ return (!$elm$core$Result$isOk(result))
1473+ : _Json_runHelp(decoder.h(result.a), value);
1476+ var errors = _List_Nil;
1477+ for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS
1479+ var result = _Json_runHelp(temp.a, value);
1480+ if ($elm$core$Result$isOk(result))
1484+ errors = _List_Cons(result.a, errors);
1486+ return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));
1489+ return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));
1492+ return $elm$core$Result$Ok(decoder.a);
1496+function _Json_runArrayDecoder(decoder, value, toElmValue)
1498+ var len = value.length;
1499+ var array = new Array(len);
1500+ for (var i = 0; i < len; i++)
1502+ var result = _Json_runHelp(decoder, value[i]);
1503+ if (!$elm$core$Result$isOk(result))
1505+ return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));
1507+ array[i] = result.a;
1509+ return $elm$core$Result$Ok(toElmValue(array));
1512+function _Json_isArray(value)
1514+ return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);
1517+function _Json_toElmArray(array)
1519+ return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });
1522+function _Json_expecting(type, value)
1524+ return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));
1530+function _Json_equality(x, y)
1546+ return x.a === y.a;
1549+ return x.b === y.b;
1552+ return x.c === y.c;
1557+ return _Json_equality(x.b, y.b);
1560+ return x.d === y.d && _Json_equality(x.b, y.b);
1563+ return x.e === y.e && _Json_equality(x.b, y.b);
1566+ return x.f === y.f && _Json_listEquality(x.g, y.g);
1569+ return x.h === y.h && _Json_equality(x.b, y.b);
1572+ return _Json_listEquality(x.g, y.g);
1576+function _Json_listEquality(aDecoders, bDecoders)
1578+ var len = aDecoders.length;
1579+ if (len !== bDecoders.length)
1583+ for (var i = 0; i < len; i++)
1585+ if (!_Json_equality(aDecoders[i], bDecoders[i]))
1596+var _Json_encode = F2(function(indentLevel, value)
1598+ return JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';
1601+function _Json_wrap(value) { return { $: 0, a: value }; }
1602+function _Json_unwrap(value) { return value.a; }
1605+function _Json_emptyArray() { return []; }
1606+function _Json_emptyObject() { return {}; }
1608+var _Json_addField = F3(function(key, value, object)
1610+ var unwrapped = _Json_unwrap(value);
1611+ if (!(key === 'toJSON' && typeof unwrapped === 'function'))
1613+ object[key] = unwrapped;
1618+function _Json_addEntry(func)
1620+ return F2(function(entry, array)
1622+ array.push(_Json_unwrap(func(entry)));
1627+var _Json_encodeNull = _Json_wrap(null);
1633+function _Scheduler_succeed(value)
1641+function _Scheduler_fail(error)
1649+function _Scheduler_binding(callback)
1658+var _Scheduler_andThen = F2(function(callback, task)
1667+var _Scheduler_onError = F2(function(callback, task)
1676+function _Scheduler_receive(callback)
1687+var _Scheduler_guid = 0;
1689+function _Scheduler_rawSpawn(task)
1693+ e: _Scheduler_guid++,
1699+ _Scheduler_enqueue(proc);
1704+function _Scheduler_spawn(task)
1706+ return _Scheduler_binding(function(callback) {
1707+ callback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));
1711+function _Scheduler_rawSend(proc, msg)
1714+ _Scheduler_enqueue(proc);
1717+var _Scheduler_send = F2(function(proc, msg)
1719+ return _Scheduler_binding(function(callback) {
1720+ _Scheduler_rawSend(proc, msg);
1721+ callback(_Scheduler_succeed(_Utils_Tuple0));
1725+function _Scheduler_kill(proc)
1727+ return _Scheduler_binding(function(callback) {
1729+ if (task.$ === 2 && task.c)
1736+ callback(_Scheduler_succeed(_Utils_Tuple0));
1743+type alias Process =
1747+ , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }
1754+var _Scheduler_working = false;
1755+var _Scheduler_queue = [];
1758+function _Scheduler_enqueue(proc)
1760+ _Scheduler_queue.push(proc);
1761+ if (_Scheduler_working)
1765+ _Scheduler_working = true;
1766+ while (proc = _Scheduler_queue.shift())
1768+ _Scheduler_step(proc);
1770+ _Scheduler_working = false;
1774+function _Scheduler_step(proc)
1778+ var rootTag = proc.f.$;
1779+ if (rootTag === 0 || rootTag === 1)
1781+ while (proc.g && proc.g.$ !== rootTag)
1789+ proc.f = proc.g.b(proc.f.a);
1792+ else if (rootTag === 2)
1794+ proc.f.c = proc.f.b(function(newRoot) {
1796+ _Scheduler_enqueue(proc);
1800+ else if (rootTag === 5)
1802+ if (proc.h.length === 0)
1806+ proc.f = proc.f.b(proc.h.shift());
1808+ else // if (rootTag === 3 || rootTag === 4)
1811+ $: rootTag === 3 ? 0 : 1,
1822+function _Process_sleep(time)
1824+ return _Scheduler_binding(function(callback) {
1825+ var id = setTimeout(function() {
1826+ callback(_Scheduler_succeed(_Utils_Tuple0));
1829+ return function() { clearTimeout(id); };
1839+var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)
1841+ return _Platform_initialize(
1846+ impl.subscriptions,
1847+ function() { return function() {} }
1853+// INITIALIZE A PROGRAM
1856+function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
1858+ var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));
1859+ $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);
1861+ var initPair = init(result.a);
1862+ var model = initPair.a;
1863+ var stepper = stepperBuilder(sendToApp, model);
1864+ var ports = _Platform_setupEffects(managers, sendToApp);
1866+ function sendToApp(msg, viewMetadata)
1868+ var pair = A2(update, msg, model);
1869+ stepper(model = pair.a, viewMetadata);
1870+ _Platform_enqueueEffects(managers, pair.b, subscriptions(model));
1873+ _Platform_enqueueEffects(managers, initPair.b, subscriptions(model));
1875+ return ports ? { ports: ports } : {};
1882+// This is used by code in elm/browser and elm/http
1883+// to register any HTTP requests that are triggered by init.
1887+var _Platform_preload;
1890+function _Platform_registerPreload(url)
1892+ _Platform_preload.add(url);
1900+var _Platform_effectManagers = {};
1903+function _Platform_setupEffects(managers, sendToApp)
1907+ // setup all necessary effect managers
1908+ for (var key in _Platform_effectManagers)
1910+ var manager = _Platform_effectManagers[key];
1914+ ports = ports || {};
1915+ ports[key] = manager.a(key, sendToApp);
1918+ managers[key] = _Platform_instantiateManager(manager, sendToApp);
1925+function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)
1937+function _Platform_instantiateManager(info, sendToApp)
1944+ var onEffects = info.c;
1945+ var onSelfMsg = info.d;
1946+ var cmdMap = info.e;
1947+ var subMap = info.f;
1949+ function loop(state)
1951+ return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)
1957+ return A3(onSelfMsg, router, value, state);
1960+ return cmdMap && subMap
1961+ ? A4(onEffects, router, value.i, value.j, state)
1962+ : A3(onEffects, router, cmdMap ? value.i : value.j, state);
1966+ return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));
1974+var _Platform_sendToApp = F2(function(router, msg)
1976+ return _Scheduler_binding(function(callback)
1979+ callback(_Scheduler_succeed(_Utils_Tuple0));
1984+var _Platform_sendToSelf = F2(function(router, msg)
1986+ return A2(_Scheduler_send, router.h, {
1997+function _Platform_leaf(home)
1999+ return function(value)
2010+function _Platform_batch(list)
2019+var _Platform_map = F2(function(tagger, bag)
2030+// PIPE BAGS INTO EFFECT MANAGERS
2032+// Effects must be queued!
2034+// Say your init contains a synchronous command, like Time.now or Time.here
2036+// - This will produce a batch of effects (FX_1)
2037+// - The synchronous task triggers the subsequent `update` call
2038+// - This will produce a batch of effects (FX_2)
2040+// If we just start dispatching FX_2, subscriptions from FX_2 can be processed
2041+// before subscriptions from FX_1. No good! Earlier versions of this code had
2042+// this problem, leading to these reports:
2044+// https://github.com/elm/core/issues/980
2045+// https://github.com/elm/core/pull/981
2046+// https://github.com/elm/compiler/issues/1776
2048+// The queue is necessary to avoid ordering issues for synchronous commands.
2051+// Why use true/false here? Why not just check the length of the queue?
2052+// The goal is to detect "are we currently dispatching effects?" If we
2053+// are, we need to bail and let the ongoing while loop handle things.
2055+// Now say the queue has 1 element. When we dequeue the final element,
2056+// the queue will be empty, but we are still actively dispatching effects.
2057+// So you could get queue jumping in a really tricky category of cases.
2059+var _Platform_effectsQueue = [];
2060+var _Platform_effectsActive = false;
2063+function _Platform_enqueueEffects(managers, cmdBag, subBag)
2065+ _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });
2067+ if (_Platform_effectsActive) return;
2069+ _Platform_effectsActive = true;
2070+ for (var fx; fx = _Platform_effectsQueue.shift(); )
2072+ _Platform_dispatchEffects(fx.p, fx.q, fx.r);
2074+ _Platform_effectsActive = false;
2078+function _Platform_dispatchEffects(managers, cmdBag, subBag)
2080+ var effectsDict = {};
2081+ _Platform_gatherEffects(true, cmdBag, effectsDict, null);
2082+ _Platform_gatherEffects(false, subBag, effectsDict, null);
2084+ for (var home in managers)
2086+ _Scheduler_rawSend(managers[home], {
2088+ a: effectsDict[home] || { i: _List_Nil, j: _List_Nil }
2094+function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)
2100+ var effect = _Platform_toEffect(isCmd, home, taggers, bag.l);
2101+ effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);
2105+ for (var list = bag.m; list.b; list = list.b) // WHILE_CONS
2107+ _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);
2112+ _Platform_gatherEffects(isCmd, bag.o, effectsDict, {
2121+function _Platform_toEffect(isCmd, home, taggers, value)
2123+ function applyTaggers(x)
2125+ for (var temp = taggers; temp; temp = temp.t)
2133+ ? _Platform_effectManagers[home].e
2134+ : _Platform_effectManagers[home].f;
2136+ return A2(map, applyTaggers, value)
2140+function _Platform_insert(isCmd, newEffect, effects)
2142+ effects = effects || { i: _List_Nil, j: _List_Nil };
2145+ ? (effects.i = _List_Cons(newEffect, effects.i))
2146+ : (effects.j = _List_Cons(newEffect, effects.j));
2156+function _Platform_checkPortName(name)
2158+ if (_Platform_effectManagers[name])
2160+ _Debug_crash(3, name)
2169+function _Platform_outgoingPort(name, converter)
2171+ _Platform_checkPortName(name);
2172+ _Platform_effectManagers[name] = {
2173+ e: _Platform_outgoingPortMap,
2175+ a: _Platform_setupOutgoingPort
2177+ return _Platform_leaf(name);
2181+var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });
2184+function _Platform_setupOutgoingPort(name)
2187+ var converter = _Platform_effectManagers[name].u;
2191+ var init = _Process_sleep(0);
2193+ _Platform_effectManagers[name].b = init;
2194+ _Platform_effectManagers[name].c = F3(function(router, cmdList, state)
2196+ for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS
2198+ // grab a separate reference to subs in case unsubscribe is called
2199+ var currentSubs = subs;
2200+ var value = _Json_unwrap(converter(cmdList.a));
2201+ for (var i = 0; i < currentSubs.length; i++)
2203+ currentSubs[i](value);
2211+ function subscribe(callback)
2213+ subs.push(callback);
2216+ function unsubscribe(callback)
2218+ // copy subs into a new array in case unsubscribe is called within a
2219+ // subscribed callback
2220+ subs = subs.slice();
2221+ var index = subs.indexOf(callback);
2224+ subs.splice(index, 1);
2229+ subscribe: subscribe,
2230+ unsubscribe: unsubscribe
2239+function _Platform_incomingPort(name, converter)
2241+ _Platform_checkPortName(name);
2242+ _Platform_effectManagers[name] = {
2243+ f: _Platform_incomingPortMap,
2245+ a: _Platform_setupIncomingPort
2247+ return _Platform_leaf(name);
2251+var _Platform_incomingPortMap = F2(function(tagger, finalTagger)
2253+ return function(value)
2255+ return tagger(finalTagger(value));
2260+function _Platform_setupIncomingPort(name, sendToApp)
2262+ var subs = _List_Nil;
2263+ var converter = _Platform_effectManagers[name].u;
2267+ var init = _Scheduler_succeed(null);
2269+ _Platform_effectManagers[name].b = init;
2270+ _Platform_effectManagers[name].c = F3(function(router, subList, state)
2278+ function send(incomingValue)
2280+ var result = A2(_Json_run, converter, _Json_wrap(incomingValue));
2282+ $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);
2284+ var value = result.a;
2285+ for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS
2287+ sendToApp(temp.a(value));
2291+ return { send: send };
2296+// EXPORT ELM MODULES
2298+// Have DEBUG and PROD versions so that we can (1) give nicer errors in
2299+// debug mode and (2) not pay for the bits needed for that in prod mode.
2305+function _Platform_mergeExportsProd(obj, exports)
2307+ for (var name in exports)
2312+ : _Platform_mergeExportsProd(obj[name], exports[name])
2313+ : (obj[name] = exports[name]);
2318+function _Platform_export(exports)
2321+ ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)
2322+ : scope['Elm'] = exports;
2326+function _Platform_mergeExportsDebug(moduleName, obj, exports)
2328+ for (var name in exports)
2332+ ? _Debug_crash(6, moduleName)
2333+ : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])
2334+ : (obj[name] = exports[name]);
2340+var _Lynx_g = (typeof globalThis !== 'undefined' ? globalThis : scope);
2341+function _Lynx_papi(name) { return _Lynx_g['_' + '_' + name] || function() {}; }
2342+var _Lynx_createViewFn = _Lynx_papi('CreateView');
2343+var _Lynx_createTextFn = _Lynx_papi('CreateText');
2344+var _Lynx_createImageFn = _Lynx_papi('CreateImage');
2345+function _Lynx_createElement(tag) {
2346+ var pId = (_Lynx_g['native'] && _Lynx_g['native']['currentPageId']) || 0;
2347+ return (tag === 'text' ? _Lynx_createTextFn
2348+ : tag === 'image' ? _Lynx_createImageFn
2349+ : _Lynx_createViewFn)(pId);
2351+var _Lynx_createRawText = _Lynx_papi('CreateRawText');
2352+var _Lynx_appendChild = _Lynx_papi('AppendElement');
2353+var _Lynx_removeElement = _Lynx_papi('RemoveElement');
2354+var _Lynx_replaceElement = _Lynx_papi('ReplaceElement');
2355+var _Lynx_insertBefore = _Lynx_papi('InsertElementBefore');
2356+var _Lynx_setAttribute = _Lynx_papi('SetAttribute');
2357+var _Lynx_getChildren = _Lynx_papi('GetChildren');
2358+var _Lynx_getParent = _Lynx_papi('GetParent');
2359+var _Lynx_addEvent = _Lynx_papi('AddEvent');
2360+var _Lynx_setInlineStyles = _Lynx_papi('SetInlineStyles');
2361+var _VirtualDom_elementMeta = new WeakMap();
2362+function _VirtualDom_getMeta(el) {
2363+ var meta = _VirtualDom_elementMeta.get(el);
2364+ if (!meta) { meta = {}; _VirtualDom_elementMeta.set(el, meta); }
2375+function _VirtualDom_appendChild(parent, child)
2377+ _Lynx_appendChild(parent, child);
2380+var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)
2382+ // NOTE: this function needs _Platform_export available to work
2383+ var rootPage = args['node'] || _Lynx_g['page'];
2384+ var tree = _VirtualDom_render(virtualNode, function() {});
2385+ _Lynx_appendChild(rootPage, tree);
2394+function _VirtualDom_text(string)
2407+var _VirtualDom_nodeNS = F2(function(namespace, tag)
2409+ return F2(function(factList, kidList)
2411+ for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2413+ var kid = kidList.a;
2414+ descendantsCount += (kid.b || 0);
2417+ descendantsCount += kids.length;
2422+ d: _VirtualDom_organizeFacts(factList),
2425+ b: descendantsCount
2431+var _VirtualDom_node = _VirtualDom_nodeNS(undefined);
2438+var _VirtualDom_keyedNodeNS = F2(function(namespace, tag)
2440+ return F2(function(factList, kidList)
2442+ for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2444+ var kid = kidList.a;
2445+ descendantsCount += (kid.b.b || 0);
2448+ descendantsCount += kids.length;
2453+ d: _VirtualDom_organizeFacts(factList),
2456+ b: descendantsCount
2462+var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);
2469+function _VirtualDom_custom(factList, model, render, diff)
2473+ d: _VirtualDom_organizeFacts(factList),
2485+var _VirtualDom_map = F2(function(tagger, node)
2491+ b: 1 + (node.b || 0)
2500+function _VirtualDom_thunk(refs, thunk)
2510+var _VirtualDom_lazy = F2(function(func, a)
2512+ return _VirtualDom_thunk([func, a], function() {
2517+var _VirtualDom_lazy2 = F3(function(func, a, b)
2519+ return _VirtualDom_thunk([func, a, b], function() {
2520+ return A2(func, a, b);
2524+var _VirtualDom_lazy3 = F4(function(func, a, b, c)
2526+ return _VirtualDom_thunk([func, a, b, c], function() {
2527+ return A3(func, a, b, c);
2531+var _VirtualDom_lazy4 = F5(function(func, a, b, c, d)
2533+ return _VirtualDom_thunk([func, a, b, c, d], function() {
2534+ return A4(func, a, b, c, d);
2538+var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)
2540+ return _VirtualDom_thunk([func, a, b, c, d, e], function() {
2541+ return A5(func, a, b, c, d, e);
2545+var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)
2547+ return _VirtualDom_thunk([func, a, b, c, d, e, f], function() {
2548+ return A6(func, a, b, c, d, e, f);
2552+var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)
2554+ return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {
2555+ return A7(func, a, b, c, d, e, f, g);
2559+var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)
2561+ return _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {
2562+ return A8(func, a, b, c, d, e, f, g, h);
2571+var _VirtualDom_on = F2(function(key, handler)
2579+var _VirtualDom_style = F2(function(key, value)
2587+var _VirtualDom_property = F2(function(key, value)
2595+var _VirtualDom_attribute = F2(function(key, value)
2603+var _VirtualDom_attributeNS = F3(function(namespace, key, value)
2608+ o: { f: namespace, o: value }
2614+// XSS ATTACK VECTOR CHECKS
2616+// For some reason, tabs can appear in href protocols and it still works.
2617+// So '\tjava\tSCRIPT:alert("!!!")' and 'javascript:alert("!!!")' are the same
2618+// in practice. That is why _VirtualDom_RE_js and _VirtualDom_RE_js_html look
2621+// Pulling the regular expressions out to the top level gives a slight speed
2622+// boost in small benchmarks (4-10%) but hoisting values to reduce allocation
2623+// can be unpredictable in large programs where JIT may have a harder time with
2624+// functions are not fully self-contained. The benefit is more that the js and
2625+// js_html ones are so weird that I prefer to see them near each other.
2631+function _VirtualDom_noScript(tag)
2636+function _VirtualDom_noOnOrFormAction(key)
2641+function _VirtualDom_noInnerHtmlOrFormAction(key)
2646+function _VirtualDom_noJavaScriptUri(value)
2651+function _VirtualDom_noJavaScriptOrHtmlUri(value)
2656+function _VirtualDom_noJavaScriptOrHtmlJson(value)
2666+var _VirtualDom_mapAttribute = F2(function(func, attr)
2668+ return (attr.$ === 'a0')
2669+ ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))
2673+function _VirtualDom_mapHandler(func, handler)
2675+ var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2678+ // 1 = MayStopPropagation
2679+ // 2 = MayPreventDefault
2686+ ? A2($elm$json$Json$Decode$map, func, handler.a)
2688+ A3($elm$json$Json$Decode$map2,
2690+ ? _VirtualDom_mapEventTuple
2691+ : _VirtualDom_mapEventRecord,
2692+ $elm$json$Json$Decode$succeed(func),
2698+var _VirtualDom_mapEventTuple = F2(function(func, tuple)
2700+ return _Utils_Tuple2(func(tuple.a), tuple.b);
2703+var _VirtualDom_mapEventRecord = F2(function(func, record)
2706+ message: func(record.message),
2707+ stopPropagation: record.stopPropagation,
2708+ preventDefault: record.preventDefault
2717+function _VirtualDom_organizeFacts(factList)
2719+ for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS
2721+ var entry = factList.a;
2725+ var value = entry.o;
2729+ (key === 'className')
2730+ ? _VirtualDom_addClass(facts, key, _Json_unwrap(value))
2731+ : facts[key] = _Json_unwrap(value);
2736+ var subFacts = facts[tag] || (facts[tag] = {});
2737+ (tag === 'a3' && key === 'class')
2738+ ? _VirtualDom_addClass(subFacts, key, value)
2739+ : subFacts[key] = value;
2745+function _VirtualDom_addClass(object, key, newClass)
2747+ var classes = object[key];
2748+ object[key] = classes ? classes + ' ' + newClass : newClass;
2756+function _VirtualDom_render(vNode, eventNode)
2762+ return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);
2767+ return _Lynx_createRawText(vNode.a);
2772+ var subNode = vNode.k;
2773+ var tagger = vNode.j;
2775+ while (subNode.$ === 4)
2777+ typeof tagger !== 'object'
2778+ ? tagger = [tagger, subNode.j]
2779+ : tagger.push(subNode.j);
2781+ subNode = subNode.k;
2784+ var subEventRoot = { j: tagger, p: eventNode };
2785+ var domNode = _VirtualDom_render(subNode, subEventRoot);
2786+ _VirtualDom_getMeta(domNode).elm_event_node_ref = subEventRoot;
2792+ var domNode = vNode.h(vNode.g);
2793+ _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2797+ // at this point `tag` must be 1 or 2
2799+ var domNode = _Lynx_createElement(vNode.c);
2801+ _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2803+ for (var kids = vNode.e, i = 0; i < kids.length; i++)
2805+ var kid = tag === 1 ? kids[i] : kids[i].b;
2808+ _Lynx_appendChild(domNode, _Lynx_createRawText(kid.a));
2812+ _VirtualDom_appendChild(domNode, _VirtualDom_render(kid, eventNode));
2824+function _VirtualDom_applyFacts(domNode, eventNode, facts)
2826+ for (var key in facts)
2828+ var value = facts[key];
2831+ ? _VirtualDom_applyStyles(domNode, value)
2834+ ? _VirtualDom_applyEvents(domNode, eventNode, value)
2837+ ? _VirtualDom_applyAttrs(domNode, value)
2840+ ? _VirtualDom_applyAttrsNS(domNode, value)
2842+ (key !== 'value' && key !== 'checked' || domNode[key] !== value) && _Lynx_setAttribute(domNode, key === 'className' ? 'class' : key, String(value));
2851+function _VirtualDom_applyStyles(domNode, styles)
2853+ _Lynx_setInlineStyles(domNode, styles);
2861+function _VirtualDom_applyAttrs(domNode, attrs)
2863+ for (var key in attrs)
2865+ var value = attrs[key];
2866+ if (typeof value !== 'undefined')
2868+ _Lynx_setAttribute(domNode, key, value);
2875+// APPLY NAMESPACED ATTRS
2878+function _VirtualDom_applyAttrsNS(domNode, nsAttrs)
2880+ for (var key in nsAttrs)
2882+ var pair = nsAttrs[key];
2883+ var value = pair.o;
2885+ if (typeof value !== 'undefined')
2887+ _Lynx_setAttribute(domNode, key, value);
2897+function _VirtualDom_applyEvents(domNode, eventNode, events)
2899+ var meta = _VirtualDom_getMeta(domNode);
2900+ var allCallbacks = meta.elmFs || (meta.elmFs = {});
2902+ for (var key in events)
2904+ var newHandler = events[key];
2905+ var oldCallback = allCallbacks[key];
2909+ allCallbacks[key] = undefined;
2915+ var oldHandler = oldCallback.q;
2916+ if (oldHandler.$ === newHandler.$)
2918+ oldCallback.q = newHandler;
2923+ oldCallback = _VirtualDom_makeCallback(eventNode, newHandler);
2924+ allCallbacks[key] = oldCallback;
2926+ var lynxEventName = _VirtualDom_mapEventName(key);
2927+ var handlerType = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(newHandler);
2928+ var prefix = (handlerType === 1) ? 'catch' : 'bind';
2929+ _Lynx_addEvent(domNode, 'catchEvent', lynxEventName, { type: 'worklet', value: oldCallback });
2933+function _VirtualDom_mapEventName(name)
2937+ case 'click': return 'tap';
2938+ case 'dblclick': return 'tap';
2939+ case 'mousedown': return 'touchstart';
2940+ case 'mousemove': return 'touchmove';
2941+ case 'mouseup': return 'touchend';
2942+ default: return name;
2955+function _VirtualDom_makeCallback(eventNode, initialHandler)
2957+ function callback(event)
2959+ var handler = callback.q;
2960+ var result = _Json_runHelp(handler.a, event);
2962+ if (!$elm$core$Result$isOk(result))
2967+ var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2970+ // 1 = MayStopPropagation
2971+ // 2 = MayPreventDefault
2974+ var value = result.a;
2975+ var message = !tag ? value : tag < 3 ? value.a : value.message;
2976+ var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;
2977+ var currentEventNode = eventNode;
2980+ while (tagger = currentEventNode.j)
2982+ if (typeof tagger == 'function')
2984+ message = tagger(message);
2988+ for (var i = tagger.length; i--; )
2990+ message = tagger[i](message);
2993+ currentEventNode = currentEventNode.p;
2995+ currentEventNode(message, stopPropagation); // stopPropagation implies isSync
2998+ callback.q = initialHandler;
3003+function _VirtualDom_equalEvents(x, y)
3005+ return x.$ == y.$ && _Json_equality(x.a, y.a);
3013+// TODO: Should we do patches like in iOS?
3017+// | Batch (List Patch)
3020+// How could it not be better?
3022+function _VirtualDom_diff(x, y)
3025+ _VirtualDom_diffHelp(x, y, patches, 0);
3030+function _VirtualDom_pushPatch(patches, type, index, data)
3039+ patches.push(patch);
3044+function _VirtualDom_diffHelp(x, y, patches, index)
3054+ // Bail if you run into different types of nodes. Implies that the
3055+ // structure has changed significantly and it's not worth a diff.
3056+ if (xType !== yType)
3058+ if (xType === 1 && yType === 2)
3060+ y = _VirtualDom_dekey(y);
3065+ _VirtualDom_pushPatch(patches, 0, index, y);
3070+ // Now we know that both nodes are the same $.
3076+ var i = xRefs.length;
3077+ var same = i === yRefs.length;
3078+ while (same && i--)
3080+ same = xRefs[i] === yRefs[i];
3088+ var subPatches = [];
3089+ _VirtualDom_diffHelp(x.k, y.k, subPatches, 0);
3090+ subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);
3094+ // gather nested taggers
3095+ var xTaggers = x.j;
3096+ var yTaggers = y.j;
3097+ var nesting = false;
3099+ var xSubNode = x.k;
3100+ while (xSubNode.$ === 4)
3104+ typeof xTaggers !== 'object'
3105+ ? xTaggers = [xTaggers, xSubNode.j]
3106+ : xTaggers.push(xSubNode.j);
3108+ xSubNode = xSubNode.k;
3111+ var ySubNode = y.k;
3112+ while (ySubNode.$ === 4)
3116+ typeof yTaggers !== 'object'
3117+ ? yTaggers = [yTaggers, ySubNode.j]
3118+ : yTaggers.push(ySubNode.j);
3120+ ySubNode = ySubNode.k;
3123+ // Just bail if different numbers of taggers. This implies the
3124+ // structure of the virtual DOM has changed.
3125+ if (nesting && xTaggers.length !== yTaggers.length)
3127+ _VirtualDom_pushPatch(patches, 0, index, y);
3131+ // check if taggers are "the same"
3132+ if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)
3134+ _VirtualDom_pushPatch(patches, 2, index, yTaggers);
3137+ // diff everything below the taggers
3138+ _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);
3144+ _VirtualDom_pushPatch(patches, 3, index, y.a);
3149+ _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);
3153+ _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);
3159+ _VirtualDom_pushPatch(patches, 0, index, y);
3163+ var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3164+ factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3166+ var patch = y.i(x.g, y.g);
3167+ patch && _VirtualDom_pushPatch(patches, 5, index, patch);
3173+// assumes the incoming arrays are the same length
3174+function _VirtualDom_pairwiseRefEqual(as, bs)
3176+ for (var i = 0; i < as.length; i++)
3178+ if (as[i] !== bs[i])
3187+function _VirtualDom_diffNodes(x, y, patches, index, diffKids)
3189+ // Bail if obvious indicators have changed. Implies more serious
3190+ // structural changes such that it's not worth it to diff.
3191+ if (x.c !== y.c || x.f !== y.f)
3193+ _VirtualDom_pushPatch(patches, 0, index, y);
3197+ var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3198+ factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3200+ diffKids(x, y, patches, index);
3208+// TODO Instead of creating a new diff object, it's possible to just test if
3209+// there *is* a diff. During the actual patch, do the diff again and make the
3210+// modifications directly. This way, there's no new allocations. Worth it?
3211+function _VirtualDom_diffFacts(x, y, category)
3215+ // look for changes and removals
3216+ for (var xKey in x)
3218+ if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')
3220+ var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);
3224+ diff[xKey] = subDiff;
3229+ // remove if not in the new facts
3235+ ? (typeof x[xKey] === 'string' ? '' : null)
3237+ (category === 'a1')
3240+ (category === 'a0' || category === 'a3')
3243+ { f: x[xKey].f, o: undefined };
3248+ var xValue = x[xKey];
3249+ var yValue = y[xKey];
3251+ // reference equal, so don't worry about it
3252+ if (xValue === yValue && xKey !== 'value' && xKey !== 'checked'
3253+ || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))
3259+ diff[xKey] = yValue;
3263+ for (var yKey in y)
3268+ diff[yKey] = y[yKey];
3280+function _VirtualDom_diffKids(xParent, yParent, patches, index)
3282+ var xKids = xParent.e;
3283+ var yKids = yParent.e;
3285+ var xLen = xKids.length;
3286+ var yLen = yKids.length;
3288+ // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS
3292+ _VirtualDom_pushPatch(patches, 6, index, {
3297+ else if (xLen < yLen)
3299+ _VirtualDom_pushPatch(patches, 7, index, {
3305+ // PAIRWISE DIFF EVERYTHING ELSE
3307+ for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)
3309+ var xKid = xKids[i];
3310+ _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);
3311+ index += xKid.b || 0;
3320+function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)
3322+ var localPatches = [];
3324+ var changes = {}; // Dict String Entry
3325+ var inserts = []; // Array { index : Int, entry : Entry }
3326+ // type Entry = { tag : String, vnode : VNode, index : Int, data : _ }
3328+ var xKids = xParent.e;
3329+ var yKids = yParent.e;
3330+ var xLen = xKids.length;
3331+ var yLen = yKids.length;
3335+ var index = rootIndex;
3337+ while (xIndex < xLen && yIndex < yLen)
3339+ var x = xKids[xIndex];
3340+ var y = yKids[yIndex];
3347+ var newMatch = undefined;
3348+ var oldMatch = undefined;
3350+ // check if keys match
3355+ _VirtualDom_diffHelp(xNode, yNode, localPatches, index);
3356+ index += xNode.b || 0;
3363+ // look ahead 1 to detect insertions and removals.
3365+ var xNext = xKids[xIndex + 1];
3366+ var yNext = yKids[yIndex + 1];
3370+ var xNextKey = xNext.a;
3371+ var xNextNode = xNext.b;
3372+ oldMatch = yKey === xNextKey;
3377+ var yNextKey = yNext.a;
3378+ var yNextNode = yNext.b;
3379+ newMatch = xKey === yNextKey;
3384+ if (newMatch && oldMatch)
3387+ _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3388+ _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);
3389+ index += xNode.b || 0;
3392+ _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);
3393+ index += xNextNode.b || 0;
3404+ _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3405+ _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3406+ index += xNode.b || 0;
3417+ _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3418+ index += xNode.b || 0;
3421+ _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);
3422+ index += xNextNode.b || 0;
3429+ // remove x, insert y
3430+ if (xNext && xNextKey === yNextKey)
3433+ _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3434+ _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3435+ index += xNode.b || 0;
3438+ _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);
3439+ index += xNextNode.b || 0;
3449+ // eat up any remaining nodes with removeNode and insertNode
3451+ while (xIndex < xLen)
3454+ var x = xKids[xIndex];
3456+ _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);
3457+ index += xNode.b || 0;
3461+ while (yIndex < yLen)
3463+ var endInserts = endInserts || [];
3464+ var y = yKids[yIndex];
3465+ _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);
3469+ if (localPatches.length > 0 || inserts.length > 0 || endInserts)
3471+ _VirtualDom_pushPatch(patches, 8, rootIndex, {
3481+// CHANGES FROM KEYED DIFF
3484+var _VirtualDom_POSTFIX = '_elmW6BL';
3487+function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)
3489+ var entry = changes[key];
3491+ // never seen this key before
3501+ inserts.push({ r: yIndex, A: entry });
3502+ changes[key] = entry;
3507+ // this key was removed earlier, a match!
3510+ inserts.push({ r: yIndex, A: entry });
3513+ var subPatches = [];
3514+ _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);
3524+ // this key has already been inserted or moved, a duplicate!
3525+ _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);
3529+function _VirtualDom_removeNode(changes, localPatches, key, vnode, index)
3531+ var entry = changes[key];
3533+ // never seen this key before
3536+ var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);
3548+ // this key was inserted earlier, a match!
3552+ var subPatches = [];
3553+ _VirtualDom_diffHelp(vnode, entry.z, subPatches, index);
3555+ _VirtualDom_pushPatch(localPatches, 9, index, {
3563+ // this key has already been removed or moved, a duplicate!
3564+ _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);
3571+// Each DOM node has an "index" assigned in order of traversal. It is important
3572+// to minimize our crawl over the actual DOM, so these indexes (along with the
3573+// descendantsCount of virtual nodes) let us skip touching entire subtrees of
3574+// the DOM if we know there are no patches there.
3577+function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)
3579+ _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);
3583+// assumes `patches` is non-empty and indexes increase monotonically.
3584+function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)
3586+ var patch = patches[i];
3587+ var index = patch.r;
3589+ while (index === low)
3591+ var patchType = patch.$;
3593+ if (patchType === 1)
3595+ _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);
3597+ else if (patchType === 8)
3600+ patch.u = eventNode;
3602+ var subPatches = patch.s.w;
3603+ if (subPatches.length > 0)
3605+ _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3608+ else if (patchType === 9)
3611+ patch.u = eventNode;
3613+ var data = patch.s;
3616+ data.A.s = domNode;
3617+ var subPatches = data.w;
3618+ if (subPatches.length > 0)
3620+ _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3627+ patch.u = eventNode;
3632+ if (!(patch = patches[i]) || (index = patch.r) > high)
3642+ var subNode = vNode.k;
3644+ while (subNode.$ === 4)
3646+ subNode = subNode.k;
3649+ return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, _VirtualDom_getMeta(domNode).elm_event_node_ref);
3652+ // tag must be 1 or 2 at this point
3654+ var vKids = vNode.e;
3655+ var childNodes = _Lynx_getChildren(domNode);
3656+ for (var j = 0; j < vKids.length; j++)
3659+ var vKid = tag === 1 ? vKids[j] : vKids[j].b;
3660+ var nextLow = low + (vKid.b || 0);
3661+ if (low <= index && index <= nextLow)
3663+ i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);
3664+ if (!(patch = patches[i]) || (index = patch.r) > high)
3679+function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)
3681+ if (patches.length === 0)
3683+ return rootDomNode;
3686+ _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);
3687+ return _VirtualDom_applyPatchesHelp(rootDomNode, patches);
3690+function _VirtualDom_applyPatchesHelp(rootDomNode, patches)
3692+ for (var i = 0; i < patches.length; i++)
3694+ var patch = patches[i];
3695+ var localDomNode = patch.t
3696+ var newNode = _VirtualDom_applyPatch(localDomNode, patch);
3697+ if (localDomNode === rootDomNode)
3699+ rootDomNode = newNode;
3702+ return rootDomNode;
3705+function _VirtualDom_applyPatch(domNode, patch)
3710+ return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);
3713+ _VirtualDom_applyFacts(domNode, patch.u, patch.s);
3717+ _Lynx_setAttribute(domNode, 'text', patch.s);
3721+ return _VirtualDom_applyPatchesHelp(domNode, patch.s);
3724+ if (_VirtualDom_getMeta(domNode).elm_event_node_ref)
3726+ _VirtualDom_getMeta(domNode).elm_event_node_ref.j = patch.s;
3730+ _VirtualDom_getMeta(domNode).elm_event_node_ref = { j: patch.s, p: patch.u };
3735+ var data = patch.s;
3736+ for (var i = 0; i < data.i; i++)
3738+ var children = _Lynx_getChildren(domNode);
3739+ _Lynx_removeElement(domNode, children[data.v]);
3744+ var data = patch.s;
3746+ for (var i = data.v; i < kids.length; i++)
3748+ _Lynx_appendChild(domNode, _VirtualDom_render(kids[i], patch.u));
3753+ var data = patch.s;
3756+ _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3759+ var entry = data.A;
3760+ if (typeof entry.r !== 'undefined')
3762+ _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3764+ entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);
3768+ return _VirtualDom_applyPatchReorder(domNode, patch);
3771+ return patch.s(domNode);
3774+ throw new Error('VirtualDom: unknown patch type');
3779+function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)
3781+ var parentNode = _Lynx_getParent(domNode);
3782+ var newNode = _VirtualDom_render(vNode, eventNode);
3784+ if (!_VirtualDom_getMeta(newNode).elm_event_node_ref)
3786+ _VirtualDom_getMeta(newNode).elm_event_node_ref = _VirtualDom_getMeta(domNode).elm_event_node_ref;
3789+ if (parentNode && newNode !== domNode)
3791+ _Lynx_replaceElement(parentNode, newNode, domNode);
3797+function _VirtualDom_applyPatchReorder(domNode, patch)
3799+ var data = patch.s;
3801+ // remove end inserts
3802+ var endInsertNodes = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);
3805+ domNode = _VirtualDom_applyPatchesHelp(domNode, data.w);
3808+ var inserts = data.x;
3809+ for (var i = 0; i < inserts.length; i++)
3811+ var insert = inserts[i];
3812+ var entry = insert.A;
3813+ var node = entry.c === 2
3815+ : _VirtualDom_render(entry.z, patch.u);
3816+ var children = _Lynx_getChildren(domNode);
3817+ _Lynx_insertBefore(domNode, node, children[insert.r]);
3821+ if (endInsertNodes)
3823+ for (var i = 0; i < endInsertNodes.length; i++)
3825+ _Lynx_appendChild(domNode, endInsertNodes[i]);
3833+function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)
3841+ for (var i = 0; i < endInserts.length; i++)
3843+ var insert = endInserts[i];
3844+ var entry = insert.A;
3845+ nodes.push(entry.c === 2
3847+ : _VirtualDom_render(entry.z, patch.u)
3854+function _VirtualDom_dekey(keyedNode)
3856+ var keyedKids = keyedNode.e;
3857+ var len = keyedKids.length;
3858+ var kids = new Array(len);
3859+ for (var i = 0; i < len; i++)
3861+ kids[i] = keyedKids[i].b;
3876+// LYNXJS PAPI WRAPPERS
3877+var _Browser_lynx = (typeof globalThis !== 'undefined' ? globalThis : scope);
3878+function _Browser_newPage() {
3879+ return _Browser_lynx['page'];
3881+function _Browser_flush() {
3882+ var fn = _Browser_lynx['_' + '_FlushElementTree'];
3883+ if (typeof fn === 'function') { fn(); }
3891+var _Browser_element = F4(function(impl, flagDecoder, debugMetadata, args)
3893+ return _Platform_initialize(
3898+ impl.subscriptions,
3899+ function(sendToApp, initialModel) {
3900+ var view = impl.view;
3901+ var domNode = args['node'] || _Browser_newPage();
3902+ var currNode = view(initialModel);
3903+ var currDomNode = _VirtualDom_render(currNode, sendToApp);
3904+ _VirtualDom_appendChild(domNode, currDomNode);
3907+ return _Browser_makeAnimator(initialModel, function(model)
3909+ var nextNode = view(model);
3910+ var patches = _VirtualDom_diff(currNode, nextNode);
3911+ currDomNode = _VirtualDom_applyPatches(currDomNode, currNode, patches, sendToApp);
3912+ currNode = nextNode;
3924+var _Browser_document = F4(function(impl, flagDecoder, debugMetadata, args)
3926+ return _Platform_initialize(
3931+ impl.subscriptions,
3932+ function(sendToApp, initialModel) {
3933+ var view = impl.view;
3934+ var rootNode = args['node'] || _Browser_newPage();
3935+ var doc = view(initialModel);
3936+ var currNode = _VirtualDom_node('view')(_List_Nil)(doc.body);
3937+ var currDomNode = _VirtualDom_render(currNode, sendToApp);
3938+ _VirtualDom_appendChild(rootNode, currDomNode);
3941+ return _Browser_makeAnimator(initialModel, function(model)
3943+ var doc = view(model);
3944+ var nextNode = _VirtualDom_node('view')(_List_Nil)(doc.body);
3945+ var patches = _VirtualDom_diff(currNode, nextNode);
3946+ currDomNode = _VirtualDom_applyPatches(currDomNode, currNode, patches, sendToApp);
3947+ currNode = nextNode;
3959+var _Browser_cancelAnimationFrame =
3960+ function(id) { clearTimeout(id); };
3962+var _Browser_requestAnimationFrame =
3963+ function(callback) { return setTimeout(callback, 1000 / 60); };
3966+function _Browser_makeAnimator(model, draw)
3972+ function updateIfNeeded()
3974+ state = state === 1
3976+ : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );
3979+ return function(nextModel, isSync)
3985+ state === 2 && (state = 1)
3987+ : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),
3998+function _Browser_application(impl)
4000+ return _Browser_document({
4001+ init: function(flags)
4003+ return A3(impl.init, flags, _Browser_fakeUrl(), {});
4006+ update: impl.update,
4007+ subscriptions: impl.subscriptions
4011+function _Browser_fakeUrl()
4014+ protocol: { $: 0 },
4025+var _Browser_go = F2(function(key, n)
4027+ return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4033+var _Browser_pushUrl = F2(function(key, url)
4035+ return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4041+var _Browser_replaceUrl = F2(function(key, url)
4043+ return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4054+var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };
4055+var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;
4056+var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;
4058+var _Browser_on = F3(function(node, eventName, sendToSelf)
4060+ return _Scheduler_spawn(_Scheduler_binding(function(callback)
4062+ return function() {};
4066+var _Browser_decodeEvent = F2(function(decoder, event)
4068+ var result = _Json_runHelp(decoder, event);
4069+ return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;
4077+function _Browser_visibilityInfo()
4079+ return (typeof _VirtualDom_doc.hidden !== 'undefined')
4080+ ? { hidden: 'hidden', change: 'visibilitychange' }
4082+ (typeof _VirtualDom_doc.mozHidden !== 'undefined')
4083+ ? { hidden: 'mozHidden', change: 'mozvisibilitychange' }
4085+ (typeof _VirtualDom_doc.msHidden !== 'undefined')
4086+ ? { hidden: 'msHidden', change: 'msvisibilitychange' }
4088+ (typeof _VirtualDom_doc.webkitHidden !== 'undefined')
4089+ ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }
4090+ : { hidden: 'hidden', change: 'visibilitychange' };
4098+function _Browser_rAF()
4100+ return _Scheduler_binding(function(callback)
4102+ var id = _Browser_requestAnimationFrame(function() {
4103+ callback(_Scheduler_succeed(Date.now()));
4106+ return function() {
4107+ _Browser_cancelAnimationFrame(id);
4113+function _Browser_now()
4115+ return _Scheduler_binding(function(callback)
4117+ callback(_Scheduler_succeed(Date.now()));
4126+function _Browser_withNode(id, doStuff)
4128+ return _Scheduler_binding(function(callback)
4130+ callback(_Scheduler_fail($lynxjs_elm$browser$Browser$Dom$NotFound(id)));
4135+function _Browser_withWindow(doStuff)
4137+ return _Scheduler_binding(function(callback)
4139+ _Browser_requestAnimationFrame(function() {
4140+ callback(_Scheduler_succeed(doStuff()));
4149+var _Browser_call = F2(function(functionName, id)
4151+ return _Browser_withNode(id, function(node) {
4152+ node[functionName]();
4153+ return _Utils_Tuple0;
4162+function _Browser_getViewport()
4165+ scene: _Browser_getScene(),
4167+ x: _Browser_window.pageXOffset,
4168+ y: _Browser_window.pageYOffset,
4169+ width: _Browser_doc.documentElement.clientWidth,
4170+ height: _Browser_doc.documentElement.clientHeight
4175+function _Browser_getScene()
4177+ var body = _Browser_doc.body;
4178+ var elem = _Browser_doc.documentElement;
4180+ width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),
4181+ height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)
4185+var _Browser_setViewport = F2(function(x, y)
4187+ return _Browser_withWindow(function()
4189+ _Browser_window.scroll(x, y);
4190+ return _Utils_Tuple0;
4199+function _Browser_getViewportOf(id)
4201+ return _Browser_withNode(id, function(node)
4205+ width: node.scrollWidth,
4206+ height: node.scrollHeight
4209+ x: node.scrollLeft,
4211+ width: node.clientWidth,
4212+ height: node.clientHeight
4219+var _Browser_setViewportOf = F3(function(id, x, y)
4221+ return _Browser_withNode(id, function(node)
4223+ node.scrollLeft = x;
4224+ node.scrollTop = y;
4225+ return _Utils_Tuple0;
4234+function _Browser_getElement(id)
4236+ return _Browser_withNode(id, function(node)
4238+ var rect = node.getBoundingClientRect();
4239+ var x = _Browser_window.pageXOffset;
4240+ var y = _Browser_window.pageYOffset;
4242+ scene: _Browser_getScene(),
4246+ width: _Browser_doc.documentElement.clientWidth,
4247+ height: _Browser_doc.documentElement.clientHeight
4253+ height: rect.height
4264+function _Browser_reload(skipCache)
4266+ return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4272+function _Browser_load(url)
4274+ return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4282+ // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.
4283+ // Other browsers reload the page, so let's be consistent about that.
4291+var _Bitwise_and = F2(function(a, b)
4296+var _Bitwise_or = F2(function(a, b)
4301+var _Bitwise_xor = F2(function(a, b)
4306+function _Bitwise_complement(a)
4311+var _Bitwise_shiftLeftBy = F2(function(offset, a)
4313+ return a << offset;
4316+var _Bitwise_shiftRightBy = F2(function(offset, a)
4318+ return a >> offset;
4321+var _Bitwise_shiftRightZfBy = F2(function(offset, a)
4323+ return a >>> offset;
4328+function _Time_now(millisToPosix)
4330+ return _Scheduler_binding(function(callback)
4332+ callback(_Scheduler_succeed(millisToPosix(Date.now())));
4336+var _Time_setInterval = F2(function(interval, task)
4338+ return _Scheduler_binding(function(callback)
4340+ var id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval);
4341+ return function() { clearInterval(id); };
4345+function _Time_here()
4347+ return _Scheduler_binding(function(callback)
4349+ callback(_Scheduler_succeed(
4350+ A2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil)
4356+function _Time_getZoneName()
4358+ return _Scheduler_binding(function(callback)
4362+ var name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone);
4366+ var name = $elm$time$Time$Offset(new Date().getTimezoneOffset());
4368+ callback(_Scheduler_succeed(name));
4375+function _Bytes_width(bytes)
4377+ return bytes.byteLength;
4380+var _Bytes_getHostEndianness = F2(function(le, be)
4382+ return _Scheduler_binding(function(callback)
4384+ callback(_Scheduler_succeed(new Uint8Array(new Uint32Array([1]))[0] === 1 ? le : be));
4391+function _Bytes_encode(encoder)
4393+ var mutableBytes = new DataView(new ArrayBuffer($elm$bytes$Bytes$Encode$getWidth(encoder)));
4394+ $elm$bytes$Bytes$Encode$write(encoder)(mutableBytes)(0);
4395+ return mutableBytes;
4401+var _Bytes_write_i8 = F3(function(mb, i, n) { mb.setInt8(i, n); return i + 1; });
4402+var _Bytes_write_i16 = F4(function(mb, i, n, isLE) { mb.setInt16(i, n, isLE); return i + 2; });
4403+var _Bytes_write_i32 = F4(function(mb, i, n, isLE) { mb.setInt32(i, n, isLE); return i + 4; });
4406+// UNSIGNED INTEGERS
4408+var _Bytes_write_u8 = F3(function(mb, i, n) { mb.setUint8(i, n); return i + 1 ;});
4409+var _Bytes_write_u16 = F4(function(mb, i, n, isLE) { mb.setUint16(i, n, isLE); return i + 2; });
4410+var _Bytes_write_u32 = F4(function(mb, i, n, isLE) { mb.setUint32(i, n, isLE); return i + 4; });
4415+var _Bytes_write_f32 = F4(function(mb, i, n, isLE) { mb.setFloat32(i, n, isLE); return i + 4; });
4416+var _Bytes_write_f64 = F4(function(mb, i, n, isLE) { mb.setFloat64(i, n, isLE); return i + 8; });
4421+var _Bytes_write_bytes = F3(function(mb, offset, bytes)
4423+ for (var i = 0, len = bytes.byteLength, limit = len - 4; i <= limit; i += 4)
4425+ mb.setUint32(offset + i, bytes.getUint32(i));
4427+ for (; i < len; i++)
4429+ mb.setUint8(offset + i, bytes.getUint8(i));
4431+ return offset + len;
4437+function _Bytes_getStringWidth(string)
4439+ for (var width = 0, i = 0; i < string.length; i++)
4441+ var code = string.charCodeAt(i);
4443+ (code < 0x80) ? 1 :
4444+ (code < 0x800) ? 2 :
4445+ (code < 0xD800 || 0xDBFF < code) ? 3 : (i++, 4);
4450+var _Bytes_write_string = F3(function(mb, offset, string)
4452+ for (var i = 0; i < string.length; i++)
4454+ var code = string.charCodeAt(i);
4457+ ? (mb.setUint8(offset, code)
4462+ ? (mb.setUint16(offset, 0xC080 /* 0b1100000010000000 */
4463+ | (code >>> 6 & 0x1F /* 0b00011111 */) << 8
4464+ | code & 0x3F /* 0b00111111 */)
4468+ (code < 0xD800 || 0xDBFF < code)
4469+ ? (mb.setUint16(offset, 0xE080 /* 0b1110000010000000 */
4470+ | (code >>> 12 & 0xF /* 0b00001111 */) << 8
4471+ | code >>> 6 & 0x3F /* 0b00111111 */)
4472+ , mb.setUint8(offset + 2, 0x80 /* 0b10000000 */
4473+ | code & 0x3F /* 0b00111111 */)
4477+ (code = (code - 0xD800) * 0x400 + string.charCodeAt(++i) - 0xDC00 + 0x10000
4478+ , mb.setUint32(offset, 0xF0808080 /* 0b11110000100000001000000010000000 */
4479+ | (code >>> 18 & 0x7 /* 0b00000111 */) << 24
4480+ | (code >>> 12 & 0x3F /* 0b00111111 */) << 16
4481+ | (code >>> 6 & 0x3F /* 0b00111111 */) << 8
4482+ | code & 0x3F /* 0b00111111 */)
4492+var _Bytes_decode = F2(function(decoder, bytes)
4495+ return $elm$core$Maybe$Just(A2(decoder, bytes, 0).b);
4497+ return $elm$core$Maybe$Nothing;
4501+var _Bytes_read_i8 = F2(function( bytes, offset) { return _Utils_Tuple2(offset + 1, bytes.getInt8(offset)); });
4502+var _Bytes_read_i16 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 2, bytes.getInt16(offset, isLE)); });
4503+var _Bytes_read_i32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getInt32(offset, isLE)); });
4504+var _Bytes_read_u8 = F2(function( bytes, offset) { return _Utils_Tuple2(offset + 1, bytes.getUint8(offset)); });
4505+var _Bytes_read_u16 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 2, bytes.getUint16(offset, isLE)); });
4506+var _Bytes_read_u32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getUint32(offset, isLE)); });
4507+var _Bytes_read_f32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getFloat32(offset, isLE)); });
4508+var _Bytes_read_f64 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 8, bytes.getFloat64(offset, isLE)); });
4510+var _Bytes_read_bytes = F3(function(len, bytes, offset)
4512+ return _Utils_Tuple2(offset + len, new DataView(bytes.buffer, bytes.byteOffset + offset, len));
4515+var _Bytes_read_string = F3(function(len, bytes, offset)
4518+ var end = offset + len;
4519+ for (; offset < end;)
4521+ var byte = bytes.getUint8(offset++);
4524+ ? String.fromCharCode(byte)
4526+ ((byte & 0xE0 /* 0b11100000 */) === 0xC0 /* 0b11000000 */)
4527+ ? String.fromCharCode((byte & 0x1F /* 0b00011111 */) << 6 | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */)
4529+ ((byte & 0xF0 /* 0b11110000 */) === 0xE0 /* 0b11100000 */)
4530+ ? String.fromCharCode(
4531+ (byte & 0xF /* 0b00001111 */) << 12
4532+ | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 6
4533+ | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */
4537+ ((byte & 0x7 /* 0b00000111 */) << 18
4538+ | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 12
4539+ | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 6
4540+ | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */
4542+ , String.fromCharCode(Math.floor(byte / 0x400) + 0xD800, byte % 0x400 + 0xDC00)
4545+ return _Utils_Tuple2(offset, string);
4548+var _Bytes_decodeFailure = F2(function() { throw 0; });
4554+var _Http_toTask = F3(function(router, toTask, request)
4556+ return _Scheduler_binding(function(callback)
4558+ function done(response) {
4559+ callback(toTask(request.expect.a(response)));
4562+ var controller = new AbortController();
4563+ var isAborted = false;
4566+ var timeoutMs = request.timeout.a || 0;
4570+ timeoutId = setTimeout(function() {
4572+ controller.abort();
4573+ done($lynxjs_elm$http$Http$Timeout_);
4579+ for (var h = request.headers; h.b; h = h.b) // WHILE_CONS
4581+ headers[h.a.a] = h.a.b;
4583+ if (request.body.a)
4585+ headers['Content-Type'] = request.body.a;
4590+ method: request.method,
4592+ signal: controller.signal
4594+ if (request.body.b)
4596+ options.body = request.body.b;
4600+ var url = request.url;
4601+ try { new URL(url, 'http://localhost'); }
4602+ catch (e) { return done($lynxjs_elm$http$Http$BadUrl_(url)); }
4605+ fetch(url, options).then(function(response)
4607+ var bodyPromise = request.expect.b === 'arraybuffer'
4608+ ? response.arrayBuffer()
4611+ return bodyPromise.then(function(body)
4613+ if (timeoutId) { clearTimeout(timeoutId); }
4616+ url: response.url || url,
4617+ statusCode: response.status,
4618+ statusText: response.statusText,
4619+ headers: _Http_parseHeaders(response.headers)
4622+ var toBody = request.expect.c;
4624+ 200 <= response.status && response.status < 300 ? $lynxjs_elm$http$Http$GoodStatus_ : $lynxjs_elm$http$Http$BadStatus_,
4629+ }).catch(function(e)
4631+ if (timeoutId) { clearTimeout(timeoutId); }
4634+ done($lynxjs_elm$http$Http$NetworkError_);
4639+ $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, controller, request.tracker.a);
4641+ return function() { isAborted = true; controller.abort(); };
4648+function _Http_parseHeaders(headers)
4650+ var dict = $elm$core$Dict$empty;
4651+ headers.forEach(function(value, key)
4653+ dict = A3($elm$core$Dict$update, key, function(oldValue) {
4654+ return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)
4655+ ? value + ', ' + oldValue.a
4666+var _Http_expect = F3(function(type, toBody, toValue)
4676+var _Http_mapExpect = F2(function(func, expect)
4682+ a: function(x) { return func(expect.a(x)); }
4686+function _Http_toDataView(arrayBuffer)
4688+ return _Bytes_wrap(new DataView(arrayBuffer));
4694+var _Http_emptyBody = { $: 0 };
4695+var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });
4697+function _Http_toFormData(parts)
4699+ for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS
4701+ var part = parts.a;
4702+ formData.append(part.a, part.b);
4707+var _Http_bytesToBlob = F2(function(mime, bytes)
4709+ return new Blob([bytes], { type: mime });
4715+function _Http_track(router, controller, tracker)
4717+ // fetch does not support upload/download progress events natively.
4718+ // Progress subscriptions will not fire, but the tracker still enables
4719+ // cancellation via Http.cancel.
4724+// NOBLE/CURVES BUNDLE (https://github.com/paulmillr/noble-curves, MIT License)
4725+// Embedded: @noble/curves 2.0.1 - secp256k1, ed25519, x25519, P-256
4727+var _Crypto_noble=(()=>{var ie=Object.defineProperty;var Nn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var Zn=Object.prototype.hasOwnProperty;var Cn=(e,t)=>{for(var r in t)ie(e,r,{get:t[r],enumerable:!0})},Vn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dn(t))!Zn.call(e,o)&&o!==r&&ie(e,o,{get:()=>t[o],enumerable:!(n=Nn(t,o))||n.enumerable});return e};var Mn=e=>Vn(ie({},"a",{value:!0}),e);var Er={};Cn(Er,{bytesToHex:()=>nt,ed25519:()=>Ln,hexToBytes:()=>rt,p256:()=>qn,secp256k1:()=>Sn,x25519:()=>Un});function wt(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function ot(e,t=""){if(!Number.isSafeInteger(e)||e<0){let r=t&&`"${t}" `;throw new Error(`${r}expected integer >= 0, got ${e}`)}}function N(e,t,r=""){let n=wt(e),o=e?.length,f=t!==void 0;if(!n||f&&o!==t){let i=r&&`"${r}" `,c=f?` of length ${t}`:"",s=n?`length=${o}`:`type=${typeof e}`;throw new Error(i+"expected Uint8Array"+c+", got "+s)}return e}function Wt(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash must wrapped by utils.createHasher");ot(e.outputLen),ot(e.blockLen)}function Rt(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Ve(e,t){N(e,void 0,"digestInto() output");let r=t.outputLen;if(e.length<r)throw new Error('"digestInto() output" expected to be of length >='+r)}function at(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function $t(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function et(e,t){return e<<32-t|e>>>t}var Me=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",kn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function nt(e){if(N(e),Me)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=kn[e[r]];return t}var ct={_0:48,_9:57,A:65,F:70,a:97,f:102};function Ce(e){if(e>=ct._0&&e<=ct._9)return e-ct._0;if(e>=ct.A&&e<=ct.F)return e-(ct.A-10);if(e>=ct.a&&e<=ct.f)return e-(ct.a-10)}function rt(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(Me)return Uint8Array.fromHex(e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let o=0,f=0;o<r;o++,f+=2){let i=Ce(e.charCodeAt(f)),c=Ce(e.charCodeAt(f+1));if(i===void 0||c===void 0){let s=e[f]+e[f+1];throw new Error('hex string expected, got non-hex character "'+s+'" at index '+f)}n[o]=i*16+c}return n}function tt(...e){let t=0;for(let n=0;n<e.length;n++){let o=e[n];N(o),t+=o.length}let r=new Uint8Array(t);for(let n=0,o=0;n<e.length;n++){let f=e[n];r.set(f,o),o+=f.length}return r}function ce(e,t={}){let r=(o,f)=>e(f).update(o).digest(),n=e(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.create=o=>e(o),Object.assign(r,t),Object.freeze(r)}function ht(e=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(e))}var ae=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});function ke(e,t,r){return e&t^~e&r}function Ye(e,t,r){return e&t^e&r^t&r}var Ct=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,r,n,o){this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=$t(this.buffer)}update(t){Rt(this),N(t);let{view:r,buffer:n,blockLen:o}=this,f=t.length;for(let i=0;i<f;){let c=Math.min(o-this.pos,f-i);if(c===o){let s=$t(t);for(;o<=f-i;i+=o)this.process(s,i);continue}n.set(t.subarray(i,i+c),this.pos),this.pos+=c,i+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Rt(this),Ve(t,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:f}=this,{pos:i}=this;r[i++]=128,at(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let x=i;x<o;x++)r[x]=0;n.setBigUint64(o-8,BigInt(this.length*8),f),this.process(n,0);let c=$t(t),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=s/4,h=this.get();if(l>h.length)throw new Error("_sha2: outputLen bigger than state");for(let x=0;x<l;x++)c.setUint32(4*x,h[x],f)}digest(){let{buffer:t,outputLen:r}=this;this.digestInto(t);let n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:f,destroyed:i,pos:c}=this;return t.destroyed=i,t.finished=f,t.length=o,t.pos=c,o%r&&t.buffer.set(n),t}clone(){return this._cloneInto()}},dt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Q=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Pt=BigInt(4294967295),Xe=BigInt(32);function Yn(e,t=!1){return t?{h:Number(e&Pt),l:Number(e>>Xe&Pt)}:{h:Number(e>>Xe&Pt)|0,l:Number(e&Pt)|0}}function Ge(e,t=!1){let r=e.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let f=0;f<r;f++){let{h:i,l:c}=Yn(e[f],t);[n[f],o[f]]=[i,c]}return[n,o]}var de=(e,t,r)=>e>>>r,ue=(e,t,r)=>e<<32-r|t>>>r,Bt=(e,t,r)=>e>>>r|t<<32-r,Et=(e,t,r)=>e<<32-r|t>>>r,Vt=(e,t,r)=>e<<64-r|t>>>r-32,Mt=(e,t,r)=>e>>>r-32|t<<64-r;function ft(e,t,r,n){let o=(t>>>0)+(n>>>0);return{h:e+r+(o/2**32|0)|0,l:o|0}}var Ke=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0),je=(e,t,r,n)=>t+r+n+(e/2**32|0)|0,ze=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0),We=(e,t,r,n,o)=>t+r+n+o+(e/2**32|0)|0,$e=(e,t,r,n,o)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(o>>>0),Pe=(e,t,r,n,o,f)=>t+r+n+o+f+(e/2**32|0)|0;var Gn=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),bt=new Uint32Array(64),le=class extends Ct{constructor(t){super(64,t,8,!1)}get(){let{A:t,B:r,C:n,D:o,E:f,F:i,G:c,H:s}=this;return[t,r,n,o,f,i,c,s]}set(t,r,n,o,f,i,c,s){this.A=t|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=f|0,this.F=i|0,this.G=c|0,this.H=s|0}process(t,r){for(let x=0;x<16;x++,r+=4)bt[x]=t.getUint32(r,!1);for(let x=16;x<64;x++){let v=bt[x-15],E=bt[x-2],w=et(v,7)^et(v,18)^v>>>3,L=et(E,17)^et(E,19)^E>>>10;bt[x]=L+bt[x-7]+w+bt[x-16]|0}let{A:n,B:o,C:f,D:i,E:c,F:s,G:l,H:h}=this;for(let x=0;x<64;x++){let v=et(c,6)^et(c,11)^et(c,25),E=h+v+ke(c,s,l)+Gn[x]+bt[x]|0,L=(et(n,2)^et(n,13)^et(n,22))+Ye(n,o,f)|0;h=l,l=s,s=c,c=i+E|0,i=f,f=o,o=n,n=E+L|0}n=n+this.A|0,o=o+this.B|0,f=f+this.C|0,i=i+this.D|0,c=c+this.E|0,s=s+this.F|0,l=l+this.G|0,h=h+this.H|0,this.set(n,o,f,i,c,s,l,h)}roundClean(){at(bt)}destroy(){this.set(0,0,0,0,0,0,0,0),at(this.buffer)}},he=class extends le{A=dt[0]|0;B=dt[1]|0;C=dt[2]|0;D=dt[3]|0;E=dt[4]|0;F=dt[5]|0;G=dt[6]|0;H=dt[7]|0;constructor(){super(32)}};var Qe=Ge(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),Kn=Qe[0],jn=Qe[1],xt=new Uint32Array(80),mt=new Uint32Array(80),be=class extends Ct{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:r,Bh:n,Bl:o,Ch:f,Cl:i,Dh:c,Dl:s,Eh:l,El:h,Fh:x,Fl:v,Gh:E,Gl:w,Hh:L,Hl:y}=this;return[t,r,n,o,f,i,c,s,l,h,x,v,E,w,L,y]}set(t,r,n,o,f,i,c,s,l,h,x,v,E,w,L,y){this.Ah=t|0,this.Al=r|0,this.Bh=n|0,this.Bl=o|0,this.Ch=f|0,this.Cl=i|0,this.Dh=c|0,this.Dl=s|0,this.Eh=l|0,this.El=h|0,this.Fh=x|0,this.Fl=v|0,this.Gh=E|0,this.Gl=w|0,this.Hh=L|0,this.Hl=y|0}process(t,r){for(let p=0;p<16;p++,r+=4)xt[p]=t.getUint32(r),mt[p]=t.getUint32(r+=4);for(let p=16;p<80;p++){let T=xt[p-15]|0,D=mt[p-15]|0,V=Bt(T,D,1)^Bt(T,D,8)^de(T,D,7),k=Et(T,D,1)^Et(T,D,8)^ue(T,D,7),B=xt[p-2]|0,b=mt[p-2]|0,q=Bt(B,b,19)^Vt(B,b,61)^de(B,b,6),Z=Et(B,b,19)^Mt(B,b,61)^ue(B,b,6),O=ze(k,Z,mt[p-7],mt[p-16]),u=We(O,V,q,xt[p-7],xt[p-16]);xt[p]=u|0,mt[p]=O|0}let{Ah:n,Al:o,Bh:f,Bl:i,Ch:c,Cl:s,Dh:l,Dl:h,Eh:x,El:v,Fh:E,Fl:w,Gh:L,Gl:y,Hh:g,Hl:R}=this;for(let p=0;p<80;p++){let T=Bt(x,v,14)^Bt(x,v,18)^Vt(x,v,41),D=Et(x,v,14)^Et(x,v,18)^Mt(x,v,41),V=x&E^~x&L,k=v&w^~v&y,B=$e(R,D,k,jn[p],mt[p]),b=Pe(B,g,T,V,Kn[p],xt[p]),q=B|0,Z=Bt(n,o,28)^Vt(n,o,34)^Vt(n,o,39),O=Et(n,o,28)^Mt(n,o,34)^Mt(n,o,39),u=n&f^n&c^f&c,a=o&i^o&s^i&s;g=L|0,R=y|0,L=E|0,y=w|0,E=x|0,w=v|0,{h:x,l:v}=ft(l|0,h|0,b|0,q|0),l=c|0,h=s|0,c=f|0,s=i|0,f=n|0,i=o|0;let d=Ke(q,O,a);n=je(d,b,Z,u),o=d|0}({h:n,l:o}=ft(this.Ah|0,this.Al|0,n|0,o|0)),{h:f,l:i}=ft(this.Bh|0,this.Bl|0,f|0,i|0),{h:c,l:s}=ft(this.Ch|0,this.Cl|0,c|0,s|0),{h:l,l:h}=ft(this.Dh|0,this.Dl|0,l|0,h|0),{h:x,l:v}=ft(this.Eh|0,this.El|0,x|0,v|0),{h:E,l:w}=ft(this.Fh|0,this.Fl|0,E|0,w|0),{h:L,l:y}=ft(this.Gh|0,this.Gl|0,L|0,y|0),{h:g,l:R}=ft(this.Hh|0,this.Hl|0,g|0,R|0),this.set(n,o,f,i,c,s,l,h,x,v,E,w,L,y,g,R)}roundClean(){at(xt,mt)}destroy(){at(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},xe=class extends be{Ah=Q[0]|0;Al=Q[1]|0;Bh=Q[2]|0;Bl=Q[3]|0;Ch=Q[4]|0;Cl=Q[5]|0;Dh=Q[6]|0;Dl=Q[7]|0;Eh=Q[8]|0;El=Q[9]|0;Fh=Q[10]|0;Fl=Q[11]|0;Gh=Q[12]|0;Gl=Q[13]|0;Hh=Q[14]|0;Hl=Q[15]|0;constructor(){super(64)}};var Qt=ce(()=>new he,ae(1));var me=ce(()=>new xe,ae(3));var pe=BigInt(0),ge=BigInt(1);function ut(e,t=""){if(typeof e!="boolean"){let r=t&&`"${t}" `;throw new Error(r+"expected boolean, got type="+typeof e)}return e}function Je(e){if(typeof e=="bigint"){if(!Jt(e))throw new Error("positive bigint expected, got "+e)}else ot(e);return e}function kt(e){let t=Je(e).toString(16);return t.length&1?"0"+t:t}function Fe(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);return e===""?pe:BigInt("0x"+e)}function Ot(e){return Fe(nt(e))}function st(e){return Fe(nt(vt(N(e)).reverse()))}function Ft(e,t){ot(t),e=Je(e);let r=rt(e.toString(16).padStart(t*2,"0"));if(r.length!==t)throw new Error("number too large");return r}function Yt(e,t){return Ft(e,t).reverse()}function vt(e){return Uint8Array.from(e)}var Jt=e=>typeof e=="bigint"&&pe<=e;function zn(e,t,r){return Jt(e)&&Jt(t)&&Jt(r)&&t<=e&&e<r}function gt(e,t,r,n){if(!zn(t,r,n))throw new Error("expected valid "+e+": "+r+" <= n < "+n+", got "+t)}function ye(e){let t;for(t=0;e>pe;e>>=ge,t+=1);return t}var Xt=e=>(ge<<BigInt(e))-ge;function tn(e,t,r){if(ot(e,"hashLen"),ot(t,"qByteLen"),typeof r!="function")throw new Error("hmacFn must be a function");let n=y=>new Uint8Array(y),o=Uint8Array.of(),f=Uint8Array.of(0),i=Uint8Array.of(1),c=1e3,s=n(e),l=n(e),h=0,x=()=>{s.fill(1),l.fill(0),h=0},v=(...y)=>r(l,tt(s,...y)),E=(y=o)=>{l=v(f,y),s=v(),y.length!==0&&(l=v(i,y),s=v())},w=()=>{if(h++>=c)throw new Error("drbg: tried max amount of iterations");let y=0,g=[];for(;y<t;){s=v();let R=s.slice();g.push(R),y+=s.length}return tt(...g)};return(y,g)=>{x(),E(y);let R;for(;!(R=g(w()));)E();return x(),R}}function it(e,t={},r={}){if(!e||typeof e!="object")throw new Error("expected valid options object");function n(f,i,c){let s=e[f];if(c&&s===void 0)return;let l=typeof s;if(l!==i||s===null)throw new Error(`param "${f}" is invalid: expected ${i}, got ${l}`)}let o=(f,i)=>Object.entries(f).forEach(([c,s])=>n(c,s,i));o(t,!1),o(r,!0)}function Ht(e){let t=new WeakMap;return(r,...n)=>{let o=t.get(r);if(o!==void 0)return o;let f=e(r,...n);return t.set(r,f),f}}var J=BigInt(0),$=BigInt(1),St=BigInt(2),rn=BigInt(3),on=BigInt(4),fn=BigInt(5),Wn=BigInt(7),sn=BigInt(8),$n=BigInt(9),cn=BigInt(16);function j(e,t){let r=e%t;return r>=J?r:t+r}function G(e,t,r){let n=e;for(;t-- >J;)n*=n,n%=r;return n}function en(e,t){if(e===J)throw new Error("invert: expected non-zero number");if(t<=J)throw new Error("invert: expected positive modulus, got "+t);let r=j(e,t),n=t,o=J,f=$,i=$,c=J;for(;r!==J;){let l=n/r,h=n%r,x=o-i*l,v=f-c*l;n=r,r=h,o=i,f=c,i=x,c=v}if(n!==$)throw new Error("invert: does not exist");return j(o,t)}function Be(e,t,r){if(!e.eql(e.sqr(t),r))throw new Error("Cannot find square root")}function an(e,t){let r=(e.ORDER+$)/on,n=e.pow(t,r);return Be(e,n,t),n}function Pn(e,t){let r=(e.ORDER-fn)/sn,n=e.mul(t,St),o=e.pow(n,r),f=e.mul(t,o),i=e.mul(e.mul(f,St),o),c=e.mul(f,e.sub(i,e.ONE));return Be(e,c,t),c}function Qn(e){let t=Tt(e),r=dn(e),n=r(t,t.neg(t.ONE)),o=r(t,n),f=r(t,t.neg(n)),i=(e+Wn)/cn;return(c,s)=>{let l=c.pow(s,i),h=c.mul(l,n),x=c.mul(l,o),v=c.mul(l,f),E=c.eql(c.sqr(h),s),w=c.eql(c.sqr(x),s);l=c.cmov(l,h,E),h=c.cmov(v,x,w);let L=c.eql(c.sqr(h),s),y=c.cmov(l,h,L);return Be(c,y,s),y}}function dn(e){if(e<rn)throw new Error("sqrt is not defined for small field");let t=e-$,r=0;for(;t%St===J;)t/=St,r++;let n=St,o=Tt(e);for(;nn(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return an;let f=o.pow(n,t),i=(t+$)/St;return function(s,l){if(s.is0(l))return l;if(nn(s,l)!==1)throw new Error("Cannot find square root");let h=r,x=s.mul(s.ONE,f),v=s.pow(l,t),E=s.pow(l,i);for(;!s.eql(v,s.ONE);){if(s.is0(v))return s.ZERO;let w=1,L=s.sqr(v);for(;!s.eql(L,s.ONE);)if(w++,L=s.sqr(L),w===h)throw new Error("Cannot find square root");let y=$<<BigInt(h-w-1),g=s.pow(x,y);h=w,x=s.sqr(g),v=s.mul(v,x),E=s.mul(E,g)}return E}}function Jn(e){return e%on===rn?an:e%sn===fn?Pn:e%cn===$n?Qn(e):dn(e)}var un=(e,t)=>(j(e,t)&$)===$,Fn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ee(e){let t={ORDER:"bigint",BYTES:"number",BITS:"number"},r=Fn.reduce((n,o)=>(n[o]="function",n),t);return it(e,r),e}function tr(e,t,r){if(r<J)throw new Error("invalid exponent, negatives unsupported");if(r===J)return e.ONE;if(r===$)return t;let n=e.ONE,o=t;for(;r>J;)r&$&&(n=e.mul(n,o)),o=e.sqr(o),r>>=$;return n}function Gt(e,t,r=!1){let n=new Array(t.length).fill(r?e.ZERO:void 0),o=t.reduce((i,c,s)=>e.is0(c)?i:(n[s]=i,e.mul(i,c)),e.ONE),f=e.inv(o);return t.reduceRight((i,c,s)=>e.is0(c)?i:(n[s]=e.mul(i,n[s]),e.mul(i,c)),f),n}function nn(e,t){let r=(e.ORDER-$)/St,n=e.pow(t,r),o=e.eql(n,e.ONE),f=e.eql(n,e.ZERO),i=e.eql(n,e.neg(e.ONE));if(!o&&!f&&!i)throw new Error("invalid Legendre symbol result");return o?1:f?0:-1}function er(e,t){t!==void 0&&ot(t);let r=t!==void 0?t:e.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}var we=class{ORDER;BITS;BYTES;isLE;ZERO=J;ONE=$;_lengths;_sqrt;_mod;constructor(t,r={}){if(t<=J)throw new Error("invalid field: expected ORDER > 0, got "+t);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&(this.sqrt=r.sqrt),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=r.allowedLengths?.slice()),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));let{nBitLength:o,nByteLength:f}=er(t,n);if(f>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=o,this.BYTES=f,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return j(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return J<=t&&t<this.ORDER}is0(t){return t===J}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&$)===$}neg(t){return j(-t,this.ORDER)}eql(t,r){return t===r}sqr(t){return j(t*t,this.ORDER)}add(t,r){return j(t+r,this.ORDER)}sub(t,r){return j(t-r,this.ORDER)}mul(t,r){return j(t*r,this.ORDER)}pow(t,r){return tr(this,t,r)}div(t,r){return j(t*en(r,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,r){return t+r}subN(t,r){return t-r}mulN(t,r){return t*r}inv(t){return en(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=Jn(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?Yt(t,this.BYTES):Ft(t,this.BYTES)}fromBytes(t,r=!1){N(t);let{_lengths:n,BYTES:o,isLE:f,ORDER:i,_mod:c}=this;if(n){if(!n.includes(t.length)||t.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let l=new Uint8Array(o);l.set(t,f?0:l.length-t.length),t=l}if(t.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+t.length);let s=f?st(t):Ot(t);if(c&&(s=j(s,i)),!r&&!this.isValid(s))throw new Error("invalid field element: outside of range 0..ORDER");return s}invertBatch(t){return Gt(this,t)}cmov(t,r,n){return n?r:t}};function Tt(e,t={}){return new we(e,t)}function ln(e){if(typeof e!="bigint")throw new Error("field order must be bigint");let t=e.toString(2).length;return Math.ceil(t/8)}function ve(e){let t=ln(e);return t+Math.ceil(t/2)}function Se(e,t,r=!1){N(e);let n=e.length,o=ln(t),f=ve(t);if(n<16||n<f||n>1024)throw new Error("expected "+f+"-1024 bytes of input, got "+n);let i=r?st(e):Ot(e),c=j(i,t-$)+$;return r?Yt(c,o):Ft(c,o)}var Lt=BigInt(0),_t=BigInt(1);function Kt(e,t){let r=t.negate();return e?r:t}function It(e,t){let r=Gt(e.Fp,t.map(n=>n.Z));return t.map((n,o)=>e.fromAffine(n.toAffine(r[o])))}function mn(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function _e(e,t){mn(e,t);let r=Math.ceil(t/e)+1,n=2**(e-1),o=2**e,f=Xt(e),i=BigInt(e);return{windows:r,windowSize:n,mask:f,maxNumber:o,shiftBy:i}}function hn(e,t,r){let{windowSize:n,mask:o,maxNumber:f,shiftBy:i}=r,c=Number(e&o),s=e>>i;c>n&&(c-=f,s+=_t);let l=t*n,h=l+Math.abs(c)-1,x=c===0,v=c<0,E=t%2!==0;return{nextN:s,offset:h,isZero:x,isNeg:v,isNegF:E,offsetF:l}}var Ie=new WeakMap,gn=new WeakMap;function Ae(e){return gn.get(e)||1}function bn(e){if(e!==Lt)throw new Error("invalid wNAF")}var Ut=class{BASE;ZERO;Fn;bits;constructor(t,r){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=r}_unsafeLadder(t,r,n=this.ZERO){let o=t;for(;r>Lt;)r&_t&&(n=n.add(o)),o=o.double(),r>>=_t;return n}precomputeWindow(t,r){let{windows:n,windowSize:o}=_e(r,this.bits),f=[],i=t,c=i;for(let s=0;s<n;s++){c=i,f.push(c);for(let l=1;l<o;l++)c=c.add(i),f.push(c);i=c.double()}return f}wNAF(t,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,f=this.BASE,i=_e(t,this.bits);for(let c=0;c<i.windows;c++){let{nextN:s,offset:l,isZero:h,isNeg:x,isNegF:v,offsetF:E}=hn(n,c,i);n=s,h?f=f.add(Kt(v,r[E])):o=o.add(Kt(x,r[l]))}return bn(n),{p:o,f}}wNAFUnsafe(t,r,n,o=this.ZERO){let f=_e(t,this.bits);for(let i=0;i<f.windows&&n!==Lt;i++){let{nextN:c,offset:s,isZero:l,isNeg:h}=hn(n,i,f);if(n=c,!l){let x=r[s];o=o.add(h?x.negate():x)}}return bn(n),o}getPrecomputes(t,r,n){let o=Ie.get(r);return o||(o=this.precomputeWindow(r,t),t!==1&&(typeof n=="function"&&(o=n(o)),Ie.set(r,o))),o}cached(t,r,n){let o=Ae(t);return this.wNAF(o,this.getPrecomputes(o,t,n),r)}unsafe(t,r,n,o){let f=Ae(t);return f===1?this._unsafeLadder(t,r,o):this.wNAFUnsafe(f,this.getPrecomputes(f,t,n),r,o)}createCache(t,r){mn(r,this.bits),gn.set(t,r),Ie.delete(t)}hasCache(t){return Ae(t)!==1}};function pn(e,t,r,n){let o=t,f=e.ZERO,i=e.ZERO;for(;r>Lt||n>Lt;)r&_t&&(f=f.add(o)),n&_t&&(i=i.add(o)),o=o.double(),r>>=_t,n>>=_t;return{p1:f,p2:i}}function xn(e,t,r){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ee(t),t}else return Tt(e,{isLE:r})}function te(e,t,r={},n){if(n===void 0&&(n=e==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${e} CURVE object`);for(let s of["p","n","h"]){let l=t[s];if(!(typeof l=="bigint"&&l>Lt))throw new Error(`CURVE.${s} must be positive bigint`)}let o=xn(t.p,r.Fp,n),f=xn(t.n,r.Fn,n),c=["Gx","Gy","a",e==="weierstrass"?"b":"d"];for(let s of c)if(!o.isValid(t[s]))throw new Error(`CURVE.${s} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:o,Fn:f}}function qt(e,t){return function(n){let o=e(n);return{secretKey:o,publicKey:t(o)}}}var ee=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(t,r){if(Wt(t),N(r,void 0,"key"),this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?t.create().update(r).digest():r);for(let f=0;f<o.length;f++)o[f]^=54;this.iHash.update(o),this.oHash=t.create();for(let f=0;f<o.length;f++)o[f]^=106;this.oHash.update(o),at(o)}update(t){return Rt(this),this.iHash.update(t),this}digestInto(t){Rt(this),N(t,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||=Object.create(Object.getPrototypeOf(this),{});let{oHash:r,iHash:n,finished:o,destroyed:f,blockLen:i,outputLen:c}=this;return t=t,t.finished=o,t.destroyed=f,t.blockLen=i,t.outputLen=c,t.oHash=r._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Re=(e,t,r)=>new ee(e,t).update(r).digest();Re.create=(e,t)=>new ee(e,t);var yn=(e,t)=>(e+(e>=0?t:-t)/wn)/t;function nr(e,t,r){let[[n,o],[f,i]]=t,c=yn(i*e,r),s=yn(-o*e,r),l=e-c*n-s*f,h=-c*o-s*i,x=l<lt,v=h<lt;x&&(l=-l),v&&(h=-h);let E=Xt(Math.ceil(ye(r)/2))+Nt;if(l<lt||l>=E||h<lt||h>=E)throw new Error("splitScalar (endomorphism): failed, k="+e);return{k1neg:x,k1:l,k2neg:v,k2:h}}function He(e){if(!["compact","recovered","der"].includes(e))throw new Error('Signature format must be "compact", "recovered", or "der"');return e}function Oe(e,t){let r={};for(let n of Object.keys(t))r[n]=e[n]===void 0?t[n]:e[n];return ut(r.lowS,"lowS"),ut(r.prehash,"prehash"),r.format!==void 0&&He(r.format),r}var Te=class extends Error{constructor(t=""){super(t)}},pt={Err:Te,_tlv:{encode:(e,t)=>{let{Err:r}=pt;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length&1)throw new r("tlv.encode: unpadded data");let n=t.length/2,o=kt(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let f=n>127?kt(o.length/2|128):"";return kt(e)+f+o+t},decode(e,t){let{Err:r}=pt,n=0;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length<2||t[n++]!==e)throw new r("tlv.decode: wrong tlv");let o=t[n++],f=!!(o&128),i=0;if(!f)i=o;else{let s=o&127;if(!s)throw new r("tlv.decode(long): indefinite length not supported");if(s>4)throw new r("tlv.decode(long): byte length is too big");let l=t.subarray(n,n+s);if(l.length!==s)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let h of l)i=i<<8|h;if(n+=s,i<128)throw new r("tlv.decode(long): not minimal encoding")}let c=t.subarray(n,n+i);if(c.length!==i)throw new r("tlv.decode: wrong value length");return{v:c,l:t.subarray(n+i)}}},_int:{encode(e){let{Err:t}=pt;if(e<lt)throw new t("integer: negative integers are not allowed");let r=kt(e);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return r},decode(e){let{Err:t}=pt;if(e[0]&128)throw new t("invalid signature integer: negative");if(e[0]===0&&!(e[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ot(e)}},toSig(e){let{Err:t,_int:r,_tlv:n}=pt,o=N(e,void 0,"signature"),{v:f,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:c,l:s}=n.decode(2,f),{v:l,l:h}=n.decode(2,s);if(h.length)throw new t("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(l)}},hexFromSig(e){let{_tlv:t,_int:r}=pt,n=t.encode(2,r.encode(e.r)),o=t.encode(2,r.encode(e.s)),f=n+o;return t.encode(48,f)}},lt=BigInt(0),Nt=BigInt(1),wn=BigInt(2),ne=BigInt(3),rr=BigInt(4);function re(e,t={}){let r=te("weierstrass",e,t),{Fp:n,Fn:o}=r,f=r.CURVE,{h:i,n:c}=f;it(t,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:s}=t;if(s&&(!n.is0(f.a)||typeof s.beta!="bigint"||!Array.isArray(s.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=En(n,o);function h(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function x(O,u,a){let{x:d,y:m}=u.toAffine(),I=n.toBytes(d);if(ut(a,"isCompressed"),a){h();let S=!n.isOdd(m);return tt(Bn(S),I)}else return tt(Uint8Array.of(4),I,n.toBytes(m))}function v(O){N(O,void 0,"Point");let{publicKey:u,publicKeyUncompressed:a}=l,d=O.length,m=O[0],I=O.subarray(1);if(d===u&&(m===2||m===3)){let S=n.fromBytes(I);if(!n.isValid(S))throw new Error("bad point: is not on curve, wrong x");let A=L(S),_;try{_=n.sqrt(A)}catch(K){let M=K instanceof Error?": "+K.message:"";throw new Error("bad point: is not on curve, sqrt error"+M)}h();let H=n.isOdd(_);return(m&1)===1!==H&&(_=n.neg(_)),{x:S,y:_}}else if(d===a&&m===4){let S=n.BYTES,A=n.fromBytes(I.subarray(0,S)),_=n.fromBytes(I.subarray(S,S*2));if(!y(A,_))throw new Error("bad point: is not on curve");return{x:A,y:_}}else throw new Error(`bad point: got length ${d}, expected compressed=${u} or uncompressed=${a}`)}let E=t.toBytes||x,w=t.fromBytes||v;function L(O){let u=n.sqr(O),a=n.mul(u,O);return n.add(n.add(a,n.mul(O,f.a)),f.b)}function y(O,u){let a=n.sqr(u),d=L(O);return n.eql(a,d)}if(!y(f.Gx,f.Gy))throw new Error("bad curve params: generator point");let g=n.mul(n.pow(f.a,ne),rr),R=n.mul(n.sqr(f.b),BigInt(27));if(n.is0(n.add(g,R)))throw new Error("bad curve params: a or b");function p(O,u,a=!1){if(!n.isValid(u)||a&&n.is0(u))throw new Error(`bad point coordinate ${O}`);return u}function T(O){if(!(O instanceof b))throw new Error("Weierstrass Point expected")}function D(O){if(!s||!s.basises)throw new Error("no endo");return nr(O,s.basises,o.ORDER)}let V=Ht((O,u)=>{let{X:a,Y:d,Z:m}=O;if(n.eql(m,n.ONE))return{x:a,y:d};let I=O.is0();u==null&&(u=I?n.ONE:n.inv(m));let S=n.mul(a,u),A=n.mul(d,u),_=n.mul(m,u);if(I)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:S,y:A}}),k=Ht(O=>{if(O.is0()){if(t.allowInfinityPoint&&!n.is0(O.Y))return;throw new Error("bad point: ZERO")}let{x:u,y:a}=O.toAffine();if(!n.isValid(u)||!n.isValid(a))throw new Error("bad point: x or y not field elements");if(!y(u,a))throw new Error("bad point: equation left != right");if(!O.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function B(O,u,a,d,m){return a=new b(n.mul(a.X,O),a.Y,a.Z),u=Kt(d,u),a=Kt(m,a),u.add(a)}class b{static BASE=new b(f.Gx,f.Gy,n.ONE);static ZERO=new b(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(u,a,d){this.X=p("x",u),this.Y=p("y",a,!0),this.Z=p("z",d),Object.freeze(this)}static CURVE(){return f}static fromAffine(u){let{x:a,y:d}=u||{};if(!u||!n.isValid(a)||!n.isValid(d))throw new Error("invalid affine point");if(u instanceof b)throw new Error("projective point not allowed");return n.is0(a)&&n.is0(d)?b.ZERO:new b(a,d,n.ONE)}static fromBytes(u){let a=b.fromAffine(w(N(u,void 0,"point")));return a.assertValidity(),a}static fromHex(u){return b.fromBytes(rt(u))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(u=8,a=!0){return Z.createCache(this,u),a||this.multiply(ne),this}assertValidity(){k(this)}hasEvenY(){let{y:u}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(u)}equals(u){T(u);let{X:a,Y:d,Z:m}=this,{X:I,Y:S,Z:A}=u,_=n.eql(n.mul(a,A),n.mul(I,m)),H=n.eql(n.mul(d,A),n.mul(S,m));return _&&H}negate(){return new b(this.X,n.neg(this.Y),this.Z)}double(){let{a:u,b:a}=f,d=n.mul(a,ne),{X:m,Y:I,Z:S}=this,A=n.ZERO,_=n.ZERO,H=n.ZERO,U=n.mul(m,m),K=n.mul(I,I),M=n.mul(S,S),C=n.mul(m,I);return C=n.add(C,C),H=n.mul(m,S),H=n.add(H,H),A=n.mul(u,H),_=n.mul(d,M),_=n.add(A,_),A=n.sub(K,_),_=n.add(K,_),_=n.mul(A,_),A=n.mul(C,A),H=n.mul(d,H),M=n.mul(u,M),C=n.sub(U,M),C=n.mul(u,C),C=n.add(C,H),H=n.add(U,U),U=n.add(H,U),U=n.add(U,M),U=n.mul(U,C),_=n.add(_,U),M=n.mul(I,S),M=n.add(M,M),U=n.mul(M,C),A=n.sub(A,U),H=n.mul(M,K),H=n.add(H,H),H=n.add(H,H),new b(A,_,H)}add(u){T(u);let{X:a,Y:d,Z:m}=this,{X:I,Y:S,Z:A}=u,_=n.ZERO,H=n.ZERO,U=n.ZERO,K=f.a,M=n.mul(f.b,ne),C=n.mul(a,I),Y=n.mul(d,S),z=n.mul(m,A),F=n.add(a,d),X=n.add(I,S);F=n.mul(F,X),X=n.add(C,Y),F=n.sub(F,X),X=n.add(a,m);let W=n.add(I,A);return X=n.mul(X,W),W=n.add(C,z),X=n.sub(X,W),W=n.add(d,m),_=n.add(S,A),W=n.mul(W,_),_=n.add(Y,z),W=n.sub(W,_),U=n.mul(K,X),_=n.mul(M,z),U=n.add(_,U),_=n.sub(Y,U),U=n.add(Y,U),H=n.mul(_,U),Y=n.add(C,C),Y=n.add(Y,C),z=n.mul(K,z),X=n.mul(M,X),Y=n.add(Y,z),z=n.sub(C,z),z=n.mul(K,z),X=n.add(X,z),C=n.mul(Y,X),H=n.add(H,C),C=n.mul(W,X),_=n.mul(F,_),_=n.sub(_,C),C=n.mul(F,Y),U=n.mul(W,U),U=n.add(U,C),new b(_,H,U)}subtract(u){return this.add(u.negate())}is0(){return this.equals(b.ZERO)}multiply(u){let{endo:a}=t;if(!o.isValidNot0(u))throw new Error("invalid scalar: out of range");let d,m,I=S=>Z.cached(this,S,A=>It(b,A));if(a){let{k1neg:S,k1:A,k2neg:_,k2:H}=D(u),{p:U,f:K}=I(A),{p:M,f:C}=I(H);m=K.add(C),d=B(a.beta,U,M,S,_)}else{let{p:S,f:A}=I(u);d=S,m=A}return It(b,[d,m])[0]}multiplyUnsafe(u){let{endo:a}=t,d=this;if(!o.isValid(u))throw new Error("invalid scalar: out of range");if(u===lt||d.is0())return b.ZERO;if(u===Nt)return d;if(Z.hasCache(this))return this.multiply(u);if(a){let{k1neg:m,k1:I,k2neg:S,k2:A}=D(u),{p1:_,p2:H}=pn(b,d,I,A);return B(a.beta,_,H,m,S)}else return Z.unsafe(d,u)}toAffine(u){return V(this,u)}isTorsionFree(){let{isTorsionFree:u}=t;return i===Nt?!0:u?u(b,this):Z.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:u}=t;return i===Nt?this:u?u(b,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(u=!0){return ut(u,"isCompressed"),this.assertValidity(),E(b,this,u)}toHex(u=!0){return nt(this.toBytes(u))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let q=o.BITS,Z=new Ut(b,t.endo?Math.ceil(q/2):q);return b.BASE.precompute(8),b}function Bn(e){return Uint8Array.of(e?2:3)}function En(e,t){return{secretKey:t.BYTES,publicKey:1+e.BYTES,publicKeyUncompressed:1+2*e.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function or(e,t={}){let{Fn:r}=e,n=t.randomBytes||ht,o=Object.assign(En(e.Fp,r),{seed:ve(r.ORDER)});function f(E){try{let w=r.fromBytes(E);return r.isValidNot0(w)}catch{return!1}}function i(E,w){let{publicKey:L,publicKeyUncompressed:y}=o;try{let g=E.length;return w===!0&&g!==L||w===!1&&g!==y?!1:!!e.fromBytes(E)}catch{return!1}}function c(E=n(o.seed)){return Se(N(E,o.seed,"seed"),r.ORDER)}function s(E,w=!0){return e.BASE.multiply(r.fromBytes(E)).toBytes(w)}function l(E){let{secretKey:w,publicKey:L,publicKeyUncompressed:y}=o;if(!wt(E)||"_lengths"in r&&r._lengths||w===L)return;let g=N(E,void 0,"key").length;return g===L||g===y}function h(E,w,L=!0){if(l(E)===!0)throw new Error("first arg must be private key");if(l(w)===!1)throw new Error("second arg must be public key");let y=r.fromBytes(E);return e.fromBytes(w).multiply(y).toBytes(L)}let x={isValidSecretKey:f,isValidPublicKey:i,randomSecretKey:c},v=qt(c,s);return Object.freeze({getPublicKey:s,getSharedSecret:h,keygen:v,Point:e,utils:x,lengths:o})}function oe(e,t,r={}){Wt(t),it(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),r=Object.assign({},r);let n=r.randomBytes||ht,o=r.hmac||((a,d)=>Re(t,a,d)),{Fp:f,Fn:i}=e,{ORDER:c,BITS:s}=i,{keygen:l,getPublicKey:h,getSharedSecret:x,utils:v,lengths:E}=or(e,r),w={prehash:!0,lowS:typeof r.lowS=="boolean"?r.lowS:!0,format:"compact",extraEntropy:!1},L=c*wn<f.ORDER;function y(a){let d=c>>Nt;return a>d}function g(a,d){if(!i.isValidNot0(d))throw new Error(`invalid signature ${a}: out of range 1..Point.Fn.ORDER`);return d}function R(){if(L)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function p(a,d){He(d);let m=E.signature,I=d==="compact"?m:d==="recovered"?m+1:void 0;return N(a,I)}class T{r;s;recovery;constructor(d,m,I){if(this.r=g("r",d),this.s=g("s",m),I!=null){if(R(),![0,1,2,3].includes(I))throw new Error("invalid recovery id");this.recovery=I}Object.freeze(this)}static fromBytes(d,m=w.format){p(d,m);let I;if(m==="der"){let{r:H,s:U}=pt.toSig(N(d));return new T(H,U)}m==="recovered"&&(I=d[0],m="compact",d=d.subarray(1));let S=E.signature/2,A=d.subarray(0,S),_=d.subarray(S,S*2);return new T(i.fromBytes(A),i.fromBytes(_),I)}static fromHex(d,m){return this.fromBytes(rt(d),m)}assertRecovery(){let{recovery:d}=this;if(d==null)throw new Error("invalid recovery id: must be present");return d}addRecoveryBit(d){return new T(this.r,this.s,d)}recoverPublicKey(d){let{r:m,s:I}=this,S=this.assertRecovery(),A=S===2||S===3?m+c:m;if(!f.isValid(A))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let _=f.toBytes(A),H=e.fromBytes(tt(Bn((S&1)===0),_)),U=i.inv(A),K=V(N(d,void 0,"msgHash")),M=i.create(-K*U),C=i.create(I*U),Y=e.BASE.multiplyUnsafe(M).add(H.multiplyUnsafe(C));if(Y.is0())throw new Error("invalid recovery: point at infinify");return Y.assertValidity(),Y}hasHighS(){return y(this.s)}toBytes(d=w.format){if(He(d),d==="der")return rt(pt.hexFromSig(this));let{r:m,s:I}=this,S=i.toBytes(m),A=i.toBytes(I);return d==="recovered"?(R(),tt(Uint8Array.of(this.assertRecovery()),S,A)):tt(S,A)}toHex(d){return nt(this.toBytes(d))}}let D=r.bits2int||function(d){if(d.length>8192)throw new Error("input is too large");let m=Ot(d),I=d.length*8-s;return I>0?m>>BigInt(I):m},V=r.bits2int_modN||function(d){return i.create(D(d))},k=Xt(s);function B(a){return gt("num < 2^"+s,a,lt,k),i.toBytes(a)}function b(a,d){return N(a,void 0,"message"),d?N(t(a),void 0,"prehashed message"):a}function q(a,d,m){let{lowS:I,prehash:S,extraEntropy:A}=Oe(m,w);a=b(a,S);let _=V(a),H=i.fromBytes(d);if(!i.isValidNot0(H))throw new Error("invalid private key");let U=[B(H),B(_)];if(A!=null&&A!==!1){let Y=A===!0?n(E.secretKey):A;U.push(N(Y,void 0,"extraEntropy"))}let K=tt(...U),M=_;function C(Y){let z=D(Y);if(!i.isValidNot0(z))return;let F=i.inv(z),X=e.BASE.multiply(z).toAffine(),W=i.create(X.x);if(W===lt)return;let At=i.create(F*i.create(M+W*H));if(At===lt)return;let zt=(X.x===W?0:2)|Number(X.y&Nt),Zt=At;return I&&y(At)&&(Zt=i.neg(At),zt^=1),new T(W,Zt,L?void 0:zt)}return{seed:K,k2sig:C}}function Z(a,d,m={}){let{seed:I,k2sig:S}=q(a,d,m);return tn(t.outputLen,i.BYTES,o)(I,S).toBytes(m.format)}function O(a,d,m,I={}){let{lowS:S,prehash:A,format:_}=Oe(I,w);if(m=N(m,void 0,"publicKey"),d=b(d,A),!wt(a)){let H=a instanceof T?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+H)}p(a,_);try{let H=T.fromBytes(a,_),U=e.fromBytes(m);if(S&&H.hasHighS())return!1;let{r:K,s:M}=H,C=V(d),Y=i.inv(M),z=i.create(C*Y),F=i.create(K*Y),X=e.BASE.multiplyUnsafe(z).add(U.multiplyUnsafe(F));return X.is0()?!1:i.create(X.x)===K}catch{return!1}}function u(a,d,m={}){let{prehash:I}=Oe(m,w);return d=b(d,I),T.fromBytes(a,"recovered").recoverPublicKey(d).toBytes()}return Object.freeze({keygen:l,getPublicKey:h,getSharedSecret:x,utils:v,lengths:E,Point:e,sign:Z,verify:O,recoverPublicKey:u,Signature:T,hash:t})}var Ue={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},sr={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var vn=BigInt(2);function ir(e){let t=Ue.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),f=BigInt(22),i=BigInt(23),c=BigInt(44),s=BigInt(88),l=e*e*e%t,h=l*l*e%t,x=G(h,r,t)*h%t,v=G(x,r,t)*h%t,E=G(v,vn,t)*l%t,w=G(E,o,t)*E%t,L=G(w,f,t)*w%t,y=G(L,c,t)*L%t,g=G(y,s,t)*y%t,R=G(g,c,t)*L%t,p=G(R,r,t)*h%t,T=G(p,i,t)*w%t,D=G(T,n,t)*l%t,V=G(D,vn,t);if(!Le.eql(Le.sqr(V),e))throw new Error("Cannot find square root");return V}var Le=Tt(Ue.p,{sqrt:ir}),cr=re(Ue,{Fp:Le,endo:sr}),Sn=oe(cr,Qt);var yt=BigInt(0),P=BigInt(1),qe=BigInt(2),ar=BigInt(8);function dr(e,t,r,n){let o=e.sqr(r),f=e.sqr(n),i=e.add(e.mul(t.a,o),f),c=e.add(e.ONE,e.mul(t.d,e.mul(o,f)));return e.eql(i,c)}function _n(e,t={}){let r=te("edwards",e,t,t.FpFnLE),{Fp:n,Fn:o}=r,f=r.CURVE,{h:i}=f;it(t,{},{uvRatio:"function"});let c=qe<<BigInt(o.BYTES*8)-P,s=y=>n.create(y),l=t.uvRatio||((y,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,g))}}catch{return{isValid:!1,value:yt}}});if(!dr(n,f,f.Gx,f.Gy))throw new Error("bad curve params: generator point");function h(y,g,R=!1){let p=R?P:yt;return gt("coordinate "+y,g,p,c),g}function x(y){if(!(y instanceof w))throw new Error("EdwardsPoint expected")}let v=Ht((y,g)=>{let{X:R,Y:p,Z:T}=y,D=y.is0();g==null&&(g=D?ar:n.inv(T));let V=s(R*g),k=s(p*g),B=n.mul(T,g);if(D)return{x:yt,y:P};if(B!==P)throw new Error("invZ was invalid");return{x:V,y:k}}),E=Ht(y=>{let{a:g,d:R}=f;if(y.is0())throw new Error("bad point: ZERO");let{X:p,Y:T,Z:D,T:V}=y,k=s(p*p),B=s(T*T),b=s(D*D),q=s(b*b),Z=s(k*g),O=s(b*s(Z+B)),u=s(q+s(R*s(k*B)));if(O!==u)throw new Error("bad point: equation left != right (1)");let a=s(p*T),d=s(D*V);if(a!==d)throw new Error("bad point: equation left != right (2)");return!0});class w{static BASE=new w(f.Gx,f.Gy,P,s(f.Gx*f.Gy));static ZERO=new w(yt,P,P,yt);static Fp=n;static Fn=o;X;Y;Z;T;constructor(g,R,p,T){this.X=h("x",g),this.Y=h("y",R),this.Z=h("z",p,!0),this.T=h("t",T),Object.freeze(this)}static CURVE(){return f}static fromAffine(g){if(g instanceof w)throw new Error("extended point not allowed");let{x:R,y:p}=g||{};return h("x",R),h("y",p),new w(R,p,P,s(R*p))}static fromBytes(g,R=!1){let p=n.BYTES,{a:T,d:D}=f;g=vt(N(g,p,"point")),ut(R,"zip215");let V=vt(g),k=g[p-1];V[p-1]=k&-129;let B=st(V),b=R?c:n.ORDER;gt("point.y",B,yt,b);let q=s(B*B),Z=s(q-P),O=s(D*q-T),{isValid:u,value:a}=l(Z,O);if(!u)throw new Error("bad point: invalid y coordinate");let d=(a&P)===P,m=(k&128)!==0;if(!R&&a===yt&&m)throw new Error("bad point: x=0 and x_0=1");return m!==d&&(a=s(-a)),w.fromAffine({x:a,y:B})}static fromHex(g,R=!1){return w.fromBytes(rt(g),R)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,R=!0){return L.createCache(this,g),R||this.multiply(qe),this}assertValidity(){E(this)}equals(g){x(g);let{X:R,Y:p,Z:T}=this,{X:D,Y:V,Z:k}=g,B=s(R*k),b=s(D*T),q=s(p*k),Z=s(V*T);return B===b&&q===Z}is0(){return this.equals(w.ZERO)}negate(){return new w(s(-this.X),this.Y,this.Z,s(-this.T))}double(){let{a:g}=f,{X:R,Y:p,Z:T}=this,D=s(R*R),V=s(p*p),k=s(qe*s(T*T)),B=s(g*D),b=R+p,q=s(s(b*b)-D-V),Z=B+V,O=Z-k,u=B-V,a=s(q*O),d=s(Z*u),m=s(q*u),I=s(O*Z);return new w(a,d,I,m)}add(g){x(g);let{a:R,d:p}=f,{X:T,Y:D,Z:V,T:k}=this,{X:B,Y:b,Z:q,T:Z}=g,O=s(T*B),u=s(D*b),a=s(k*p*Z),d=s(V*q),m=s((T+D)*(B+b)-O-u),I=d-a,S=d+a,A=s(u-R*O),_=s(m*I),H=s(S*A),U=s(m*A),K=s(I*S);return new w(_,H,K,U)}subtract(g){return this.add(g.negate())}multiply(g){if(!o.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:R,f:p}=L.cached(this,g,T=>It(w,T));return It(w,[R,p])[0]}multiplyUnsafe(g,R=w.ZERO){if(!o.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===yt?w.ZERO:this.is0()||g===P?this:L.unsafe(this,g,p=>It(w,p),R)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return L.unsafe(this,f.n).is0()}toAffine(g){return v(this,g)}clearCofactor(){return i===P?this:this.multiplyUnsafe(i)}toBytes(){let{x:g,y:R}=this.toAffine(),p=n.toBytes(R);return p[p.length-1]|=g&P?128:0,p}toHex(){return nt(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let L=new Ut(w,o.BITS);return w.BASE.precompute(8),w}function In(e,t,r={}){if(typeof t!="function")throw new Error('"hash" function param is required');it(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=r,{BASE:o,Fp:f,Fn:i}=e,c=r.randomBytes||ht,s=r.adjustScalarBytes||(B=>B),l=r.domain||((B,b,q)=>{if(ut(q,"phflag"),b.length||q)throw new Error("Contexts/pre-hash are not supported");return B});function h(B){return i.create(st(B))}function x(B){let b=p.secretKey;N(B,p.secretKey,"secretKey");let q=N(t(B),2*b,"hashedSecretKey"),Z=s(q.slice(0,b)),O=q.slice(b,2*b),u=h(Z);return{head:Z,prefix:O,scalar:u}}function v(B){let{head:b,prefix:q,scalar:Z}=x(B),O=o.multiply(Z),u=O.toBytes();return{head:b,prefix:q,scalar:Z,point:O,pointBytes:u}}function E(B){return v(B).pointBytes}function w(B=Uint8Array.of(),...b){let q=tt(...b);return h(t(l(q,N(B,void 0,"context"),!!n)))}function L(B,b,q={}){B=N(B,void 0,"message"),n&&(B=n(B));let{prefix:Z,scalar:O,pointBytes:u}=v(b),a=w(q.context,Z,B),d=o.multiply(a).toBytes(),m=w(q.context,d,u,B),I=i.create(a+m*O);if(!i.isValid(I))throw new Error("sign failed: invalid s");let S=tt(d,i.toBytes(I));return N(S,p.signature,"result")}let y={zip215:!0};function g(B,b,q,Z=y){let{context:O,zip215:u}=Z,a=p.signature;B=N(B,a,"signature"),b=N(b,void 0,"message"),q=N(q,p.publicKey,"publicKey"),u!==void 0&&ut(u,"zip215"),n&&(b=n(b));let d=a/2,m=B.subarray(0,d),I=st(B.subarray(d,a)),S,A,_;try{S=e.fromBytes(q,u),A=e.fromBytes(m,u),_=o.multiplyUnsafe(I)}catch{return!1}if(!u&&S.isSmallOrder())return!1;let H=w(O,A.toBytes(),S.toBytes(),b);return A.add(S.multiplyUnsafe(H)).subtract(_).clearCofactor().is0()}let R=f.BYTES,p={secretKey:R,publicKey:R,signature:2*R,seed:R};function T(B=c(p.seed)){return N(B,p.seed,"seed")}function D(B){return wt(B)&&B.length===i.BYTES}function V(B,b){try{return!!e.fromBytes(B,b)}catch{return!1}}let k={getExtendedPublicKey:v,randomSecretKey:T,isValidSecretKey:D,isValidPublicKey:V,toMontgomery(B){let{y:b}=e.fromBytes(B),q=p.publicKey,Z=q===32;if(!Z&&q!==57)throw new Error("only defined for 25519 and 448");let O=Z?f.div(P+b,P-b):f.div(b-P,b+P);return f.toBytes(O)},toMontgomerySecret(B){let b=p.secretKey;N(B,b);let q=t(B.subarray(0,b));return s(q).subarray(0,b)}};return Object.freeze({keygen:qt(T,E),getPublicKey:E,sign:L,verify:g,utils:k,Point:e,lengths:p})}var jt=BigInt(0),Dt=BigInt(1),fe=BigInt(2);function ur(e){return it(e,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...e})}function An(e){let t=ur(e),{P:r,type:n,adjustScalarBytes:o,powPminus2:f,randomBytes:i}=t,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");let s=i||ht,l=c?255:448,h=c?32:56,x=BigInt(c?9:5),v=BigInt(c?121665:39081),E=c?fe**BigInt(254):fe**BigInt(447),w=c?BigInt(8)*fe**BigInt(251)-Dt:BigInt(4)*fe**BigInt(445)-Dt,L=E+w+Dt,y=a=>j(a,r),g=R(x);function R(a){return Yt(y(a),h)}function p(a){let d=vt(N(a,h,"uCoordinate"));return c&&(d[31]&=127),y(st(d))}function T(a){return st(o(vt(N(a,h,"scalar"))))}function D(a,d){let m=q(p(d),T(a));if(m===jt)throw new Error("invalid private or public key received");return R(m)}function V(a){return D(a,g)}let k=V,B=D;function b(a,d,m){let I=y(a*(d-m));return d=y(d-I),m=y(m+I),{x_2:d,x_3:m}}function q(a,d){gt("u",a,jt,r),gt("scalar",d,E,L);let m=d,I=a,S=Dt,A=jt,_=a,H=Dt,U=jt;for(let M=BigInt(l-1);M>=jt;M--){let C=m>>M&Dt;U^=C,{x_2:S,x_3:_}=b(U,S,_),{x_2:A,x_3:H}=b(U,A,H),U=C;let Y=S+A,z=y(Y*Y),F=S-A,X=y(F*F),W=z-X,At=_+H,zt=_-H,Zt=y(zt*Y),Ne=y(At*F),De=Zt+Ne,Ze=Zt-Ne;_=y(De*De),H=y(I*y(Ze*Ze)),S=y(z*X),A=y(W*(z+y(v*W)))}({x_2:S,x_3:_}=b(U,S,_)),{x_2:A,x_3:H}=b(U,A,H);let K=f(A);return y(S*K)}let Z={secretKey:h,publicKey:h,seed:h},O=(a=s(h))=>(N(a,Z.seed,"seed"),a),u={randomSecretKey:O};return Object.freeze({keygen:qt(O,k),getSharedSecret:B,getPublicKey:k,scalarMult:D,scalarMultBase:V,utils:u,GuBytes:g.slice(),lengths:Z})}var lr=BigInt(1),Rn=BigInt(2),hr=BigInt(3),br=BigInt(5),xr=BigInt(8),se=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),mr={p:se,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:xr,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Hn(e){let t=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),f=se,c=e*e%f*e%f,s=G(c,Rn,f)*c%f,l=G(s,lr,f)*e%f,h=G(l,br,f)*l%f,x=G(h,t,f)*h%f,v=G(x,r,f)*x%f,E=G(v,n,f)*v%f,w=G(E,o,f)*E%f,L=G(w,o,f)*E%f,y=G(L,t,f)*h%f;return{pow_p_5_8:G(y,Rn,f)*e%f,b2:c}}function Tn(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}var On=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function gr(e,t){let r=se,n=j(t*t*t,r),o=j(n*n*t,r),f=Hn(e*o).pow_p_5_8,i=j(e*n*f,r),c=j(t*i*i,r),s=i,l=j(i*On,r),h=c===e,x=c===j(-e,r),v=c===j(-e*On,r);return h&&(i=s),(x||v)&&(i=l),un(i,r)&&(i=j(-i,r)),{isValid:h||x,value:i}}var pr=_n(mr,{uvRatio:gr});function yr(e){return In(pr,me,Object.assign({adjustScalarBytes:Tn},e))}var Ln=yr({});var Un=(()=>{let e=se;return An({P:e,type:"x25519",powPminus2:t=>{let{pow_p_5_8:r,b2:n}=Hn(t);return j(G(r,hr,e)*n,e)},adjustScalarBytes:Tn})})();var wr={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")};var Br=re(wr),qn=oe(Br,Qt);return Mn(Er);})();
4728+/*! Bundled license information:
4730+@noble/hashes/utils.js:
4731+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4733+@noble/curves/utils.js:
4734+@noble/curves/abstract/modular.js:
4735+@noble/curves/abstract/curve.js:
4736+@noble/curves/abstract/weierstrass.js:
4737+@noble/curves/secp256k1.js:
4738+@noble/curves/abstract/edwards.js:
4739+@noble/curves/abstract/montgomery.js:
4740+@noble/curves/ed25519.js:
4741+@noble/curves/nist.js:
4742+ (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4744+/*! Bundled license information:
4746+@noble/hashes/utils.js:
4747+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4749+@noble/curves/utils.js:
4750+@noble/curves/abstract/modular.js:
4751+@noble/curves/abstract/curve.js:
4752+@noble/curves/abstract/weierstrass.js:
4753+@noble/curves/secp256k1.js:
4754+@noble/curves/abstract/edwards.js:
4755+@noble/curves/ed25519.js:
4756+@noble/curves/nist.js:
4757+ (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4763+var _Crypto_toHex = _Crypto_noble.bytesToHex;
4764+var _Crypto_fromHex = _Crypto_noble.hexToBytes;
4767+// DER CODEC (for ECDSA signatures: secp256k1, P-256)
4769+function _Crypto_bigintToBytes(n, len)
4771+ var hex = n.toString(16);
4772+ if (hex.length % 2) { hex = '0' + hex; }
4773+ while (hex.length < len * 2) { hex = '00' + hex; }
4774+ return _Crypto_fromHex(hex);
4777+function _Crypto_bytesToBigint(bytes)
4779+ return BigInt('0x' + _Crypto_toHex(bytes));
4782+function _Crypto_compactToDer(compactHex, byteLen)
4784+ var bytes = _Crypto_fromHex(compactHex);
4785+ var r = bytes.slice(0, byteLen);
4786+ var s = bytes.slice(byteLen);
4787+ function encodeInt(b) {
4788+ // Strip leading zeros, then add back if high bit set
4790+ while (i < b.length - 1 && b[i] === 0) { i++; }
4793+ var padded = new Uint8Array(b.length + 1);
4800+ var rEnc = encodeInt(r);
4801+ var sEnc = encodeInt(s);
4802+ var totalLen = 2 + rEnc.length + 2 + sEnc.length;
4803+ var der = new Uint8Array(2 + totalLen);
4806+ der[pos++] = totalLen;
4808+ der[pos++] = rEnc.length;
4809+ der.set(rEnc, pos); pos += rEnc.length;
4811+ der[pos++] = sEnc.length;
4812+ der.set(sEnc, pos);
4813+ return _Crypto_toHex(der);
4816+function _Crypto_derToCompact(derHex, byteLen)
4818+ var der = _Crypto_fromHex(derHex);
4819+ if (der[0] !== 0x30) { return null; }
4821+ if (der[pos] !== 0x02) { return null; }
4822+ var rLen = der[pos + 1]; pos += 2;
4823+ var rBytes = der.slice(pos, pos + rLen); pos += rLen;
4824+ if (der[pos] !== 0x02) { return null; }
4825+ var sLen = der[pos + 1]; pos += 2;
4826+ var sBytes = der.slice(pos, pos + sLen);
4827+ // Remove leading zero padding
4828+ while (rBytes.length > byteLen) { rBytes = rBytes.slice(1); }
4829+ while (sBytes.length > byteLen) { sBytes = sBytes.slice(1); }
4830+ // Pad to fixed width
4831+ var r = new Uint8Array(byteLen);
4832+ var s = new Uint8Array(byteLen);
4833+ r.set(rBytes, byteLen - rBytes.length);
4834+ s.set(sBytes, byteLen - sBytes.length);
4835+ var compact = new Uint8Array(byteLen * 2);
4837+ compact.set(s, byteLen);
4838+ return _Crypto_toHex(compact);
4844+function _Crypto_secp256k1PrivateKeyFromHex(hex)
4847+ _Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(hex));
4848+ return $elm$core$Maybe$Just(hex);
4850+ return $elm$core$Maybe$Nothing;
4854+function _Crypto_secp256k1PrivateKeyToHex(key)
4859+function _Crypto_secp256k1PublicKeyFromHex(hex)
4862+ _Crypto_noble.secp256k1.Point.fromHex(hex);
4863+ return $elm$core$Maybe$Just(hex);
4865+ return $elm$core$Maybe$Nothing;
4869+function _Crypto_secp256k1PublicKeyToHex(key)
4874+function _Crypto_secp256k1SignatureFromCompactHex(hex)
4877+ var bytes = _Crypto_fromHex(hex);
4878+ if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
4879+ _Crypto_noble.secp256k1.Signature.fromHex(hex);
4880+ return $elm$core$Maybe$Just(hex);
4882+ return $elm$core$Maybe$Nothing;
4886+function _Crypto_secp256k1SignatureFromDerHex(hex)
4889+ var compact = _Crypto_derToCompact(hex, 32);
4890+ if (!compact) { return $elm$core$Maybe$Nothing; }
4891+ _Crypto_noble.secp256k1.Signature.fromHex(compact);
4892+ return $elm$core$Maybe$Just(compact);
4894+ return $elm$core$Maybe$Nothing;
4898+function _Crypto_secp256k1SignatureToCompactHex(sig)
4903+function _Crypto_secp256k1SignatureToDerHex(compactHex)
4905+ return _Crypto_compactToDer(compactHex, 32);
4908+function _Crypto_secp256k1GetPublicKey(privKey)
4910+ return _Crypto_toHex(_Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(privKey)));
4913+var _Crypto_secp256k1Sign = F2(function(msgHash, privKey)
4915+ var sig = _Crypto_noble.secp256k1.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
4916+ return _Crypto_toHex(sig);
4919+var _Crypto_secp256k1Verify = F3(function(sig, msgHash, pubKey)
4922+ return _Crypto_noble.secp256k1.verify(
4923+ _Crypto_fromHex(sig),
4924+ _Crypto_fromHex(msgHash),
4925+ _Crypto_fromHex(pubKey)
4932+var _Crypto_secp256k1GetSharedSecret = F2(function(privKey, pubKey)
4934+ return _Crypto_toHex(_Crypto_noble.secp256k1.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
4940+function _Crypto_ed25519PrivateKeyFromHex(hex)
4943+ _Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(hex));
4944+ return $elm$core$Maybe$Just(hex);
4946+ return $elm$core$Maybe$Nothing;
4950+function _Crypto_ed25519PrivateKeyToHex(key)
4955+function _Crypto_ed25519PublicKeyFromHex(hex)
4958+ _Crypto_noble.ed25519.Point.fromHex(hex);
4959+ return $elm$core$Maybe$Just(hex);
4961+ return $elm$core$Maybe$Nothing;
4965+function _Crypto_ed25519PublicKeyToHex(key)
4970+function _Crypto_ed25519SignatureFromHex(hex)
4973+ var bytes = _Crypto_fromHex(hex);
4974+ if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
4975+ return $elm$core$Maybe$Just(hex);
4977+ return $elm$core$Maybe$Nothing;
4981+function _Crypto_ed25519SignatureToHex(sig)
4986+function _Crypto_ed25519GetPublicKey(privKey)
4988+ return _Crypto_toHex(_Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(privKey)));
4991+var _Crypto_ed25519Sign = F2(function(msg, privKey)
4993+ return _Crypto_toHex(_Crypto_noble.ed25519.sign(_Crypto_fromHex(msg), _Crypto_fromHex(privKey)));
4996+var _Crypto_ed25519Verify = F3(function(sig, msg, pubKey)
4999+ return _Crypto_noble.ed25519.verify(
5000+ _Crypto_fromHex(sig),
5001+ _Crypto_fromHex(msg),
5002+ _Crypto_fromHex(pubKey)
5010+// X25519 (Diffie-Hellman)
5012+function _Crypto_x25519PrivateKeyFromHex(hex)
5015+ var bytes = _Crypto_fromHex(hex);
5016+ if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5017+ _Crypto_noble.x25519.getPublicKey(bytes);
5018+ return $elm$core$Maybe$Just(hex);
5020+ return $elm$core$Maybe$Nothing;
5024+function _Crypto_x25519PrivateKeyToHex(key)
5029+function _Crypto_x25519PublicKeyFromHex(hex)
5032+ var bytes = _Crypto_fromHex(hex);
5033+ if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5034+ return $elm$core$Maybe$Just(hex);
5036+ return $elm$core$Maybe$Nothing;
5040+function _Crypto_x25519PublicKeyToHex(key)
5045+function _Crypto_x25519GetPublicKey(privKey)
5047+ return _Crypto_toHex(_Crypto_noble.x25519.getPublicKey(_Crypto_fromHex(privKey)));
5050+var _Crypto_x25519GetSharedSecret = F2(function(privKey, pubKey)
5052+ return _Crypto_toHex(_Crypto_noble.x25519.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5056+// P-256 (secp256r1)
5058+function _Crypto_p256PrivateKeyFromHex(hex)
5061+ _Crypto_noble.p256.getPublicKey(_Crypto_fromHex(hex));
5062+ return $elm$core$Maybe$Just(hex);
5064+ return $elm$core$Maybe$Nothing;
5068+function _Crypto_p256PrivateKeyToHex(key)
5073+function _Crypto_p256PublicKeyFromHex(hex)
5076+ _Crypto_noble.p256.Point.fromHex(hex);
5077+ return $elm$core$Maybe$Just(hex);
5079+ return $elm$core$Maybe$Nothing;
5083+function _Crypto_p256PublicKeyToHex(key)
5088+function _Crypto_p256SignatureFromCompactHex(hex)
5091+ var bytes = _Crypto_fromHex(hex);
5092+ if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
5093+ _Crypto_noble.p256.Signature.fromHex(hex);
5094+ return $elm$core$Maybe$Just(hex);
5096+ return $elm$core$Maybe$Nothing;
5100+function _Crypto_p256SignatureFromDerHex(hex)
5103+ var compact = _Crypto_derToCompact(hex, 32);
5104+ if (!compact) { return $elm$core$Maybe$Nothing; }
5105+ _Crypto_noble.p256.Signature.fromHex(compact);
5106+ return $elm$core$Maybe$Just(compact);
5108+ return $elm$core$Maybe$Nothing;
5112+function _Crypto_p256SignatureToCompactHex(sig)
5117+function _Crypto_p256SignatureToDerHex(compactHex)
5119+ return _Crypto_compactToDer(compactHex, 32);
5122+function _Crypto_p256GetPublicKey(privKey)
5124+ return _Crypto_toHex(_Crypto_noble.p256.getPublicKey(_Crypto_fromHex(privKey)));
5127+var _Crypto_p256Sign = F2(function(msgHash, privKey)
5129+ var sig = _Crypto_noble.p256.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
5130+ return _Crypto_toHex(sig);
5133+var _Crypto_p256Verify = F3(function(sig, msgHash, pubKey)
5136+ return _Crypto_noble.p256.verify(
5137+ _Crypto_fromHex(sig),
5138+ _Crypto_fromHex(msgHash),
5139+ _Crypto_fromHex(pubKey)
5146+var _Crypto_p256GetSharedSecret = F2(function(privKey, pubKey)
5148+ return _Crypto_toHex(_Crypto_noble.p256.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5152+// NOBLE/CIPHERS BUNDLE (https://github.com/paulmillr/noble-ciphers, MIT License)
5153+// Embedded: @noble/ciphers - AES-GCM, ChaCha20-Poly1305, XChaCha20-Poly1305
5155+var _Crypto_ciphers =(()=>{var _t=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var xe=(e,t)=>{for(var n in t)_t(e,n,{get:t[n],enumerable:!0})},me=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of we(t))!be.call(e,o)&&o!==n&&_t(e,o,{get:()=>t[o],enumerable:!(r=de(t,o))||r.enumerable});return e};var Le=e=>me(_t({},"_"+"_esModule",{value:!0}),e);var Ge={};xe(Ge,{cbc:()=>ne,cfb:()=>re,chacha20poly1305:()=>pe,ctr:()=>Gt,ecb:()=>ee,gcm:()=>oe,managedNonce:()=>Vt,randomBytes:()=>xt,siv:()=>se,xchacha20poly1305:()=>ye});function Ee(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function yt(e){if(typeof e!="boolean")throw new Error(`boolean expected, not ${e}`)}function ht(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function E(e,t,n=""){let r=Ee(e),o=e?.length,s=t!==void 0;if(!r||s&&o!==t){let i=n&&`"${n}" `,c=s?` of length ${t}`:"",f=r?`length=${o}`:`type=${typeof e}`;throw new Error(i+"expected Uint8Array"+c+", got "+f)}return e}function et(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function gt(e,t){E(e,void 0,"output");let n=t.outputLen;if(e.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function dt(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function A(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function B(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function at(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}var Ue=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function vt(e,t){return e.buffer===t.buffer&&e.byteOffset<t.byteOffset+t.byteLength&&t.byteOffset<e.byteOffset+e.byteLength}function pt(e,t){if(vt(e,t)&&e.byteOffset<t.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Ct(...e){let t=0;for(let r=0;r<e.length;r++){let o=e[r];E(o),t+=o.length}let n=new Uint8Array(t);for(let r=0,o=0;r<e.length;r++){let s=e[r];n.set(s,o),o+=s.length}return n}function jt(e,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(e,t)}function wt(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}var D=(e,t)=>{function n(r,...o){if(E(r,void 0,"key"),!Ue)throw new Error("Non little-endian hardware is not yet supported");if(e.nonceLength!==void 0){let h=o[0];E(h,e.varSizeNonce?void 0:e.nonceLength,"nonce")}let s=e.tagLength;s&&o[1]!==void 0&&E(o[1],void 0,"AAD");let i=t(r,...o),c=(h,a)=>{if(a!==void 0){if(h!==2)throw new Error("cipher output not supported");E(a,void 0,"output")}},f=!1;return{encrypt(h,a){if(f)throw new Error("cannot encrypt() twice with same key + nonce");return f=!0,E(h),c(i.encrypt.length,a),i.encrypt(h,a)},decrypt(h,a){if(E(h),s&&h.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return c(i.decrypt.length,a),i.decrypt(h,a)}}}return Object.assign(n,e),n};function Q(e,t,n=!0){if(t===void 0)return new Uint8Array(e);if(t.length!==e)throw new Error('"output" expected Uint8Array of length '+e+", got: "+t.length);if(n&&!Z(t))throw new Error("invalid output, must be aligned");return t}function bt(e,t,n){yt(n);let r=new Uint8Array(16),o=at(r);return o.setBigUint64(0,BigInt(t),n),o.setBigUint64(8,BigInt(e),n),r}function Z(e){return e.byteOffset%4===0}function z(e){return Uint8Array.from(e)}function xt(e=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(e))}function Vt(e,t=xt){let{nonceLength:n}=e;ht(n);let r=(o,s)=>{let i=Ct(o,s);return s.fill(0),i};return((o,...s)=>({encrypt(i){E(i);let c=t(n),f=e(o,c,...s).encrypt(i);return f instanceof Promise?f.then(l=>r(c,l)):r(c,f)},decrypt(i){E(i);let c=i.subarray(0,n),f=i.subarray(n);return e(o,c,...s).decrypt(f)}}))}var tt=16,Tt=new Uint8Array(16),G=A(Tt),Ae=225,Be=(e,t,n,r)=>{let o=r&1;return{s3:n<<31|r>>>1,s2:t<<31|n>>>1,s1:e<<31|t>>>1,s0:e>>>1^Ae<<24&-(o&1)}},F=e=>(e>>>0&255)<<24|(e>>>8&255)<<16|(e>>>16&255)<<8|e>>>24&255|0;function _e(e){e.reverse();let t=e[15]&1,n=0;for(let r=0;r<e.length;r++){let o=e[r];e[r]=o>>>1|n,n=(o&1)<<7}return e[0]^=-t&225,e}var ve=e=>e>64*1024?8:e>1024?4:2,mt=class{blockLen=tt;outputLen=tt;s0=0;s1=0;s2=0;s3=0;finished=!1;t;W;windowSize;constructor(t,n){E(t,16,"key"),t=z(t);let r=at(t),o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),c=r.getUint32(12,!1),f=[];for(let u=0;u<128;u++)f.push({s0:F(o),s1:F(s),s2:F(i),s3:F(c)}),{s0:o,s1:s,s2:i,s3:c}=Be(o,s,i,c);let l=ve(n||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let a=128/l,p=this.windowSize=2**l,g=[];for(let u=0;u<a;u++)for(let y=0;y<p;y++){let d=0,w=0,b=0,U=0;for(let L=0;L<l;L++){if(!(y>>>l-L-1&1))continue;let{s0:v,s1:j,s2:V,s3:_}=f[l*u+L];d^=v,w^=j,b^=V,U^=_}g.push({s0:d,s1:w,s2:b,s3:U})}this.t=g}_updateBlock(t,n,r,o){t^=this.s0,n^=this.s1,r^=this.s2,o^=this.s3;let{W:s,t:i,windowSize:c}=this,f=0,l=0,h=0,a=0,p=(1<<s)-1,g=0;for(let u of[t,n,r,o])for(let y=0;y<4;y++){let d=u>>>8*y&255;for(let w=8/s-1;w>=0;w--){let b=d>>>s*w&p,{s0:U,s1:L,s2:C,s3:v}=i[g*c+b];f^=U,l^=L,h^=C,a^=v,g+=1}}this.s0=f,this.s1=l,this.s2=h,this.s3=a}update(t){et(this),E(t),t=z(t);let n=A(t),r=Math.floor(t.length/tt),o=t.length%tt;for(let s=0;s<r;s++)this._updateBlock(n[s*4+0],n[s*4+1],n[s*4+2],n[s*4+3]);return o&&(Tt.set(t.subarray(r*tt)),this._updateBlock(G[0],G[1],G[2],G[3]),B(G)),this}destroy(){let{t}=this;for(let n of t)n.s0=0,n.s1=0,n.s2=0,n.s3=0}digestInto(t){et(this),gt(t,this),this.finished=!0;let{s0:n,s1:r,s2:o,s3:s}=this,i=A(t);return i[0]=n,i[1]=r,i[2]=o,i[3]=s,t}digest(){let t=new Uint8Array(tt);return this.digestInto(t),this.destroy(),t}},St=class extends mt{constructor(t,n){E(t);let r=_e(z(t));super(r,n),B(r)}update(t){et(this),E(t),t=z(t);let n=A(t),r=t.length%tt,o=Math.floor(t.length/tt);for(let s=0;s<o;s++)this._updateBlock(F(n[s*4+3]),F(n[s*4+2]),F(n[s*4+1]),F(n[s*4+0]));return r&&(Tt.set(t.subarray(o*tt)),this._updateBlock(F(G[3]),F(G[2]),F(G[1]),F(G[0])),B(G)),this}digestInto(t){et(this),gt(t,this),this.finished=!0;let{s0:n,s1:r,s2:o,s3:s}=this,i=A(t);return i[0]=n,i[1]=r,i[2]=o,i[3]=s,t.reverse()}};function Ht(e){let t=(r,o)=>e(o,r.length).update(r).digest(),n=e(new Uint8Array(16),0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=(r,o)=>e(r,o),t}var It=Ht((e,t)=>new mt(e,t)),Ce=Ht((e,t)=>new St(e,t));var R=16,Nt=4,Lt=new Uint8Array(R);var Se=283;function $t(e){if(![16,24,32].includes(e.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+e.length)}function Mt(e){return e<<1^Se&-(e>>7)}function ut(e,t){let n=0;for(;t>0;t>>=1)n^=e&-(t&1),e=Mt(e);return n}var Te=(e,t,n=1)=>{if(!Number.isSafeInteger(n))throw new Error("incBytes: wrong carry "+n);E(e);for(let r=0;r<e.length;r++){let o=t?r:e.length-1-r;n=n+(e[o]&255)|0,e[o]=n&255,n>>>=8}},kt=(()=>{let e=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Mt(r))e[n]=r;let t=new Uint8Array(256);t[0]=99;for(let n=0;n<255;n++){let r=e[255-n];r|=r<<8,t[e[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return B(e),t})(),Ie=kt.map((e,t)=>kt.indexOf(t)),Ke=e=>e<<24|e>>>8,Kt=e=>e<<8|e>>>24;function Zt(e,t){if(e.length!==256)throw new Error("Wrong sbox length");let n=new Uint32Array(256).map((l,h)=>t(e[h])),r=n.map(Kt),o=r.map(Kt),s=o.map(Kt),i=new Uint32Array(256*256),c=new Uint32Array(256*256),f=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let h=0;h<256;h++){let a=l*256+h;i[a]=n[l]^r[h],c[a]=o[l]^s[h],f[a]=e[l]<<8|e[h]}return{sbox:e,sbox2:f,T0:n,T1:r,T2:o,T3:s,T01:i,T23:c}}var Pt=Zt(kt,e=>ut(e,3)<<24|e<<16|e<<8|ut(e,2)),Ft=Zt(Ie,e=>ut(e,11)<<24|ut(e,13)<<16|ut(e,9)<<8|ut(e,14)),Oe=(()=>{let e=new Uint8Array(16);for(let t=0,n=1;t<16;t++,n=Mt(n))e[t]=n;return e})();function rt(e){E(e);let t=e.length;$t(e);let{sbox2:n}=Pt,r=[];Z(e)||r.push(e=z(e));let o=A(e),s=o.length,i=f=>J(n,f,f,f,f),c=new Uint32Array(t+28);c.set(o);for(let f=s;f<c.length;f++){let l=c[f-1];f%s===0?l=i(Ke(l))^Oe[f/s-1]:s>6&&f%s===4&&(l=i(l)),c[f]=c[f-s]^l}return B(...r),c}function Yt(e){let t=rt(e),n=t.slice(),r=t.length,{sbox2:o}=Pt,{T0:s,T1:i,T2:c,T3:f}=Ft;for(let l=0;l<r;l+=4)for(let h=0;h<4;h++)n[l+h]=t[r-l-4+h];B(t);for(let l=4;l<r-4;l++){let h=n[l],a=J(o,h,h,h,h);n[l]=s[a&255]^i[a>>>8&255]^c[a>>>16&255]^f[a>>>24]}return n}function nt(e,t,n,r,o,s){return e[n<<8&65280|r>>>8&255]^t[o>>>8&65280|s>>>24&255]}function J(e,t,n,r,o){return e[t&255|n&65280]|e[r>>>16&255|o>>>16&65280]<<16}function Y(e,t,n,r,o){let{sbox2:s,T01:i,T23:c}=Pt,f=0;t^=e[f++],n^=e[f++],r^=e[f++],o^=e[f++];let l=e.length/4-2;for(let u=0;u<l;u++){let y=e[f++]^nt(i,c,t,n,r,o),d=e[f++]^nt(i,c,n,r,o,t),w=e[f++]^nt(i,c,r,o,t,n),b=e[f++]^nt(i,c,o,t,n,r);t=y,n=d,r=w,o=b}let h=e[f++]^J(s,t,n,r,o),a=e[f++]^J(s,n,r,o,t),p=e[f++]^J(s,r,o,t,n),g=e[f++]^J(s,o,t,n,r);return{s0:h,s1:a,s2:p,s3:g}}function Qt(e,t,n,r,o){let{sbox2:s,T01:i,T23:c}=Ft,f=0;t^=e[f++],n^=e[f++],r^=e[f++],o^=e[f++];let l=e.length/4-2;for(let u=0;u<l;u++){let y=e[f++]^nt(i,c,t,o,r,n),d=e[f++]^nt(i,c,n,t,o,r),w=e[f++]^nt(i,c,r,n,t,o),b=e[f++]^nt(i,c,o,r,n,t);t=y,n=d,r=w,o=b}let h=e[f++]^J(s,t,o,r,n),a=e[f++]^J(s,n,t,o,r),p=e[f++]^J(s,r,n,t,o),g=e[f++]^J(s,o,r,n,t);return{s0:h,s1:a,s2:p,s3:g}}function ke(e,t,n,r){E(t,R,"nonce"),E(n);let o=n.length;r=Q(o,r),pt(n,r);let s=t,i=A(s),{s0:c,s1:f,s2:l,s3:h}=Y(e,i[0],i[1],i[2],i[3]),a=A(n),p=A(r);for(let u=0;u+4<=a.length;u+=4)p[u+0]=a[u+0]^c,p[u+1]=a[u+1]^f,p[u+2]=a[u+2]^l,p[u+3]=a[u+3]^h,Te(s,!1,1),{s0:c,s1:f,s2:l,s3:h}=Y(e,i[0],i[1],i[2],i[3]);let g=R*Math.floor(a.length/Nt);if(g<o){let u=new Uint32Array([c,f,l,h]),y=dt(u);for(let d=g,w=0;d<o;d++,w++)r[d]=n[d]^y[w];B(u)}return r}function Et(e,t,n,r,o){E(n,R,"nonce"),E(r),o=Q(r.length,o);let s=n,i=A(s),c=at(s),f=A(r),l=A(o),h=t?0:12,a=r.length,p=c.getUint32(h,t),{s0:g,s1:u,s2:y,s3:d}=Y(e,i[0],i[1],i[2],i[3]);for(let b=0;b+4<=f.length;b+=4)l[b+0]=f[b+0]^g,l[b+1]=f[b+1]^u,l[b+2]=f[b+2]^y,l[b+3]=f[b+3]^d,p=p+1>>>0,c.setUint32(h,p,t),{s0:g,s1:u,s2:y,s3:d}=Y(e,i[0],i[1],i[2],i[3]);let w=R*Math.floor(f.length/Nt);if(w<a){let b=new Uint32Array([g,u,y,d]),U=dt(b);for(let L=w,C=0;L<a;L++,C++)o[L]=r[L]^U[C];B(b)}return o}var Gt=D({blockSize:16,nonceLength:16},function(t,n){function r(o,s){if(E(o),s!==void 0&&(E(s),!Z(s)))throw new Error("unaligned destination");let i=rt(t),c=z(n),f=[i,c];Z(o)||f.push(o=z(o));let l=ke(i,c,o,s);return B(...f),l}return{encrypt:(o,s)=>r(o,s),decrypt:(o,s)=>r(o,s)}});function Jt(e){if(E(e),e.length%R!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+R)}function Xt(e,t,n){E(e);let r=e.length,o=r%R;if(!t&&o!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");Z(e)||(e=z(e));let s=A(e);if(t){let c=R-o;c||(c=R),r=r+c}n=Q(r,n),pt(e,n);let i=A(n);return{b:s,o:i,out:n}}function Dt(e,t){if(!t)return e;let n=e.length;if(!n)throw new Error("aes/pcks5: empty ciphertext not allowed");let r=e[n-1];if(r<=0||r>16)throw new Error("aes/pcks5: wrong padding");let o=e.subarray(0,-r);for(let s=0;s<r;s++)if(e[n-s-1]!==r)throw new Error("aes/pcks5: wrong padding");return o}function te(e){let t=new Uint8Array(16),n=A(t);t.set(e);let r=R-e.length;for(let o=R-r;o<R;o++)t[o]=r;return n}var ee=D({blockSize:16},function(t,n={}){let r=!n.disablePadding;return{encrypt(o,s){let{b:i,o:c,out:f}=Xt(o,r,s),l=rt(t),h=0;for(;h+4<=i.length;){let{s0:a,s1:p,s2:g,s3:u}=Y(l,i[h+0],i[h+1],i[h+2],i[h+3]);c[h++]=a,c[h++]=p,c[h++]=g,c[h++]=u}if(r){let a=te(o.subarray(h*4)),{s0:p,s1:g,s2:u,s3:y}=Y(l,a[0],a[1],a[2],a[3]);c[h++]=p,c[h++]=g,c[h++]=u,c[h++]=y}return B(l),f},decrypt(o,s){Jt(o);let i=Yt(t);s=Q(o.length,s);let c=[i];Z(o)||c.push(o=z(o)),pt(o,s);let f=A(o),l=A(s);for(let h=0;h+4<=f.length;){let{s0:a,s1:p,s2:g,s3:u}=Qt(i,f[h+0],f[h+1],f[h+2],f[h+3]);l[h++]=a,l[h++]=p,l[h++]=g,l[h++]=u}return B(...c),Dt(s,r)}}}),ne=D({blockSize:16,nonceLength:16},function(t,n,r={}){let o=!r.disablePadding;return{encrypt(s,i){let c=rt(t),{b:f,o:l,out:h}=Xt(s,o,i),a=n,p=[c];Z(a)||p.push(a=z(a));let g=A(a),u=g[0],y=g[1],d=g[2],w=g[3],b=0;for(;b+4<=f.length;)u^=f[b+0],y^=f[b+1],d^=f[b+2],w^=f[b+3],{s0:u,s1:y,s2:d,s3:w}=Y(c,u,y,d,w),l[b++]=u,l[b++]=y,l[b++]=d,l[b++]=w;if(o){let U=te(s.subarray(b*4));u^=U[0],y^=U[1],d^=U[2],w^=U[3],{s0:u,s1:y,s2:d,s3:w}=Y(c,u,y,d,w),l[b++]=u,l[b++]=y,l[b++]=d,l[b++]=w}return B(...p),h},decrypt(s,i){Jt(s);let c=Yt(t),f=n,l=[c];Z(f)||l.push(f=z(f));let h=A(f);i=Q(s.length,i),Z(s)||l.push(s=z(s)),pt(s,i);let a=A(s),p=A(i),g=h[0],u=h[1],y=h[2],d=h[3];for(let w=0;w+4<=a.length;){let b=g,U=u,L=y,C=d;g=a[w+0],u=a[w+1],y=a[w+2],d=a[w+3];let{s0:v,s1:j,s2:V,s3:_}=Qt(c,g,u,y,d);p[w++]=v^b,p[w++]=j^U,p[w++]=V^L,p[w++]=_^C}return B(...l),Dt(i,o)}}}),re=D({blockSize:16,nonceLength:16},function(t,n){function r(o,s,i){E(o);let c=o.length;if(i=Q(c,i),vt(o,i))throw new Error("overlapping src and dst not supported.");let f=rt(t),l=n,h=[f];Z(l)||h.push(l=z(l)),Z(o)||h.push(o=z(o));let a=A(o),p=A(i),g=s?p:a,u=A(l),y=u[0],d=u[1],w=u[2],b=u[3];for(let L=0;L+4<=a.length;){let{s0:C,s1:v,s2:j,s3:V}=Y(f,y,d,w,b);p[L+0]=a[L+0]^C,p[L+1]=a[L+1]^v,p[L+2]=a[L+2]^j,p[L+3]=a[L+3]^V,y=g[L++],d=g[L++],w=g[L++],b=g[L++]}let U=R*Math.floor(a.length/Nt);if(U<c){({s0:y,s1:d,s2:w,s3:b}=Y(f,y,d,w,b));let L=dt(new Uint32Array([y,d,w,b]));for(let C=U,v=0;C<c;C++,v++)i[C]=o[C]^L[v];B(L)}return B(...h),i}return{encrypt:(o,s)=>r(o,!0,s),decrypt:(o,s)=>r(o,!1,s)}});function Ne(e,t,n,r,o){let s=o?o.length:0,i=e.create(n,r.length+s);o&&i.update(o);let c=bt(8*r.length,8*s,t);i.update(r),i.update(c);let f=i.digest();return B(c),f}var oe=D({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(t,n,r){if(n.length<8)throw new Error("aes/gcm: invalid nonce length");let o=16;function s(c,f,l){let h=Ne(It,!1,c,l,r);for(let a=0;a<f.length;a++)h[a]^=f[a];return h}function i(){let c=rt(t),f=Lt.slice(),l=Lt.slice();if(Et(c,!1,l,l,f),n.length===12)l.set(n);else{let a=Lt.slice();at(a).setBigUint64(8,BigInt(n.length*8),!1);let g=It.create(f).update(n).update(a);g.digestInto(l),g.destroy()}let h=Et(c,!1,l,Lt);return{xk:c,authKey:f,counter:l,tagMask:h}}return{encrypt(c){let{xk:f,authKey:l,counter:h,tagMask:a}=i(),p=new Uint8Array(c.length+o),g=[f,l,h,a];Z(c)||g.push(c=z(c)),Et(f,!1,h,c,p.subarray(0,c.length));let u=s(l,a,p.subarray(0,p.length-o));return g.push(u),p.set(u,c.length),B(...g),p},decrypt(c){let{xk:f,authKey:l,counter:h,tagMask:a}=i(),p=[f,l,a,h];Z(c)||p.push(c=z(c));let g=c.subarray(0,-o),u=c.subarray(-o),y=s(l,a,g);if(p.push(y),!wt(y,u))throw new Error("aes/gcm: invalid ghash tag");let d=Et(f,!1,h,g);return B(...p),d}}});function Me(e){return e instanceof Uint32Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint32Array"}function Ot(e,t){if(E(t,16,"block"),!Me(e))throw new Error("_encryptBlock accepts result of expandKeyLE");let n=A(t),{s0:r,s1:o,s2:s,s3:i}=Y(e,n[0],n[1],n[2],n[3]);return n[0]=r,n[1]=o,n[2]=s,n[3]=i,t}function qt(e){let t=0;for(let n=R-1;n>=0;n--){let r=(e[n]&128)>>>7;e[n]=e[n]<<1|t,t=r}return t&&(e[R-1]^=135),e}function Ut(e,t){if(e.length!==t.length)throw new Error("xorBlock: blocks must have same length");for(let n=0;n<e.length;n++)e[n]=e[n]^t[n];return e}var At=class{buffer;destroyed;k1;k2;xk;constructor(t){E(t),$t(t),this.xk=rt(t),this.buffer=new Uint8Array(0),this.destroyed=!1;let n=new Uint8Array(R);Ot(this.xk,n),this.k1=qt(n),this.k2=qt(new Uint8Array(this.k1))}update(t){let{destroyed:n,buffer:r}=this;if(n)throw new Error("CMAC instance was destroyed");E(t);let o=new Uint8Array(r.length+t.length);return o.set(r),o.set(t,r.length),this.buffer=o,this}digest(){if(this.destroyed)throw new Error("CMAC instance was destroyed");let{buffer:t}=this,n=t.length,r=Math.ceil(n/R),o;r===0?(r=1,o=!1):o=n%R===0;let s=(r-1)*R,i=t.subarray(s),c;if(o)c=Ut(new Uint8Array(i),this.k1);else{let l=new Uint8Array(R);l.set(i),l[i.length]=128,c=Ut(l,this.k2)}let f=new Uint8Array(R);for(let l=0;l<r-1;l++){let h=t.subarray(l*R,(l+1)*R);Ut(f,h),Ot(this.xk,f)}return Ut(f,c),Ot(this.xk,f),B(c),f}destroy(){let{buffer:t,destroyed:n,xk:r,k1:o,k2:s}=this;n||(this.destroyed=!0,B(t,r,o,s))}},Pe=(e,t)=>new At(e).update(t).digest();Pe.create=e=>new At(e);var se=()=>{throw new Error('"siv" from v1 is now "gcmsiv"')};var ie=e=>Uint8Array.from(e.split(""),t=>t.charCodeAt(0)),ze=ie("expand 16-byte k"),Re=ie("expand 32-byte k"),We=A(ze),je=A(Re);function x(e,t){return e<<t|e>>>32-t}function zt(e){return e.byteOffset%4===0}var Bt=64,Ve=16,fe=2**32-1,ce=Uint32Array.of();function He(e,t,n,r,o,s,i,c){let f=o.length,l=new Uint8Array(Bt),h=A(l),a=zt(o)&&zt(s),p=a?A(o):ce,g=a?A(s):ce;for(let u=0;u<f;i++){if(e(t,n,r,h,i,c),i>=fe)throw new Error("arx: counter overflow");let y=Math.min(Bt,f-u);if(a&&y===Bt){let d=u/4;if(u%4!==0)throw new Error("arx: invalid block position");for(let w=0,b;w<Ve;w++)b=d+w,g[b]=p[b]^h[w];u+=Bt;continue}for(let d=0,w;d<y;d++)w=u+d,s[w]=o[w]^l[d];u+=y}}function Rt(e,t){let{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=jt({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof e!="function")throw new Error("core must be a function");return ht(o),ht(i),yt(s),yt(n),(c,f,l,h,a=0)=>{E(c,void 0,"key"),E(f,void 0,"nonce"),E(l,void 0,"data");let p=l.length;if(h===void 0&&(h=new Uint8Array(p)),E(h,void 0,"output"),ht(a),a<0||a>=fe)throw new Error("arx: counter overflow");if(h.length<p)throw new Error(`arx: output (${h.length}) is shorter than data (${p})`);let g=[],u=c.length,y,d;if(u===32)g.push(y=z(c)),d=je;else if(u===16&&n)y=new Uint8Array(32),y.set(c),y.set(c,16),d=We,g.push(y);else throw E(c,32,"arx key"),new Error("invalid key size");zt(f)||g.push(f=z(f));let w=A(y);if(r){if(f.length!==24)throw new Error("arx: extended nonce must be 24 bytes");r(d,w,A(f.subarray(0,16)),w),f=f.subarray(16)}let b=16-o;if(b!==f.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let L=new Uint8Array(12);L.set(f,s?0:12-f.length),f=L,g.push(f)}let U=A(f);return He(e,d,w,U,l,h,a,i),B(...g),h}}function $(e,t){return e[t++]&255|(e[t++]&255)<<8}var Wt=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;constructor(t){t=z(E(t,32,"key"));let n=$(t,0),r=$(t,2),o=$(t,4),s=$(t,6),i=$(t,8),c=$(t,10),f=$(t,12),l=$(t,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|c<<2)&8191,this.r[7]=(c>>>11|f<<5)&8065,this.r[8]=(f>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let h=0;h<8;h++)this.pad[h]=$(t,16+2*h)}process(t,n,r=!1){let o=r?0:2048,{h:s,r:i}=this,c=i[0],f=i[1],l=i[2],h=i[3],a=i[4],p=i[5],g=i[6],u=i[7],y=i[8],d=i[9],w=$(t,n+0),b=$(t,n+2),U=$(t,n+4),L=$(t,n+6),C=$(t,n+8),v=$(t,n+10),j=$(t,n+12),V=$(t,n+14),_=s[0]+(w&8191),S=s[1]+((w>>>13|b<<3)&8191),T=s[2]+((b>>>10|U<<6)&8191),I=s[3]+((U>>>7|L<<9)&8191),K=s[4]+((L>>>4|C<<12)&8191),O=s[5]+(C>>>1&8191),k=s[6]+((C>>>14|v<<2)&8191),N=s[7]+((v>>>11|j<<5)&8191),M=s[8]+((j>>>8|V<<8)&8191),P=s[9]+(V>>>5|o),m=0,H=m+_*c+S*(5*d)+T*(5*y)+I*(5*u)+K*(5*g);m=H>>>13,H&=8191,H+=O*(5*p)+k*(5*a)+N*(5*h)+M*(5*l)+P*(5*f),m+=H>>>13,H&=8191;let q=m+_*f+S*c+T*(5*d)+I*(5*y)+K*(5*u);m=q>>>13,q&=8191,q+=O*(5*g)+k*(5*p)+N*(5*a)+M*(5*h)+P*(5*l),m+=q>>>13,q&=8191;let W=m+_*l+S*f+T*c+I*(5*d)+K*(5*y);m=W>>>13,W&=8191,W+=O*(5*u)+k*(5*g)+N*(5*p)+M*(5*a)+P*(5*h),m+=W>>>13,W&=8191;let X=m+_*h+S*l+T*f+I*c+K*(5*d);m=X>>>13,X&=8191,X+=O*(5*y)+k*(5*u)+N*(5*g)+M*(5*p)+P*(5*a),m+=X>>>13,X&=8191;let ot=m+_*a+S*h+T*l+I*f+K*c;m=ot>>>13,ot&=8191,ot+=O*(5*d)+k*(5*y)+N*(5*u)+M*(5*g)+P*(5*p),m+=ot>>>13,ot&=8191;let st=m+_*p+S*a+T*h+I*l+K*f;m=st>>>13,st&=8191,st+=O*c+k*(5*d)+N*(5*y)+M*(5*u)+P*(5*g),m+=st>>>13,st&=8191;let ct=m+_*g+S*p+T*a+I*h+K*l;m=ct>>>13,ct&=8191,ct+=O*f+k*c+N*(5*d)+M*(5*y)+P*(5*u),m+=ct>>>13,ct&=8191;let it=m+_*u+S*g+T*p+I*a+K*h;m=it>>>13,it&=8191,it+=O*l+k*f+N*c+M*(5*d)+P*(5*y),m+=it>>>13,it&=8191;let ft=m+_*y+S*u+T*g+I*p+K*a;m=ft>>>13,ft&=8191,ft+=O*h+k*l+N*f+M*c+P*(5*d),m+=ft>>>13,ft&=8191;let lt=m+_*d+S*y+T*u+I*g+K*p;m=lt>>>13,lt&=8191,lt+=O*a+k*h+N*l+M*f+P*c,m+=lt>>>13,lt&=8191,m=(m<<2)+m|0,m=m+H|0,H=m&8191,m=m>>>13,q+=m,s[0]=H,s[1]=q,s[2]=W,s[3]=X,s[4]=ot,s[5]=st,s[6]=ct,s[7]=it,s[8]=ft,s[9]=lt}finalize(){let{h:t,pad:n}=this,r=new Uint16Array(10),o=t[1]>>>13;t[1]&=8191;for(let c=2;c<10;c++)t[c]+=o,o=t[c]>>>13,t[c]&=8191;t[0]+=o*5,o=t[0]>>>13,t[0]&=8191,t[1]+=o,o=t[1]>>>13,t[1]&=8191,t[2]+=o,r[0]=t[0]+5,o=r[0]>>>13,r[0]&=8191;for(let c=1;c<10;c++)r[c]=t[c]+o,o=r[c]>>>13,r[c]&=8191;r[9]-=8192;let s=(o^1)-1;for(let c=0;c<10;c++)r[c]&=s;s=~s;for(let c=0;c<10;c++)t[c]=t[c]&s|r[c];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let i=t[0]+n[0];t[0]=i&65535;for(let c=1;c<8;c++)i=(t[c]+n[c]|0)+(i>>>16)|0,t[c]=i&65535;B(r)}update(t){et(this),E(t),t=z(t);let{buffer:n,blockLen:r}=this,o=t.length;for(let s=0;s<o;){let i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(t,s);continue}n.set(t.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){B(this.h,this.r,this.buffer,this.pad)}digestInto(t){et(this),gt(t,this),this.finished=!0;let{buffer:n,h:r}=this,{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)t[s++]=r[i]>>>0,t[s++]=r[i]>>>8;return t}digest(){let{buffer:t,outputLen:n}=this;this.digestInto(t);let r=t.slice(0,n);return this.destroy(),r}};function qe(e){let t=(r,o)=>e(o).update(r).digest(),n=e(new Uint8Array(32));return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=r=>e(r),t}var le=qe(e=>new Wt(e));function ue(e,t,n,r,o,s=20){let i=e[0],c=e[1],f=e[2],l=e[3],h=t[0],a=t[1],p=t[2],g=t[3],u=t[4],y=t[5],d=t[6],w=t[7],b=o,U=n[0],L=n[1],C=n[2],v=i,j=c,V=f,_=l,S=h,T=a,I=p,K=g,O=u,k=y,N=d,M=w,P=b,m=U,H=L,q=C;for(let X=0;X<s;X+=2)v=v+S|0,P=x(P^v,16),O=O+P|0,S=x(S^O,12),v=v+S|0,P=x(P^v,8),O=O+P|0,S=x(S^O,7),j=j+T|0,m=x(m^j,16),k=k+m|0,T=x(T^k,12),j=j+T|0,m=x(m^j,8),k=k+m|0,T=x(T^k,7),V=V+I|0,H=x(H^V,16),N=N+H|0,I=x(I^N,12),V=V+I|0,H=x(H^V,8),N=N+H|0,I=x(I^N,7),_=_+K|0,q=x(q^_,16),M=M+q|0,K=x(K^M,12),_=_+K|0,q=x(q^_,8),M=M+q|0,K=x(K^M,7),v=v+T|0,q=x(q^v,16),N=N+q|0,T=x(T^N,12),v=v+T|0,q=x(q^v,8),N=N+q|0,T=x(T^N,7),j=j+I|0,P=x(P^j,16),M=M+P|0,I=x(I^M,12),j=j+I|0,P=x(P^j,8),M=M+P|0,I=x(I^M,7),V=V+K|0,m=x(m^V,16),O=O+m|0,K=x(K^O,12),V=V+K|0,m=x(m^V,8),O=O+m|0,K=x(K^O,7),_=_+S|0,H=x(H^_,16),k=k+H|0,S=x(S^k,12),_=_+S|0,H=x(H^_,8),k=k+H|0,S=x(S^k,7);let W=0;r[W++]=i+v|0,r[W++]=c+j|0,r[W++]=f+V|0,r[W++]=l+_|0,r[W++]=h+S|0,r[W++]=a+T|0,r[W++]=p+I|0,r[W++]=g+K|0,r[W++]=u+O|0,r[W++]=y+k|0,r[W++]=d+N|0,r[W++]=w+M|0,r[W++]=b+P|0,r[W++]=U+m|0,r[W++]=L+H|0,r[W++]=C+q|0}function $e(e,t,n,r){let o=e[0],s=e[1],i=e[2],c=e[3],f=t[0],l=t[1],h=t[2],a=t[3],p=t[4],g=t[5],u=t[6],y=t[7],d=n[0],w=n[1],b=n[2],U=n[3];for(let C=0;C<20;C+=2)o=o+f|0,d=x(d^o,16),p=p+d|0,f=x(f^p,12),o=o+f|0,d=x(d^o,8),p=p+d|0,f=x(f^p,7),s=s+l|0,w=x(w^s,16),g=g+w|0,l=x(l^g,12),s=s+l|0,w=x(w^s,8),g=g+w|0,l=x(l^g,7),i=i+h|0,b=x(b^i,16),u=u+b|0,h=x(h^u,12),i=i+h|0,b=x(b^i,8),u=u+b|0,h=x(h^u,7),c=c+a|0,U=x(U^c,16),y=y+U|0,a=x(a^y,12),c=c+a|0,U=x(U^c,8),y=y+U|0,a=x(a^y,7),o=o+l|0,U=x(U^o,16),u=u+U|0,l=x(l^u,12),o=o+l|0,U=x(U^o,8),u=u+U|0,l=x(l^u,7),s=s+h|0,d=x(d^s,16),y=y+d|0,h=x(h^y,12),s=s+h|0,d=x(d^s,8),y=y+d|0,h=x(h^y,7),i=i+a|0,w=x(w^i,16),p=p+w|0,a=x(a^p,12),i=i+a|0,w=x(w^i,8),p=p+w|0,a=x(a^p,7),c=c+f|0,b=x(b^c,16),g=g+b|0,f=x(f^g,12),c=c+f|0,b=x(b^c,8),g=g+b|0,f=x(f^g,7);let L=0;r[L++]=o,r[L++]=s,r[L++]=i,r[L++]=c,r[L++]=d,r[L++]=w,r[L++]=b,r[L++]=U}var Ze=Rt(ue,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Fe=Rt(ue,{counterRight:!1,counterLength:8,extendNonceFn:$e,allowShortKeys:!1});var Ye=new Uint8Array(16),he=(e,t)=>{e.update(t);let n=t.length%16;n&&e.update(Ye.subarray(n))},Qe=new Uint8Array(32);function ae(e,t,n,r,o){o!==void 0&&E(o,void 0,"AAD");let s=e(t,n,Qe),i=bt(r.length,o?o.length:0,!0),c=le.create(s);o&&he(c,o),he(c,r),c.update(i);let f=c.digest();return B(s,i),f}var ge=e=>(t,n,r)=>({encrypt(s,i){let c=s.length;i=Q(c+16,i,!1),i.set(s);let f=i.subarray(0,-16);e(t,n,f,f,1);let l=ae(e,t,n,f,r);return i.set(l,c),B(l),i},decrypt(s,i){i=Q(s.length-16,i,!1);let c=s.subarray(0,-16),f=s.subarray(-16),l=ae(e,t,n,c,r);if(!wt(f,l))throw new Error("invalid tag");return i.set(s.subarray(0,-16)),e(t,n,i,i,1),B(l),i}}),pe=D({blockSize:64,nonceLength:12,tagLength:16},ge(Ze)),ye=D({blockSize:64,nonceLength:24,tagLength:16},ge(Fe));return Le(Ge);})();
5156+/*! Bundled license information:
5158+@noble/ciphers/utils.js:
5159+ (*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) *)
5165+function _Crypto_cipherKeyFromHex(hex)
5168+ var bytes = _Crypto_fromHex(hex);
5169+ if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5170+ return $elm$core$Maybe$Just(hex);
5172+ return $elm$core$Maybe$Nothing;
5176+function _Crypto_cipherKeyToHex(key)
5181+function _Crypto_cipherNonce12FromHex(hex)
5184+ var bytes = _Crypto_fromHex(hex);
5185+ if (bytes.length !== 12) { return $elm$core$Maybe$Nothing; }
5186+ return $elm$core$Maybe$Just(hex);
5188+ return $elm$core$Maybe$Nothing;
5192+function _Crypto_cipherNonce12ToHex(nonce)
5197+function _Crypto_cipherNonce24FromHex(hex)
5200+ var bytes = _Crypto_fromHex(hex);
5201+ if (bytes.length !== 24) { return $elm$core$Maybe$Nothing; }
5202+ return $elm$core$Maybe$Just(hex);
5204+ return $elm$core$Maybe$Nothing;
5208+function _Crypto_cipherNonce24ToHex(nonce)
5216+var _Crypto_aesGcmEncrypt = F3(function(key, nonce, plaintext)
5218+ var cipher = _Crypto_ciphers.gcm(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5219+ return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5222+var _Crypto_aesGcmDecrypt = F3(function(key, nonce, ciphertext)
5225+ var cipher = _Crypto_ciphers.gcm(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5226+ return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5228+ return $elm$core$Maybe$Nothing;
5233+// CHACHA20-POLY1305
5235+var _Crypto_chacha20Encrypt = F3(function(key, nonce, plaintext)
5237+ var cipher = _Crypto_ciphers.chacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5238+ return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5241+var _Crypto_chacha20Decrypt = F3(function(key, nonce, ciphertext)
5244+ var cipher = _Crypto_ciphers.chacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5245+ return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5247+ return $elm$core$Maybe$Nothing;
5252+// XCHACHA20-POLY1305
5254+var _Crypto_xchacha20Encrypt = F3(function(key, nonce, plaintext)
5256+ var cipher = _Crypto_ciphers.xchacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5257+ return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5260+var _Crypto_xchacha20Decrypt = F3(function(key, nonce, ciphertext)
5263+ var cipher = _Crypto_ciphers.xchacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5264+ return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5266+ return $elm$core$Maybe$Nothing;
5269+function _Utils_cmp(x, y, ord) {if (typeof x !== 'object') {return x === y ? 0 : x < y ? -1 : 1; }if (x instanceof String) {var a = x.valueOf(); var b = y.valueOf();return a === b ? 0 : a < b ? -1 : 1; }if (typeof x.$ === 'undefined' || (typeof x.$ === 'string' && x.$[0] === '#')) {var keys = Object.keys(x).sort();for (var i = 0; i < keys.length; i++) {var k = keys[i];if (k === '$') continue;ord = _Utils_cmp(x[k], y[k]);if (ord) return ord; }return 0; }if (x.$ === '::' || x.$ === '[]') {for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {}return ord || (x.b ? 1 : y.b ? -1 : 0); }if (x.$ !== y.$) {return x.$ < y.$ ? -1 : 1; }var keys = Object.keys(x);for (var i = 0; i < keys.length; i++) {var k = keys[i];if (k === '$') continue;ord = _Utils_cmp(x[k], y[k]);if (ord) return ord; }return 0; }
5270+var $elm$core$List$cons = _List_cons;
5271+var $elm$core$Elm$JsArray$foldr = _JsArray_foldr;
5272+var $elm$core$Array$foldr = F3(
5273+ function (func, baseCase, _v0) {
5277+ function (node, acc) {
5278+ if (node.$ === 'SubTree') {
5279+ var subTree = node.a;
5280+ return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);
5282+ var values = node.a;
5283+ return A3($elm$core$Elm$JsArray$foldr, func, acc, values);
5287+ $elm$core$Elm$JsArray$foldr,
5289+ A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),
5292+var $elm$core$Array$toList = function (array) {
5293+ return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);
5295+var $elm$core$Dict$foldr = F3(
5296+ function (func, acc, t) {
5299+ if (t.$ === 'RBEmpty_elm_builtin') {
5306+ var $temp$func = func,
5311+ A3($elm$core$Dict$foldr, func, acc, right)),
5320+var $elm$core$Dict$toList = function (dict) {
5322+ $elm$core$Dict$foldr,
5324+ function (key, value, list) {
5326+ $elm$core$List$cons,
5327+ _Utils_Tuple2(key, value),
5333+var $elm$core$Dict$keys = function (dict) {
5335+ $elm$core$Dict$foldr,
5337+ function (key, value, keyList) {
5338+ return A2($elm$core$List$cons, key, keyList);
5343+var $elm$core$Set$toList = function (_v0) {
5345+ return $elm$core$Dict$keys(dict);
5347+var $elm$core$Basics$EQ = {$: 'EQ'};
5348+var $elm$core$Basics$GT = {$: 'GT'};
5349+var $elm$core$Basics$LT = {$: 'LT'};
5350+var $elm$core$Result$Err = function (a) {
5351+ return {$: 'Err', a: a};
5353+var $elm$json$Json$Decode$Failure = F2(
5355+ return {$: 'Failure', a: a, b: b};
5357+var $elm$json$Json$Decode$Field = F2(
5359+ return {$: 'Field', a: a, b: b};
5361+var $elm$json$Json$Decode$Index = F2(
5363+ return {$: 'Index', a: a, b: b};
5365+var $elm$core$Result$Ok = function (a) {
5366+ return {$: 'Ok', a: a};
5368+var $elm$json$Json$Decode$OneOf = function (a) {
5369+ return {$: 'OneOf', a: a};
5371+var $elm$core$Basics$False = {$: 'False'};
5372+var $elm$core$Basics$add = _Basics_add;
5373+var $elm$core$Maybe$Just = function (a) {
5374+ return {$: 'Just', a: a};
5376+var $elm$core$Maybe$Nothing = {$: 'Nothing'};
5377+var $elm$core$String$all = _String_all;
5378+var $elm$core$Basics$and = _Basics_and;
5379+var $elm$core$Basics$append = _Utils_append;
5380+var $elm$json$Json$Encode$encode = _Json_encode;
5381+var $elm$core$String$fromInt = _String_fromNumber;
5382+var $elm$core$String$join = F2(
5383+ function (sep, chunks) {
5387+ _List_toArray(chunks));
5389+var $elm$core$String$split = F2(
5390+ function (sep, string) {
5391+ return _List_fromArray(
5392+ A2(_String_split, sep, string));
5394+var $elm$json$Json$Decode$indent = function (str) {
5396+ $elm$core$String$join,
5398+ A2($elm$core$String$split, '\n', str));
5400+var $elm$core$List$foldl = F3(
5401+ function (func, acc, list) {
5409+ var $temp$func = func,
5410+ $temp$acc = A2(func, x, acc),
5419+var $elm$core$List$length = function (xs) {
5421+ $elm$core$List$foldl,
5423+ function (_v0, i) {
5429+var $elm$core$List$map2 = _List_map2;
5430+var $elm$core$Basics$le = _Utils_le;
5431+var $elm$core$Basics$sub = _Basics_sub;
5432+var $elm$core$List$rangeHelp = F3(
5433+ function (lo, hi, list) {
5436+ if (_Utils_cmp(lo, hi) < 1) {
5439+ $temp$list = A2($elm$core$List$cons, hi, list);
5443+ continue rangeHelp;
5449+var $elm$core$List$range = F2(
5450+ function (lo, hi) {
5451+ return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);
5453+var $elm$core$List$indexedMap = F2(
5456+ $elm$core$List$map2,
5459+ $elm$core$List$range,
5461+ $elm$core$List$length(xs) - 1),
5464+var $elm$core$Char$toCode = _Char_toCode;
5465+var $elm$core$Char$isLower = function (_char) {
5466+ var code = $elm$core$Char$toCode(_char);
5467+ return (97 <= code) && (code <= 122);
5469+var $elm$core$Char$isUpper = function (_char) {
5470+ var code = $elm$core$Char$toCode(_char);
5471+ return (code <= 90) && (65 <= code);
5473+var $elm$core$Basics$or = _Basics_or;
5474+var $elm$core$Char$isAlpha = function (_char) {
5475+ return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);
5477+var $elm$core$Char$isDigit = function (_char) {
5478+ var code = $elm$core$Char$toCode(_char);
5479+ return (code <= 57) && (48 <= code);
5481+var $elm$core$Char$isAlphaNum = function (_char) {
5482+ return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));
5484+var $elm$core$List$reverse = function (list) {
5485+ return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);
5487+var $elm$core$String$uncons = _String_uncons;
5488+var $elm$json$Json$Decode$errorOneOf = F2(
5489+ function (i, error) {
5490+ return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(
5491+ $elm$json$Json$Decode$errorToString(error))));
5493+var $elm$json$Json$Decode$errorToString = function (error) {
5494+ return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);
5496+var $elm$json$Json$Decode$errorToStringHelp = F2(
5497+ function (error, context) {
5504+ var isSimple = function () {
5505+ var _v1 = $elm$core$String$uncons(f);
5506+ if (_v1.$ === 'Nothing') {
5512+ return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);
5515+ var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']'));
5516+ var $temp$error = err,
5517+ $temp$context = A2($elm$core$List$cons, fieldName, context);
5518+ error = $temp$error;
5519+ context = $temp$context;
5520+ continue errorToStringHelp;
5524+ var indexName = '[' + ($elm$core$String$fromInt(i) + ']');
5525+ var $temp$error = err,
5526+ $temp$context = A2($elm$core$List$cons, indexName, context);
5527+ error = $temp$error;
5528+ context = $temp$context;
5529+ continue errorToStringHelp;
5531+ var errors = error.a;
5533+ return 'Ran into a Json.Decode.oneOf with no possibilities' + function () {
5537+ return ' at json' + A2(
5538+ $elm$core$String$join,
5540+ $elm$core$List$reverse(context));
5545+ var err = errors.a;
5546+ var $temp$error = err,
5547+ $temp$context = context;
5548+ error = $temp$error;
5549+ context = $temp$context;
5550+ continue errorToStringHelp;
5552+ var starter = function () {
5554+ return 'Json.Decode.oneOf';
5556+ return 'The Json.Decode.oneOf at json' + A2(
5557+ $elm$core$String$join,
5559+ $elm$core$List$reverse(context));
5562+ var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(
5563+ $elm$core$List$length(errors)) + ' ways:'));
5565+ $elm$core$String$join,
5568+ $elm$core$List$cons,
5570+ A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));
5575+ var json = error.b;
5576+ var introduction = function () {
5578+ return 'Problem with the given value:\n\n';
5580+ return 'Problem with the value at json' + (A2(
5581+ $elm$core$String$join,
5583+ $elm$core$List$reverse(context)) + ':\n\n ');
5586+ return introduction + ($elm$json$Json$Decode$indent(
5587+ A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg));
5591+var $elm$core$Array$branchFactor = 32;
5592+var $elm$core$Array$Array_elm_builtin = F4(
5593+ function (a, b, c, d) {
5594+ return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};
5596+var $elm$core$Elm$JsArray$empty = _JsArray_empty;
5597+var $elm$core$Basics$ceiling = _Basics_ceiling;
5598+var $elm$core$Basics$fdiv = _Basics_fdiv;
5599+var $elm$core$Basics$logBase = F2(
5600+ function (base, number) {
5601+ return _Basics_log(number) / _Basics_log(base);
5603+var $elm$core$Basics$toFloat = _Basics_toFloat;
5604+var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(
5605+ A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));
5606+var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);
5607+var $elm$core$Elm$JsArray$initialize = _JsArray_initialize;
5608+var $elm$core$Array$Leaf = function (a) {
5609+ return {$: 'Leaf', a: a};
5611+var $elm$core$Basics$apL = F2(
5615+var $elm$core$Basics$apR = F2(
5619+var $elm$core$Basics$eq = _Utils_equal;
5620+var $elm$core$Basics$floor = _Basics_floor;
5621+var $elm$core$Elm$JsArray$length = _JsArray_length;
5622+var $elm$core$Basics$gt = _Utils_gt;
5623+var $elm$core$Basics$max = F2(
5625+ return (_Utils_cmp(x, y) > 0) ? x : y;
5627+var $elm$core$Basics$mul = _Basics_mul;
5628+var $elm$core$Array$SubTree = function (a) {
5629+ return {$: 'SubTree', a: a};
5631+var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;
5632+var $elm$core$Array$compressNodes = F2(
5633+ function (nodes, acc) {
5636+ var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);
5638+ var remainingNodes = _v0.b;
5640+ $elm$core$List$cons,
5641+ $elm$core$Array$SubTree(node),
5643+ if (!remainingNodes.b) {
5644+ return $elm$core$List$reverse(newAcc);
5646+ var $temp$nodes = remainingNodes,
5647+ $temp$acc = newAcc;
5648+ nodes = $temp$nodes;
5650+ continue compressNodes;
5654+var $elm$core$Tuple$first = function (_v0) {
5658+var $elm$core$Array$treeFromBuilder = F2(
5659+ function (nodeList, nodeListSize) {
5662+ var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);
5663+ if (newNodeSize === 1) {
5664+ return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;
5666+ var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),
5667+ $temp$nodeListSize = newNodeSize;
5668+ nodeList = $temp$nodeList;
5669+ nodeListSize = $temp$nodeListSize;
5670+ continue treeFromBuilder;
5674+var $elm$core$Array$builderToArray = F2(
5675+ function (reverseNodeList, builder) {
5676+ if (!builder.nodeListSize) {
5678+ $elm$core$Array$Array_elm_builtin,
5679+ $elm$core$Elm$JsArray$length(builder.tail),
5680+ $elm$core$Array$shiftStep,
5681+ $elm$core$Elm$JsArray$empty,
5684+ var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;
5685+ var depth = $elm$core$Basics$floor(
5686+ A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));
5687+ var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;
5688+ var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);
5690+ $elm$core$Array$Array_elm_builtin,
5691+ $elm$core$Elm$JsArray$length(builder.tail) + treeLen,
5692+ A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),
5697+var $elm$core$Basics$idiv = _Basics_idiv;
5698+var $elm$core$Basics$lt = _Utils_lt;
5699+var $elm$core$Array$initializeHelp = F5(
5700+ function (fn, fromIndex, len, nodeList, tail) {
5703+ if (fromIndex < 0) {
5705+ $elm$core$Array$builderToArray,
5707+ {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});
5709+ var leaf = $elm$core$Array$Leaf(
5710+ A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));
5712+ $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,
5714+ $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),
5717+ fromIndex = $temp$fromIndex;
5719+ nodeList = $temp$nodeList;
5721+ continue initializeHelp;
5725+var $elm$core$Basics$remainderBy = _Basics_remainderBy;
5726+var $elm$core$Array$initialize = F2(
5727+ function (len, fn) {
5729+ return $elm$core$Array$empty;
5731+ var tailLen = len % $elm$core$Array$branchFactor;
5732+ var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);
5733+ var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;
5734+ return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);
5737+var $elm$core$Basics$True = {$: 'True'};
5738+var $elm$core$Result$isOk = function (result) {
5739+ if (result.$ === 'Ok') {
5745+var $elm$json$Json$Decode$map = _Json_map1;
5746+var $elm$json$Json$Decode$map2 = _Json_map2;
5747+var $elm$json$Json$Decode$succeed = _Json_succeed;
5748+var $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {
5749+ switch (handler.$) {
5752+ case 'MayStopPropagation':
5754+ case 'MayPreventDefault':
5760+var $elm$core$Basics$identity = function (x) {
5763+var $lynxjs_elm$browser$Browser$Dom$NotFound = function (a) {
5764+ return {$: 'NotFound', a: a};
5766+var $elm$core$Basics$never = function (_v0) {
5770+ var $temp$_v0 = nvr;
5775+var $elm$core$Task$Perform = function (a) {
5776+ return {$: 'Perform', a: a};
5778+var $elm$core$Task$succeed = _Scheduler_succeed;
5779+var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);
5780+var $elm$core$List$foldrHelper = F4(
5781+ function (fn, acc, ctr, ls) {
5788+ return A2(fn, a, acc);
5811+ var res = (ctr > 500) ? A3(
5812+ $elm$core$List$foldl,
5815+ $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);
5831+var $elm$core$List$foldr = F3(
5832+ function (fn, acc, ls) {
5833+ return A4($elm$core$List$foldrHelper, fn, acc, 0, ls);
5835+var $elm$core$List$map = F2(
5838+ $elm$core$List$foldr,
5840+ function (x, acc) {
5842+ $elm$core$List$cons,
5849+var $elm$core$Task$andThen = _Scheduler_andThen;
5850+var $elm$core$Task$map = F2(
5851+ function (func, taskA) {
5853+ $elm$core$Task$andThen,
5855+ return $elm$core$Task$succeed(
5860+var $elm$core$Task$map2 = F3(
5861+ function (func, taskA, taskB) {
5863+ $elm$core$Task$andThen,
5866+ $elm$core$Task$andThen,
5868+ return $elm$core$Task$succeed(
5875+var $elm$core$Task$sequence = function (tasks) {
5877+ $elm$core$List$foldr,
5878+ $elm$core$Task$map2($elm$core$List$cons),
5879+ $elm$core$Task$succeed(_List_Nil),
5882+var $elm$core$Platform$sendToApp = _Platform_sendToApp;
5883+var $elm$core$Task$spawnCmd = F2(
5884+ function (router, _v0) {
5886+ return _Scheduler_spawn(
5888+ $elm$core$Task$andThen,
5889+ $elm$core$Platform$sendToApp(router),
5892+var $elm$core$Task$onEffects = F3(
5893+ function (router, commands, state) {
5895+ $elm$core$Task$map,
5897+ return _Utils_Tuple0;
5899+ $elm$core$Task$sequence(
5901+ $elm$core$List$map,
5902+ $elm$core$Task$spawnCmd(router),
5905+var $elm$core$Task$onSelfMsg = F3(
5906+ function (_v0, _v1, _v2) {
5907+ return $elm$core$Task$succeed(_Utils_Tuple0);
5909+var $elm$core$Task$cmdMap = F2(
5910+ function (tagger, _v0) {
5912+ return $elm$core$Task$Perform(
5913+ A2($elm$core$Task$map, tagger, task));
5915+_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);
5916+var $elm$core$Task$command = _Platform_leaf('Task');
5917+var $elm$core$Task$perform = F2(
5918+ function (toMessage, task) {
5919+ return $elm$core$Task$command(
5920+ $elm$core$Task$Perform(
5921+ A2($elm$core$Task$map, toMessage, task)));
5923+var $lynxjs_elm$browser$Browser$element = _Browser_element;
5924+var $author$project$Main$GotSeed = function (a) {
5925+ return {$: 'GotSeed', a: a};
5927+var $author$project$Main$SetupScreen = {$: 'SetupScreen'};
5928+var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};
5929+var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;
5930+var $elm$core$Set$Set_elm_builtin = function (a) {
5931+ return {$: 'Set_elm_builtin', a: a};
5933+var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty);
5934+var $elm$random$Random$Generate = function (a) {
5935+ return {$: 'Generate', a: a};
5937+var $elm$random$Random$Seed = F2(
5939+ return {$: 'Seed', a: a, b: b};
5941+var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy;
5942+var $elm$random$Random$next = function (_v0) {
5943+ var state0 = _v0.a;
5945+ return A2($elm$random$Random$Seed, ((state0 * 1664525) + incr) >>> 0, incr);
5947+var $elm$random$Random$initialSeed = function (x) {
5948+ var _v0 = $elm$random$Random$next(
5949+ A2($elm$random$Random$Seed, 0, 1013904223));
5950+ var state1 = _v0.a;
5952+ var state2 = (state1 + x) >>> 0;
5953+ return $elm$random$Random$next(
5954+ A2($elm$random$Random$Seed, state2, incr));
5956+var $elm$time$Time$Name = function (a) {
5957+ return {$: 'Name', a: a};
5959+var $elm$time$Time$Offset = function (a) {
5960+ return {$: 'Offset', a: a};
5962+var $elm$time$Time$Zone = F2(
5964+ return {$: 'Zone', a: a, b: b};
5966+var $elm$time$Time$customZone = $elm$time$Time$Zone;
5967+var $elm$time$Time$Posix = function (a) {
5968+ return {$: 'Posix', a: a};
5970+var $elm$time$Time$millisToPosix = $elm$time$Time$Posix;
5971+var $elm$time$Time$now = _Time_now($elm$time$Time$millisToPosix);
5972+var $elm$time$Time$posixToMillis = function (_v0) {
5973+ var millis = _v0.a;
5976+var $elm$random$Random$init = A2(
5977+ $elm$core$Task$andThen,
5979+ return $elm$core$Task$succeed(
5980+ $elm$random$Random$initialSeed(
5981+ $elm$time$Time$posixToMillis(time)));
5983+ $elm$time$Time$now);
5984+var $elm$random$Random$step = F2(
5985+ function (_v0, seed) {
5986+ var generator = _v0.a;
5987+ return generator(seed);
5989+var $elm$random$Random$onEffects = F3(
5990+ function (router, commands, seed) {
5992+ return $elm$core$Task$succeed(seed);
5994+ var generator = commands.a.a;
5995+ var rest = commands.b;
5996+ var _v1 = A2($elm$random$Random$step, generator, seed);
5998+ var newSeed = _v1.b;
6000+ $elm$core$Task$andThen,
6002+ return A3($elm$random$Random$onEffects, router, rest, newSeed);
6004+ A2($elm$core$Platform$sendToApp, router, value));
6007+var $elm$random$Random$onSelfMsg = F3(
6008+ function (_v0, _v1, seed) {
6009+ return $elm$core$Task$succeed(seed);
6011+var $elm$random$Random$Generator = function (a) {
6012+ return {$: 'Generator', a: a};
6014+var $elm$random$Random$map = F2(
6015+ function (func, _v0) {
6017+ return $elm$random$Random$Generator(
6019+ var _v1 = genA(seed0);
6022+ return _Utils_Tuple2(
6027+var $elm$random$Random$cmdMap = F2(
6028+ function (func, _v0) {
6029+ var generator = _v0.a;
6030+ return $elm$random$Random$Generate(
6031+ A2($elm$random$Random$map, func, generator));
6033+_Platform_effectManagers['Random'] = _Platform_createManager($elm$random$Random$init, $elm$random$Random$onEffects, $elm$random$Random$onSelfMsg, $elm$random$Random$cmdMap);
6034+var $elm$random$Random$command = _Platform_leaf('Random');
6035+var $elm$random$Random$generate = F2(
6036+ function (tagger, generator) {
6037+ return $elm$random$Random$command(
6038+ $elm$random$Random$Generate(
6039+ A2($elm$random$Random$map, tagger, generator)));
6041+var $elm$core$String$fromList = _String_fromList;
6042+var $elm$random$Random$listHelp = F4(
6043+ function (revList, n, gen, seed) {
6047+ return _Utils_Tuple2(revList, seed);
6049+ var _v0 = gen(seed);
6051+ var newSeed = _v0.b;
6052+ var $temp$revList = A2($elm$core$List$cons, value, revList),
6055+ $temp$seed = newSeed;
6056+ revList = $temp$revList;
6064+var $elm$random$Random$list = F2(
6065+ function (n, _v0) {
6067+ return $elm$random$Random$Generator(
6069+ return A4($elm$random$Random$listHelp, _List_Nil, n, gen, seed);
6072+var $elm$core$Char$fromCode = _Char_fromCode;
6073+var $elm$core$Bitwise$and = _Bitwise_and;
6074+var $elm$core$Basics$negate = function (n) {
6077+var $elm$core$Bitwise$xor = _Bitwise_xor;
6078+var $elm$random$Random$peel = function (_v0) {
6080+ var word = (state ^ (state >>> ((state >>> 28) + 4))) * 277803737;
6081+ return ((word >>> 22) ^ word) >>> 0;
6083+var $elm$random$Random$int = F2(
6085+ return $elm$random$Random$Generator(
6087+ var _v0 = (_Utils_cmp(a, b) < 0) ? _Utils_Tuple2(a, b) : _Utils_Tuple2(b, a);
6090+ var range = (hi - lo) + 1;
6091+ if (!((range - 1) & range)) {
6092+ return _Utils_Tuple2(
6093+ (((range - 1) & $elm$random$Random$peel(seed0)) >>> 0) + lo,
6094+ $elm$random$Random$next(seed0));
6096+ var threshhold = (((-range) >>> 0) % range) >>> 0;
6097+ var accountForBias = function (seed) {
6100+ var x = $elm$random$Random$peel(seed);
6101+ var seedN = $elm$random$Random$next(seed);
6102+ if (_Utils_cmp(x, threshhold) < 0) {
6103+ var $temp$seed = seedN;
6105+ continue accountForBias;
6107+ return _Utils_Tuple2((x % range) + lo, seedN);
6111+ return accountForBias(seed0);
6115+var $author$project$Main$randomHexChar = A2(
6116+ $elm$random$Random$map,
6118+ return (n < 10) ? $elm$core$Char$fromCode(n + 48) : $elm$core$Char$fromCode((n - 10) + 97);
6120+ A2($elm$random$Random$int, 0, 15));
6121+var $author$project$Main$randomHexString = function (byteCount) {
6123+ $elm$random$Random$map,
6124+ $elm$core$String$fromList,
6125+ A2($elm$random$Random$list, byteCount * 2, $author$project$Main$randomHexChar));
6127+var $author$project$Main$init = function (_v0) {
6128+ return _Utils_Tuple2(
6129+ {activeChat: '', addIdentity: '', addName: '', authToken: '', connecting: false, contacts: $elm$core$Dict$empty, currentTime: 0, displayName: '', draft: '', edPriv: $elm$core$Maybe$Nothing, edPub: $elm$core$Maybe$Nothing, error: $elm$core$Maybe$Nothing, messages: $elm$core$Dict$empty, screen: $author$project$Main$SetupScreen, seenIds: $elm$core$Set$empty, sending: false, serverUrl: 'http://localhost:8080', xPriv: $elm$core$Maybe$Nothing, xPub: $elm$core$Maybe$Nothing},
6131+ $elm$random$Random$generate,
6132+ $author$project$Main$GotSeed,
6133+ $author$project$Main$randomHexString(32)));
6135+var $author$project$Main$GotTime = function (a) {
6136+ return {$: 'GotTime', a: a};
6138+var $author$project$Main$PollTick = function (a) {
6139+ return {$: 'PollTick', a: a};
6141+var $elm$core$Platform$Sub$batch = _Platform_batch;
6142+var $elm$time$Time$Every = F2(
6144+ return {$: 'Every', a: a, b: b};
6146+var $elm$time$Time$State = F2(
6147+ function (taggers, processes) {
6148+ return {processes: processes, taggers: taggers};
6150+var $elm$time$Time$init = $elm$core$Task$succeed(
6151+ A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty));
6152+var $elm$core$Basics$compare = _Utils_compare;
6153+var $elm$core$Dict$get = F2(
6154+ function (targetKey, dict) {
6157+ if (dict.$ === 'RBEmpty_elm_builtin') {
6158+ return $elm$core$Maybe$Nothing;
6161+ var value = dict.c;
6163+ var right = dict.e;
6164+ var _v1 = A2($elm$core$Basics$compare, targetKey, key);
6167+ var $temp$targetKey = targetKey,
6169+ targetKey = $temp$targetKey;
6173+ return $elm$core$Maybe$Just(value);
6175+ var $temp$targetKey = targetKey,
6176+ $temp$dict = right;
6177+ targetKey = $temp$targetKey;
6184+var $elm$core$Dict$Black = {$: 'Black'};
6185+var $elm$core$Dict$RBNode_elm_builtin = F5(
6186+ function (a, b, c, d, e) {
6187+ return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};
6189+var $elm$core$Dict$Red = {$: 'Red'};
6190+var $elm$core$Dict$balance = F5(
6191+ function (color, key, value, left, right) {
6192+ if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {
6196+ var rLeft = right.d;
6197+ var rRight = right.e;
6198+ if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
6202+ var lLeft = left.d;
6203+ var lRight = left.e;
6205+ $elm$core$Dict$RBNode_elm_builtin,
6206+ $elm$core$Dict$Red,
6209+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),
6210+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));
6213+ $elm$core$Dict$RBNode_elm_builtin,
6217+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),
6221+ if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {
6229+ var llLeft = _v6.d;
6230+ var llRight = _v6.e;
6231+ var lRight = left.e;
6233+ $elm$core$Dict$RBNode_elm_builtin,
6234+ $elm$core$Dict$Red,
6237+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
6238+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));
6240+ return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);
6244+var $elm$core$Dict$insertHelp = F3(
6245+ function (key, value, dict) {
6246+ if (dict.$ === 'RBEmpty_elm_builtin') {
6247+ return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);
6249+ var nColor = dict.a;
6251+ var nValue = dict.c;
6252+ var nLeft = dict.d;
6253+ var nRight = dict.e;
6254+ var _v1 = A2($elm$core$Basics$compare, key, nKey);
6258+ $elm$core$Dict$balance,
6262+ A3($elm$core$Dict$insertHelp, key, value, nLeft),
6265+ return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);
6268+ $elm$core$Dict$balance,
6273+ A3($elm$core$Dict$insertHelp, key, value, nRight));
6277+var $elm$core$Dict$insert = F3(
6278+ function (key, value, dict) {
6279+ var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);
6280+ if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
6286+ return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
6292+var $elm$time$Time$addMySub = F2(
6293+ function (_v0, state) {
6294+ var interval = _v0.a;
6295+ var tagger = _v0.b;
6296+ var _v1 = A2($elm$core$Dict$get, interval, state);
6297+ if (_v1.$ === 'Nothing') {
6299+ $elm$core$Dict$insert,
6305+ var taggers = _v1.a;
6307+ $elm$core$Dict$insert,
6309+ A2($elm$core$List$cons, tagger, taggers),
6313+var $elm$core$Process$kill = _Scheduler_kill;
6314+var $elm$core$Dict$foldl = F3(
6315+ function (func, acc, dict) {
6318+ if (dict.$ === 'RBEmpty_elm_builtin') {
6322+ var value = dict.c;
6324+ var right = dict.e;
6325+ var $temp$func = func,
6330+ A3($elm$core$Dict$foldl, func, acc, left)),
6331+ $temp$dict = right;
6339+var $elm$core$Dict$merge = F6(
6340+ function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) {
6341+ var stepState = F3(
6342+ function (rKey, rValue, _v0) {
6346+ var result = _v0.b;
6348+ return _Utils_Tuple2(
6350+ A3(rightStep, rKey, rValue, result));
6354+ var lValue = _v2.b;
6356+ if (_Utils_cmp(lKey, rKey) < 0) {
6357+ var $temp$rKey = rKey,
6358+ $temp$rValue = rValue,
6359+ $temp$_v0 = _Utils_Tuple2(
6361+ A3(leftStep, lKey, lValue, result));
6363+ rValue = $temp$rValue;
6365+ continue stepState;
6367+ if (_Utils_cmp(lKey, rKey) > 0) {
6368+ return _Utils_Tuple2(
6370+ A3(rightStep, rKey, rValue, result));
6372+ return _Utils_Tuple2(
6374+ A4(bothStep, lKey, lValue, rValue, result));
6381+ $elm$core$Dict$foldl,
6384+ $elm$core$Dict$toList(leftDict),
6387+ var leftovers = _v3.a;
6388+ var intermediateResult = _v3.b;
6390+ $elm$core$List$foldl,
6392+ function (_v4, result) {
6395+ return A3(leftStep, k, v, result);
6397+ intermediateResult,
6400+var $elm$core$Platform$sendToSelf = _Platform_sendToSelf;
6401+var $elm$time$Time$setInterval = _Time_setInterval;
6402+var $elm$core$Process$spawn = _Scheduler_spawn;
6403+var $elm$time$Time$spawnHelp = F3(
6404+ function (router, intervals, processes) {
6405+ if (!intervals.b) {
6406+ return $elm$core$Task$succeed(processes);
6408+ var interval = intervals.a;
6409+ var rest = intervals.b;
6410+ var spawnTimer = $elm$core$Process$spawn(
6412+ $elm$time$Time$setInterval,
6414+ A2($elm$core$Platform$sendToSelf, router, interval)));
6415+ var spawnRest = function (id) {
6417+ $elm$time$Time$spawnHelp,
6420+ A3($elm$core$Dict$insert, interval, id, processes));
6422+ return A2($elm$core$Task$andThen, spawnRest, spawnTimer);
6425+var $elm$time$Time$onEffects = F3(
6426+ function (router, subs, _v0) {
6427+ var processes = _v0.processes;
6428+ var rightStep = F3(
6429+ function (_v6, id, _v7) {
6430+ var spawns = _v7.a;
6431+ var existing = _v7.b;
6433+ return _Utils_Tuple3(
6437+ $elm$core$Task$andThen,
6441+ $elm$core$Process$kill(id)));
6443+ var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs);
6445+ function (interval, taggers, _v4) {
6446+ var spawns = _v4.a;
6447+ var existing = _v4.b;
6449+ return _Utils_Tuple3(
6450+ A2($elm$core$List$cons, interval, spawns),
6455+ function (interval, taggers, id, _v3) {
6456+ var spawns = _v3.a;
6457+ var existing = _v3.b;
6459+ return _Utils_Tuple3(
6461+ A3($elm$core$Dict$insert, interval, id, existing),
6465+ $elm$core$Dict$merge,
6473+ $elm$core$Dict$empty,
6474+ $elm$core$Task$succeed(_Utils_Tuple0)));
6475+ var spawnList = _v1.a;
6476+ var existingDict = _v1.b;
6477+ var killTask = _v1.c;
6479+ $elm$core$Task$andThen,
6480+ function (newProcesses) {
6481+ return $elm$core$Task$succeed(
6482+ A2($elm$time$Time$State, newTaggers, newProcesses));
6485+ $elm$core$Task$andThen,
6487+ return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict);
6491+var $elm$time$Time$onSelfMsg = F3(
6492+ function (router, interval, state) {
6493+ var _v0 = A2($elm$core$Dict$get, interval, state.taggers);
6494+ if (_v0.$ === 'Nothing') {
6495+ return $elm$core$Task$succeed(state);
6497+ var taggers = _v0.a;
6498+ var tellTaggers = function (time) {
6499+ return $elm$core$Task$sequence(
6501+ $elm$core$List$map,
6502+ function (tagger) {
6504+ $elm$core$Platform$sendToApp,
6511+ $elm$core$Task$andThen,
6513+ return $elm$core$Task$succeed(state);
6515+ A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now));
6518+var $elm$core$Basics$composeL = F3(
6519+ function (g, f, x) {
6523+var $elm$time$Time$subMap = F2(
6524+ function (f, _v0) {
6525+ var interval = _v0.a;
6526+ var tagger = _v0.b;
6528+ $elm$time$Time$Every,
6530+ A2($elm$core$Basics$composeL, f, tagger));
6532+_Platform_effectManagers['Time'] = _Platform_createManager($elm$time$Time$init, $elm$time$Time$onEffects, $elm$time$Time$onSelfMsg, 0, $elm$time$Time$subMap);
6533+var $elm$time$Time$subscription = _Platform_leaf('Time');
6534+var $elm$time$Time$every = F2(
6535+ function (interval, tagger) {
6536+ return $elm$time$Time$subscription(
6537+ A2($elm$time$Time$Every, interval, tagger));
6539+var $elm$core$Basics$neq = _Utils_notEqual;
6540+var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);
6541+var $author$project$Main$subscriptions = function (model) {
6542+ return $elm$core$Platform$Sub$batch(
6545+ (model.authToken !== '') ? A2($elm$time$Time$every, 3000, $author$project$Main$PollTick) : $elm$core$Platform$Sub$none,
6546+ A2($elm$time$Time$every, 60000, $author$project$Main$GotTime)
6549+var $author$project$Main$ChatScreen = {$: 'ChatScreen'};
6550+var $author$project$Main$ContactsScreen = {$: 'ContactsScreen'};
6551+var $author$project$Main$GotSendEntropy = function (a) {
6552+ return {$: 'GotSendEntropy', a: a};
6554+var $author$project$Main$GotAck = function (a) {
6555+ return {$: 'GotAck', a: a};
6557+var $elm$json$Json$Decode$bool = _Json_decodeBool;
6558+var $elm$json$Json$Decode$decodeString = _Json_runOnString;
6559+var $elm$bytes$Bytes$Encode$getWidth = function (builder) {
6560+ switch (builder.$) {
6584+ var bs = builder.a;
6585+ return _Bytes_width(bs);
6588+var $elm$bytes$Bytes$LE = {$: 'LE'};
6589+var $elm$bytes$Bytes$Encode$write = F3(
6590+ function (builder, mb, offset) {
6591+ switch (builder.$) {
6594+ return A3(_Bytes_write_i8, mb, offset, n);
6603+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6612+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6615+ return A3(_Bytes_write_u8, mb, offset, n);
6624+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6633+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6642+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6651+ _Utils_eq(e, $elm$bytes$Bytes$LE));
6653+ var bs = builder.b;
6654+ return A3($elm$bytes$Bytes$Encode$writeSequence, bs, mb, offset);
6657+ return A3(_Bytes_write_string, mb, offset, s);
6659+ var bs = builder.a;
6660+ return A3(_Bytes_write_bytes, mb, offset, bs);
6663+var $elm$bytes$Bytes$Encode$writeSequence = F3(
6664+ function (builders, mb, offset) {
6670+ var b = builders.a;
6671+ var bs = builders.b;
6672+ var $temp$builders = bs,
6674+ $temp$offset = A3($elm$bytes$Bytes$Encode$write, b, mb, offset);
6675+ builders = $temp$builders;
6677+ offset = $temp$offset;
6678+ continue writeSequence;
6682+var $lynxjs_elm$http$Http$BadStatus_ = F2(
6684+ return {$: 'BadStatus_', a: a, b: b};
6686+var $lynxjs_elm$http$Http$BadUrl_ = function (a) {
6687+ return {$: 'BadUrl_', a: a};
6689+var $lynxjs_elm$http$Http$GoodStatus_ = F2(
6691+ return {$: 'GoodStatus_', a: a, b: b};
6693+var $lynxjs_elm$http$Http$NetworkError_ = {$: 'NetworkError_'};
6694+var $lynxjs_elm$http$Http$Timeout_ = {$: 'Timeout_'};
6695+var $elm$core$Maybe$isJust = function (maybe) {
6696+ if (maybe.$ === 'Just') {
6702+var $elm$core$Dict$getMin = function (dict) {
6705+ if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6707+ var $temp$dict = left;
6715+var $elm$core$Dict$moveRedLeft = function (dict) {
6716+ if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
6717+ if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {
6726+ var lRight = _v1.e;
6737+ var rRight = _v2.e;
6739+ $elm$core$Dict$RBNode_elm_builtin,
6740+ $elm$core$Dict$Red,
6744+ $elm$core$Dict$RBNode_elm_builtin,
6745+ $elm$core$Dict$Black,
6748+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6750+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));
6760+ var lRight = _v4.e;
6766+ var rRight = _v5.e;
6767+ if (clr.$ === 'Black') {
6769+ $elm$core$Dict$RBNode_elm_builtin,
6770+ $elm$core$Dict$Black,
6773+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6774+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6777+ $elm$core$Dict$RBNode_elm_builtin,
6778+ $elm$core$Dict$Black,
6781+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6782+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6789+var $elm$core$Dict$moveRedRight = function (dict) {
6790+ if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
6791+ if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {
6803+ var llLeft = _v2.d;
6804+ var llRight = _v2.e;
6805+ var lRight = _v1.e;
6811+ var rRight = _v4.e;
6813+ $elm$core$Dict$RBNode_elm_builtin,
6814+ $elm$core$Dict$Red,
6817+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
6819+ $elm$core$Dict$RBNode_elm_builtin,
6820+ $elm$core$Dict$Black,
6824+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));
6834+ var lRight = _v5.e;
6840+ var rRight = _v6.e;
6841+ if (clr.$ === 'Black') {
6843+ $elm$core$Dict$RBNode_elm_builtin,
6844+ $elm$core$Dict$Black,
6847+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6848+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6851+ $elm$core$Dict$RBNode_elm_builtin,
6852+ $elm$core$Dict$Black,
6855+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6856+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6863+var $elm$core$Dict$removeHelpPrepEQGT = F7(
6864+ function (targetKey, dict, color, key, value, left, right) {
6865+ if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
6869+ var lLeft = left.d;
6870+ var lRight = left.e;
6872+ $elm$core$Dict$RBNode_elm_builtin,
6877+ A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));
6881+ if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {
6882+ if (right.d.$ === 'RBNode_elm_builtin') {
6883+ if (right.d.a.$ === 'Black') {
6887+ return $elm$core$Dict$moveRedRight(dict);
6894+ return $elm$core$Dict$moveRedRight(dict);
6903+var $elm$core$Dict$removeMin = function (dict) {
6904+ if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6905+ var color = dict.a;
6907+ var value = dict.c;
6909+ var lColor = left.a;
6910+ var lLeft = left.d;
6911+ var right = dict.e;
6912+ if (lColor.$ === 'Black') {
6913+ if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
6916+ $elm$core$Dict$RBNode_elm_builtin,
6920+ $elm$core$Dict$removeMin(left),
6923+ var _v4 = $elm$core$Dict$moveRedLeft(dict);
6924+ if (_v4.$ === 'RBNode_elm_builtin') {
6925+ var nColor = _v4.a;
6927+ var nValue = _v4.c;
6929+ var nRight = _v4.e;
6931+ $elm$core$Dict$balance,
6935+ $elm$core$Dict$removeMin(nLeft),
6938+ return $elm$core$Dict$RBEmpty_elm_builtin;
6943+ $elm$core$Dict$RBNode_elm_builtin,
6947+ $elm$core$Dict$removeMin(left),
6951+ return $elm$core$Dict$RBEmpty_elm_builtin;
6954+var $elm$core$Dict$removeHelp = F2(
6955+ function (targetKey, dict) {
6956+ if (dict.$ === 'RBEmpty_elm_builtin') {
6957+ return $elm$core$Dict$RBEmpty_elm_builtin;
6959+ var color = dict.a;
6961+ var value = dict.c;
6963+ var right = dict.e;
6964+ if (_Utils_cmp(targetKey, key) < 0) {
6965+ if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {
6967+ var lLeft = left.d;
6968+ if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
6971+ $elm$core$Dict$RBNode_elm_builtin,
6975+ A2($elm$core$Dict$removeHelp, targetKey, left),
6978+ var _v7 = $elm$core$Dict$moveRedLeft(dict);
6979+ if (_v7.$ === 'RBNode_elm_builtin') {
6980+ var nColor = _v7.a;
6982+ var nValue = _v7.c;
6984+ var nRight = _v7.e;
6986+ $elm$core$Dict$balance,
6990+ A2($elm$core$Dict$removeHelp, targetKey, nLeft),
6993+ return $elm$core$Dict$RBEmpty_elm_builtin;
6998+ $elm$core$Dict$RBNode_elm_builtin,
7002+ A2($elm$core$Dict$removeHelp, targetKey, left),
7007+ $elm$core$Dict$removeHelpEQGT,
7009+ A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));
7013+var $elm$core$Dict$removeHelpEQGT = F2(
7014+ function (targetKey, dict) {
7015+ if (dict.$ === 'RBNode_elm_builtin') {
7016+ var color = dict.a;
7018+ var value = dict.c;
7020+ var right = dict.e;
7021+ if (_Utils_eq(targetKey, key)) {
7022+ var _v1 = $elm$core$Dict$getMin(right);
7023+ if (_v1.$ === 'RBNode_elm_builtin') {
7024+ var minKey = _v1.b;
7025+ var minValue = _v1.c;
7027+ $elm$core$Dict$balance,
7032+ $elm$core$Dict$removeMin(right));
7034+ return $elm$core$Dict$RBEmpty_elm_builtin;
7038+ $elm$core$Dict$balance,
7043+ A2($elm$core$Dict$removeHelp, targetKey, right));
7046+ return $elm$core$Dict$RBEmpty_elm_builtin;
7049+var $elm$core$Dict$remove = F2(
7050+ function (key, dict) {
7051+ var _v0 = A2($elm$core$Dict$removeHelp, key, dict);
7052+ if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
7058+ return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
7064+var $elm$core$Dict$update = F3(
7065+ function (targetKey, alter, dictionary) {
7067+ A2($elm$core$Dict$get, targetKey, dictionary));
7068+ if (_v0.$ === 'Just') {
7070+ return A3($elm$core$Dict$insert, targetKey, value, dictionary);
7072+ return A2($elm$core$Dict$remove, targetKey, dictionary);
7075+var $elm$core$Basics$composeR = F3(
7076+ function (f, g, x) {
7080+var $lynxjs_elm$http$Http$expectStringResponse = F2(
7081+ function (toMsg, toResult) {
7085+ $elm$core$Basics$identity,
7086+ A2($elm$core$Basics$composeR, toResult, toMsg));
7088+var $elm$core$Result$mapError = F2(
7089+ function (f, result) {
7090+ if (result.$ === 'Ok') {
7092+ return $elm$core$Result$Ok(v);
7095+ return $elm$core$Result$Err(
7099+var $lynxjs_elm$http$Http$BadBody = function (a) {
7100+ return {$: 'BadBody', a: a};
7102+var $lynxjs_elm$http$Http$BadStatus = function (a) {
7103+ return {$: 'BadStatus', a: a};
7105+var $lynxjs_elm$http$Http$BadUrl = function (a) {
7106+ return {$: 'BadUrl', a: a};
7108+var $lynxjs_elm$http$Http$NetworkError = {$: 'NetworkError'};
7109+var $lynxjs_elm$http$Http$Timeout = {$: 'Timeout'};
7110+var $lynxjs_elm$http$Http$resolve = F2(
7111+ function (toResult, response) {
7112+ switch (response.$) {
7114+ var url = response.a;
7115+ return $elm$core$Result$Err(
7116+ $lynxjs_elm$http$Http$BadUrl(url));
7118+ return $elm$core$Result$Err($lynxjs_elm$http$Http$Timeout);
7119+ case 'NetworkError_':
7120+ return $elm$core$Result$Err($lynxjs_elm$http$Http$NetworkError);
7122+ var metadata = response.a;
7123+ return $elm$core$Result$Err(
7124+ $lynxjs_elm$http$Http$BadStatus(metadata.statusCode));
7126+ var body = response.b;
7128+ $elm$core$Result$mapError,
7129+ $lynxjs_elm$http$Http$BadBody,
7133+var $lynxjs_elm$http$Http$expectJson = F2(
7134+ function (toMsg, decoder) {
7136+ $lynxjs_elm$http$Http$expectStringResponse,
7138+ $lynxjs_elm$http$Http$resolve(
7139+ function (string) {
7141+ $elm$core$Result$mapError,
7142+ $elm$json$Json$Decode$errorToString,
7143+ A2($elm$json$Json$Decode$decodeString, decoder, string));
7146+var $elm$json$Json$Decode$field = _Json_decodeField;
7147+var $lynxjs_elm$http$Http$Header = F2(
7149+ return {$: 'Header', a: a, b: b};
7151+var $lynxjs_elm$http$Http$header = $lynxjs_elm$http$Http$Header;
7152+var $lynxjs_elm$http$Http$jsonBody = function (value) {
7155+ 'application/json',
7156+ A2($elm$json$Json$Encode$encode, 0, value));
7158+var $elm$json$Json$Encode$list = F2(
7159+ function (func, entries) {
7162+ $elm$core$List$foldl,
7163+ _Json_addEntry(func),
7164+ _Json_emptyArray(_Utils_Tuple0),
7167+var $elm$json$Json$Encode$object = function (pairs) {
7170+ $elm$core$List$foldl,
7172+ function (_v0, obj) {
7175+ return A3(_Json_addField, k, v, obj);
7177+ _Json_emptyObject(_Utils_Tuple0),
7180+var $lynxjs_elm$http$Http$Request = function (a) {
7181+ return {$: 'Request', a: a};
7183+var $lynxjs_elm$http$Http$State = F2(
7184+ function (reqs, subs) {
7185+ return {reqs: reqs, subs: subs};
7187+var $lynxjs_elm$http$Http$init = $elm$core$Task$succeed(
7188+ A2($lynxjs_elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));
7189+var $lynxjs_elm$http$Http$updateReqs = F3(
7190+ function (router, cmds, reqs) {
7194+ return $elm$core$Task$succeed(reqs);
7197+ var otherCmds = cmds.b;
7198+ if (cmd.$ === 'Cancel') {
7199+ var tracker = cmd.a;
7200+ var _v2 = A2($elm$core$Dict$get, tracker, reqs);
7201+ if (_v2.$ === 'Nothing') {
7202+ var $temp$router = router,
7203+ $temp$cmds = otherCmds,
7205+ router = $temp$router;
7208+ continue updateReqs;
7212+ $elm$core$Task$andThen,
7215+ $lynxjs_elm$http$Http$updateReqs,
7218+ A2($elm$core$Dict$remove, tracker, reqs));
7220+ $elm$core$Process$kill(pid));
7225+ $elm$core$Task$andThen,
7227+ var _v4 = req.tracker;
7228+ if (_v4.$ === 'Nothing') {
7229+ return A3($lynxjs_elm$http$Http$updateReqs, router, otherCmds, reqs);
7231+ var tracker = _v4.a;
7233+ $lynxjs_elm$http$Http$updateReqs,
7236+ A3($elm$core$Dict$insert, tracker, pid, reqs));
7239+ $elm$core$Process$spawn(
7243+ $elm$core$Platform$sendToApp(router),
7249+var $lynxjs_elm$http$Http$onEffects = F4(
7250+ function (router, cmds, subs, state) {
7252+ $elm$core$Task$andThen,
7254+ return $elm$core$Task$succeed(
7255+ A2($lynxjs_elm$http$Http$State, reqs, subs));
7257+ A3($lynxjs_elm$http$Http$updateReqs, router, cmds, state.reqs));
7259+var $elm$core$List$maybeCons = F3(
7260+ function (f, mx, xs) {
7262+ if (_v0.$ === 'Just') {
7264+ return A2($elm$core$List$cons, x, xs);
7269+var $elm$core$List$filterMap = F2(
7272+ $elm$core$List$foldr,
7273+ $elm$core$List$maybeCons(f),
7277+var $lynxjs_elm$http$Http$maybeSend = F4(
7278+ function (router, desiredTracker, progress, _v0) {
7279+ var actualTracker = _v0.a;
7281+ return _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(
7283+ $elm$core$Platform$sendToApp,
7285+ toMsg(progress))) : $elm$core$Maybe$Nothing;
7287+var $lynxjs_elm$http$Http$onSelfMsg = F3(
7288+ function (router, _v0, state) {
7289+ var tracker = _v0.a;
7290+ var progress = _v0.b;
7292+ $elm$core$Task$andThen,
7294+ return $elm$core$Task$succeed(state);
7296+ $elm$core$Task$sequence(
7298+ $elm$core$List$filterMap,
7299+ A3($lynxjs_elm$http$Http$maybeSend, router, tracker, progress),
7302+var $lynxjs_elm$http$Http$Cancel = function (a) {
7303+ return {$: 'Cancel', a: a};
7305+var $lynxjs_elm$http$Http$cmdMap = F2(
7306+ function (func, cmd) {
7307+ if (cmd.$ === 'Cancel') {
7308+ var tracker = cmd.a;
7309+ return $lynxjs_elm$http$Http$Cancel(tracker);
7312+ return $lynxjs_elm$http$Http$Request(
7314+ allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,
7316+ expect: A2(_Http_mapExpect, func, r.expect),
7317+ headers: r.headers,
7319+ timeout: r.timeout,
7320+ tracker: r.tracker,
7325+var $lynxjs_elm$http$Http$MySub = F2(
7327+ return {$: 'MySub', a: a, b: b};
7329+var $lynxjs_elm$http$Http$subMap = F2(
7330+ function (func, _v0) {
7331+ var tracker = _v0.a;
7334+ $lynxjs_elm$http$Http$MySub,
7336+ A2($elm$core$Basics$composeR, toMsg, func));
7338+_Platform_effectManagers['Http'] = _Platform_createManager($lynxjs_elm$http$Http$init, $lynxjs_elm$http$Http$onEffects, $lynxjs_elm$http$Http$onSelfMsg, $lynxjs_elm$http$Http$cmdMap, $lynxjs_elm$http$Http$subMap);
7339+var $lynxjs_elm$http$Http$command = _Platform_leaf('Http');
7340+var $lynxjs_elm$http$Http$subscription = _Platform_leaf('Http');
7341+var $lynxjs_elm$http$Http$request = function (r) {
7342+ return $lynxjs_elm$http$Http$command(
7343+ $lynxjs_elm$http$Http$Request(
7344+ {allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));
7346+var $elm$json$Json$Encode$string = _Json_wrap;
7347+var $author$project$Main$ackMessages = F3(
7348+ function (serverUrl, token, messageIds) {
7349+ return $lynxjs_elm$http$Http$request(
7351+ body: $lynxjs_elm$http$Http$jsonBody(
7352+ $elm$json$Json$Encode$object(
7357+ A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, messageIds))
7360+ $lynxjs_elm$http$Http$expectJson,
7361+ $author$project$Main$GotAck,
7362+ A2($elm$json$Json$Decode$field, 'ok', $elm$json$Json$Decode$bool)),
7363+ headers: _List_fromArray(
7365+ A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7368+ timeout: $elm$core$Maybe$Just(5000),
7369+ tracker: $elm$core$Maybe$Nothing,
7370+ url: serverUrl + '/messages/ack'
7373+var $lynxjs_elm$crypto$Crypto$X25519$getPublicKey = _Crypto_x25519GetPublicKey;
7374+var $lynxjs_elm$crypto$Crypto$X25519$getSharedSecret = _Crypto_x25519GetSharedSecret;
7375+var $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex = _Crypto_cipherKeyFromHex;
7376+var $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex = _Crypto_cipherNonce24FromHex;
7377+var $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex = _Crypto_x25519PrivateKeyFromHex;
7378+var $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex = _Crypto_x25519PublicKeyFromHex;
7379+var $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex = _Crypto_ed25519PublicKeyToHex;
7380+var $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex = _Crypto_x25519PublicKeyToHex;
7381+var $lynxjs_elm$crypto$Crypto$Ed25519$sign = _Crypto_ed25519Sign;
7382+var $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex = _Crypto_ed25519SignatureToHex;
7383+var $elm$core$Basics$modBy = _Basics_modBy;
7384+var $author$project$Main$nibbleToHex = function (n) {
7387+ return _Utils_chr('0');
7389+ return _Utils_chr('1');
7391+ return _Utils_chr('2');
7393+ return _Utils_chr('3');
7395+ return _Utils_chr('4');
7397+ return _Utils_chr('5');
7399+ return _Utils_chr('6');
7401+ return _Utils_chr('7');
7403+ return _Utils_chr('8');
7405+ return _Utils_chr('9');
7407+ return _Utils_chr('a');
7409+ return _Utils_chr('b');
7411+ return _Utils_chr('c');
7413+ return _Utils_chr('d');
7415+ return _Utils_chr('e');
7417+ return _Utils_chr('f');
7420+var $author$project$Main$charToHexBytes = function (c) {
7421+ var code = $elm$core$Char$toCode(c);
7423+ return _List_fromArray(
7425+ $author$project$Main$nibbleToHex((code / 16) | 0),
7426+ $author$project$Main$nibbleToHex(
7427+ A2($elm$core$Basics$modBy, 16, code))
7431+ var b2 = 128 + A2($elm$core$Basics$modBy, 64, code);
7432+ var b1 = 192 + ((code / 64) | 0);
7433+ return _List_fromArray(
7435+ $author$project$Main$nibbleToHex((b1 / 16) | 0),
7436+ $author$project$Main$nibbleToHex(
7437+ A2($elm$core$Basics$modBy, 16, b1)),
7438+ $author$project$Main$nibbleToHex((b2 / 16) | 0),
7439+ $author$project$Main$nibbleToHex(
7440+ A2($elm$core$Basics$modBy, 16, b2))
7443+ var b3 = 128 + A2($elm$core$Basics$modBy, 64, code);
7444+ var b2 = 128 + A2($elm$core$Basics$modBy, 64, (code / 64) | 0);
7445+ var b1 = 224 + ((code / 4096) | 0);
7446+ return _List_fromArray(
7448+ $author$project$Main$nibbleToHex((b1 / 16) | 0),
7449+ $author$project$Main$nibbleToHex(
7450+ A2($elm$core$Basics$modBy, 16, b1)),
7451+ $author$project$Main$nibbleToHex((b2 / 16) | 0),
7452+ $author$project$Main$nibbleToHex(
7453+ A2($elm$core$Basics$modBy, 16, b2)),
7454+ $author$project$Main$nibbleToHex((b3 / 16) | 0),
7455+ $author$project$Main$nibbleToHex(
7456+ A2($elm$core$Basics$modBy, 16, b3))
7461+var $elm$core$List$append = F2(
7462+ function (xs, ys) {
7466+ return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);
7469+var $elm$core$List$concat = function (lists) {
7470+ return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);
7472+var $elm$core$List$concatMap = F2(
7473+ function (f, list) {
7474+ return $elm$core$List$concat(
7475+ A2($elm$core$List$map, f, list));
7477+var $elm$core$String$foldr = _String_foldr;
7478+var $elm$core$String$toList = function (string) {
7479+ return A3($elm$core$String$foldr, $elm$core$List$cons, _List_Nil, string);
7481+var $author$project$Main$textToHex = function (str) {
7482+ return $elm$core$String$fromList(
7484+ $elm$core$List$concatMap,
7485+ $author$project$Main$charToHexBytes,
7486+ $elm$core$String$toList(str)));
7488+var $lynxjs_elm$crypto$Crypto$Cipher$xchacha20Encrypt = _Crypto_xchacha20Encrypt;
7489+var $author$project$Main$encryptMessage = F6(
7490+ function (edPriv, edPub, recipientXPubHex, ephSeedHex, nonceHex, plaintextJson) {
7491+ var _v0 = _Utils_Tuple3(
7492+ $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex(ephSeedHex),
7493+ $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex(recipientXPubHex),
7494+ $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex(nonceHex));
7495+ if (((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) && (_v0.c.$ === 'Just')) {
7496+ var ephPriv = _v0.a.a;
7497+ var recipientXPub = _v0.b.a;
7498+ var nonce = _v0.c.a;
7499+ var sharedSecretHex = A2($lynxjs_elm$crypto$Crypto$X25519$getSharedSecret, ephPriv, recipientXPub);
7500+ var ephPub = $lynxjs_elm$crypto$Crypto$X25519$getPublicKey(ephPriv);
7501+ var ephPubHex = $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex(ephPub);
7502+ var _v1 = $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex(sharedSecretHex);
7503+ if (_v1.$ === 'Just') {
7505+ var senderPubHex = $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edPub);
7506+ var plaintextHex = $author$project$Main$textToHex(plaintextJson);
7507+ var ciphertextHex = A3($lynxjs_elm$crypto$Crypto$Cipher$xchacha20Encrypt, key, nonce, plaintextHex);
7508+ var sig = A2($lynxjs_elm$crypto$Crypto$Ed25519$sign, ciphertextHex, edPriv);
7509+ var sigHex = $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex(sig);
7510+ return $elm$core$Maybe$Just(
7517+ _Utils_ap(senderPubHex, sigHex)))));
7519+ return $elm$core$Maybe$Nothing;
7522+ return $elm$core$Maybe$Nothing;
7525+var $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey = _Crypto_ed25519GetPublicKey;
7526+var $author$project$Main$httpErrorToString = function (err) {
7530+ return 'Bad URL: ' + url;
7532+ return 'Request timed out';
7533+ case 'NetworkError':
7534+ return 'Network error';
7537+ return 'Server error: ' + $elm$core$String$fromInt(code);
7540+ return 'Bad response: ' + msg_;
7543+var $elm$json$Json$Encode$int = _Json_wrap;
7544+var $elm$core$List$isEmpty = function (xs) {
7551+var $elm$core$String$isEmpty = function (string) {
7552+ return string === '';
7554+var $elm$core$String$slice = _String_slice;
7555+var $elm$core$String$left = F2(
7556+ function (n, string) {
7557+ return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);
7559+var $author$project$Main$GotLookup = function (a) {
7560+ return {$: 'GotLookup', a: a};
7562+var $lynxjs_elm$http$Http$emptyBody = _Http_emptyBody;
7563+var $lynxjs_elm$http$Http$get = function (r) {
7564+ return $lynxjs_elm$http$Http$request(
7565+ {body: $lynxjs_elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});
7567+var $author$project$Main$LookupResponse = F2(
7568+ function (pubkey, online) {
7569+ return {online: online, pubkey: pubkey};
7571+var $author$project$Main$lookupDecoder = function (pubkey) {
7573+ $elm$json$Json$Decode$map,
7574+ $author$project$Main$LookupResponse(pubkey),
7575+ A2($elm$json$Json$Decode$field, 'online', $elm$json$Json$Decode$bool));
7577+var $author$project$Main$lookupPresence = F2(
7578+ function (serverUrl, pubkey) {
7579+ return $lynxjs_elm$http$Http$get(
7582+ $lynxjs_elm$http$Http$expectJson,
7583+ $author$project$Main$GotLookup,
7584+ $author$project$Main$lookupDecoder(pubkey)),
7585+ url: serverUrl + ('/lookup/' + pubkey)
7588+var $elm$core$Maybe$map = F2(
7589+ function (f, maybe) {
7590+ if (maybe.$ === 'Just') {
7591+ var value = maybe.a;
7592+ return $elm$core$Maybe$Just(
7595+ return $elm$core$Maybe$Nothing;
7598+var $elm$core$Platform$Cmd$batch = _Platform_batch;
7599+var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);
7600+var $elm$core$String$length = _String_length;
7601+var $author$project$Main$parseIdentity = function (str) {
7602+ var _v0 = A2($elm$core$String$split, '.', str);
7603+ if ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {
7607+ return (($elm$core$String$length(edHex) === 64) && ($elm$core$String$length(xHex) === 64)) ? $elm$core$Maybe$Just(
7608+ _Utils_Tuple2(edHex, xHex)) : $elm$core$Maybe$Nothing;
7610+ return $elm$core$Maybe$Nothing;
7613+var $author$project$Main$GotPoll = function (a) {
7614+ return {$: 'GotPoll', a: a};
7616+var $author$project$Main$PollResponse = F2(
7617+ function (events, cursor) {
7618+ return {cursor: cursor, events: events};
7620+var $elm$json$Json$Decode$list = _Json_decodeList;
7621+var $author$project$Main$PollEvent = F3(
7622+ function (id, eventType, payload) {
7623+ return {eventType: eventType, id: id, payload: payload};
7625+var $elm$json$Json$Decode$map3 = _Json_map3;
7626+var $elm$json$Json$Decode$string = _Json_decodeString;
7627+var $author$project$Main$pollEventDecoder = A4(
7628+ $elm$json$Json$Decode$map3,
7629+ $author$project$Main$PollEvent,
7630+ A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$string),
7631+ A2($elm$json$Json$Decode$field, 'eventType', $elm$json$Json$Decode$string),
7632+ A2($elm$json$Json$Decode$field, 'payload', $elm$json$Json$Decode$string));
7633+var $author$project$Main$pollDecoder = A3(
7634+ $elm$json$Json$Decode$map2,
7635+ $author$project$Main$PollResponse,
7637+ $elm$json$Json$Decode$field,
7639+ $elm$json$Json$Decode$list($author$project$Main$pollEventDecoder)),
7640+ A2($elm$json$Json$Decode$field, 'cursor', $elm$json$Json$Decode$string));
7641+var $author$project$Main$pollMessages = F2(
7642+ function (serverUrl, token) {
7643+ return $lynxjs_elm$http$Http$request(
7645+ body: $lynxjs_elm$http$Http$emptyBody,
7646+ expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotPoll, $author$project$Main$pollDecoder),
7647+ headers: _List_fromArray(
7649+ A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7652+ timeout: $elm$core$Maybe$Just(10000),
7653+ tracker: $elm$core$Maybe$Nothing,
7654+ url: serverUrl + '/poll'
7657+var $lynxjs_elm$crypto$Crypto$Ed25519$privateKeyFromHex = _Crypto_ed25519PrivateKeyFromHex;
7658+var $elm$core$Basics$ge = _Utils_ge;
7659+var $author$project$Main$decodeUtf8Help = F2(
7660+ function (bytes, acc) {
7664+ return $elm$core$Maybe$Just(acc);
7667+ var rest = bytes.b;
7669+ var $temp$bytes = rest,
7671+ $elm$core$List$cons,
7672+ $elm$core$Char$fromCode(b),
7674+ bytes = $temp$bytes;
7676+ continue decodeUtf8Help;
7678+ if ((b >= 192) && (b < 224)) {
7681+ var rest2 = rest.b;
7682+ var code = ((b - 192) * 64) + (b2 - 128);
7683+ var $temp$bytes = rest2,
7685+ $elm$core$List$cons,
7686+ $elm$core$Char$fromCode(code),
7688+ bytes = $temp$bytes;
7690+ continue decodeUtf8Help;
7692+ return $elm$core$Maybe$Nothing;
7695+ if ((b >= 224) && (b < 240)) {
7696+ if (rest.b && rest.b.b) {
7701+ var code = (((b - 224) * 4096) + ((b2 - 128) * 64)) + (b3 - 128);
7702+ var $temp$bytes = rest3,
7704+ $elm$core$List$cons,
7705+ $elm$core$Char$fromCode(code),
7707+ bytes = $temp$bytes;
7709+ continue decodeUtf8Help;
7711+ return $elm$core$Maybe$Nothing;
7715+ if ((rest.b && rest.b.b) && rest.b.b.b) {
7722+ var code = ((((b - 240) * 262144) + ((b2 - 128) * 4096)) + ((b3 - 128) * 64)) + (b4 - 128);
7723+ var $temp$bytes = rest4,
7725+ $elm$core$List$cons,
7726+ $elm$core$Char$fromCode(code),
7728+ bytes = $temp$bytes;
7730+ continue decodeUtf8Help;
7732+ return $elm$core$Maybe$Nothing;
7735+ return $elm$core$Maybe$Nothing;
7743+var $author$project$Main$decodeUtf8Bytes = function (bytes) {
7745+ $elm$core$Maybe$map,
7746+ A2($elm$core$Basics$composeR, $elm$core$List$reverse, $elm$core$String$fromList),
7747+ A2($author$project$Main$decodeUtf8Help, bytes, _List_Nil));
7749+var $author$project$Main$hexCharToInt = function (c) {
7750+ var code = $elm$core$Char$toCode(c);
7751+ return ((code >= 48) && (code <= 57)) ? $elm$core$Maybe$Just(code - 48) : (((code >= 97) && (code <= 102)) ? $elm$core$Maybe$Just(code - 87) : (((code >= 65) && (code <= 70)) ? $elm$core$Maybe$Just(code - 55) : $elm$core$Maybe$Nothing));
7753+var $elm$core$Maybe$map2 = F3(
7754+ function (func, ma, mb) {
7755+ if (ma.$ === 'Nothing') {
7756+ return $elm$core$Maybe$Nothing;
7759+ if (mb.$ === 'Nothing') {
7760+ return $elm$core$Maybe$Nothing;
7763+ return $elm$core$Maybe$Just(
7768+var $author$project$Main$pairUp = function (list) {
7769+ if (list.b && list.b.b) {
7775+ $elm$core$List$cons,
7776+ _Utils_Tuple2(a, b),
7777+ $author$project$Main$pairUp(rest));
7782+var $author$project$Main$hexToBytes = function (hex) {
7783+ var chars = $elm$core$String$toList(hex);
7784+ var pairs = $author$project$Main$pairUp(chars);
7786+ $elm$core$List$filterMap,
7791+ $elm$core$Maybe$map2,
7794+ return (h * 16) + l;
7796+ $author$project$Main$hexCharToInt(hi),
7797+ $author$project$Main$hexCharToInt(lo));
7801+var $elm$core$Maybe$withDefault = F2(
7802+ function (_default, maybe) {
7803+ if (maybe.$ === 'Just') {
7804+ var value = maybe.a;
7810+var $author$project$Main$hexToText = function (hex) {
7812+ $elm$core$Maybe$withDefault,
7814+ $author$project$Main$decodeUtf8Bytes(
7815+ $author$project$Main$hexToBytes(hex)));
7817+var $elm$core$Basics$not = _Basics_not;
7818+var $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyFromHex = _Crypto_ed25519PublicKeyFromHex;
7819+var $lynxjs_elm$crypto$Crypto$Ed25519$signatureFromHex = _Crypto_ed25519SignatureFromHex;
7820+var $lynxjs_elm$crypto$Crypto$Ed25519$verify = _Crypto_ed25519Verify;
7821+var $lynxjs_elm$crypto$Crypto$Cipher$xchacha20Decrypt = _Crypto_xchacha20Decrypt;
7822+var $author$project$Main$decryptMessage = F2(
7823+ function (xPriv, blob) {
7824+ var hexLen = $elm$core$String$length(blob);
7825+ if (hexLen < 304) {
7826+ return $elm$core$Maybe$Nothing;
7828+ var sigHex = A3($elm$core$String$slice, hexLen - 128, hexLen, blob);
7829+ var senderEdPubHex = A3($elm$core$String$slice, hexLen - 192, hexLen - 128, blob);
7830+ var nonceHex = A3($elm$core$String$slice, 64, 112, blob);
7831+ var ephPubHex = A3($elm$core$String$slice, 0, 64, blob);
7832+ var ciphertextHex = A3($elm$core$String$slice, 112, hexLen - 192, blob);
7833+ var _v0 = _Utils_Tuple2(
7834+ $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyFromHex(senderEdPubHex),
7835+ $lynxjs_elm$crypto$Crypto$Ed25519$signatureFromHex(sigHex));
7836+ if ((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) {
7837+ var senderEdPub = _v0.a.a;
7839+ if (!A3($lynxjs_elm$crypto$Crypto$Ed25519$verify, sig, ciphertextHex, senderEdPub)) {
7840+ return $elm$core$Maybe$Nothing;
7842+ var _v1 = _Utils_Tuple2(
7843+ $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex(ephPubHex),
7844+ $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex(nonceHex));
7845+ if ((_v1.a.$ === 'Just') && (_v1.b.$ === 'Just')) {
7846+ var ephPub = _v1.a.a;
7847+ var nonce = _v1.b.a;
7848+ var sharedSecretHex = A2($lynxjs_elm$crypto$Crypto$X25519$getSharedSecret, xPriv, ephPub);
7849+ var _v2 = $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex(sharedSecretHex);
7850+ if (_v2.$ === 'Just') {
7852+ var _v3 = A3($lynxjs_elm$crypto$Crypto$Cipher$xchacha20Decrypt, key, nonce, ciphertextHex);
7853+ if (_v3.$ === 'Just') {
7854+ var plaintextHex = _v3.a;
7855+ return $elm$core$Maybe$Just(
7858+ $author$project$Main$hexToText(plaintextHex)));
7860+ return $elm$core$Maybe$Nothing;
7863+ return $elm$core$Maybe$Nothing;
7866+ return $elm$core$Maybe$Nothing;
7870+ return $elm$core$Maybe$Nothing;
7874+var $author$project$Main$Envelope = F4(
7875+ function (toKey, fromKey, encryptedBlob, timestamp) {
7876+ return {encryptedBlob: encryptedBlob, fromKey: fromKey, timestamp: timestamp, toKey: toKey};
7878+var $elm$json$Json$Decode$int = _Json_decodeInt;
7879+var $elm$json$Json$Decode$map4 = _Json_map4;
7880+var $author$project$Main$envelopeDecoder = A5(
7881+ $elm$json$Json$Decode$map4,
7882+ $author$project$Main$Envelope,
7883+ A2($elm$json$Json$Decode$field, 'toKey', $elm$json$Json$Decode$string),
7884+ A2($elm$json$Json$Decode$field, 'fromKey', $elm$json$Json$Decode$string),
7885+ A2($elm$json$Json$Decode$field, 'encryptedBlob', $elm$json$Json$Decode$string),
7886+ A2($elm$json$Json$Decode$field, 'timestamp', $elm$json$Json$Decode$int));
7887+var $elm$core$Set$insert = F2(
7888+ function (key, _v0) {
7890+ return $elm$core$Set$Set_elm_builtin(
7891+ A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict));
7893+var $elm$core$Dict$member = F2(
7894+ function (key, dict) {
7895+ var _v0 = A2($elm$core$Dict$get, key, dict);
7896+ if (_v0.$ === 'Just') {
7902+var $elm$core$Set$member = F2(
7903+ function (key, _v0) {
7905+ return A2($elm$core$Dict$member, key, dict);
7907+var $author$project$Main$MessagePayload = F4(
7908+ function (type_, id, timestamp, body) {
7909+ return {body: body, id: id, timestamp: timestamp, type_: type_};
7911+var $author$project$Main$messagePayloadDecoder = A5(
7912+ $elm$json$Json$Decode$map4,
7913+ $author$project$Main$MessagePayload,
7914+ A2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string),
7915+ A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$string),
7916+ A2($elm$json$Json$Decode$field, 'timestamp', $elm$json$Json$Decode$int),
7917+ A2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string));
7918+var $author$project$Main$processEvents = F4(
7919+ function (xPriv, myEdHex, events, seenIds) {
7921+ $elm$core$List$foldl,
7923+ function (event, _v0) {
7927+ if (event.eventType !== 'message') {
7928+ return _Utils_Tuple3(msgs, seen, acks);
7930+ var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$envelopeDecoder, event.payload);
7931+ if (_v1.$ === 'Err') {
7932+ return _Utils_Tuple3(
7935+ A2($elm$core$List$cons, event.id, acks));
7937+ var envelope = _v1.a;
7938+ if (_Utils_eq(envelope.fromKey, myEdHex)) {
7939+ return _Utils_Tuple3(
7942+ A2($elm$core$List$cons, event.id, acks));
7944+ var _v2 = A2($author$project$Main$decryptMessage, xPriv, envelope.encryptedBlob);
7945+ if (_v2.$ === 'Nothing') {
7946+ return _Utils_Tuple3(
7949+ A2($elm$core$List$cons, event.id, acks));
7952+ var senderPub = _v3.a;
7954+ var _v4 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$messagePayloadDecoder, json);
7955+ if (_v4.$ === 'Err') {
7956+ return _Utils_Tuple3(
7959+ A2($elm$core$List$cons, event.id, acks));
7961+ var payload = _v4.a;
7962+ return A2($elm$core$Set$member, payload.id, seen) ? _Utils_Tuple3(
7965+ A2($elm$core$List$cons, event.id, acks)) : _Utils_Tuple3(
7967+ $elm$core$List$cons,
7970+ {body: payload.body, id: payload.id, outgoing: false, timestamp: payload.timestamp}),
7972+ A2($elm$core$Set$insert, payload.id, seen),
7973+ A2($elm$core$List$cons, event.id, acks));
7980+ _Utils_Tuple3(_List_Nil, seenIds, _List_Nil),
7983+var $author$project$Main$GotChallenge = function (a) {
7984+ return {$: 'GotChallenge', a: a};
7986+var $author$project$Main$ChallengeResponse = function (challenge) {
7987+ return {challenge: challenge};
7989+var $author$project$Main$challengeDecoder = A2(
7990+ $elm$json$Json$Decode$map,
7991+ $author$project$Main$ChallengeResponse,
7992+ A2($elm$json$Json$Decode$field, 'challenge', $elm$json$Json$Decode$string));
7993+var $lynxjs_elm$http$Http$post = function (r) {
7994+ return $lynxjs_elm$http$Http$request(
7995+ {body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});
7997+var $author$project$Main$requestChallenge = F2(
7998+ function (serverUrl, pubkey) {
7999+ return $lynxjs_elm$http$Http$post(
8001+ body: $lynxjs_elm$http$Http$jsonBody(
8002+ $elm$json$Json$Encode$object(
8007+ $elm$json$Json$Encode$string(pubkey))
8009+ expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotChallenge, $author$project$Main$challengeDecoder),
8010+ url: serverUrl + '/auth/challenge'
8013+var $author$project$Main$GotSendResult = function (a) {
8014+ return {$: 'GotSendResult', a: a};
8016+var $author$project$Main$SendResponse = F2(
8017+ function (status, messageId) {
8018+ return {messageId: messageId, status: status};
8020+var $author$project$Main$sendDecoder = A3(
8021+ $elm$json$Json$Decode$map2,
8022+ $author$project$Main$SendResponse,
8023+ A2($elm$json$Json$Decode$field, 'status', $elm$json$Json$Decode$string),
8024+ A2($elm$json$Json$Decode$field, 'messageId', $elm$json$Json$Decode$string));
8025+var $author$project$Main$sendMessageHttp = F5(
8026+ function (serverUrl, token, to, encryptedBlob, timestamp) {
8027+ return $lynxjs_elm$http$Http$request(
8029+ body: $lynxjs_elm$http$Http$jsonBody(
8030+ $elm$json$Json$Encode$object(
8035+ $elm$json$Json$Encode$string(to)),
8038+ $elm$json$Json$Encode$string(encryptedBlob)),
8041+ $elm$json$Json$Encode$int(timestamp))
8043+ expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotSendResult, $author$project$Main$sendDecoder),
8044+ headers: _List_fromArray(
8046+ A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
8049+ timeout: $elm$core$Maybe$Just(10000),
8050+ tracker: $elm$core$Maybe$Nothing,
8051+ url: serverUrl + '/messages/'
8054+var $elm$core$String$trim = _String_trim;
8055+var $author$project$Main$GotVerify = function (a) {
8056+ return {$: 'GotVerify', a: a};
8058+var $author$project$Main$VerifyResponse = F2(
8059+ function (token, expiresAt) {
8060+ return {expiresAt: expiresAt, token: token};
8062+var $author$project$Main$verifyDecoder = A3(
8063+ $elm$json$Json$Decode$map2,
8064+ $author$project$Main$VerifyResponse,
8065+ A2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string),
8066+ A2($elm$json$Json$Decode$field, 'expiresAt', $elm$json$Json$Decode$int));
8067+var $author$project$Main$verifyAuth = F4(
8068+ function (serverUrl, pubkey, challenge, signature) {
8069+ return $lynxjs_elm$http$Http$post(
8071+ body: $lynxjs_elm$http$Http$jsonBody(
8072+ $elm$json$Json$Encode$object(
8077+ $elm$json$Json$Encode$string(pubkey)),
8080+ $elm$json$Json$Encode$string(challenge)),
8083+ $elm$json$Json$Encode$string(signature))
8085+ expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotVerify, $author$project$Main$verifyDecoder),
8086+ url: serverUrl + '/auth/verify'
8089+var $author$project$Main$update = F2(
8090+ function (msg, model) {
8093+ var seedHex = msg.a;
8094+ var xPriv = $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex(seedHex);
8095+ var edPriv = $lynxjs_elm$crypto$Crypto$Ed25519$privateKeyFromHex(seedHex);
8096+ return _Utils_Tuple2(
8101+ edPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey, edPriv),
8103+ xPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$X25519$getPublicKey, xPriv)
8105+ $elm$core$Platform$Cmd$none);
8108+ return _Utils_Tuple2(
8112+ currentTime: ($elm$time$Time$posixToMillis(posix) / 1000) | 0
8114+ $elm$core$Platform$Cmd$none);
8116+ var _v1 = model.edPub;
8117+ if (_v1.$ === 'Just') {
8119+ return _Utils_Tuple2(
8122+ {connecting: true, error: $elm$core$Maybe$Nothing}),
8124+ $author$project$Main$requestChallenge,
8126+ $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)));
8128+ return _Utils_Tuple2(
8132+ error: $elm$core$Maybe$Just('No identity keypair')
8134+ $elm$core$Platform$Cmd$none);
8136+ case 'GotChallenge':
8137+ var result = msg.a;
8138+ var _v2 = _Utils_Tuple2(result, model.edPriv);
8139+ if (_v2.a.$ === 'Ok') {
8140+ if (_v2.b.$ === 'Just') {
8141+ var resp = _v2.a.a;
8142+ var priv = _v2.b.a;
8143+ var sig = A2($lynxjs_elm$crypto$Crypto$Ed25519$sign, resp.challenge, priv);
8144+ return _Utils_Tuple2(
8147+ $author$project$Main$verifyAuth,
8150+ $elm$core$Maybe$withDefault,
8152+ A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex, model.edPub)),
8154+ $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex(sig)));
8156+ return _Utils_Tuple2(
8159+ {connecting: false}),
8160+ $elm$core$Platform$Cmd$none);
8164+ return _Utils_Tuple2(
8169+ error: $elm$core$Maybe$Just(
8170+ $author$project$Main$httpErrorToString(err))
8172+ $elm$core$Platform$Cmd$none);
8175+ var result = msg.a;
8176+ if (result.$ === 'Ok') {
8177+ var resp = result.a;
8178+ return (resp.token !== '') ? _Utils_Tuple2(
8181+ {authToken: resp.token, connecting: false, screen: $author$project$Main$ContactsScreen}),
8182+ $elm$core$Platform$Cmd$none) : _Utils_Tuple2(
8187+ error: $elm$core$Maybe$Just('Authentication failed')
8189+ $elm$core$Platform$Cmd$none);
8191+ var err = result.a;
8192+ return _Utils_Tuple2(
8197+ error: $elm$core$Maybe$Just(
8198+ $author$project$Main$httpErrorToString(err))
8200+ $elm$core$Platform$Cmd$none);
8202+ case 'PrepareSend':
8203+ return $elm$core$String$isEmpty(
8204+ $elm$core$String$trim(model.draft)) ? _Utils_Tuple2(model, $elm$core$Platform$Cmd$none) : _Utils_Tuple2(
8209+ $elm$random$Random$generate,
8210+ $author$project$Main$GotSendEntropy,
8211+ $author$project$Main$randomHexString(72)));
8212+ case 'GotSendEntropy':
8213+ var entropyHex = msg.a;
8214+ var _v4 = _Utils_Tuple2(model.edPriv, model.edPub);
8215+ if ((_v4.a.$ === 'Just') && (_v4.b.$ === 'Just')) {
8216+ var edPriv = _v4.a.a;
8217+ var edPub = _v4.b.a;
8218+ var recipientEdHex = model.activeChat;
8219+ var contact = A2($elm$core$Dict$get, recipientEdHex, model.contacts);
8220+ if (contact.$ === 'Just') {
8222+ var timestamp = model.currentTime;
8223+ var nonceHex = A3($elm$core$String$slice, 96, 144, entropyHex);
8224+ var msgId = A2($elm$core$String$left, 32, entropyHex);
8225+ var outMsg = {body: model.draft, id: msgId, outgoing: true, timestamp: timestamp};
8226+ var plaintextJson = A2(
8227+ $elm$json$Json$Encode$encode,
8229+ $elm$json$Json$Encode$object(
8234+ $elm$json$Json$Encode$string('text')),
8237+ $elm$json$Json$Encode$string(msgId)),
8240+ $elm$json$Json$Encode$int(timestamp)),
8243+ $elm$json$Json$Encode$string(model.draft))
8246+ $elm$core$Maybe$withDefault,
8248+ A2($elm$core$Dict$get, recipientEdHex, model.messages));
8249+ var ephSeedHex = A3($elm$core$String$slice, 32, 96, entropyHex);
8250+ var blob = A6($author$project$Main$encryptMessage, edPriv, edPub, c.xPubHex, ephSeedHex, nonceHex, plaintextJson);
8251+ if (blob.$ === 'Just') {
8252+ var blobHex = blob.a;
8253+ return _Utils_Tuple2(
8259+ $elm$core$Dict$insert,
8267+ A5($author$project$Main$sendMessageHttp, model.serverUrl, model.authToken, recipientEdHex, blobHex, timestamp));
8269+ return _Utils_Tuple2(
8273+ error: $elm$core$Maybe$Just('Encryption failed'),
8276+ $elm$core$Platform$Cmd$none);
8279+ return _Utils_Tuple2(
8283+ error: $elm$core$Maybe$Just('Contact not found'),
8286+ $elm$core$Platform$Cmd$none);
8289+ return _Utils_Tuple2(
8293+ error: $elm$core$Maybe$Just('No identity'),
8296+ $elm$core$Platform$Cmd$none);
8298+ case 'GotSendResult':
8299+ var result = msg.a;
8300+ if (result.$ === 'Ok') {
8301+ return _Utils_Tuple2(
8305+ $elm$core$Platform$Cmd$none);
8307+ var err = result.a;
8308+ return _Utils_Tuple2(
8312+ error: $elm$core$Maybe$Just(
8313+ $author$project$Main$httpErrorToString(err)),
8316+ $elm$core$Platform$Cmd$none);
8320+ var t = ($elm$time$Time$posixToMillis(posix) / 1000) | 0;
8321+ return (model.authToken !== '') ? _Utils_Tuple2(
8325+ A2($author$project$Main$pollMessages, model.serverUrl, model.authToken)) : _Utils_Tuple2(
8329+ $elm$core$Platform$Cmd$none);
8331+ var result = msg.a;
8332+ var _v8 = _Utils_Tuple3(result, model.xPriv, model.edPub);
8335+ if (_v8.a.$ === 'Ok') {
8336+ if ((_v8.b.$ === 'Just') && (_v8.c.$ === 'Just')) {
8337+ var resp = _v8.a.a;
8338+ var xPriv = _v8.b.a;
8339+ var edPub = _v8.c.a;
8340+ var myEdHex = $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edPub);
8341+ var _v9 = A4($author$project$Main$processEvents, xPriv, myEdHex, resp.events, model.seenIds);
8342+ var newMessages = _v9.a;
8343+ var newSeenIds = _v9.b;
8344+ var ackIds = _v9.c;
8345+ var ackCmd = $elm$core$List$isEmpty(ackIds) ? $elm$core$Platform$Cmd$none : A3($author$project$Main$ackMessages, model.serverUrl, model.authToken, ackIds);
8346+ var updatedContacts = A3(
8347+ $elm$core$List$foldl,
8349+ function (_v11, dict) {
8351+ var chatMsg = _v11.b;
8353+ $elm$core$Dict$update,
8355+ function (existing) {
8356+ if (existing.$ === 'Just') {
8357+ var c = existing.a;
8358+ return $elm$core$Maybe$Just(
8361+ {lastMessage: chatMsg.body, lastTime: chatMsg.timestamp}));
8363+ return $elm$core$Maybe$Just(
8366+ lastMessage: chatMsg.body,
8367+ lastTime: chatMsg.timestamp,
8368+ name: A2($elm$core$String$left, 8, from) + '...',
8378+ var updatedMessages = A3(
8379+ $elm$core$List$foldl,
8381+ function (_v10, dict) {
8383+ var chatMsg = _v10.b;
8385+ $elm$core$Maybe$withDefault,
8387+ A2($elm$core$Dict$get, from, dict));
8389+ $elm$core$Dict$insert,
8399+ return _Utils_Tuple2(
8402+ {contacts: updatedContacts, messages: updatedMessages, seenIds: newSeenIds}),
8408+ if ((_v8.a.a.$ === 'BadStatus') && (_v8.a.a.a === 401)) {
8409+ return _Utils_Tuple2(
8414+ error: $elm$core$Maybe$Just('Session expired, please reconnect'),
8415+ screen: $author$project$Main$SetupScreen
8417+ $elm$core$Platform$Cmd$none);
8423+ return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8425+ return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8427+ if ($elm$core$String$isEmpty(model.addIdentity)) {
8428+ return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8430+ var _v13 = $author$project$Main$parseIdentity(model.addIdentity);
8431+ if (_v13.$ === 'Just') {
8433+ var edHex = _v14.a;
8435+ var name = $elm$core$String$isEmpty(model.addName) ? (A2($elm$core$String$left, 8, edHex) + '...') : model.addName;
8436+ var contact = {edPubHex: edHex, lastMessage: '', lastTime: 0, name: name, online: false, xPubHex: xHex};
8437+ return _Utils_Tuple2(
8443+ contacts: A3($elm$core$Dict$insert, edHex, contact, model.contacts),
8444+ screen: $author$project$Main$ContactsScreen
8446+ A2($author$project$Main$lookupPresence, model.serverUrl, edHex));
8448+ return _Utils_Tuple2(
8452+ error: $elm$core$Maybe$Just('Invalid identity. Expected: <ed25519_hex>.<x25519_hex>')
8454+ $elm$core$Platform$Cmd$none);
8458+ var result = msg.a;
8459+ if (result.$ === 'Ok') {
8460+ var resp = result.a;
8461+ return _Utils_Tuple2(
8466+ $elm$core$Dict$update,
8468+ $elm$core$Maybe$map(
8470+ return _Utils_update(
8472+ {online: resp.online});
8476+ $elm$core$Platform$Cmd$none);
8478+ return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8481+ var screen = msg.a;
8482+ return _Utils_Tuple2(
8486+ $elm$core$Platform$Cmd$none);
8488+ var edPubHex = msg.a;
8489+ return _Utils_Tuple2(
8492+ {activeChat: edPubHex, draft: '', screen: $author$project$Main$ChatScreen}),
8493+ $elm$core$Platform$Cmd$none);
8494+ case 'UpdateDraft':
8496+ return _Utils_Tuple2(
8500+ $elm$core$Platform$Cmd$none);
8501+ case 'UpdateServerUrl':
8503+ return _Utils_Tuple2(
8506+ {serverUrl: text}),
8507+ $elm$core$Platform$Cmd$none);
8508+ case 'UpdateAddIdentity':
8510+ return _Utils_Tuple2(
8513+ {addIdentity: text}),
8514+ $elm$core$Platform$Cmd$none);
8515+ case 'UpdateAddName':
8517+ return _Utils_Tuple2(
8521+ $elm$core$Platform$Cmd$none);
8522+ case 'UpdateDisplayName':
8524+ return _Utils_Tuple2(
8527+ {displayName: text}),
8528+ $elm$core$Platform$Cmd$none);
8530+ return _Utils_Tuple2(
8533+ {error: $elm$core$Maybe$Nothing}),
8534+ $elm$core$Platform$Cmd$none);
8537+var $lynxjs_elm$ui$Lynx$Attributes$Column = {$: 'Column'};
8538+var $lynxjs_elm$virtual_dom$VirtualDom$style = _VirtualDom_style;
8539+var $lynxjs_elm$ui$Lynx$Attributes$style = $lynxjs_elm$virtual_dom$VirtualDom$style;
8540+var $lynxjs_elm$ui$Lynx$Attributes$backgroundColor = $lynxjs_elm$ui$Lynx$Attributes$style('backgroundColor');
8541+var $lynxjs_elm$ui$Lynx$Attributes$Center = {$: 'Center'};
8542+var $author$project$Main$DismissError = {$: 'DismissError'};
8543+var $lynxjs_elm$ui$Lynx$Attributes$Row = {$: 'Row'};
8544+var $lynxjs_elm$ui$Lynx$Attributes$alignmentToString = function (a) {
8547+ return 'flex-start';
8552+ case 'SpaceBetween':
8553+ return 'space-between';
8554+ case 'SpaceAround':
8555+ return 'space-around';
8556+ case 'SpaceEvenly':
8557+ return 'space-evenly';
8564+var $lynxjs_elm$ui$Lynx$Attributes$alignItems = function (a) {
8566+ $lynxjs_elm$ui$Lynx$Attributes$style,
8568+ $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8570+var $lynxjs_elm$ui$Lynx$Attributes$color = $lynxjs_elm$ui$Lynx$Attributes$style('color');
8571+var $lynxjs_elm$ui$Lynx$Attributes$intStyle = F2(
8572+ function (key, val) {
8574+ $lynxjs_elm$virtual_dom$VirtualDom$style,
8576+ $elm$core$String$fromInt(val));
8578+var $lynxjs_elm$ui$Lynx$Attributes$flex = $lynxjs_elm$ui$Lynx$Attributes$intStyle('flex');
8579+var $lynxjs_elm$ui$Lynx$Attributes$flexDirection = function (d) {
8581+ $lynxjs_elm$ui$Lynx$Attributes$style,
8590+ return 'row-reverse';
8592+ return 'column-reverse';
8596+var $lynxjs_elm$ui$Lynx$Attributes$pxStyle = F2(
8597+ function (key, val) {
8599+ $lynxjs_elm$virtual_dom$VirtualDom$style,
8601+ $elm$core$String$fromInt(val) + 'px');
8603+var $lynxjs_elm$ui$Lynx$Attributes$fontSize = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('fontSize');
8604+var $lynxjs_elm$virtual_dom$VirtualDom$Normal = function (a) {
8605+ return {$: 'Normal', a: a};
8607+var $lynxjs_elm$virtual_dom$VirtualDom$on = _VirtualDom_on;
8608+var $lynxjs_elm$ui$Lynx$Events$onTap = function (msg) {
8610+ $lynxjs_elm$virtual_dom$VirtualDom$on,
8612+ $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8613+ $elm$json$Json$Decode$succeed(msg)));
8615+var $lynxjs_elm$ui$Lynx$Attributes$paddingBottom = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingBottom');
8616+var $lynxjs_elm$ui$Lynx$Attributes$paddingLeft = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingLeft');
8617+var $lynxjs_elm$ui$Lynx$Attributes$paddingRight = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingRight');
8618+var $lynxjs_elm$ui$Lynx$Attributes$paddingTop = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingTop');
8619+var $lynxjs_elm$virtual_dom$VirtualDom$node = function (tag) {
8620+ return _VirtualDom_node(
8621+ _VirtualDom_noScript(tag));
8623+var $lynxjs_elm$ui$Lynx$text = $lynxjs_elm$virtual_dom$VirtualDom$node('text');
8624+var $lynxjs_elm$virtual_dom$VirtualDom$text = _VirtualDom_text;
8625+var $lynxjs_elm$ui$Lynx$textContent = $lynxjs_elm$virtual_dom$VirtualDom$text;
8626+var $lynxjs_elm$ui$Lynx$view = $lynxjs_elm$virtual_dom$VirtualDom$node('view');
8627+var $author$project$Main$errorBanner = function (err) {
8629+ $lynxjs_elm$ui$Lynx$view,
8632+ $lynxjs_elm$ui$Lynx$Events$onTap($author$project$Main$DismissError),
8633+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3d1114'),
8634+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
8635+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
8636+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
8637+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
8638+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8639+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
8644+ $lynxjs_elm$ui$Lynx$text,
8647+ $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8648+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
8649+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8653+ $lynxjs_elm$ui$Lynx$textContent(err)
8656+ $lynxjs_elm$ui$Lynx$text,
8659+ $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8660+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
8664+ $lynxjs_elm$ui$Lynx$textContent('x')
8668+var $author$project$Main$AddContact = {$: 'AddContact'};
8669+var $lynxjs_elm$ui$Lynx$Attributes$Bold = {$: 'Bold'};
8670+var $author$project$Main$Navigate = function (a) {
8671+ return {$: 'Navigate', a: a};
8673+var $author$project$Main$UpdateAddIdentity = function (a) {
8674+ return {$: 'UpdateAddIdentity', a: a};
8676+var $author$project$Main$UpdateAddName = function (a) {
8677+ return {$: 'UpdateAddName', a: a};
8679+var $lynxjs_elm$ui$Lynx$Attributes$marginBottom = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginBottom');
8680+var $author$project$Main$fieldLabel = function (text) {
8682+ $lynxjs_elm$ui$Lynx$text,
8685+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
8686+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(13),
8687+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(6)
8691+ $lynxjs_elm$ui$Lynx$textContent(text)
8694+var $lynxjs_elm$ui$Lynx$Attributes$fontWeight = function (w) {
8696+ $lynxjs_elm$ui$Lynx$Attributes$style,
8699+ if (w.$ === 'Normal') {
8706+var $lynxjs_elm$ui$Lynx$Attributes$padding = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('padding');
8707+var $lynxjs_elm$ui$Lynx$Attributes$borderRadius = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('borderRadius');
8708+var $author$project$Main$primaryButton = F2(
8709+ function (msg, text) {
8711+ $lynxjs_elm$ui$Lynx$view,
8714+ $lynxjs_elm$ui$Lynx$Events$onTap(msg),
8715+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#58a6ff'),
8716+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
8717+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
8718+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
8719+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
8724+ $lynxjs_elm$ui$Lynx$text,
8727+ $lynxjs_elm$ui$Lynx$Attributes$color('#ffffff'),
8728+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
8729+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
8733+ $lynxjs_elm$ui$Lynx$textContent(text)
8737+var $lynxjs_elm$ui$Lynx$Attributes$height = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('height');
8738+var $author$project$Main$spacer = function (px) {
8740+ $lynxjs_elm$ui$Lynx$view,
8743+ $lynxjs_elm$ui$Lynx$Attributes$height(px)
8747+var $lynxjs_elm$ui$Lynx$Attributes$borderColor = $lynxjs_elm$ui$Lynx$Attributes$style('borderColor');
8748+var $lynxjs_elm$ui$Lynx$Attributes$borderWidth = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('borderWidth');
8749+var $lynxjs_elm$ui$Lynx$input = $lynxjs_elm$virtual_dom$VirtualDom$node('input');
8750+var $elm$json$Json$Decode$at = F2(
8751+ function (fields, decoder) {
8752+ return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);
8754+var $lynxjs_elm$ui$Lynx$Events$onInput = function (tagger) {
8756+ $lynxjs_elm$virtual_dom$VirtualDom$on,
8758+ $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8760+ $elm$json$Json$Decode$map,
8763+ $elm$json$Json$Decode$at,
8765+ ['detail', 'value']),
8766+ $elm$json$Json$Decode$string))));
8768+var $lynxjs_elm$virtual_dom$VirtualDom$attribute = F2(
8769+ function (key, value) {
8771+ _VirtualDom_attribute,
8772+ _VirtualDom_noOnOrFormAction(key),
8773+ _VirtualDom_noJavaScriptOrHtmlUri(value));
8775+var $lynxjs_elm$ui$Lynx$Attributes$attr = $lynxjs_elm$virtual_dom$VirtualDom$attribute;
8776+var $lynxjs_elm$ui$Lynx$Attributes$placeholder = $lynxjs_elm$ui$Lynx$Attributes$attr('placeholder');
8777+var $lynxjs_elm$ui$Lynx$Attributes$value = $lynxjs_elm$ui$Lynx$Attributes$attr('value');
8778+var $author$project$Main$textInput = function (config) {
8780+ $lynxjs_elm$ui$Lynx$input,
8783+ $lynxjs_elm$ui$Lynx$Events$onInput(config.onInput),
8784+ $lynxjs_elm$ui$Lynx$Attributes$value(config.value),
8785+ $lynxjs_elm$ui$Lynx$Attributes$placeholder(config.placeholder),
8786+ $lynxjs_elm$ui$Lynx$Attributes$height(44),
8787+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
8788+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8789+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
8790+ $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1),
8791+ $lynxjs_elm$ui$Lynx$Attributes$borderColor('#30363d'),
8792+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
8793+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12)
8797+var $author$project$Main$viewAddContact = function (model) {
8799+ $lynxjs_elm$ui$Lynx$view,
8802+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
8803+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8808+ $lynxjs_elm$ui$Lynx$view,
8811+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8812+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
8813+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
8814+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
8815+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
8816+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
8817+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
8822+ $lynxjs_elm$ui$Lynx$view,
8825+ $lynxjs_elm$ui$Lynx$Events$onTap(
8826+ $author$project$Main$Navigate($author$project$Main$ContactsScreen)),
8827+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
8828+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(4),
8829+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(4)
8834+ $lynxjs_elm$ui$Lynx$text,
8837+ $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
8838+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
8842+ $lynxjs_elm$ui$Lynx$textContent('<')
8846+ $lynxjs_elm$ui$Lynx$text,
8849+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8850+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
8851+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
8855+ $lynxjs_elm$ui$Lynx$textContent('Add Contact')
8859+ $lynxjs_elm$ui$Lynx$view,
8862+ $lynxjs_elm$ui$Lynx$Attributes$padding(24),
8863+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
8867+ $author$project$Main$fieldLabel('Identity string'),
8869+ $lynxjs_elm$ui$Lynx$text,
8872+ $lynxjs_elm$ui$Lynx$Attributes$color('#6e7681'),
8873+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(12),
8874+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(8)
8878+ $lynxjs_elm$ui$Lynx$textContent('Paste the <ed25519>.<x25519> identity from your contact')
8880+ $author$project$Main$textInput(
8881+ {onInput: $author$project$Main$UpdateAddIdentity, placeholder: 'abc123...def456.ghi789...jkl012', value: model.addIdentity}),
8882+ $author$project$Main$spacer(20),
8883+ $author$project$Main$fieldLabel('Name'),
8884+ $author$project$Main$textInput(
8885+ {onInput: $author$project$Main$UpdateAddName, placeholder: 'Display name (optional)', value: model.addName}),
8886+ $author$project$Main$spacer(32),
8887+ A2($author$project$Main$primaryButton, $author$project$Main$AddContact, 'Add Contact')
8891+var $author$project$Main$PrepareSend = {$: 'PrepareSend'};
8892+var $lynxjs_elm$ui$Lynx$Attributes$TextCenter = {$: 'TextCenter'};
8893+var $author$project$Main$UpdateDraft = function (a) {
8894+ return {$: 'UpdateDraft', a: a};
8896+var $lynxjs_elm$ui$Lynx$Attributes$Vertical = {$: 'Vertical'};
8897+var $lynxjs_elm$ui$Lynx$Attributes$justifyContent = function (a) {
8899+ $lynxjs_elm$ui$Lynx$Attributes$style,
8901+ $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8903+var $lynxjs_elm$ui$Lynx$Attributes$marginLeft = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginLeft');
8904+var $lynxjs_elm$ui$Lynx$Attributes$scrollDirection = function (d) {
8906+ $lynxjs_elm$ui$Lynx$Attributes$attr,
8907+ 'scroll-direction',
8909+ if (d.$ === 'Vertical') {
8912+ return 'horizontal';
8916+var $lynxjs_elm$ui$Lynx$scrollView = $lynxjs_elm$virtual_dom$VirtualDom$node('scroll-view');
8917+var $lynxjs_elm$ui$Lynx$Attributes$textAlign = function (a) {
8919+ $lynxjs_elm$ui$Lynx$Attributes$style,
8934+var $elm$core$String$right = F2(
8935+ function (n, string) {
8936+ return (n < 1) ? '' : A3(
8937+ $elm$core$String$slice,
8939+ $elm$core$String$length(string),
8942+var $author$project$Main$truncateKey = function (key) {
8943+ return ($elm$core$String$length(key) > 16) ? (A2($elm$core$String$left, 8, key) + ('...' + A2($elm$core$String$right, 8, key))) : key;
8945+var $lynxjs_elm$ui$Lynx$Attributes$End = {$: 'End'};
8946+var $lynxjs_elm$ui$Lynx$Attributes$Start = {$: 'Start'};
8947+var $lynxjs_elm$ui$Lynx$Attributes$maxWidth = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('maxWidth');
8948+var $author$project$Main$viewMessage = function (chatMsg) {
8950+ $lynxjs_elm$ui$Lynx$view,
8953+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8954+ $lynxjs_elm$ui$Lynx$Attributes$justifyContent(
8955+ chatMsg.outgoing ? $lynxjs_elm$ui$Lynx$Attributes$End : $lynxjs_elm$ui$Lynx$Attributes$Start),
8956+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(6)
8961+ $lynxjs_elm$ui$Lynx$view,
8964+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor(
8965+ chatMsg.outgoing ? '#1a3a5c' : '#21262d'),
8966+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(16),
8967+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
8968+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
8969+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(14),
8970+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(14),
8971+ $lynxjs_elm$ui$Lynx$Attributes$maxWidth(280)
8976+ $lynxjs_elm$ui$Lynx$text,
8979+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8980+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(15)
8984+ $lynxjs_elm$ui$Lynx$textContent(chatMsg.body)
8989+var $lynxjs_elm$ui$Lynx$Attributes$width = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('width');
8990+var $author$project$Main$viewChat = function (model) {
8991+ var contactName = A2(
8992+ $elm$core$Maybe$withDefault,
8993+ $author$project$Main$truncateKey(model.activeChat),
8995+ $elm$core$Maybe$map,
8999+ A2($elm$core$Dict$get, model.activeChat, model.contacts)));
9000+ var chatMessages = A2(
9001+ $elm$core$Maybe$withDefault,
9003+ A2($elm$core$Dict$get, model.activeChat, model.messages));
9005+ $lynxjs_elm$ui$Lynx$view,
9008+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9009+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9014+ $lynxjs_elm$ui$Lynx$view,
9017+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9018+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9019+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
9020+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
9021+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
9022+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
9023+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9028+ $lynxjs_elm$ui$Lynx$view,
9031+ $lynxjs_elm$ui$Lynx$Events$onTap(
9032+ $author$project$Main$Navigate($author$project$Main$ContactsScreen)),
9033+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
9034+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(4),
9035+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(4)
9040+ $lynxjs_elm$ui$Lynx$text,
9043+ $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9044+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
9048+ $lynxjs_elm$ui$Lynx$textContent('<')
9052+ $lynxjs_elm$ui$Lynx$text,
9055+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9056+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
9057+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9058+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9062+ $lynxjs_elm$ui$Lynx$textContent(contactName)
9066+ $lynxjs_elm$ui$Lynx$scrollView,
9069+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9070+ $lynxjs_elm$ui$Lynx$Attributes$scrollDirection($lynxjs_elm$ui$Lynx$Attributes$Vertical),
9071+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
9072+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
9073+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
9074+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16)
9076+ $elm$core$List$isEmpty(chatMessages) ? _List_fromArray(
9079+ $lynxjs_elm$ui$Lynx$view,
9082+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9083+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(80)
9088+ $lynxjs_elm$ui$Lynx$text,
9091+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9092+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9093+ $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9097+ $lynxjs_elm$ui$Lynx$textContent('No messages yet. Say hello!')
9100+ ]) : A2($elm$core$List$map, $author$project$Main$viewMessage, chatMessages)),
9102+ $lynxjs_elm$ui$Lynx$view,
9105+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9106+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9107+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(8),
9108+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(8),
9109+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12),
9110+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
9111+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9116+ $lynxjs_elm$ui$Lynx$input,
9119+ $lynxjs_elm$ui$Lynx$Events$onInput($author$project$Main$UpdateDraft),
9120+ $lynxjs_elm$ui$Lynx$Attributes$value(model.draft),
9121+ $lynxjs_elm$ui$Lynx$Attributes$placeholder('Message...'),
9122+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9123+ $lynxjs_elm$ui$Lynx$Attributes$height(40),
9124+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9125+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9126+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#0d1117'),
9127+ $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1),
9128+ $lynxjs_elm$ui$Lynx$Attributes$borderColor('#30363d'),
9129+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(20),
9130+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16)
9134+ $lynxjs_elm$ui$Lynx$view,
9137+ $lynxjs_elm$ui$Lynx$Events$onTap($author$project$Main$PrepareSend),
9138+ $lynxjs_elm$ui$Lynx$Attributes$marginLeft(8),
9139+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor(
9140+ (model.sending || $elm$core$String$isEmpty(
9141+ $elm$core$String$trim(model.draft))) ? '#30363d' : '#58a6ff'),
9142+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(20),
9143+ $lynxjs_elm$ui$Lynx$Attributes$width(40),
9144+ $lynxjs_elm$ui$Lynx$Attributes$height(40),
9145+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9146+ $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center)
9151+ $lynxjs_elm$ui$Lynx$text,
9154+ $lynxjs_elm$ui$Lynx$Attributes$color('#ffffff'),
9155+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9156+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
9160+ $lynxjs_elm$ui$Lynx$textContent('^')
9166+var $author$project$Main$AddContactScreen = {$: 'AddContactScreen'};
9167+var $elm$core$Dict$isEmpty = function (dict) {
9168+ if (dict.$ === 'RBEmpty_elm_builtin') {
9174+var $lynxjs_elm$ui$Lynx$Attributes$marginRight = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginRight');
9175+var $elm$core$List$sortBy = _List_sortBy;
9176+var $elm$core$Dict$values = function (dict) {
9178+ $elm$core$Dict$foldr,
9180+ function (key, value, valueList) {
9181+ return A2($elm$core$List$cons, value, valueList);
9186+var $author$project$Main$OpenChat = function (a) {
9187+ return {$: 'OpenChat', a: a};
9189+var $lynxjs_elm$ui$Lynx$Attributes$marginTop = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginTop');
9190+var $elm$core$String$toUpper = _String_toUpper;
9191+var $author$project$Main$viewContactRow = function (contact) {
9193+ $lynxjs_elm$ui$Lynx$view,
9196+ $lynxjs_elm$ui$Lynx$Events$onTap(
9197+ $author$project$Main$OpenChat(contact.edPubHex)),
9198+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9199+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9200+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
9201+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
9202+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9203+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9204+ $lynxjs_elm$ui$Lynx$Attributes$borderColor('#21262d'),
9205+ $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1)
9210+ $lynxjs_elm$ui$Lynx$view,
9213+ $lynxjs_elm$ui$Lynx$Attributes$width(44),
9214+ $lynxjs_elm$ui$Lynx$Attributes$height(44),
9215+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(22),
9216+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#30363d'),
9217+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9218+ $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center),
9219+ $lynxjs_elm$ui$Lynx$Attributes$marginRight(12)
9224+ $lynxjs_elm$ui$Lynx$text,
9227+ $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9228+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
9229+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
9233+ $lynxjs_elm$ui$Lynx$textContent(
9234+ $elm$core$String$toUpper(
9235+ A2($elm$core$String$left, 1, contact.name)))
9239+ $lynxjs_elm$ui$Lynx$view,
9242+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9243+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
9248+ $lynxjs_elm$ui$Lynx$view,
9251+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9252+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9257+ $lynxjs_elm$ui$Lynx$text,
9260+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9261+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9262+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9263+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9267+ $lynxjs_elm$ui$Lynx$textContent(contact.name)
9269+ contact.online ? A2(
9270+ $lynxjs_elm$ui$Lynx$view,
9273+ $lynxjs_elm$ui$Lynx$Attributes$width(8),
9274+ $lynxjs_elm$ui$Lynx$Attributes$height(8),
9275+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(4),
9276+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3fb950'),
9277+ $lynxjs_elm$ui$Lynx$Attributes$marginLeft(8)
9279+ _List_Nil) : A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil)
9281+ $elm$core$String$isEmpty(contact.lastMessage) ? A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil) : A2(
9282+ $lynxjs_elm$ui$Lynx$text,
9285+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9286+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9287+ $lynxjs_elm$ui$Lynx$Attributes$marginTop(2)
9291+ $lynxjs_elm$ui$Lynx$textContent(
9292+ A2($elm$core$String$left, 50, contact.lastMessage))
9297+var $author$project$Main$viewContacts = function (model) {
9299+ $lynxjs_elm$ui$Lynx$view,
9302+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9303+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9308+ $lynxjs_elm$ui$Lynx$view,
9311+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9312+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9313+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(16),
9314+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(16),
9315+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9316+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9317+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9322+ $lynxjs_elm$ui$Lynx$text,
9325+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(20),
9326+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9327+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9328+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9332+ $lynxjs_elm$ui$Lynx$textContent('Messages')
9335+ $lynxjs_elm$ui$Lynx$view,
9338+ $lynxjs_elm$ui$Lynx$Events$onTap(
9339+ $author$project$Main$Navigate($author$project$Main$AddContactScreen)),
9340+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12),
9341+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(4)
9346+ $lynxjs_elm$ui$Lynx$text,
9349+ $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9350+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(28)
9354+ $lynxjs_elm$ui$Lynx$textContent('+')
9358+ $elm$core$Dict$isEmpty(model.contacts) ? A2(
9359+ $lynxjs_elm$ui$Lynx$view,
9362+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9363+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9364+ $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center),
9365+ $lynxjs_elm$ui$Lynx$Attributes$padding(40)
9370+ $lynxjs_elm$ui$Lynx$text,
9373+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9374+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9375+ $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9379+ $lynxjs_elm$ui$Lynx$textContent('No conversations yet')
9381+ $author$project$Main$spacer(8),
9383+ $lynxjs_elm$ui$Lynx$text,
9386+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9387+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9388+ $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9392+ $lynxjs_elm$ui$Lynx$textContent('Tap + to add a contact')
9395+ $lynxjs_elm$ui$Lynx$scrollView,
9398+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9399+ $lynxjs_elm$ui$Lynx$Attributes$scrollDirection($lynxjs_elm$ui$Lynx$Attributes$Vertical)
9402+ $elm$core$List$map,
9403+ $author$project$Main$viewContactRow,
9405+ $elm$core$List$sortBy,
9407+ return -c.lastTime;
9409+ $elm$core$Dict$values(model.contacts)))),
9411+ var _v0 = model.edPub;
9412+ if (_v0.$ === 'Just') {
9415+ $lynxjs_elm$ui$Lynx$view,
9418+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
9419+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
9420+ $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9421+ $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9422+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
9423+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9424+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9429+ $lynxjs_elm$ui$Lynx$view,
9432+ $lynxjs_elm$ui$Lynx$Attributes$width(8),
9433+ $lynxjs_elm$ui$Lynx$Attributes$height(8),
9434+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(4),
9435+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3fb950'),
9436+ $lynxjs_elm$ui$Lynx$Attributes$marginRight(8)
9440+ $lynxjs_elm$ui$Lynx$text,
9443+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9444+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(11),
9445+ $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9449+ $lynxjs_elm$ui$Lynx$textContent(
9450+ $author$project$Main$truncateKey(
9451+ $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)))
9455+ return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9460+var $author$project$Main$Connect = {$: 'Connect'};
9461+var $author$project$Main$UpdateDisplayName = function (a) {
9462+ return {$: 'UpdateDisplayName', a: a};
9464+var $author$project$Main$UpdateServerUrl = function (a) {
9465+ return {$: 'UpdateServerUrl', a: a};
9467+var $author$project$Main$disabledButton = function (text) {
9469+ $lynxjs_elm$ui$Lynx$view,
9472+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#30363d'),
9473+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
9474+ $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
9475+ $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
9476+ $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9481+ $lynxjs_elm$ui$Lynx$text,
9484+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9485+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
9489+ $lynxjs_elm$ui$Lynx$textContent(text)
9493+var $author$project$Main$viewSetup = function (model) {
9494+ var identityStr = function () {
9495+ var _v0 = _Utils_Tuple2(model.edPub, model.xPub);
9496+ if ((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) {
9499+ return $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edP) + ('.' + $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex(xP));
9505+ $lynxjs_elm$ui$Lynx$view,
9508+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9509+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9510+ $lynxjs_elm$ui$Lynx$Attributes$padding(24),
9511+ $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center)
9516+ $lynxjs_elm$ui$Lynx$text,
9519+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(36),
9520+ $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9521+ $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9522+ $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter),
9523+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(8)
9527+ $lynxjs_elm$ui$Lynx$textContent('Skrepka')
9530+ $lynxjs_elm$ui$Lynx$text,
9533+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9534+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9535+ $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter),
9536+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(32)
9540+ $lynxjs_elm$ui$Lynx$textContent('Encrypted messaging, no accounts')
9542+ $author$project$Main$fieldLabel('Your identity (share this with contacts)'),
9543+ $elm$core$String$isEmpty(identityStr) ? A2(
9544+ $lynxjs_elm$ui$Lynx$text,
9547+ $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9548+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9549+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(24)
9553+ $lynxjs_elm$ui$Lynx$textContent('Generating keypair...')
9555+ $lynxjs_elm$ui$Lynx$view,
9558+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
9559+ $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
9560+ $lynxjs_elm$ui$Lynx$Attributes$padding(12),
9561+ $lynxjs_elm$ui$Lynx$Attributes$marginBottom(24)
9566+ $lynxjs_elm$ui$Lynx$text,
9569+ $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9570+ $lynxjs_elm$ui$Lynx$Attributes$fontSize(11)
9574+ $lynxjs_elm$ui$Lynx$textContent(identityStr)
9577+ $author$project$Main$fieldLabel('Relay server'),
9578+ $author$project$Main$textInput(
9579+ {onInput: $author$project$Main$UpdateServerUrl, placeholder: 'http://relay.example.com:8080', value: model.serverUrl}),
9580+ $author$project$Main$spacer(24),
9581+ $author$project$Main$fieldLabel('Display name (optional)'),
9582+ $author$project$Main$textInput(
9583+ {onInput: $author$project$Main$UpdateDisplayName, placeholder: 'Anonymous', value: model.displayName}),
9584+ $author$project$Main$spacer(32),
9585+ model.connecting ? $author$project$Main$disabledButton('Connecting...') : (_Utils_eq(model.edPriv, $elm$core$Maybe$Nothing) ? $author$project$Main$disabledButton('Generating keys...') : A2($author$project$Main$primaryButton, $author$project$Main$Connect, 'Connect to Server'))
9588+var $author$project$Main$view = function (model) {
9590+ $lynxjs_elm$ui$Lynx$view,
9593+ $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9594+ $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9595+ $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#0d1117')
9600+ var _v0 = model.error;
9601+ if (_v0.$ === 'Just') {
9603+ return $author$project$Main$errorBanner(err);
9605+ return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9609+ var _v1 = model.screen;
9611+ case 'SetupScreen':
9612+ return $author$project$Main$viewSetup(model);
9613+ case 'ContactsScreen':
9614+ return $author$project$Main$viewContacts(model);
9616+ return $author$project$Main$viewChat(model);
9618+ return $author$project$Main$viewAddContact(model);
9623+var $author$project$Main$main = $lynxjs_elm$browser$Browser$element(
9624+ {init: $author$project$Main$init, subscriptions: $author$project$Main$subscriptions, update: $author$project$Main$update, view: $author$project$Main$view});
9625+_Platform_export({'Main':{'init':$author$project$Main$main(
9626+ $elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(globalThis));