1(function(scope){ 2'use strict'; 3 4function F(arity, fun, wrapper) { 5 wrapper.a = arity; 6 wrapper.f = fun; 7 return wrapper; 8} 9 10function F2(fun) { 11 return F(2, fun, function(a) { return function(b) { return fun(a,b); }; }) 12} 13function F3(fun) { 14 return F(3, fun, function(a) { 15 return function(b) { return function(c) { return fun(a, b, c); }; }; 16 }); 17} 18function F4(fun) { 19 return F(4, fun, function(a) { return function(b) { return function(c) { 20 return function(d) { return fun(a, b, c, d); }; }; }; 21 }); 22} 23function F5(fun) { 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); }; }; }; }; 26 }); 27} 28function F6(fun) { 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); }; }; }; }; }; 32 }); 33} 34function F7(fun) { 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); }; }; }; }; }; }; 38 }); 39} 40function F8(fun) { 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); }; }; }; }; }; }; }; 45 }); 46} 47function F9(fun) { 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); }; }; }; }; }; }; }; }; 52 }); 53} 54 55function A2(fun, a, b) { 56 return fun.a === 2 ? fun.f(a, b) : fun(a)(b); 57} 58function A3(fun, a, b, c) { 59 return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c); 60} 61function A4(fun, a, b, c, d) { 62 return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d); 63} 64function 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); 66} 67function 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); 69} 70function 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); 72} 73function 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); 75} 76function 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); 78} 79 80console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.'); 81 82 83// EQUALITY 84 85function _Utils_eq(x, y) 86{ 87 for ( 88 var pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack); 89 isEqual && (pair = stack.pop()); 90 isEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack) 91 ) 92 {} 93 94 return isEqual; 95} 96 97function _Utils_eqHelp(x, y, depth, stack) 98{ 99 if (x === y) 100 { 101 return true; 102 } 103 104 if (typeof x !== 'object' || x === null || y === null) 105 { 106 typeof x === 'function' && _Debug_crash(5); 107 return false; 108 } 109 110 if (depth > 100) 111 { 112 stack.push(_Utils_Tuple2(x,y)); 113 return true; 114 } 115 116 /**/ 117 if (x.$ === 'Set_elm_builtin') 118 { 119 x = $elm$core$Set$toList(x); 120 y = $elm$core$Set$toList(y); 121 } 122 if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin') 123 { 124 x = $elm$core$Dict$toList(x); 125 y = $elm$core$Dict$toList(y); 126 } 127 //*/ 128 129 /**_UNUSED/ 130 if (x.$ < 0) 131 { 132 x = $elm$core$Dict$toList(x); 133 y = $elm$core$Dict$toList(y); 134 } 135 //*/ 136 137 for (var key in x) 138 { 139 if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack)) 140 { 141 return false; 142 } 143 } 144 return true; 145} 146 147var _Utils_equal = F2(_Utils_eq); 148var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); }); 149 150 151 152// COMPARISONS 153 154// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on 155// the particular integer values assigned to LT, EQ, and GT. 156 157function _Utils_cmp(x, y, ord) 158{ 159 if (typeof x !== 'object') 160 { 161 return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1; 162 } 163 164 /**/ 165 if (x instanceof String) 166 { 167 var a = x.valueOf(); 168 var b = y.valueOf(); 169 return a === b ? 0 : a < b ? -1 : 1; 170 } 171 //*/ 172 173 /**_UNUSED/ 174 if (typeof x.$ === 'undefined') 175 //*/ 176 /**/ 177 if (x.$[0] === '#') 178 //*/ 179 { 180 return (ord = _Utils_cmp(x.a, y.a)) 181 ? ord 182 : (ord = _Utils_cmp(x.b, y.b)) 183 ? ord 184 : _Utils_cmp(x.c, y.c); 185 } 186 187 // traverse conses until end of a list or a mismatch 188 for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES 189 return ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0); 190} 191 192var _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; }); 193var _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; }); 194var _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; }); 195var _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; }); 196 197var _Utils_compare = F2(function(x, y) 198{ 199 var n = _Utils_cmp(x, y); 200 return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ; 201}); 202 203 204// COMMON VALUES 205
206var _Utils_Tuple0_UNUSED = 0; 207var _Utils_Tuple0 = { $: '#0' }; 208 209function _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; } 210function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; } 211 212function _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; } 213function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } 214 215function _Utils_chr_UNUSED(c) { return c; } 216function _Utils_chr(c) { return new String(c); } 217 218 219// RECORDS 220 221function _Utils_update(oldRecord, updatedFields) 222{ 223 var newRecord = {}; 224 225 for (var key in oldRecord) 226 { 227 newRecord[key] = oldRecord[key]; 228 } 229 230 for (var key in updatedFields) 231 { 232 newRecord[key] = updatedFields[key]; 233 } 234 235 return newRecord; 236} 237 238 239// APPEND 240 241var _Utils_append = F2(_Utils_ap); 242 243function _Utils_ap(xs, ys) 244{ 245 // append Strings 246 if (typeof xs === 'string') 247 { 248 return xs + ys; 249 } 250 251 // append Lists 252 if (!xs.b) 253 { 254 return ys; 255 } 256 var root = _List_Cons(xs.a, ys); 257 xs = xs.b 258 for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS 259 { 260 curr = curr.b = _List_Cons(xs.a, ys); 261 } 262 return root; 263} 264 265 266 267var _List_Nil_UNUSED = { $: 0 }; 268var _List_Nil = { $: '[]' }; 269 270function _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; } 271function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; } 272 273 274var _List_cons = F2(_List_Cons); 275 276function _List_fromArray(arr) 277{ 278 var out = _List_Nil; 279 for (var i = arr.length; i--; ) 280 { 281 out = _List_Cons(arr[i], out); 282 } 283 return out; 284} 285 286function _List_toArray(xs) 287{ 288 for (var out = []; xs.b; xs = xs.b) // WHILE_CONS 289 { 290 out.push(xs.a); 291 } 292 return out; 293} 294 295var _List_map2 = F3(function(f, xs, ys) 296{ 297 for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES 298 { 299 arr.push(A2(f, xs.a, ys.a)); 300 } 301 return _List_fromArray(arr); 302}); 303 304var _List_map3 = F4(function(f, xs, ys, zs) 305{ 306 for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES 307 { 308 arr.push(A3(f, xs.a, ys.a, zs.a)); 309 } 310 return _List_fromArray(arr); 311}); 312 313var _List_map4 = F5(function(f, ws, xs, ys, zs) 314{ 315 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 316 { 317 arr.push(A4(f, ws.a, xs.a, ys.a, zs.a)); 318 } 319 return _List_fromArray(arr); 320}); 321 322var _List_map5 = F6(function(f, vs, ws, xs, ys, zs) 323{ 324 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 325 { 326 arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a)); 327 } 328 return _List_fromArray(arr); 329}); 330 331var _List_sortBy = F2(function(f, xs) 332{ 333 return _List_fromArray(_List_toArray(xs).sort(function(a, b) { 334 return _Utils_cmp(f(a), f(b)); 335 })); 336}); 337 338var _List_sortWith = F2(function(f, xs) 339{ 340 return _List_fromArray(_List_toArray(xs).sort(function(a, b) { 341 var ord = A2(f, a, b); 342 return ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1; 343 })); 344}); 345 346 347 348var _JsArray_empty = []; 349 350function _JsArray_singleton(value) 351{ 352 return [value]; 353} 354 355function _JsArray_length(array) 356{ 357 return array.length; 358} 359 360var _JsArray_initialize = F3(function(size, offset, func) 361{ 362 var result = new Array(size); 363 364 for (var i = 0; i < size; i++) 365 { 366 result[i] = func(offset + i); 367 } 368 369 return result; 370}); 371 372var _JsArray_initializeFromList = F2(function (max, ls) 373{ 374 var result = new Array(max); 375 376 for (var i = 0; i < max && ls.b; i++) 377 { 378 result[i] = ls.a; 379 ls = ls.b; 380 } 381 382 result.length = i; 383 return _Utils_Tuple2(result, ls); 384}); 385 386var _JsArray_unsafeGet = F2(function(index, array) 387{ 388 return array[index]; 389}); 390 391var _JsArray_unsafeSet = F3(function(index, value, array) 392{ 393 var length = array.length; 394 var result = new Array(length); 395 396 for (var i = 0; i < length; i++) 397 { 398 result[i] = array[i]; 399 } 400 401 result[index] = value; 402 return result; 403}); 404 405var _JsArray_push = F2(function(value, array) 406{ 407 var length = array.length; 408 var result = new Array(length + 1); 409 410 for (var i = 0; i < length; i++) 411 { 412 result[i] = array[i]; 413 } 414 415 result[length] = value; 416 return result; 417}); 418 419var _JsArray_foldl = F3(function(func, acc, array) 420{ 421 var length = array.length; 422 423 for (var i = 0; i < length; i++) 424 { 425 acc = A2(func, array[i], acc); 426 } 427 428 return acc; 429}); 430 431var _JsArray_foldr = F3(function(func, acc, array) 432{ 433 for (var i = array.length - 1; i >= 0; i--) 434 { 435 acc = A2(func, array[i], acc); 436 } 437 438 return acc; 439}); 440 441var _JsArray_map = F2(function(func, array) 442{ 443 var length = array.length; 444 var result = new Array(length); 445 446 for (var i = 0; i < length; i++) 447 { 448 result[i] = func(array[i]); 449 } 450 451 return result; 452}); 453 454var _JsArray_indexedMap = F3(function(func, offset, array) 455{ 456 var length = array.length; 457 var result = new Array(length); 458 459 for (var i = 0; i < length; i++) 460 { 461 result[i] = A2(func, offset + i, array[i]); 462 } 463 464 return result; 465}); 466 467var _JsArray_slice = F3(function(from, to, array) 468{ 469 return array.slice(from, to); 470}); 471 472var _JsArray_appendN = F3(function(n, dest, source) 473{ 474 var destLen = dest.length; 475 var itemsToCopy = n - destLen; 476 477 if (itemsToCopy > source.length) 478 { 479 itemsToCopy = source.length; 480 } 481 482 var size = destLen + itemsToCopy; 483 var result = new Array(size); 484 485 for (var i = 0; i < destLen; i++) 486 { 487 result[i] = dest[i]; 488 } 489 490 for (var i = 0; i < itemsToCopy; i++) 491 { 492 result[i + destLen] = source[i]; 493 } 494 495 return result; 496}); 497 498 499 500// LOG 501 502var _Debug_log_UNUSED = F2(function(tag, value) 503{ 504 return value; 505}); 506 507var _Debug_log = F2(function(tag, value) 508{ 509 console.log(tag + ': ' + _Debug_toString(value)); 510 return value; 511}); 512 513 514// TODOS 515 516function _Debug_todo(moduleName, region) 517{ 518 return function(message) { 519 _Debug_crash(8, moduleName, region, message); 520 }; 521} 522 523function _Debug_todoCase(moduleName, region, value) 524{ 525 return function(message) { 526 _Debug_crash(9, moduleName, region, value, message); 527 }; 528} 529 530 531// TO STRING 532 533function _Debug_toString_UNUSED(value) 534{ 535 return '<internals>'; 536} 537 538function _Debug_toString(value) 539{ 540 return _Debug_toAnsiString(false, value); 541} 542 543function _Debug_toAnsiString(ansi, value) 544{ 545 if (typeof value === 'function') 546 { 547 return _Debug_internalColor(ansi, '<function>'); 548 } 549 550 if (typeof value === 'boolean') 551 { 552 return _Debug_ctorColor(ansi, value ? 'True' : 'False'); 553 } 554 555 if (typeof value === 'number') 556 { 557 return _Debug_numberColor(ansi, value + ''); 558 } 559 560 if (value instanceof String) 561 { 562 return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'"); 563 } 564 565 if (typeof value === 'string') 566 { 567 return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"'); 568 } 569 570 if (typeof value === 'object' && '$' in value) 571 { 572 var tag = value.$; 573 574 if (typeof tag === 'number') 575 { 576 return _Debug_internalColor(ansi, '<internals>'); 577 } 578 579 if (tag[0] === '#') 580 { 581 var output = []; 582 for (var k in value) 583 { 584 if (k === '$') continue; 585 output.push(_Debug_toAnsiString(ansi, value[k])); 586 } 587 return '(' + output.join(',') + ')'; 588 } 589 590 if (tag === 'Set_elm_builtin') 591 { 592 return _Debug_ctorColor(ansi, 'Set') 593 + _Debug_fadeColor(ansi, '.fromList') + ' ' 594 + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value)); 595 } 596 597 if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin') 598 { 599 return _Debug_ctorColor(ansi, 'Dict') 600 + _Debug_fadeColor(ansi, '.fromList') + ' ' 601 + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value)); 602 } 603 604 if (tag === 'Array_elm_builtin') 605 { 606 return _Debug_ctorColor(ansi, 'Array') 607 + _Debug_fadeColor(ansi, '.fromList') + ' ' 608 + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value)); 609 } 610 611 if (tag === '::' || tag === '[]') 612 { 613 var output = '['; 614 615 value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b) 616 617 for (; value.b; value = value.b) // WHILE_CONS 618 { 619 output += ',' + _Debug_toAnsiString(ansi, value.a); 620 } 621 return output + ']'; 622 } 623 624 var output = ''; 625 for (var i in value) 626 { 627 if (i === '$') continue; 628 var str = _Debug_toAnsiString(ansi, value[i]); 629 var c0 = str[0]; 630 var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0; 631 output += ' ' + (parenless ? str : '(' + str + ')'); 632 } 633 return _Debug_ctorColor(ansi, tag) + output; 634 } 635 636 if (typeof DataView === 'function' && value instanceof DataView) 637 { 638 return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>'); 639 } 640 641 if (typeof File !== 'undefined' && value instanceof File) 642 { 643 return _Debug_internalColor(ansi, '<' + value.name + '>'); 644 } 645 646 if (typeof value === 'object') 647 { 648 var output = []; 649 for (var key in value) 650 { 651 var field = key[0] === '_' ? key.slice(1) : key; 652 output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key])); 653 } 654 if (output.length === 0) 655 { 656 return '{}'; 657 } 658 return '{ ' + output.join(', ') + ' }'; 659 } 660 661 return _Debug_internalColor(ansi, '<internals>'); 662} 663 664function _Debug_addSlashes(str, isChar) 665{ 666 var s = str 667 .replace(/\\/g, '\\\\') 668 .replace(/\n/g, '\\n') 669 .replace(/\t/g, '\\t') 670 .replace(/\r/g, '\\r') 671 .replace(/\v/g, '\\v') 672 .replace(/\0/g, '\\0'); 673 674 if (isChar) 675 { 676 return s.replace(/\'/g, '\\\''); 677 } 678 else 679 { 680 return s.replace(/\"/g, '\\"'); 681 } 682} 683 684function _Debug_ctorColor(ansi, string) 685{ 686 return ansi ? '\x1b[96m' + string + '\x1b[0m' : string; 687} 688 689function _Debug_numberColor(ansi, string) 690{ 691 return ansi ? '\x1b[95m' + string + '\x1b[0m' : string; 692} 693 694function _Debug_stringColor(ansi, string) 695{ 696 return ansi ? '\x1b[93m' + string + '\x1b[0m' : string; 697} 698 699function _Debug_charColor(ansi, string) 700{ 701 return ansi ? '\x1b[92m' + string + '\x1b[0m' : string; 702} 703 704function _Debug_fadeColor(ansi, string) 705{ 706 return ansi ? '\x1b[37m' + string + '\x1b[0m' : string; 707} 708 709function _Debug_internalColor(ansi, string) 710{ 711 return ansi ? '\x1b[36m' + string + '\x1b[0m' : string; 712} 713 714function _Debug_toHexDigit(n) 715{ 716 return String.fromCharCode(n < 10 ? 48 + n : 55 + n); 717} 718 719 720// CRASH 721 722 723function _Debug_crash_UNUSED(identifier) 724{ 725 throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md'); 726} 727 728 729function _Debug_crash(identifier, fact1, fact2, fact3, fact4) 730{ 731 switch(identifier) 732 { 733 case 0: 734 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.'); 735 736 case 1: 737 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.'); 738 739 case 2: 740 var jsonErrorString = fact1; 741 throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString); 742 743 case 3: 744 var portName = fact1; 745 throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.'); 746 747 case 4: 748 var portName = fact1; 749 var problem = fact2; 750 throw new Error('Trying to send an unexpected type of value through port `' + portName + '`:\n' + problem); 751 752 case 5: 753 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.'); 754 755 case 6: 756 var moduleName = fact1; 757 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!'); 758 759 case 8: 760 var moduleName = fact1; 761 var region = fact2; 762 var message = fact3; 763 throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message); 764 765 case 9: 766 var moduleName = fact1; 767 var region = fact2; 768 var value = fact3; 769 var message = fact4; 770 throw new Error( 771 'TODO in module `' + moduleName + '` from the `case` expression ' 772 + _Debug_regionToString(region) + '\n\nIt received the following value:\n\n ' 773 + _Debug_toString(value).replace('\n', '\n ') 774 + '\n\nBut the branch that handles it says:\n\n ' + message.replace('\n', '\n ') 775 ); 776 777 case 10: 778 throw new Error('Bug in https://github.com/elm/virtual-dom/issues'); 779 780 case 11: 781 throw new Error('Cannot perform mod 0. Division by zero error.'); 782 } 783} 784 785function _Debug_regionToString(region) 786{ 787 if (region.start.line === region.end.line) 788 { 789 return 'on line ' + region.start.line; 790 } 791 return 'on lines ' + region.start.line + ' through ' + region.end.line; 792} 793 794 795 796// MATH 797 798var _Basics_add = F2(function(a, b) { return a + b; }); 799var _Basics_sub = F2(function(a, b) { return a - b; }); 800var _Basics_mul = F2(function(a, b) { return a * b; }); 801var _Basics_fdiv = F2(function(a, b) { return a / b; }); 802var _Basics_idiv = F2(function(a, b) { return (a / b) | 0; }); 803var _Basics_pow = F2(Math.pow); 804 805var _Basics_remainderBy = F2(function(b, a) { return a % b; }); 806
807// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf 808var _Basics_modBy = F2(function(modulus, x) 809{ 810 var answer = x % modulus; 811 return modulus === 0 812 ? _Debug_crash(11) 813 : 814 ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0)) 815 ? answer + modulus 816 : answer; 817}); 818 819 820// TRIGONOMETRY 821 822var _Basics_pi = Math.PI; 823var _Basics_e = Math.E; 824var _Basics_cos = Math.cos; 825var _Basics_sin = Math.sin; 826var _Basics_tan = Math.tan; 827var _Basics_acos = Math.acos; 828var _Basics_asin = Math.asin; 829var _Basics_atan = Math.atan; 830var _Basics_atan2 = F2(Math.atan2); 831 832 833// MORE MATH 834 835function _Basics_toFloat(x) { return x; } 836function _Basics_truncate(n) { return n | 0; } 837function _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; } 838 839var _Basics_ceiling = Math.ceil; 840var _Basics_floor = Math.floor; 841var _Basics_round = Math.round; 842var _Basics_sqrt = Math.sqrt; 843var _Basics_log = Math.log; 844var _Basics_isNaN = isNaN; 845 846 847// BOOLEANS 848 849function _Basics_not(bool) { return !bool; } 850var _Basics_and = F2(function(a, b) { return a && b; }); 851var _Basics_or = F2(function(a, b) { return a || b; }); 852var _Basics_xor = F2(function(a, b) { return a !== b; }); 853 854 855 856var _String_cons = F2(function(chr, str) 857{ 858 return chr + str; 859}); 860 861function _String_uncons(string) 862{ 863 var word = string.charCodeAt(0); 864 return !isNaN(word) 865 ? $elm$core$Maybe$Just( 866 0xD800 <= word && word <= 0xDBFF 867 ? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2)) 868 : _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1)) 869 ) 870 : $elm$core$Maybe$Nothing; 871} 872 873var _String_append = F2(function(a, b) 874{ 875 return a + b; 876}); 877 878function _String_length(str) 879{ 880 return str.length; 881} 882 883var _String_map = F2(function(func, string) 884{ 885 var len = string.length; 886 var array = new Array(len); 887 var i = 0; 888 while (i < len) 889 { 890 var word = string.charCodeAt(i); 891 if (0xD800 <= word && word <= 0xDBFF) 892 { 893 array[i] = func(_Utils_chr(string[i] + string[i+1])); 894 i += 2; 895 continue; 896 } 897 array[i] = func(_Utils_chr(string[i])); 898 i++; 899 } 900 return array.join(''); 901}); 902 903var _String_filter = F2(function(isGood, str) 904{ 905 var arr = []; 906 var len = str.length; 907 var i = 0; 908 while (i < len) 909 { 910 var char = str[i]; 911 var word = str.charCodeAt(i); 912 i++; 913 if (0xD800 <= word && word <= 0xDBFF) 914 { 915 char += str[i]; 916 i++; 917 } 918 919 if (isGood(_Utils_chr(char))) 920 { 921 arr.push(char); 922 } 923 } 924 return arr.join(''); 925}); 926 927function _String_reverse(str) 928{ 929 var len = str.length; 930 var arr = new Array(len); 931 var i = 0; 932 while (i < len) 933 { 934 var word = str.charCodeAt(i); 935 if (0xD800 <= word && word <= 0xDBFF) 936 { 937 arr[len - i] = str[i + 1]; 938 i++; 939 arr[len - i] = str[i - 1]; 940 i++; 941 } 942 else 943 { 944 arr[len - i] = str[i]; 945 i++; 946 } 947 } 948 return arr.join(''); 949} 950 951var _String_foldl = F3(function(func, state, string) 952{ 953 var len = string.length; 954 var i = 0; 955 while (i < len) 956 { 957 var char = string[i]; 958 var word = string.charCodeAt(i); 959 i++; 960 if (0xD800 <= word && word <= 0xDBFF) 961 { 962 char += string[i]; 963 i++; 964 } 965 state = A2(func, _Utils_chr(char), state); 966 } 967 return state; 968}); 969 970var _String_foldr = F3(function(func, state, string) 971{ 972 var i = string.length; 973 while (i--) 974 { 975 var char = string[i]; 976 var word = string.charCodeAt(i); 977 if (0xDC00 <= word && word <= 0xDFFF) 978 { 979 i--; 980 char = string[i] + char; 981 } 982 state = A2(func, _Utils_chr(char), state); 983 } 984 return state; 985}); 986 987var _String_split = F2(function(sep, str) 988{ 989 return str.split(sep); 990}); 991 992var _String_join = F2(function(sep, strs) 993{ 994 return strs.join(sep); 995}); 996 997var _String_slice = F3(function(start, end, str) { 998 return str.slice(start, end); 999}); 1000 1001function _String_trim(str) 1002{ 1003 return str.trim(); 1004} 1005 1006function _String_trimLeft(str) 1007{ 1008 return str.replace(/^\s+/, ''); 1009} 1010 1011function _String_trimRight(str) 1012{ 1013 return str.replace(/\s+$/, ''); 1014} 1015 1016function _String_words(str) 1017{ 1018 return _List_fromArray(str.trim().split(/\s+/g)); 1019} 1020 1021function _String_lines(str) 1022{ 1023 return _List_fromArray(str.split(/\r\n|\r|\n/g)); 1024} 1025 1026function _String_toUpper(str) 1027{ 1028 return str.toUpperCase(); 1029} 1030 1031function _String_toLower(str) 1032{ 1033 return str.toLowerCase(); 1034} 1035 1036var _String_any = F2(function(isGood, string) 1037{ 1038 var i = string.length; 1039 while (i--) 1040 { 1041 var char = string[i]; 1042 var word = string.charCodeAt(i);
1043 if (0xDC00 <= word && word <= 0xDFFF) 1044 { 1045 i--; 1046 char = string[i] + char; 1047 } 1048 if (isGood(_Utils_chr(char))) 1049 { 1050 return true; 1051 } 1052 } 1053 return false; 1054}); 1055 1056var _String_all = F2(function(isGood, string) 1057{ 1058 var i = string.length; 1059 while (i--) 1060 { 1061 var char = string[i]; 1062 var word = string.charCodeAt(i); 1063 if (0xDC00 <= word && word <= 0xDFFF) 1064 { 1065 i--; 1066 char = string[i] + char; 1067 } 1068 if (!isGood(_Utils_chr(char))) 1069 { 1070 return false; 1071 } 1072 } 1073 return true; 1074}); 1075 1076var _String_contains = F2(function(sub, str) 1077{ 1078 return str.indexOf(sub) > -1; 1079}); 1080 1081var _String_startsWith = F2(function(sub, str) 1082{ 1083 return str.indexOf(sub) === 0; 1084}); 1085 1086var _String_endsWith = F2(function(sub, str) 1087{ 1088 return str.length >= sub.length && 1089 str.lastIndexOf(sub) === str.length - sub.length; 1090}); 1091 1092var _String_indexes = F2(function(sub, str) 1093{ 1094 var subLen = sub.length; 1095 1096 if (subLen < 1) 1097 { 1098 return _List_Nil; 1099 } 1100 1101 var i = 0; 1102 var is = []; 1103 1104 while ((i = str.indexOf(sub, i)) > -1) 1105 { 1106 is.push(i); 1107 i = i + subLen; 1108 } 1109 1110 return _List_fromArray(is); 1111}); 1112 1113 1114// TO STRING 1115 1116function _String_fromNumber(number) 1117{ 1118 return number + ''; 1119} 1120 1121 1122// INT CONVERSIONS 1123 1124function _String_toInt(str) 1125{ 1126 var total = 0; 1127 var code0 = str.charCodeAt(0); 1128 var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0; 1129 1130 for (var i = start; i < str.length; ++i) 1131 { 1132 var code = str.charCodeAt(i); 1133 if (code < 0x30 || 0x39 < code) 1134 { 1135 return $elm$core$Maybe$Nothing; 1136 } 1137 total = 10 * total + code - 0x30; 1138 } 1139 1140 return i == start 1141 ? $elm$core$Maybe$Nothing 1142 : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total); 1143} 1144 1145 1146// FLOAT CONVERSIONS 1147 1148function _String_toFloat(s) 1149{ 1150 // check if it is a hex, octal, or binary number 1151 if (s.length === 0 || /[\sxbo]/.test(s)) 1152 { 1153 return $elm$core$Maybe$Nothing; 1154 } 1155 var n = +s; 1156 // faster isNaN check 1157 return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing; 1158} 1159 1160function _String_fromList(chars) 1161{ 1162 return _List_toArray(chars).join(''); 1163} 1164 1165 1166 1167 1168function _Char_toCode(char) 1169{ 1170 var code = char.charCodeAt(0); 1171 if (0xD800 <= code && code <= 0xDBFF) 1172 { 1173 return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000 1174 } 1175 return code; 1176} 1177 1178function _Char_fromCode(code) 1179{ 1180 return _Utils_chr( 1181 (code < 0 || 0x10FFFF < code) 1182 ? '\uFFFD' 1183 : 1184 (code <= 0xFFFF) 1185 ? String.fromCharCode(code) 1186 : 1187 (code -= 0x10000, 1188 String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00) 1189 ) 1190 ); 1191} 1192 1193function _Char_toUpper(char) 1194{ 1195 return _Utils_chr(char.toUpperCase()); 1196} 1197 1198function _Char_toLower(char) 1199{ 1200 return _Utils_chr(char.toLowerCase()); 1201} 1202 1203function _Char_toLocaleUpper(char) 1204{ 1205 return _Utils_chr(char.toLocaleUpperCase()); 1206} 1207 1208function _Char_toLocaleLower(char) 1209{ 1210 return _Utils_chr(char.toLocaleLowerCase()); 1211} 1212 1213 1214 1215/**/ 1216function _Json_errorToString(error) 1217{ 1218 return $elm$json$Json$Decode$errorToString(error); 1219} 1220//*/ 1221 1222 1223// CORE DECODERS 1224 1225function _Json_succeed(msg) 1226{ 1227 return { 1228 $: 0, 1229 a: msg 1230 }; 1231} 1232 1233function _Json_fail(msg) 1234{ 1235 return { 1236 $: 1, 1237 a: msg 1238 }; 1239} 1240 1241function _Json_decodePrim(decoder) 1242{ 1243 return { $: 2, b: decoder }; 1244} 1245 1246var _Json_decodeInt = _Json_decodePrim(function(value) { 1247 return (typeof value !== 'number') 1248 ? _Json_expecting('an INT', value) 1249 : 1250 (-2147483647 < value && value < 2147483647 && (value | 0) === value) 1251 ? $elm$core$Result$Ok(value) 1252 : 1253 (isFinite(value) && !(value % 1)) 1254 ? $elm$core$Result$Ok(value) 1255 : _Json_expecting('an INT', value); 1256}); 1257 1258var _Json_decodeBool = _Json_decodePrim(function(value) { 1259 return (typeof value === 'boolean') 1260 ? $elm$core$Result$Ok(value) 1261 : _Json_expecting('a BOOL', value); 1262}); 1263 1264var _Json_decodeFloat = _Json_decodePrim(function(value) { 1265 return (typeof value === 'number') 1266 ? $elm$core$Result$Ok(value) 1267 : _Json_expecting('a FLOAT', value); 1268}); 1269 1270var _Json_decodeValue = _Json_decodePrim(function(value) { 1271 return $elm$core$Result$Ok(_Json_wrap(value)); 1272}); 1273 1274var _Json_decodeString = _Json_decodePrim(function(value) { 1275 return (typeof value === 'string') 1276 ? $elm$core$Result$Ok(value) 1277 : (value instanceof String) 1278 ? $elm$core$Result$Ok(value + '') 1279 : _Json_expecting('a STRING', value); 1280}); 1281 1282function _Json_decodeList(decoder) { return { $: 3, b: decoder }; } 1283function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; } 1284 1285function _Json_decodeNull(value) { return { $: 5, c: value }; } 1286 1287var _Json_decodeField = F2(function(field, decoder) 1288{ 1289 return { 1290 $: 6, 1291 d: field, 1292 b: decoder 1293 }; 1294}); 1295 1296var _Json_decodeIndex = F2(function(index, decoder) 1297{ 1298 return { 1299 $: 7, 1300 e: index, 1301 b: decoder 1302 }; 1303}); 1304 1305function _Json_decodeKeyValuePairs(decoder) 1306{ 1307 return { 1308 $: 8, 1309 b: decoder 1310 }; 1311} 1312 1313function _Json_mapMany(f, decoders) 1314{ 1315 return { 1316 $: 9, 1317 f: f, 1318 g: decoders 1319 }; 1320} 1321 1322var _Json_andThen = F2(function(callback, decoder) 1323{ 1324 return { 1325 $: 10, 1326 b: decoder, 1327 h: callback 1328 }; 1329}); 1330 1331function _Json_oneOf(decoders) 1332{ 1333 return { 1334 $: 11, 1335 g: decoders 1336 }; 1337} 1338 1339 1340// DECODING OBJECTS 1341 1342var _Json_map1 = F2(function(f, d1) 1343{ 1344 return _Json_mapMany(f, [d1]); 1345}); 1346 1347var _Json_map2 = F3(function(f, d1, d2) 1348{ 1349 return _Json_mapMany(f, [d1, d2]); 1350}); 1351 1352var _Json_map3 = F4(function(f, d1, d2, d3) 1353{ 1354 return _Json_mapMany(f, [d1, d2, d3]); 1355}); 1356 1357var _Json_map4 = F5(function(f, d1, d2, d3, d4) 1358{ 1359 return _Json_mapMany(f, [d1, d2, d3, d4]); 1360}); 1361 1362var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5) 1363{ 1364 return _Json_mapMany(f, [d1, d2, d3, d4, d5]); 1365}); 1366 1367var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6) 1368{ 1369 return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]); 1370}); 1371 1372var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7) 1373{ 1374 return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]); 1375}); 1376 1377var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8) 1378{ 1379 return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]); 1380}); 1381 1382 1383// DECODE 1384 1385var _Json_runOnString = F2(function(decoder, string) 1386{ 1387 try 1388 { 1389 var value = JSON.parse(string); 1390 return _Json_runHelp(decoder, value); 1391 } 1392 catch (e) 1393 { 1394 return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not val
1394id JSON! ' + e.message, _Json_wrap(string))); 1395 } 1396}); 1397 1398var _Json_run = F2(function(decoder, value) 1399{ 1400 return _Json_runHelp(decoder, _Json_unwrap(value)); 1401}); 1402 1403function _Json_runHelp(decoder, value) 1404{ 1405 switch (decoder.$) 1406 { 1407 case 2: 1408 return decoder.b(value); 1409 1410 case 5: 1411 return (value === null) 1412 ? $elm$core$Result$Ok(decoder.c) 1413 : _Json_expecting('null', value); 1414 1415 case 3: 1416 if (!_Json_isArray(value)) 1417 { 1418 return _Json_expecting('a LIST', value); 1419 } 1420 return _Json_runArrayDecoder(decoder.b, value, _List_fromArray); 1421 1422 case 4: 1423 if (!_Json_isArray(value)) 1424 { 1425 return _Json_expecting('an ARRAY', value); 1426 } 1427 return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray); 1428 1429 case 6: 1430 var field = decoder.d; 1431 if (typeof value !== 'object' || value === null || !(field in value)) 1432 { 1433 return _Json_expecting('an OBJECT with a field named `' + field + '`', value); 1434 } 1435 var result = _Json_runHelp(decoder.b, value[field]); 1436 return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a)); 1437 1438 case 7: 1439 var index = decoder.e; 1440 if (!_Json_isArray(value)) 1441 { 1442 return _Json_expecting('an ARRAY', value); 1443 } 1444 if (index >= value.length) 1445 { 1446 return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value); 1447 } 1448 var result = _Json_runHelp(decoder.b, value[index]); 1449 return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a)); 1450 1451 case 8: 1452 if (typeof value !== 'object' || value === null || _Json_isArray(value)) 1453 { 1454 return _Json_expecting('an OBJECT', value); 1455 } 1456 1457 var keyValuePairs = _List_Nil; 1458 // TODO test perf of Object.keys and switch when support is good enough 1459 for (var key in value) 1460 { 1461 if (value.hasOwnProperty(key)) 1462 { 1463 var result = _Json_runHelp(decoder.b, value[key]); 1464 if (!$elm$core$Result$isOk(result)) 1465 { 1466 return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a)); 1467 } 1468 keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs); 1469 } 1470 } 1471 return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs)); 1472 1473 case 9: 1474 var answer = decoder.f; 1475 var decoders = decoder.g; 1476 for (var i = 0; i < decoders.length; i++) 1477 { 1478 var result = _Json_runHelp(decoders[i], value); 1479 if (!$elm$core$Result$isOk(result)) 1480 { 1481 return result; 1482 } 1483 answer = answer(result.a); 1484 } 1485 return $elm$core$Result$Ok(answer); 1486 1487 case 10: 1488 var result = _Json_runHelp(decoder.b, value); 1489 return (!$elm$core$Result$isOk(result)) 1490 ? result 1491 : _Json_runHelp(decoder.h(result.a), value); 1492 1493 case 11: 1494 var errors = _List_Nil; 1495 for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS 1496 { 1497 var result = _Json_runHelp(temp.a, value); 1498 if ($elm$core$Result$isOk(result)) 1499 { 1500 return result; 1501 } 1502 errors = _List_Cons(result.a, errors); 1503 } 1504 return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors))); 1505 1506 case 1: 1507 return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value))); 1508 1509 case 0: 1510 return $elm$core$Result$Ok(decoder.a); 1511 } 1512} 1513 1514function _Json_runArrayDecoder(decoder, value, toElmValue) 1515{ 1516 var len = value.length; 1517 var array = new Array(len); 1518 for (var i = 0; i < len; i++) 1519 { 1520 var result = _Json_runHelp(decoder, value[i]); 1521 if (!$elm$core$Result$isOk(result)) 1522 { 1523 return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a)); 1524 } 1525 array[i] = result.a; 1526 } 1527 return $elm$core$Result$Ok(toElmValue(array)); 1528} 1529 1530function _Json_isArray(value) 1531{ 1532 return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList); 1533} 1534 1535function _Json_toElmArray(array) 1536{ 1537 return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; }); 1538} 1539 1540function _Json_expecting(type, value) 1541{ 1542 return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value))); 1543} 1544 1545 1546// EQUALITY 1547 1548function _Json_equality(x, y) 1549{ 1550 if (x === y) 1551 { 1552 return true; 1553 } 1554 1555 if (x.$ !== y.$) 1556 { 1557 return false;
1558 } 1559 1560 switch (x.$) 1561 { 1562 case 0: 1563 case 1: 1564 return x.a === y.a; 1565 1566 case 2: 1567 return x.b === y.b; 1568 1569 case 5: 1570 return x.c === y.c; 1571 1572 case 3: 1573 case 4: 1574 case 8: 1575 return _Json_equality(x.b, y.b); 1576 1577 case 6: 1578 return x.d === y.d && _Json_equality(x.b, y.b); 1579 1580 case 7: 1581 return x.e === y.e && _Json_equality(x.b, y.b); 1582 1583 case 9: 1584 return x.f === y.f && _Json_listEquality(x.g, y.g); 1585 1586 case 10: 1587 return x.h === y.h && _Json_equality(x.b, y.b); 1588 1589 case 11: 1590 return _Json_listEquality(x.g, y.g); 1591 } 1592} 1593 1594function _Json_listEquality(aDecoders, bDecoders) 1595{ 1596 var len = aDecoders.length; 1597 if (len !== bDecoders.length) 1598 { 1599 return false; 1600 } 1601 for (var i = 0; i < len; i++) 1602 { 1603 if (!_Json_equality(aDecoders[i], bDecoders[i])) 1604 { 1605 return false; 1606 } 1607 } 1608 return true; 1609} 1610 1611 1612// ENCODE 1613 1614var _Json_encode = F2(function(indentLevel, value) 1615{ 1616 return JSON.stringify(_Json_unwrap(value), null, indentLevel) + ''; 1617}); 1618 1619function _Json_wrap(value) { return { $: 0, a: value }; } 1620function _Json_unwrap(value) { return value.a; } 1621 1622function _Json_wrap_UNUSED(value) { return value; } 1623function _Json_unwrap_UNUSED(value) { return value; } 1624 1625function _Json_emptyArray() { return []; } 1626function _Json_emptyObject() { return {}; } 1627 1628var _Json_addField = F3(function(key, value, object) 1629{ 1630 object[key] = _Json_unwrap(value); 1631 return object; 1632}); 1633 1634function _Json_addEntry(func) 1635{ 1636 return F2(function(entry, array) 1637 { 1638 array.push(_Json_unwrap(func(entry))); 1639 return array; 1640 }); 1641} 1642 1643var _Json_encodeNull = _Json_wrap(null); 1644 1645 1646 1647// TASKS 1648 1649function _Scheduler_succeed(value) 1650{ 1651 return { 1652 $: 0, 1653 a: value 1654 }; 1655} 1656 1657function _Scheduler_fail(error) 1658{ 1659 return { 1660 $: 1, 1661 a: error 1662 }; 1663} 1664 1665function _Scheduler_binding(callback) 1666{ 1667 return { 1668 $: 2, 1669 b: callback, 1670 c: null 1671 }; 1672} 1673 1674var _Scheduler_andThen = F2(function(callback, task) 1675{ 1676 return { 1677 $: 3, 1678 b: callback, 1679 d: task 1680 }; 1681}); 1682 1683var _Scheduler_onError = F2(function(callback, task) 1684{ 1685 return { 1686 $: 4, 1687 b: callback, 1688 d: task 1689 }; 1690}); 1691 1692function _Scheduler_receive(callback) 1693{ 1694 return { 1695 $: 5, 1696 b: callback 1697 }; 1698} 1699 1700 1701// PROCESSES 1702 1703var _Scheduler_guid = 0; 1704 1705function _Scheduler_rawSpawn(task) 1706{ 1707 var proc = { 1708 $: 0, 1709 e: _Scheduler_guid++, 1710 f: task, 1711 g: null, 1712 h: [] 1713 }; 1714 1715 _Scheduler_enqueue(proc); 1716 1717 return proc; 1718} 1719 1720function _Scheduler_spawn(task) 1721{ 1722 return _Scheduler_binding(function(callback) { 1723 callback(_Scheduler_succeed(_Scheduler_rawSpawn(task))); 1724 }); 1725} 1726 1727function _Scheduler_rawSend(proc, msg) 1728{ 1729 proc.h.push(msg); 1730 _Scheduler_enqueue(proc); 1731} 1732 1733var _Scheduler_send = F2(function(proc, msg) 1734{ 1735 return _Scheduler_binding(function(callback) { 1736 _Scheduler_rawSend(proc, msg); 1737 callback(_Scheduler_succeed(_Utils_Tuple0)); 1738 }); 1739}); 1740 1741function _Scheduler_kill(proc) 1742{ 1743 return _Scheduler_binding(function(callback) { 1744 var task = proc.f; 1745 if (task.$ === 2 && task.c) 1746 { 1747 task.c(); 1748 } 1749 1750 proc.f = null; 1751 1752 callback(_Scheduler_succeed(_Utils_Tuple0)); 1753 }); 1754} 1755 1756 1757/* STEP PROCESSES 1758 1759type alias Process = 1760 { $ : tag 1761 , id : unique_id 1762 , root : Task 1763 , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack } 1764 , mailbox : [msg] 1765 } 1766 1767*/ 1768 1769 1770var _Scheduler_working = false; 1771var _Scheduler_queue = []; 1772 1773 1774function _Scheduler_enqueue(proc) 1775{ 1776 _Scheduler_queue.push(proc); 1777 if (_Scheduler_working) 1778 { 1779 return; 1780 } 1781 _Scheduler_working = true; 1782 while (proc = _Scheduler_queue.shift()) 1783 { 1784 _Scheduler_step(proc); 1785 } 1786 _Scheduler_working = false; 1787} 1788 1789 1790function _Scheduler_step(proc) 1791{ 1792 while (proc.f) 1793 { 1794 var rootTag = proc.f.$; 1795 if (rootTag === 0 || rootTag === 1) 1796 { 1797 while (proc.g && proc.g.$ !== rootTag) 1798 { 1799 proc.g = proc.g.i; 1800 } 1801 if (!proc.g) 1802 { 1803 return; 1804 } 1805 proc.f = proc.g.b(proc.f.a); 1806 proc.g = proc.g.i; 1807 } 1808 else if (rootTag === 2) 1809 { 1810 proc.f.c = proc.f.b(function(newRoot) { 1811 proc.f = newRoot; 1812 _Scheduler_enqueue(proc); 1813 }); 1814 return; 1815 } 1816 else if (rootTag === 5) 1817 { 1818 if (proc.h.length === 0) 1819 { 1820 return; 1821 } 1822 proc.f = proc.f.b(proc.h.shift()); 1823 } 1824 else // if (rootTag === 3 || rootTag === 4) 1825 { 1826 proc.g = { 1827 $: rootTag === 3 ? 0 : 1, 1828 b: proc.f.b, 1829 i: proc.g 1830 }; 1831 proc.f = proc.f.d; 1832 } 1833 } 1834} 1835 1836 1837 1838function _Process_sleep(time) 1839{ 1840 return _Scheduler_binding(function(callback) { 1841 var id = setTimeout(function() {
1842 callback(_Scheduler_succeed(_Utils_Tuple0)); 1843 }, time); 1844 1845 return function() { clearTimeout(id); }; 1846 }); 1847} 1848 1849 1850 1851 1852// PROGRAMS 1853 1854 1855var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) 1856{ 1857 return _Platform_initialize( 1858 flagDecoder, 1859 args, 1860 impl.init, 1861 impl.update, 1862 impl.subscriptions, 1863 function() { return function() {} } 1864 ); 1865}); 1866 1867 1868 1869// INITIALIZE A PROGRAM 1870 1871 1872function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder) 1873{ 1874 var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined)); 1875 $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/); 1876 var managers = {}; 1877 var initPair = init(result.a); 1878 var model = initPair.a; 1879 var stepper = stepperBuilder(sendToApp, model); 1880 var ports = _Platform_setupEffects(managers, sendToApp); 1881 1882 function sendToApp(msg, viewMetadata) 1883 { 1884 var pair = A2(update, msg, model); 1885 stepper(model = pair.a, viewMetadata); 1886 _Platform_enqueueEffects(managers, pair.b, subscriptions(model)); 1887 } 1888 1889 _Platform_enqueueEffects(managers, initPair.b, subscriptions(model)); 1890 1891 return ports ? { ports: ports } : {}; 1892} 1893 1894 1895 1896// TRACK PRELOADS 1897// 1898// This is used by code in elm/browser and elm/http 1899// to register any HTTP requests that are triggered by init. 1900// 1901 1902 1903var _Platform_preload; 1904 1905 1906function _Platform_registerPreload(url) 1907{ 1908 _Platform_preload.add(url); 1909} 1910 1911 1912 1913// EFFECT MANAGERS 1914 1915 1916var _Platform_effectManagers = {}; 1917 1918 1919function _Platform_setupEffects(managers, sendToApp) 1920{ 1921 var ports; 1922 1923 // setup all necessary effect managers 1924 for (var key in _Platform_effectManagers) 1925 { 1926 var manager = _Platform_effectManagers[key]; 1927 1928 if (manager.a) 1929 { 1930 ports = ports || {}; 1931 ports[key] = manager.a(key, sendToApp); 1932 } 1933 1934 managers[key] = _Platform_instantiateManager(manager, sendToApp); 1935 } 1936 1937 return ports; 1938} 1939 1940 1941function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap) 1942{ 1943 return { 1944 b: init, 1945 c: onEffects, 1946 d: onSelfMsg, 1947 e: cmdMap, 1948 f: subMap 1949 }; 1950} 1951 1952 1953function _Platform_instantiateManager(info, sendToApp) 1954{ 1955 var router = { 1956 g: sendToApp, 1957 h: undefined 1958 }; 1959 1960 var onEffects = info.c; 1961 var onSelfMsg = info.d; 1962 var cmdMap = info.e; 1963 var subMap = info.f; 1964 1965 function loop(state) 1966 { 1967 return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg) 1968 { 1969 var value = msg.a; 1970 1971 if (msg.$ === 0) 1972 { 1973 return A3(onSelfMsg, router, value, state); 1974 } 1975 1976 return cmdMap && subMap 1977 ? A4(onEffects, router, value.i, value.j, state) 1978 : A3(onEffects, router, cmdMap ? value.i : value.j, state); 1979 })); 1980 } 1981 1982 return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b)); 1983} 1984 1985 1986 1987// ROUTING 1988 1989 1990var _Platform_sendToApp = F2(function(router, msg) 1991{ 1992 return _Scheduler_binding(function(callback) 1993 { 1994 router.g(msg); 1995 callback(_Scheduler_succeed(_Utils_Tuple0)); 1996 }); 1997}); 1998 1999 2000var _Platform_sendToSelf = F2(function(router, msg) 2001{ 2002 return A2(_Scheduler_send, router.h, { 2003 $: 0, 2004 a: msg 2005 }); 2006}); 2007 2008 2009 2010// BAGS 2011 2012 2013function _Platform_leaf(home) 2014{ 2015 return function(value) 2016 { 2017 return { 2018 $: 1, 2019 k: home, 2020 l: value 2021 }; 2022 }; 2023} 2024 2025 2026function _Platform_batch(list) 2027{ 2028 return { 2029 $: 2, 2030 m: list 2031 }; 2032} 2033 2034 2035var _Platform_map = F2(function(tagger, bag) 2036{ 2037 return { 2038 $: 3, 2039 n: tagger, 2040 o: bag 2041 } 2042}); 2043 2044 2045 2046// PIPE BAGS INTO EFFECT MANAGERS 2047// 2048// Effects must be queued! 2049// 2050// Say your init contains a synchronous command, like Time.now or Time.here 2051// 2052// - This will produce a batch of effects (FX_1) 2053// - The synchronous task triggers the subsequent `update` call 2054// - This will produce a batch of effects (FX_2) 2055// 2056// If we just start dispatching FX_2, subscriptions from FX_2 can be processed 2057// before subscriptions from FX_1. No good! Earlier versions of this code had 2058// this problem, leading to these reports: 2059// 2060// https://github.com/elm/core/issues/980 2061// https://github.com/elm/core/pull/981 2062// https://github.com/elm/compiler/issues/1776 2063// 2064// The queue is necessary to avoid ordering issues for synchronous commands. 2065 2066 2067// Why use true/false here? Why not just check the length of the queue? 2068// The goal is to detect "are we currently dispatching effects?" If we 2069// are, we need to bail and let the ongoing while loop handle things. 2070// 2071// Now say the queue has 1 element. When we dequeue the final element, 2072// the queue will be empty, but we are still actively dispatching effects. 2073// So you could get queue jumping in a really tricky category of cases. 2074// 2075var _Platform_effectsQueue = []; 2076var _Platform_effectsActive = false;
2077 2078 2079function _Platform_enqueueEffects(managers, cmdBag, subBag) 2080{ 2081 _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag }); 2082 2083 if (_Platform_effectsActive) return; 2084 2085 _Platform_effectsActive = true; 2086 for (var fx; fx = _Platform_effectsQueue.shift(); ) 2087 { 2088 _Platform_dispatchEffects(fx.p, fx.q, fx.r); 2089 } 2090 _Platform_effectsActive = false; 2091} 2092 2093 2094function _Platform_dispatchEffects(managers, cmdBag, subBag) 2095{ 2096 var effectsDict = {}; 2097 _Platform_gatherEffects(true, cmdBag, effectsDict, null); 2098 _Platform_gatherEffects(false, subBag, effectsDict, null); 2099 2100 for (var home in managers) 2101 { 2102 _Scheduler_rawSend(managers[home], { 2103 $: 'fx', 2104 a: effectsDict[home] || { i: _List_Nil, j: _List_Nil } 2105 }); 2106 } 2107} 2108 2109 2110function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers) 2111{ 2112 switch (bag.$) 2113 { 2114 case 1: 2115 var home = bag.k; 2116 var effect = _Platform_toEffect(isCmd, home, taggers, bag.l); 2117 effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]); 2118 return; 2119 2120 case 2: 2121 for (var list = bag.m; list.b; list = list.b) // WHILE_CONS 2122 { 2123 _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers); 2124 } 2125 return; 2126 2127 case 3: 2128 _Platform_gatherEffects(isCmd, bag.o, effectsDict, { 2129 s: bag.n, 2130 t: taggers 2131 }); 2132 return; 2133 } 2134} 2135 2136 2137function _Platform_toEffect(isCmd, home, taggers, value) 2138{ 2139 function applyTaggers(x) 2140 { 2141 for (var temp = taggers; temp; temp = temp.t) 2142 { 2143 x = temp.s(x); 2144 } 2145 return x; 2146 } 2147 2148 var map = isCmd 2149 ? _Platform_effectManagers[home].e 2150 : _Platform_effectManagers[home].f; 2151 2152 return A2(map, applyTaggers, value) 2153} 2154 2155 2156function _Platform_insert(isCmd, newEffect, effects) 2157{ 2158 effects = effects || { i: _List_Nil, j: _List_Nil }; 2159 2160 isCmd 2161 ? (effects.i = _List_Cons(newEffect, effects.i)) 2162 : (effects.j = _List_Cons(newEffect, effects.j)); 2163 2164 return effects; 2165} 2166 2167 2168 2169// PORTS 2170 2171 2172function _Platform_checkPortName(name) 2173{ 2174 if (_Platform_effectManagers[name]) 2175 { 2176 _Debug_crash(3, name) 2177 } 2178} 2179 2180 2181 2182// OUTGOING PORTS 2183 2184 2185function _Platform_outgoingPort(name, converter) 2186{ 2187 _Platform_checkPortName(name); 2188 _Platform_effectManagers[name] = { 2189 e: _Platform_outgoingPortMap, 2190 u: converter, 2191 a: _Platform_setupOutgoingPort 2192 }; 2193 return _Platform_leaf(name); 2194} 2195 2196 2197var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; }); 2198 2199 2200function _Platform_setupOutgoingPort(name) 2201{ 2202 var subs = []; 2203 var converter = _Platform_effectManagers[name].u; 2204 2205 // CREATE MANAGER 2206 2207 var init = _Process_sleep(0); 2208 2209 _Platform_effectManagers[name].b = init; 2210 _Platform_effectManagers[name].c = F3(function(router, cmdList, state) 2211 { 2212 for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS 2213 { 2214 // grab a separate reference to subs in case unsubscribe is called 2215 var currentSubs = subs; 2216 var value = _Json_unwrap(converter(cmdList.a)); 2217 for (var i = 0; i < currentSubs.length; i++) 2218 { 2219 currentSubs[i](value); 2220 } 2221 } 2222 return init; 2223 }); 2224 2225 // PUBLIC API 2226 2227 function subscribe(callback) 2228 { 2229 subs.push(callback); 2230 } 2231 2232 function unsubscribe(callback) 2233 { 2234 // copy subs into a new array in case unsubscribe is called within a 2235 // subscribed callback 2236 subs = subs.slice(); 2237 var index = subs.indexOf(callback); 2238 if (index >= 0) 2239 { 2240 subs.splice(index, 1); 2241 } 2242 } 2243 2244 return { 2245 subscribe: subscribe, 2246 unsubscribe: unsubscribe 2247 }; 2248} 2249 2250 2251 2252// INCOMING PORTS 2253 2254 2255function _Platform_incomingPort(name, converter) 2256{ 2257 _Platform_checkPortName(name); 2258 _Platform_effectManagers[name] = { 2259 f: _Platform_incomingPortMap, 2260 u: converter, 2261 a: _Platform_setupIncomingPort 2262 }; 2263 return _Platform_leaf(name); 2264} 2265 2266 2267var _Platform_incomingPortMap = F2(function(tagger, finalTagger) 2268{ 2269 return function(value) 2270 { 2271 return tagger(finalTagger(value)); 2272 }; 2273}); 2274 2275 2276function _Platform_setupIncomingPort(name, sendToApp) 2277{ 2278 var subs = _List_Nil; 2279 var converter = _Platform_effectManagers[name].u; 2280 2281 // CREATE MANAGER 2282 2283 var init = _Scheduler_succeed(null); 2284 2285 _Platform_effectManagers[name].b = init; 2286 _Platform_effectManagers[name].c = F3(function(router, subList, state) 2287 { 2288 subs = subList; 2289 return init; 2290 }); 2291 2292 // PUBLIC API 2293 2294 function send(incomingValue) 2295 { 2296 var result = A2(_Json_run, converter, _Json_wrap(incomingValue)); 2297 2298 $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a); 2299 2300 var value = result.a; 2301 for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS 2302 { 2303 sendToApp(temp.a(value)); 2304 } 2305 } 2306 2307 return { send: send }; 2308} 2309 2310 2311 2312// EXPORT ELM MODULES 2313//
2314// Have DEBUG and PROD versions so that we can (1) give nicer errors in 2315// debug mode and (2) not pay for the bits needed for that in prod mode. 2316// 2317 2318 2319function _Platform_export_UNUSED(exports) 2320{ 2321 scope['Elm'] 2322 ? _Platform_mergeExportsProd(scope['Elm'], exports) 2323 : scope['Elm'] = exports; 2324} 2325 2326 2327function _Platform_mergeExportsProd(obj, exports) 2328{ 2329 for (var name in exports) 2330 { 2331 (name in obj) 2332 ? (name == 'init') 2333 ? _Debug_crash(6) 2334 : _Platform_mergeExportsProd(obj[name], exports[name]) 2335 : (obj[name] = exports[name]); 2336 } 2337} 2338 2339 2340function _Platform_export(exports) 2341{ 2342 scope['Elm'] 2343 ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports) 2344 : scope['Elm'] = exports; 2345} 2346 2347 2348function _Platform_mergeExportsDebug(moduleName, obj, exports) 2349{ 2350 for (var name in exports) 2351 { 2352 (name in obj) 2353 ? (name == 'init') 2354 ? _Debug_crash(6, moduleName) 2355 : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name]) 2356 : (obj[name] = exports[name]); 2357 } 2358} 2359 2360 2361 2362 2363// HELPERS 2364 2365 2366var _VirtualDom_divertHrefToApp; 2367 2368var _VirtualDom_doc = typeof document !== 'undefined' ? document : {}; 2369 2370 2371function _VirtualDom_appendChild(parent, child) 2372{ 2373 parent.appendChild(child); 2374} 2375 2376var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args) 2377{ 2378 // NOTE: this function needs _Platform_export available to work 2379 2380 /**_UNUSED/ 2381 var node = args['node']; 2382 //*/ 2383 /**/ 2384 var node = args && args['node'] ? args['node'] : _Debug_crash(0); 2385 //*/ 2386 2387 node.parentNode.replaceChild( 2388 _VirtualDom_render(virtualNode, function() {}), 2389 node 2390 ); 2391 2392 return {}; 2393}); 2394 2395 2396 2397// TEXT 2398 2399 2400function _VirtualDom_text(string) 2401{ 2402 return { 2403 $: 0, 2404 a: string 2405 }; 2406} 2407 2408 2409 2410// NODE 2411 2412 2413var _VirtualDom_nodeNS = F2(function(namespace, tag) 2414{ 2415 return F2(function(factList, kidList) 2416 { 2417 for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS 2418 { 2419 var kid = kidList.a; 2420 descendantsCount += (kid.b || 0); 2421 kids.push(kid); 2422 } 2423 descendantsCount += kids.length; 2424 2425 return { 2426 $: 1, 2427 c: tag, 2428 d: _VirtualDom_organizeFacts(factList), 2429 e: kids, 2430 f: namespace, 2431 b: descendantsCount 2432 }; 2433 }); 2434}); 2435 2436 2437var _VirtualDom_node = _VirtualDom_nodeNS(undefined); 2438 2439 2440 2441// KEYED NODE 2442 2443 2444var _VirtualDom_keyedNodeNS = F2(function(namespace, tag) 2445{ 2446 return F2(function(factList, kidList) 2447 { 2448 for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS 2449 { 2450 var kid = kidList.a; 2451 descendantsCount += (kid.b.b || 0); 2452 kids.push(kid); 2453 } 2454 descendantsCount += kids.length; 2455 2456 return { 2457 $: 2, 2458 c: tag, 2459 d: _VirtualDom_organizeFacts(factList), 2460 e: kids, 2461 f: namespace, 2462 b: descendantsCount 2463 }; 2464 }); 2465}); 2466 2467 2468var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined); 2469 2470 2471 2472// CUSTOM 2473 2474 2475function _VirtualDom_custom(factList, model, render, diff) 2476{ 2477 return { 2478 $: 3, 2479 d: _VirtualDom_organizeFacts(factList), 2480 g: model, 2481 h: render, 2482 i: diff 2483 }; 2484} 2485 2486 2487 2488// MAP 2489 2490 2491var _VirtualDom_map = F2(function(tagger, node) 2492{ 2493 return { 2494 $: 4, 2495 j: tagger, 2496 k: node, 2497 b: 1 + (node.b || 0) 2498 }; 2499}); 2500 2501 2502 2503// LAZY 2504 2505 2506function _VirtualDom_thunk(refs, thunk) 2507{ 2508 return { 2509 $: 5, 2510 l: refs, 2511 m: thunk, 2512 k: undefined 2513 }; 2514} 2515 2516var _VirtualDom_lazy = F2(function(func, a) 2517{ 2518 return _VirtualDom_thunk([func, a], function() { 2519 return func(a); 2520 }); 2521}); 2522 2523var _VirtualDom_lazy2 = F3(function(func, a, b) 2524{ 2525 return _VirtualDom_thunk([func, a, b], function() { 2526 return A2(func, a, b); 2527 }); 2528}); 2529 2530var _VirtualDom_lazy3 = F4(function(func, a, b, c) 2531{ 2532 return _VirtualDom_thunk([func, a, b, c], function() { 2533 return A3(func, a, b, c); 2534 }); 2535}); 2536 2537var _VirtualDom_lazy4 = F5(function(func, a, b, c, d) 2538{ 2539 return _VirtualDom_thunk([func, a, b, c, d], function() { 2540 return A4(func, a, b, c, d); 2541 }); 2542}); 2543 2544var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e) 2545{ 2546 return _VirtualDom_thunk([func, a, b, c, d, e], function() { 2547 return A5(func, a, b, c, d, e); 2548 }); 2549}); 2550 2551var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f) 2552{ 2553 return _VirtualDom_thunk([func, a, b, c, d, e, f], function() { 2554 return A6(func, a, b, c, d, e, f); 2555 }); 2556}); 2557 2558var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g) 2559{ 2560 return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() { 2561 return A7(func, a, b, c, d, e, f, g); 2562 }); 2563}); 2564 2565var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h) 2566{ 2567 return _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() { 2568 return A8(func, a, b, c, d, e, f, g, h); 2569 }); 2570}); 2571 2572 2573 2574// FACTS 2575 2576 2577var _VirtualDom_on = F2(function(key, handler) 2578{ 2579 return { 2580 $: 'a0', 2581 n: key, 2582 o: handler 2583 }; 2584}); 2585var _VirtualDom_style = F2(function(key, value) 2586{ 2587 return { 2588 $: 'a1', 2589 n: key, 2590 o: value 2591 }; 2592}); 2593var _VirtualDom_property = F2(function(key, value) 2594{ 2595 return { 2596 $: 'a2', 2597 n: key, 2598 o: value 2599 }; 2600}); 2601var _VirtualDom_attribute = F2(function(key, value) 2602{ 2603 return { 2604 $: 'a3', 2605 n: key, 2606 o: value 2607 }; 2608}); 2609var _VirtualDom_attributeNS = F3(function(namespace, key, value) 2610{ 2611 return { 2612 $: 'a4', 2613 n: key, 2614 o: { f: namespace, o: value } 2615 }; 2616}); 2617 2618 2619 2620// XSS ATTACK VECTOR CHECKS 2621 2622 2623function _VirtualDom_noScript(tag) 2624{ 2625 return tag == 'script' ? 'p' : tag; 2626} 2627 2628function _VirtualDom_noOnOrFormAction(key) 2629{ 2630 return /^(on|formAction$)/i.test(key) ? 'data-' + key : key; 2631} 2632 2633function _VirtualDom_noInnerHtmlOrFormAction(key) 2634{
2635 return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; 2636} 2637 2638function _VirtualDom_noJavaScriptUri_UNUSED(value) 2639{ 2640 return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value; 2641} 2642 2643function _VirtualDom_noJavaScriptUri(value) 2644{ 2645 return /^javascript:/i.test(value.replace(/\s/g,'')) 2646 ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' 2647 : value; 2648} 2649 2650function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) 2651{ 2652 return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value; 2653} 2654 2655function _VirtualDom_noJavaScriptOrHtmlUri(value) 2656{ 2657 return /^\s*(javascript:|data:text\/html)/i.test(value) 2658 ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' 2659 : value; 2660} 2661 2662 2663 2664// MAP FACTS 2665 2666 2667var _VirtualDom_mapAttribute = F2(function(func, attr) 2668{ 2669 return (attr.$ === 'a0') 2670 ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o)) 2671 : attr; 2672}); 2673 2674function _VirtualDom_mapHandler(func, handler) 2675{ 2676 var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); 2677 2678 // 0 = Normal 2679 // 1 = MayStopPropagation 2680 // 2 = MayPreventDefault 2681 // 3 = Custom 2682 2683 return { 2684 $: handler.$, 2685 a: 2686 !tag 2687 ? A2($elm$json$Json$Decode$map, func, handler.a) 2688 : 2689 A3($elm$json$Json$Decode$map2, 2690 tag < 3 2691 ? _VirtualDom_mapEventTuple 2692 : _VirtualDom_mapEventRecord, 2693 $elm$json$Json$Decode$succeed(func), 2694 handler.a 2695 ) 2696 }; 2697} 2698 2699var _VirtualDom_mapEventTuple = F2(function(func, tuple) 2700{ 2701 return _Utils_Tuple2(func(tuple.a), tuple.b); 2702}); 2703 2704var _VirtualDom_mapEventRecord = F2(function(func, record) 2705{ 2706 return { 2707 message: func(record.message), 2708 stopPropagation: record.stopPropagation, 2709 preventDefault: record.preventDefault 2710 } 2711}); 2712 2713 2714 2715// ORGANIZE FACTS 2716 2717 2718function _VirtualDom_organizeFacts(factList) 2719{ 2720 for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS 2721 { 2722 var entry = factList.a; 2723 2724 var tag = entry.$; 2725 var key = entry.n; 2726 var value = entry.o; 2727 2728 if (tag === 'a2') 2729 { 2730 (key === 'className') 2731 ? _VirtualDom_addClass(facts, key, _Json_unwrap(value)) 2732 : facts[key] = _Json_unwrap(value); 2733 2734 continue; 2735 } 2736 2737 var subFacts = facts[tag] || (facts[tag] = {}); 2738 (tag === 'a3' && key === 'class') 2739 ? _VirtualDom_addClass(subFacts, key, value) 2740 : subFacts[key] = value; 2741 } 2742 2743 return facts; 2744} 2745 2746function _VirtualDom_addClass(object, key, newClass) 2747{ 2748 var classes = object[key]; 2749 object[key] = classes ? classes + ' ' + newClass : newClass; 2750} 2751 2752 2753 2754// RENDER 2755 2756 2757function _VirtualDom_render(vNode, eventNode) 2758{ 2759 var tag = vNode.$; 2760 2761 if (tag === 5) 2762 { 2763 return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode); 2764 } 2765 2766 if (tag === 0) 2767 { 2768 return _VirtualDom_doc.createTextNode(vNode.a); 2769 } 2770 2771 if (tag === 4) 2772 { 2773 var subNode = vNode.k; 2774 var tagger = vNode.j; 2775 2776 while (subNode.$ === 4) 2777 { 2778 typeof tagger !== 'object' 2779 ? tagger = [tagger, subNode.j] 2780 : tagger.push(subNode.j); 2781 2782 subNode = subNode.k; 2783 } 2784 2785 var subEventRoot = { j: tagger, p: eventNode };
2786 var domNode = _VirtualDom_render(subNode, subEventRoot); 2787 domNode.elm_event_node_ref = subEventRoot; 2788 return domNode; 2789 } 2790 2791 if (tag === 3) 2792 { 2793 var domNode = vNode.h(vNode.g); 2794 _VirtualDom_applyFacts(domNode, eventNode, vNode.d); 2795 return domNode; 2796 } 2797 2798 // at this point `tag` must be 1 or 2 2799 2800 var domNode = vNode.f 2801 ? _VirtualDom_doc.createElementNS(vNode.f, vNode.c) 2802 : _VirtualDom_doc.createElement(vNode.c); 2803 2804 if (_VirtualDom_divertHrefToApp && vNode.c == 'a') 2805 { 2806 domNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode)); 2807 } 2808 2809 _VirtualDom_applyFacts(domNode, eventNode, vNode.d); 2810 2811 for (var kids = vNode.e, i = 0; i < kids.length; i++) 2812 { 2813 _VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode)); 2814 } 2815 2816 return domNode; 2817} 2818 2819 2820 2821// APPLY FACTS 2822 2823 2824function _VirtualDom_applyFacts(domNode, eventNode, facts) 2825{ 2826 for (var key in facts) 2827 { 2828 var value = facts[key]; 2829 2830 key === 'a1' 2831 ? _VirtualDom_applyStyles(domNode, value) 2832 : 2833 key === 'a0' 2834 ? _VirtualDom_applyEvents(domNode, eventNode, value) 2835 : 2836 key === 'a3' 2837 ? _VirtualDom_applyAttrs(domNode, value) 2838 : 2839 key === 'a4' 2840 ? _VirtualDom_applyAttrsNS(domNode, value) 2841 : 2842 ((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value); 2843 } 2844} 2845 2846 2847 2848// APPLY STYLES 2849 2850 2851function _VirtualDom_applyStyles(domNode, styles) 2852{ 2853 var domNodeStyle = domNode.style; 2854 2855 for (var key in styles) 2856 { 2857 domNodeStyle[key] = styles[key]; 2858 } 2859} 2860 2861 2862 2863// APPLY ATTRS 2864 2865 2866function _VirtualDom_applyAttrs(domNode, attrs) 2867{ 2868 for (var key in attrs) 2869 { 2870 var value = attrs[key]; 2871 typeof value !== 'undefined' 2872 ? domNode.setAttribute(key, value) 2873 : domNode.removeAttribute(key); 2874 } 2875} 2876 2877 2878 2879// APPLY NAMESPACED ATTRS 2880 2881 2882function _VirtualDom_applyAttrsNS(domNode, nsAttrs) 2883{ 2884 for (var key in nsAttrs) 2885 { 2886 var pair = nsAttrs[key]; 2887 var namespace = pair.f; 2888 var value = pair.o; 2889 2890 typeof value !== 'undefined' 2891 ? domNode.setAttributeNS(namespace, key, value) 2892 : domNode.removeAttributeNS(namespace, key); 2893 } 2894} 2895 2896 2897 2898// APPLY EVENTS 2899 2900 2901function _VirtualDom_applyEvents(domNode, eventNode, events) 2902{ 2903 var allCallbacks = domNode.elmFs || (domNode.elmFs = {}); 2904 2905 for (var key in events) 2906 { 2907 var newHandler = events[key]; 2908 var oldCallback = allCallbacks[key]; 2909 2910 if (!newHandler) 2911 { 2912 domNode.removeEventListener(key, oldCallback); 2913 allCallbacks[key] = undefined; 2914 continue; 2915 } 2916 2917 if (oldCallback) 2918 { 2919 var oldHandler = oldCallback.q; 2920 if (oldHandler.$ === newHandler.$) 2921 { 2922 oldCallback.q = newHandler; 2923 continue; 2924 } 2925 domNode.removeEventListener(key, oldCallback); 2926 } 2927 2928 oldCallback = _VirtualDom_makeCallback(eventNode, newHandler); 2929 domNode.addEventListener(key, oldCallback, 2930 _VirtualDom_passiveSupported 2931 && { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 } 2932 ); 2933 allCallbacks[key] = oldCallback; 2934 } 2935} 2936 2937 2938 2939// PASSIVE EVENTS 2940 2941 2942var _VirtualDom_passiveSupported; 2943 2944try 2945{ 2946 window.addEventListener('t', null, Object.defineProperty({}, 'passive', { 2947 get: function() { _VirtualDom_passiveSupported = true; } 2948 })); 2949} 2950catch(e) {} 2951 2952 2953 2954// EVENT HANDLERS 2955 2956 2957function _VirtualDom_makeCallback(eventNode, initialHandler) 2958{ 2959 function callback(event) 2960 { 2961 var handler = callback.q; 2962 var result = _Json_runHelp(handler.a, event); 2963 2964 if (!$elm$core$Result$isOk(result)) 2965 { 2966 return; 2967 } 2968 2969 var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); 2970 2971 // 0 = Normal 2972 // 1 = MayStopPropagation 2973 // 2 = MayPreventDefault 2974 // 3 = Custom 2975 2976 var value = result.a; 2977 var message = !tag ? value : tag < 3 ? value.a : value.message; 2978 var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation; 2979 var currentEventNode = ( 2980 stopPropagation && event.stopPropagation(), 2981 (tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(), 2982 eventNode 2983 ); 2984 var tagger; 2985 var i; 2986 while (tagger = currentEventNode.j) 2987 { 2988 if (typeof tagger == 'function') 2989 { 2990 message = tagger(message); 2991 } 2992 else 2993 { 2994 for (var i = tagger.length; i--; ) 2995 { 2996 message = tagger[i](message); 2997 } 2998 } 2999 currentEventNode = currentEventNode.p; 3000 } 3001 currentEventNode(message, stopPropagation); // stopPropagation implies isSync 3002 } 3003 3004 callback.q = initialHandler; 3005 3006 return callback; 3007} 3008 3009function _VirtualDom_equalEvents(x, y) 3010{ 3011 return x.$ == y.$ && _Json_equality(x.a, y.a); 3012} 3013 3014 3015 3016// DIFF 3017 3018 3019// TODO: Should we do patches like in iOS? 3020// 3021// type Patch 3022// = At Int Patch 3023// | Batch (List Patch) 3024// | Change ... 3025// 3026// How could it not be better? 3027// 3028function _VirtualDom_diff(x, y) 3029{ 3030 var patches = []; 3031 _VirtualDom_diffHelp(x, y, patches, 0); 3032 return patches; 3033} 3034 3035
3036function _VirtualDom_pushPatch(patches, type, index, data) 3037{ 3038 var patch = { 3039 $: type, 3040 r: index, 3041 s: data, 3042 t: undefined, 3043 u: undefined 3044 }; 3045 patches.push(patch); 3046 return patch; 3047} 3048 3049 3050function _VirtualDom_diffHelp(x, y, patches, index) 3051{ 3052 if (x === y) 3053 { 3054 return; 3055 } 3056 3057 var xType = x.$; 3058 var yType = y.$; 3059 3060 // Bail if you run into different types of nodes. Implies that the 3061 // structure has changed significantly and it's not worth a diff. 3062 if (xType !== yType) 3063 { 3064 if (xType === 1 && yType === 2) 3065 { 3066 y = _VirtualDom_dekey(y); 3067 yType = 1; 3068 } 3069 else 3070 { 3071 _VirtualDom_pushPatch(patches, 0, index, y); 3072 return; 3073 } 3074 } 3075 3076 // Now we know that both nodes are the same $. 3077 switch (yType) 3078 { 3079 case 5: 3080 var xRefs = x.l; 3081 var yRefs = y.l; 3082 var i = xRefs.length; 3083 var same = i === yRefs.length; 3084 while (same && i--) 3085 { 3086 same = xRefs[i] === yRefs[i]; 3087 } 3088 if (same) 3089 { 3090 y.k = x.k; 3091 return; 3092 } 3093 y.k = y.m(); 3094 var subPatches = []; 3095 _VirtualDom_diffHelp(x.k, y.k, subPatches, 0); 3096 subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches); 3097 return; 3098 3099 case 4: 3100 // gather nested taggers 3101 var xTaggers = x.j; 3102 var yTaggers = y.j; 3103 var nesting = false; 3104 3105 var xSubNode = x.k; 3106 while (xSubNode.$ === 4) 3107 { 3108 nesting = true; 3109 3110 typeof xTaggers !== 'object' 3111 ? xTaggers = [xTaggers, xSubNode.j] 3112 : xTaggers.push(xSubNode.j); 3113 3114 xSubNode = xSubNode.k; 3115 } 3116 3117 var ySubNode = y.k; 3118 while (ySubNode.$ === 4) 3119 { 3120 nesting = true; 3121 3122 typeof yTaggers !== 'object' 3123 ? yTaggers = [yTaggers, ySubNode.j] 3124 : yTaggers.push(ySubNode.j); 3125 3126 ySubNode = ySubNode.k; 3127 } 3128 3129 // Just bail if different numbers of taggers. This implies the 3130 // structure of the virtual DOM has changed. 3131 if (nesting && xTaggers.length !== yTaggers.length) 3132 { 3133 _VirtualDom_pushPatch(patches, 0, index, y); 3134 return; 3135 } 3136 3137 // check if taggers are "the same" 3138 if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers) 3139 { 3140 _VirtualDom_pushPatch(patches, 2, index, yTaggers); 3141 } 3142 3143 // diff everything below the taggers 3144 _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1); 3145 return; 3146 3147 case 0: 3148 if (x.a !== y.a) 3149 { 3150 _VirtualDom_pushPatch(patches, 3, index, y.a); 3151 } 3152 return; 3153 3154 case 1: 3155 _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids); 3156 return; 3157 3158 case 2: 3159 _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids); 3160 return; 3161 3162 case 3: 3163 if (x.h !== y.h) 3164 { 3165 _VirtualDom_pushPatch(patches, 0, index, y); 3166 return; 3167 } 3168 3169 var factsDiff = _VirtualDom_diffFacts(x.d, y.d); 3170 factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); 3171 3172 var patch = y.i(x.g, y.g); 3173 patch && _VirtualDom_pushPatch(patches, 5, index, patch); 3174 3175 return; 3176 } 3177} 3178 3179// assumes the incoming arrays are the same length 3180function _VirtualDom_pairwiseRefEqual(as, bs) 3181{ 3182 for (var i = 0; i < as.length; i++) 3183 { 3184 if (as[i] !== bs[i]) 3185 { 3186 return false; 3187 } 3188 } 3189 3190 return true; 3191} 3192 3193function _VirtualDom_diffNodes(x, y, patches, index, diffKids) 3194{ 3195 // Bail if obvious indicators have changed. Implies more serious 3196 // structural changes such that it's not worth it to diff. 3197 if (x.c !== y.c || x.f !== y.f) 3198 { 3199 _VirtualDom_pushPatch(patches, 0, index, y); 3200 return; 3201 } 3202 3203 var factsDiff = _VirtualDom_diffFacts(x.d, y.d); 3204 factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); 3205 3206 diffKids(x, y, patches, index); 3207} 3208 3209 3210 3211// DIFF FACTS 3212 3213 3214// TODO Instead of creating a new diff object, it's possible to just test if 3215// there *is* a diff. During the actual patch, do the diff again and make the 3216// modifications directly. This way, there's no new allocations. Worth it? 3217function _VirtualDom_diffFacts(x, y, category) 3218{ 3219 var diff; 3220 3221 // look for changes and removals 3222 for (var xKey in x) 3223 { 3224 if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4') 3225 { 3226 var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey); 3227 if (subDiff) 3228 { 3229 diff = diff || {}; 3230 diff[xKey] = subDiff; 3231 } 3232 continue; 3233 } 3234 3235 // remove if not in the new facts 3236 if (!(xKey in y)) 3237 { 3238 diff = diff || {}; 3239 diff[xKey] = 3240 !category 3241 ? (typeof x[xKey] === 'string' ? '' : null) 3242 : 3243 (category === 'a1') 3244 ? '' 3245 : 3246 (category === 'a0' || category === 'a3') 3247 ? undefined 3248 : 3249 { f: x[xKey].f, o: undefined }; 3250 3251 continue; 3252 } 3253 3254 var xValue = x[xKey]; 3255 var yValue = y[xKey]; 3256 3257 // reference equal, so don't worry about it 3258 if (xValue === yValue && xKey !== 'value' && xKey !== 'checked' 3259 || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue)) 3260 {
3261 continue; 3262 } 3263 3264 diff = diff || {}; 3265 diff[xKey] = yValue; 3266 } 3267 3268 // add new stuff 3269 for (var yKey in y) 3270 { 3271 if (!(yKey in x)) 3272 { 3273 diff = diff || {}; 3274 diff[yKey] = y[yKey]; 3275 } 3276 } 3277 3278 return diff; 3279} 3280 3281 3282 3283// DIFF KIDS 3284 3285 3286function _VirtualDom_diffKids(xParent, yParent, patches, index) 3287{ 3288 var xKids = xParent.e; 3289 var yKids = yParent.e; 3290 3291 var xLen = xKids.length; 3292 var yLen = yKids.length; 3293 3294 // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS 3295 3296 if (xLen > yLen) 3297 { 3298 _VirtualDom_pushPatch(patches, 6, index, { 3299 v: yLen, 3300 i: xLen - yLen 3301 }); 3302 } 3303 else if (xLen < yLen) 3304 { 3305 _VirtualDom_pushPatch(patches, 7, index, { 3306 v: xLen, 3307 e: yKids 3308 }); 3309 } 3310 3311 // PAIRWISE DIFF EVERYTHING ELSE 3312 3313 for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++) 3314 { 3315 var xKid = xKids[i]; 3316 _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index); 3317 index += xKid.b || 0; 3318 } 3319} 3320 3321 3322 3323// KEYED DIFF 3324 3325 3326function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex) 3327{ 3328 var localPatches = []; 3329 3330 var changes = {}; // Dict String Entry 3331 var inserts = []; // Array { index : Int, entry : Entry } 3332 // type Entry = { tag : String, vnode : VNode, index : Int, data : _ } 3333 3334 var xKids = xParent.e; 3335 var yKids = yParent.e; 3336 var xLen = xKids.length; 3337 var yLen = yKids.length; 3338 var xIndex = 0; 3339 var yIndex = 0; 3340 3341 var index = rootIndex; 3342 3343 while (xIndex < xLen && yIndex < yLen) 3344 { 3345 var x = xKids[xIndex]; 3346 var y = yKids[yIndex]; 3347 3348 var xKey = x.a; 3349 var yKey = y.a; 3350 var xNode = x.b; 3351 var yNode = y.b; 3352 3353 var newMatch = undefined; 3354 var oldMatch = undefined; 3355 3356 // check if keys match 3357 3358 if (xKey === yKey) 3359 { 3360 index++; 3361 _VirtualDom_diffHelp(xNode, yNode, localPatches, index); 3362 index += xNode.b || 0; 3363 3364 xIndex++; 3365 yIndex++; 3366 continue; 3367 } 3368 3369 // look ahead 1 to detect insertions and removals. 3370 3371 var xNext = xKids[xIndex + 1]; 3372 var yNext = yKids[yIndex + 1]; 3373 3374 if (xNext) 3375 { 3376 var xNextKey = xNext.a; 3377 var xNextNode = xNext.b; 3378 oldMatch = yKey === xNextKey; 3379 } 3380 3381 if (yNext) 3382 { 3383 var yNextKey = yNext.a; 3384 var yNextNode = yNext.b; 3385 newMatch = xKey === yNextKey; 3386 } 3387 3388 3389 // swap x and y 3390 if (newMatch && oldMatch) 3391 { 3392 index++; 3393 _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); 3394 _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts); 3395 index += xNode.b || 0; 3396 3397 index++; 3398 _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index); 3399 index += xNextNode.b || 0; 3400 3401 xIndex += 2; 3402 yIndex += 2; 3403 continue; 3404 } 3405 3406 // insert y 3407 if (newMatch) 3408 { 3409 index++; 3410 _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); 3411 _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); 3412 index += xNode.b || 0; 3413 3414 xIndex += 1; 3415 yIndex += 2; 3416 continue; 3417 } 3418 3419 // remove x 3420 if (oldMatch) 3421 { 3422 index++; 3423 _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); 3424 index += xNode.b || 0; 3425 3426 index++; 3427 _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index); 3428 index += xNextNode.b || 0; 3429 3430 xIndex += 2; 3431 yIndex += 1; 3432 continue; 3433 } 3434 3435 // remove x, insert y 3436 if (xNext && xNextKey === yNextKey) 3437 { 3438 index++; 3439 _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); 3440 _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); 3441 index += xNode.b || 0; 3442 3443 index++; 3444 _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index); 3445 index += xNextNode.b || 0; 3446 3447 xIndex += 2; 3448 yIndex += 2; 3449 continue; 3450 } 3451 3452 break; 3453 } 3454 3455 // eat up any remaining nodes with removeNode and insertNode 3456 3457 while (xIndex < xLen) 3458 { 3459 index++; 3460 var x = xKids[xIndex]; 3461 var xNode = x.b; 3462 _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index); 3463 index += xNode.b || 0; 3464 xIndex++; 3465 } 3466 3467 while (yIndex < yLen) 3468 { 3469 var endInserts = endInserts || []; 3470 var y = yKids[yIndex]; 3471 _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts); 3472 yIndex++; 3473 } 3474 3475 if (localPatches.length > 0 || inserts.length > 0 || endInserts) 3476 { 3477 _VirtualDom_pushPatch(patches, 8, rootIndex, { 3478 w: localPatches, 3479 x: inserts, 3480 y: endInserts 3481 }); 3482 } 3483} 3484 3485 3486 3487// CHANGES FROM KEYED DIFF 3488 3489 3490var _VirtualDom_POSTFIX = '_elmW6BL'; 3491 3492 3493function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts) 3494{ 3495 var entry = changes[key]; 3496 3497 // never seen this key before
3498 if (!entry) 3499 { 3500 entry = { 3501 c: 0, 3502 z: vnode, 3503 r: yIndex, 3504 s: undefined 3505 }; 3506 3507 inserts.push({ r: yIndex, A: entry }); 3508 changes[key] = entry; 3509 3510 return; 3511 } 3512 3513 // this key was removed earlier, a match! 3514 if (entry.c === 1) 3515 { 3516 inserts.push({ r: yIndex, A: entry }); 3517 3518 entry.c = 2; 3519 var subPatches = []; 3520 _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r); 3521 entry.r = yIndex; 3522 entry.s.s = { 3523 w: subPatches, 3524 A: entry 3525 }; 3526 3527 return; 3528 } 3529 3530 // this key has already been inserted or moved, a duplicate! 3531 _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts); 3532} 3533 3534 3535function _VirtualDom_removeNode(changes, localPatches, key, vnode, index) 3536{ 3537 var entry = changes[key]; 3538 3539 // never seen this key before 3540 if (!entry) 3541 { 3542 var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined); 3543 3544 changes[key] = { 3545 c: 1, 3546 z: vnode, 3547 r: index, 3548 s: patch 3549 }; 3550 3551 return; 3552 } 3553 3554 // this key was inserted earlier, a match! 3555 if (entry.c === 0) 3556 { 3557 entry.c = 2; 3558 var subPatches = []; 3559 _VirtualDom_diffHelp(vnode, entry.z, subPatches, index); 3560 3561 _VirtualDom_pushPatch(localPatches, 9, index, { 3562 w: subPatches, 3563 A: entry 3564 }); 3565 3566 return; 3567 } 3568 3569 // this key has already been removed or moved, a duplicate! 3570 _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index); 3571} 3572 3573 3574 3575// ADD DOM NODES 3576// 3577// Each DOM node has an "index" assigned in order of traversal. It is important 3578// to minimize our crawl over the actual DOM, so these indexes (along with the 3579// descendantsCount of virtual nodes) let us skip touching entire subtrees of 3580// the DOM if we know there are no patches there. 3581 3582 3583function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode) 3584{ 3585 _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode); 3586} 3587 3588 3589// assumes `patches` is non-empty and indexes increase monotonically. 3590function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode) 3591{ 3592 var patch = patches[i]; 3593 var index = patch.r; 3594 3595 while (index === low) 3596 { 3597 var patchType = patch.$; 3598 3599 if (patchType === 1) 3600 { 3601 _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode); 3602 } 3603 else if (patchType === 8) 3604 { 3605 patch.t = domNode; 3606 patch.u = eventNode; 3607 3608 var subPatches = patch.s.w; 3609 if (subPatches.length > 0) 3610 { 3611 _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); 3612 } 3613 } 3614 else if (patchType === 9) 3615 { 3616 patch.t = domNode; 3617 patch.u = eventNode; 3618 3619 var data = patch.s; 3620 if (data) 3621 { 3622 data.A.s = domNode; 3623 var subPatches = data.w; 3624 if (subPatches.length > 0) 3625 { 3626 _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); 3627 } 3628 } 3629 } 3630 else 3631 { 3632 patch.t = domNode; 3633 patch.u = eventNode; 3634 } 3635 3636 i++; 3637 3638 if (!(patch = patches[i]) || (index = patch.r) > high) 3639 { 3640 return i; 3641 } 3642 } 3643 3644 var tag = vNode.$; 3645 3646 if (tag === 4) 3647 { 3648 var subNode = vNode.k; 3649 3650 while (subNode.$ === 4) 3651 { 3652 subNode = subNode.k; 3653 } 3654 3655 return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref); 3656 } 3657 3658 // tag must be 1 or 2 at this point 3659 3660 var vKids = vNode.e; 3661 var childNodes = domNode.childNodes; 3662 for (var j = 0; j < vKids.length; j++) 3663 { 3664 low++; 3665 var vKid = tag === 1 ? vKids[j] : vKids[j].b; 3666 var nextLow = low + (vKid.b || 0); 3667 if (low <= index && index <= nextLow) 3668 { 3669 i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode); 3670 if (!(patch = patches[i]) || (index = patch.r) > high) 3671 { 3672 return i; 3673 } 3674 } 3675 low = nextLow; 3676 } 3677 return i; 3678} 3679 3680 3681 3682// APPLY PATCHES 3683 3684 3685function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode) 3686{ 3687 if (patches.length === 0) 3688 { 3689 return rootDomNode; 3690 } 3691 3692 _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode); 3693 return _VirtualDom_applyPatchesHelp(rootDomNode, patches); 3694} 3695 3696function _VirtualDom_applyPatchesHelp(rootDomNode, patches) 3697{ 3698 for (var i = 0; i < patches.length; i++) 3699 { 3700 var patch = patches[i]; 3701 var localDomNode = patch.t 3702 var newNode = _VirtualDom_applyPatch(localDomNode, patch); 3703 if (localDomNode === rootDomNode) 3704 { 3705 rootDomNode = newNode; 3706 } 3707 } 3708 return rootDomNode; 3709} 3710 3711function _VirtualDom_applyPatch(domNode, patch) 3712{ 3713 switch (patch.$) 3714 { 3715 case 0: 3716 return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u); 3717 3718 case 4: 3719 _VirtualDom_applyFacts(domNode, patch.u, patch.s); 3720 return domNode; 3721 3722 case 3:
3723 domNode.replaceData(0, domNode.length, patch.s); 3724 return domNode; 3725 3726 case 1: 3727 return _VirtualDom_applyPatchesHelp(domNode, patch.s); 3728 3729 case 2: 3730 if (domNode.elm_event_node_ref) 3731 { 3732 domNode.elm_event_node_ref.j = patch.s; 3733 } 3734 else 3735 { 3736 domNode.elm_event_node_ref = { j: patch.s, p: patch.u }; 3737 } 3738 return domNode; 3739 3740 case 6: 3741 var data = patch.s; 3742 for (var i = 0; i < data.i; i++) 3743 { 3744 domNode.removeChild(domNode.childNodes[data.v]); 3745 } 3746 return domNode; 3747 3748 case 7: 3749 var data = patch.s; 3750 var kids = data.e; 3751 var i = data.v; 3752 var theEnd = domNode.childNodes[i]; 3753 for (; i < kids.length; i++) 3754 { 3755 domNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd); 3756 } 3757 return domNode; 3758 3759 case 9: 3760 var data = patch.s; 3761 if (!data) 3762 { 3763 domNode.parentNode.removeChild(domNode); 3764 return domNode; 3765 } 3766 var entry = data.A; 3767 if (typeof entry.r !== 'undefined') 3768 { 3769 domNode.parentNode.removeChild(domNode); 3770 } 3771 entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w); 3772 return domNode; 3773 3774 case 8: 3775 return _VirtualDom_applyPatchReorder(domNode, patch); 3776 3777 case 5: 3778 return patch.s(domNode); 3779 3780 default: 3781 _Debug_crash(10); // 'Ran into an unknown patch!' 3782 } 3783} 3784 3785 3786function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode) 3787{ 3788 var parentNode = domNode.parentNode; 3789 var newNode = _VirtualDom_render(vNode, eventNode); 3790 3791 if (!newNode.elm_event_node_ref) 3792 { 3793 newNode.elm_event_node_ref = domNode.elm_event_node_ref; 3794 } 3795 3796 if (parentNode && newNode !== domNode) 3797 { 3798 parentNode.replaceChild(newNode, domNode); 3799 } 3800 return newNode; 3801} 3802 3803 3804function _VirtualDom_applyPatchReorder(domNode, patch) 3805{ 3806 var data = patch.s; 3807 3808 // remove end inserts 3809 var frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch); 3810 3811 // removals 3812 domNode = _VirtualDom_applyPatchesHelp(domNode, data.w); 3813 3814 // inserts 3815 var inserts = data.x; 3816 for (var i = 0; i < inserts.length; i++) 3817 { 3818 var insert = inserts[i]; 3819 var entry = insert.A; 3820 var node = entry.c === 2 3821 ? entry.s 3822 : _VirtualDom_render(entry.z, patch.u); 3823 domNode.insertBefore(node, domNode.childNodes[insert.r]); 3824 } 3825 3826 // add end inserts 3827 if (frag) 3828 { 3829 _VirtualDom_appendChild(domNode, frag); 3830 } 3831 3832 return domNode; 3833} 3834 3835 3836function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch) 3837{ 3838 if (!endInserts) 3839 { 3840 return; 3841 } 3842 3843 var frag = _VirtualDom_doc.createDocumentFragment(); 3844 for (var i = 0; i < endInserts.length; i++) 3845 { 3846 var insert = endInserts[i]; 3847 var entry = insert.A; 3848 _VirtualDom_appendChild(frag, entry.c === 2 3849 ? entry.s 3850 : _VirtualDom_render(entry.z, patch.u) 3851 ); 3852 } 3853 return frag; 3854} 3855 3856 3857function _VirtualDom_virtualize(node) 3858{ 3859 // TEXT NODES 3860 3861 if (node.nodeType === 3) 3862 { 3863 return _VirtualDom_text(node.textContent); 3864 } 3865 3866 3867 // WEIRD NODES 3868 3869 if (node.nodeType !== 1) 3870 { 3871 return _VirtualDom_text(''); 3872 } 3873 3874 3875 // ELEMENT NODES 3876 3877 var attrList = _List_Nil; 3878 var attrs = node.attributes; 3879 for (var i = attrs.length; i--; ) 3880 { 3881 var attr = attrs[i]; 3882 var name = attr.name; 3883 var value = attr.value; 3884 attrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList ); 3885 } 3886 3887 var tag = node.tagName.toLowerCase(); 3888 var kidList = _List_Nil; 3889 var kids = node.childNodes; 3890 3891 for (var i = kids.length; i--; ) 3892 { 3893 kidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList); 3894 } 3895 return A3(_VirtualDom_node, tag, attrList, kidList); 3896} 3897 3898function _VirtualDom_dekey(keyedNode) 3899{ 3900 var keyedKids = keyedNode.e; 3901 var len = keyedKids.length; 3902 var kids = new Array(len); 3903 for (var i = 0; i < len; i++) 3904 { 3905 kids[i] = keyedKids[i].b; 3906 } 3907 3908 return { 3909 $: 1, 3910 c: keyedNode.c, 3911 d: keyedNode.d, 3912 e: kids, 3913 f: keyedNode.f, 3914 b: keyedNode.b 3915 }; 3916} 3917 3918 3919 3920 3921// ELEMENT 3922 3923 3924var _Debugger_element; 3925 3926var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args) 3927{ 3928 return _Platform_initialize( 3929 flagDecoder, 3930 args, 3931 impl.init, 3932 impl.update, 3933 impl.subscriptions, 3934 function(sendToApp, initialModel) { 3935 var view = impl.view; 3936 /**_UNUSED/ 3937 var domNode = args['node']; 3938 //*/ 3939 /**/ 3940 var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); 3941 //*/ 3942 var currNode = _VirtualDom_virtualize(domNode); 3943 3944 return _Browser_makeAnimator(initialModel, function(model) 3945 { 3946 var nextNode = view(model); 3947 var patches = _VirtualDom_diff(currNode, nextNode); 3948 domNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp); 3949 currNode = nextNode; 3950 }); 3951 } 3952 ); 3953}); 3954 3955 3956 3957// DOCUMENT 3958 3959 3960var _Debugger_document; 3961 3962var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args) 3963{ 3964 return _Platform_initialize( 3965 flagDecoder, 3966 args, 3967 impl.init, 3968 impl.update, 3969 impl.subscriptions, 3970 function(sendToApp, initialModel) { 3971 var divertHrefToApp = impl.setup && impl.setup(sendToApp) 3972 var view = impl.view; 3973 var title = _VirtualDom_doc.title; 3974 var bodyNode = _VirtualDom_doc.body; 3975 var currNode = _VirtualDom_virtualize(bodyNode); 3976 return _Browser_makeAnimator(initialModel, function(model) 3977 { 3978 _VirtualDom_divertHrefToApp = divertHrefToApp; 3979 var doc = view(model); 3980 var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body); 3981 var patches = _VirtualDom_diff(currNode, nextNode); 3982 bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); 3983 currNode = nextNode; 3984 _VirtualDom_divertHrefToApp = 0; 3985 (title !== doc.title) && (_VirtualDom_doc.title = title = doc.title); 3986 }); 3987 } 3988 ); 3989}); 3990 3991 3992 3993// ANIMATION 3994 3995 3996var _Browser_cancelAnimationFrame = 3997 typeof cancelAnimationFrame !== 'undefined' 3998 ? cancelAnimationFrame 3999 : function(id) { clearTimeout(id); }; 4000 4001var _Browser_requestAnimationFrame = 4002 typeof requestAnimationFrame !== 'undefined' 4003 ? requestAnimationFrame 4004 : function(callback) { return setTimeout(callback, 1000 / 60); }; 4005 4006 4007function _Browser_makeAnimator(model, draw) 4008{ 4009 draw(model); 4010 4011 var state = 0; 4012 4013 function updateIfNeeded() 4014 { 4015 state = state === 1 4016 ? 0 4017 : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 ); 4018 } 4019 4020 return function(nextModel, isSync) 4021 { 4022 model = nextModel; 4023 4024 isSync 4025 ? ( draw(model), 4026 state === 2 && (state = 1) 4027 ) 4028 : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded), 4029 state = 2 4030 ); 4031 }; 4032} 4033 4034 4035 4036// APPLICATION 4037 4038 4039function _Browser_application(impl) 4040{ 4041 var onUrlChange = impl.onUrlChange; 4042 var onUrlRequest = impl.onUrlRequest; 4043 var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; 4044 4045 return _Browser_document({ 4046 setup: function(sendToApp) 4047 { 4048 key.a = sendToApp; 4049 _Browser_window.addEventListener('popstate', key); 4050 _Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key); 4051 4052 return F2(function(domNode, event) 4053 { 4054 if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download')) 4055 { 4056 event.preventDefault(); 4057 var href = domNode.href; 4058 var curr = _Browser_getUrl(); 4059 var next = $elm$url$Url$fromString(href).a; 4060 sendToApp(onUrlRequest( 4061 (next 4062 && curr.protocol === next.protocol 4063 && curr.host === next.host 4064 && curr.port_.a === next.port_.a 4065 ) 4066 ? $elm$browser$Browser$Internal(next) 4067 : $elm$browser$Browser$External(href) 4068 )); 4069 } 4070 }); 4071 }, 4072 init: function(flags) 4073 { 4074 return A3(impl.init, flags, _Browser_getUrl(), key); 4075 }, 4076 view: impl.view, 4077 update: impl.update, 4078 subscriptions: impl.subscriptions 4079 }); 4080} 4081 4082function _Browser_getUrl() 4083{ 4084 return $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1); 4085} 4086 4087var _Browser_go = F2(function(key, n) 4088{ 4089 return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { 4090 n && history.go(n); 4091 key(); 4092 })); 4093}); 4094 4095var _Browser_pushUrl = F2(function(key, url) 4096{ 4097 return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { 4098 history.pushState({}, '', url); 4099 key(); 4100 })); 4101}); 4102 4103var _Browser_replaceUrl = F2(function(key, url) 4104{ 4105 return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { 4106 history.replaceState({}, '', url); 4107 key(); 4108 })); 4109}); 4110 4111 4112 4113// GLOBAL EVENTS 4114 4115 4116var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} }; 4117var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode; 4118var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode; 4119 4120var _Browser_on = F3(function(node, eventName, sendToSelf) 4121{ 4122 return _Scheduler_spawn(_Scheduler_binding(function(callback) 4123 { 4124 function handler(event) { _Scheduler_rawSpawn(sendToSelf(event)); } 4125 node.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true }); 4126 return function() { node.removeEventListener(eventName, handler); }; 4127 })); 4128}); 4129 4130var _Browser_decodeEvent = F2(function(decoder, event) 4131{ 4132 var result = _Json_runHelp(decoder, event); 4133 return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing; 4134}); 4135 4136 4137 4138// PAGE VISIBILITY 4139 4140 4141function _Browser_visibilityInfo() 4142{ 4143 return (typeof _VirtualDom_doc.hidden !== 'undefined') 4144 ? { hidden: 'hidden', change: 'visibilitychange' } 4145 : 4146 (typeof _VirtualDom_doc.mozHidden !== 'undefined') 4147 ? { hidden: 'mozHidden', change: 'mozvisibilitychange' } 4148 : 4149 (typeof _VirtualDom_doc.msHidden !== 'undefined') 4150 ? { hidden: 'msHidden', change: 'msvisibilitychange' } 4151 : 4152 (typeof _VirtualDom_doc.webkitHidden !== 'undefined') 4153 ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' } 4154 : { hidden: 'hidden', change: 'visibilitychange' }; 4155} 4156 4157 4158 4159// ANIMATION FRAMES 4160 4161 4162function _Browser_rAF() 4163{ 4164 return _Scheduler_binding(function(callback) 4165 { 4166 var id = _Browser_requestAnimationFrame(function() {
4167 callback(_Scheduler_succeed(Date.now())); 4168 }); 4169 4170 return function() { 4171 _Browser_cancelAnimationFrame(id); 4172 }; 4173 }); 4174} 4175 4176 4177function _Browser_now() 4178{ 4179 return _Scheduler_binding(function(callback) 4180 { 4181 callback(_Scheduler_succeed(Date.now())); 4182 }); 4183} 4184 4185 4186 4187// DOM STUFF 4188 4189 4190function _Browser_withNode(id, doStuff) 4191{ 4192 return _Scheduler_binding(function(callback) 4193 { 4194 _Browser_requestAnimationFrame(function() { 4195 var node = document.getElementById(id); 4196 callback(node 4197 ? _Scheduler_succeed(doStuff(node)) 4198 : _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id)) 4199 ); 4200 }); 4201 }); 4202} 4203 4204 4205function _Browser_withWindow(doStuff) 4206{ 4207 return _Scheduler_binding(function(callback) 4208 { 4209 _Browser_requestAnimationFrame(function() { 4210 callback(_Scheduler_succeed(doStuff())); 4211 }); 4212 }); 4213} 4214 4215 4216// FOCUS and BLUR 4217 4218 4219var _Browser_call = F2(function(functionName, id) 4220{ 4221 return _Browser_withNode(id, function(node) { 4222 node[functionName](); 4223 return _Utils_Tuple0; 4224 }); 4225}); 4226 4227 4228 4229// WINDOW VIEWPORT 4230 4231 4232function _Browser_getViewport() 4233{ 4234 return { 4235 scene: _Browser_getScene(), 4236 viewport: { 4237 x: _Browser_window.pageXOffset, 4238 y: _Browser_window.pageYOffset, 4239 width: _Browser_doc.documentElement.clientWidth, 4240 height: _Browser_doc.documentElement.clientHeight 4241 } 4242 }; 4243} 4244 4245function _Browser_getScene() 4246{ 4247 var body = _Browser_doc.body; 4248 var elem = _Browser_doc.documentElement; 4249 return { 4250 width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), 4251 height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) 4252 }; 4253} 4254 4255var _Browser_setViewport = F2(function(x, y) 4256{ 4257 return _Browser_withWindow(function() 4258 { 4259 _Browser_window.scroll(x, y); 4260 return _Utils_Tuple0; 4261 }); 4262}); 4263 4264 4265 4266// ELEMENT VIEWPORT 4267 4268 4269function _Browser_getViewportOf(id) 4270{ 4271 return _Browser_withNode(id, function(node) 4272 { 4273 return { 4274 scene: { 4275 width: node.scrollWidth, 4276 height: node.scrollHeight 4277 }, 4278 viewport: { 4279 x: node.scrollLeft, 4280 y: node.scrollTop, 4281 width: node.clientWidth, 4282 height: node.clientHeight 4283 } 4284 }; 4285 }); 4286} 4287 4288 4289var _Browser_setViewportOf = F3(function(id, x, y) 4290{ 4291 return _Browser_withNode(id, function(node) 4292 { 4293 node.scrollLeft = x; 4294 node.scrollTop = y; 4295 return _Utils_Tuple0; 4296 }); 4297}); 4298 4299 4300 4301// ELEMENT 4302 4303 4304function _Browser_getElement(id) 4305{ 4306 return _Browser_withNode(id, function(node) 4307 { 4308 var rect = node.getBoundingClientRect(); 4309 var x = _Browser_window.pageXOffset; 4310 var y = _Browser_window.pageYOffset; 4311 return { 4312 scene: _Browser_getScene(), 4313 viewport: { 4314 x: x, 4315 y: y, 4316 width: _Browser_doc.documentElement.clientWidth, 4317 height: _Browser_doc.documentElement.clientHeight 4318 }, 4319 element: { 4320 x: x + rect.left, 4321 y: y + rect.top, 4322 width: rect.width, 4323 height: rect.height 4324 } 4325 }; 4326 }); 4327} 4328 4329 4330 4331// LOAD and RELOAD 4332 4333 4334function _Browser_reload(skipCache) 4335{ 4336 return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) 4337 { 4338 _VirtualDom_doc.location.reload(skipCache); 4339 })); 4340} 4341 4342function _Browser_load(url) 4343{ 4344 return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) 4345 { 4346 try 4347 { 4348 _Browser_window.location = url; 4349 } 4350 catch(err) 4351 { 4352 // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here. 4353 // Other browsers reload the page, so let's be consistent about that. 4354 _VirtualDom_doc.location.reload(false); 4355 } 4356 })); 4357} 4358 4359 4360 4361 4362// STRINGS 4363 4364 4365var _Parser_isSubString = F5(function(smallString, offset, row, col, bigString) 4366{ 4367 var smallLength = smallString.length; 4368 var isGood = offset + smallLength <= bigString.length; 4369 4370 for (var i = 0; isGood && i < smallLength; ) 4371 { 4372 var code = bigString.charCodeAt(offset); 4373 isGood = 4374 smallString[i++] === bigString[offset++] 4375 && ( 4376 code === 0x000A /* \n */ 4377 ? ( row++, col=1 ) 4378 : ( col++, (code & 0xF800) === 0xD800 ? smallString[i++] === bigString[offset++] : 1 ) 4379 ) 4380 } 4381
4382 return _Utils_Tuple3(isGood ? offset : -1, row, col); 4383}); 4384 4385 4386 4387// CHARS 4388 4389 4390var _Parser_isSubChar = F3(function(predicate, offset, string) 4391{ 4392 return ( 4393 string.length <= offset 4394 ? -1 4395 : 4396 (string.charCodeAt(offset) & 0xF800) === 0xD800 4397 ? (predicate(_Utils_chr(string.substr(offset, 2))) ? offset + 2 : -1) 4398 : 4399 (predicate(_Utils_chr(string[offset])) 4400 ? ((string[offset] === '\n') ? -2 : (offset + 1)) 4401 : -1 4402 ) 4403 ); 4404}); 4405 4406 4407var _Parser_isAsciiCode = F3(function(code, offset, string) 4408{ 4409 return string.charCodeAt(offset) === code; 4410}); 4411 4412 4413 4414// NUMBERS 4415 4416 4417var _Parser_chompBase10 = F2(function(offset, string) 4418{ 4419 for (; offset < string.length; offset++) 4420 { 4421 var code = string.charCodeAt(offset); 4422 if (code < 0x30 || 0x39 < code) 4423 { 4424 return offset; 4425 } 4426 } 4427 return offset; 4428}); 4429 4430 4431var _Parser_consumeBase = F3(function(base, offset, string) 4432{ 4433 for (var total = 0; offset < string.length; offset++) 4434 { 4435 var digit = string.charCodeAt(offset) - 0x30; 4436 if (digit < 0 || base <= digit) break; 4437 total = base * total + digit; 4438 } 4439 return _Utils_Tuple2(offset, total); 4440}); 4441 4442 4443var _Parser_consumeBase16 = F2(function(offset, string) 4444{ 4445 for (var total = 0; offset < string.length; offset++) 4446 { 4447 var code = string.charCodeAt(offset); 4448 if (0x30 <= code && code <= 0x39) 4449 { 4450 total = 16 * total + code - 0x30; 4451 } 4452 else if (0x41 <= code && code <= 0x46) 4453 { 4454 total = 16 * total + code - 55; 4455 } 4456 else if (0x61 <= code && code <= 0x66) 4457 { 4458 total = 16 * total + code - 87; 4459 } 4460 else 4461 { 4462 break; 4463 } 4464 } 4465 return _Utils_Tuple2(offset, total); 4466}); 4467 4468 4469 4470// FIND STRING 4471 4472 4473var _Parser_findSubString = F5(function(smallString, offset, row, col, bigString) 4474{ 4475 var newOffset = bigString.indexOf(smallString, offset); 4476 var target = newOffset < 0 ? bigString.length : newOffset + smallString.length; 4477 4478 while (offset < target) 4479 { 4480 var code = bigString.charCodeAt(offset++); 4481 code === 0x000A /* \n */ 4482 ? ( col=1, row++ ) 4483 : ( col++, (code & 0xF800) === 0xD800 && offset++ ) 4484 } 4485 4486 return _Utils_Tuple3(newOffset, row, col); 4487}); 4488var $elm$core$Basics$EQ = {$: 'EQ'}; 4489var $elm$core$Basics$GT = {$: 'GT'}; 4490var $elm$core$Basics$LT = {$: 'LT'}; 4491var $elm$core$List$cons = _List_cons; 4492var $elm$core$Dict$foldr = F3( 4493 function (func, acc, t) { 4494 foldr: 4495 while (true) { 4496 if (t.$ === 'RBEmpty_elm_builtin') { 4497 return acc; 4498 } else { 4499 var key = t.b; 4500 var value = t.c; 4501 var left = t.d; 4502 var right = t.e; 4503 var $temp$func = func, 4504 $temp$acc = A3( 4505 func, 4506 key, 4507 value, 4508 A3($elm$core$Dict$foldr, func, acc, right)), 4509 $temp$t = left; 4510 func = $temp$func; 4511 acc = $temp$acc; 4512 t = $temp$t; 4513 continue foldr; 4514 } 4515 } 4516 }); 4517var $elm$core$Dict$toList = function (dict) { 4518 return A3( 4519 $elm$core$Dict$foldr, 4520 F3( 4521 function (key, value, list) { 4522 return A2( 4523 $elm$core$List$cons, 4524 _Utils_Tuple2(key, value), 4525 list); 4526 }), 4527 _List_Nil, 4528 dict); 4529}; 4530var $elm$core$Dict$keys = function (dict) { 4531 return A3( 4532 $elm$core$Dict$foldr, 4533 F3( 4534 function (key, value, keyList) { 4535 return A2($elm$core$List$cons, key, keyList); 4536 }), 4537 _List_Nil, 4538 dict); 4539}; 4540var $elm$core$Set$toList = function (_v0) { 4541 var dict = _v0.a; 4542 return $elm$core$Dict$keys(dict); 4543}; 4544var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; 4545var $elm$core$Array$foldr = F3( 4546 function (func, baseCase, _v0) { 4547 var tree = _v0.c; 4548 var tail = _v0.d; 4549 var helper = F2( 4550 function (node, acc) { 4551 if (node.$ === 'SubTree') { 4552 var subTree = node.a; 4553 return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); 4554 } else { 4555 var values = node.a; 4556 return A3($elm$core$Elm$JsArray$foldr, func, acc, values); 4557 } 4558 }); 4559 return A3( 4560 $elm$core$Elm$JsArray$foldr, 4561 helper, 4562 A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail), 4563 tree); 4564 }); 4565var $elm$core$Array$toList = function (array) { 4566 return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); 4567}; 4568var $elm$core$Result$Err = function (a) { 4569 return {$: 'Err', a: a}; 4570}; 4571var $elm$json$Json$Decode$Failure = F2( 4572 function (a, b) { 4573 return {$: 'Failure', a: a, b: b}; 4574 }); 4575var $elm$json$Json$Decode$Field = F2( 4576 function (a, b) { 4577 return {$: 'Field', a: a, b: b}; 4578 }); 4579var $elm$json$Json$Decode$Index = F2( 4580 function (a, b) { 4581 return {$: 'Index', a: a, b: b}; 4582 }); 4583var $elm$core$Result$Ok = function (a) { 4584 return {$: 'Ok', a: a}; 4585}; 4586var $elm$json$Json$Decode$OneOf = function (a) { 4587 return {$: 'OneOf', a: a}; 4588}; 4589var $elm$core$Basics$False = {$: 'False'}; 4590var $elm$core$Basics$add = _Basics_add; 4591var $elm$core$Maybe$Just = function (a) { 4592 return {$: 'Just', a: a}; 4593}; 4594var $elm$core$Maybe$Nothing = {$: 'Nothing'};
4595var $elm$core$String$all = _String_all; 4596var $elm$core$Basics$and = _Basics_and; 4597var $elm$core$Basics$append = _Utils_append; 4598var $elm$json$Json$Encode$encode = _Json_encode; 4599var $elm$core$String$fromInt = _String_fromNumber; 4600var $elm$core$String$join = F2( 4601 function (sep, chunks) { 4602 return A2( 4603 _String_join, 4604 sep, 4605 _List_toArray(chunks)); 4606 }); 4607var $elm$core$String$split = F2( 4608 function (sep, string) { 4609 return _List_fromArray( 4610 A2(_String_split, sep, string)); 4611 }); 4612var $elm$json$Json$Decode$indent = function (str) { 4613 return A2( 4614 $elm$core$String$join, 4615 '\n ', 4616 A2($elm$core$String$split, '\n', str)); 4617}; 4618var $elm$core$List$foldl = F3( 4619 function (func, acc, list) { 4620 foldl: 4621 while (true) { 4622 if (!list.b) { 4623 return acc; 4624 } else { 4625 var x = list.a; 4626 var xs = list.b; 4627 var $temp$func = func, 4628 $temp$acc = A2(func, x, acc), 4629 $temp$list = xs; 4630 func = $temp$func; 4631 acc = $temp$acc; 4632 list = $temp$list; 4633 continue foldl; 4634 } 4635 } 4636 }); 4637var $elm$core$List$length = function (xs) { 4638 return A3( 4639 $elm$core$List$foldl, 4640 F2( 4641 function (_v0, i) { 4642 return i + 1; 4643 }), 4644 0, 4645 xs); 4646}; 4647var $elm$core$List$map2 = _List_map2; 4648var $elm$core$Basics$le = _Utils_le; 4649var $elm$core$Basics$sub = _Basics_sub; 4650var $elm$core$List$rangeHelp = F3( 4651 function (lo, hi, list) { 4652 rangeHelp: 4653 while (true) { 4654 if (_Utils_cmp(lo, hi) < 1) { 4655 var $temp$lo = lo, 4656 $temp$hi = hi - 1, 4657 $temp$list = A2($elm$core$List$cons, hi, list); 4658 lo = $temp$lo; 4659 hi = $temp$hi; 4660 list = $temp$list; 4661 continue rangeHelp; 4662 } else { 4663 return list; 4664 } 4665 } 4666 }); 4667var $elm$core$List$range = F2( 4668 function (lo, hi) { 4669 return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil); 4670 }); 4671var $elm$core$List$indexedMap = F2( 4672 function (f, xs) { 4673 return A3( 4674 $elm$core$List$map2, 4675 f, 4676 A2( 4677 $elm$core$List$range, 4678 0, 4679 $elm$core$List$length(xs) - 1), 4680 xs); 4681 }); 4682var $elm$core$Char$toCode = _Char_toCode; 4683var $elm$core$Char$isLower = function (_char) { 4684 var code = $elm$core$Char$toCode(_char); 4685 return (97 <= code) && (code <= 122); 4686}; 4687var $elm$core$Char$isUpper = function (_char) { 4688 var code = $elm$core$Char$toCode(_char); 4689 return (code <= 90) && (65 <= code); 4690}; 4691var $elm$core$Basics$or = _Basics_or; 4692var $elm$core$Char$isAlpha = function (_char) { 4693 return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char); 4694}; 4695var $elm$core$Char$isDigit = function (_char) { 4696 var code = $elm$core$Char$toCode(_char); 4697 return (code <= 57) && (48 <= code); 4698}; 4699var $elm$core$Char$isAlphaNum = function (_char) { 4700 return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char)); 4701}; 4702var $elm$core$List$reverse = function (list) { 4703 return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list); 4704}; 4705var $elm$core$String$uncons = _String_uncons; 4706var $elm$json$Json$Decode$errorOneOf = F2( 4707 function (i, error) { 4708 return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent( 4709 $elm$json$Json$Decode$errorToString(error)))); 4710 }); 4711var $elm$json$Json$Decode$errorToString = function (error) { 4712 return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil); 4713}; 4714var $elm$json$Json$Decode$errorToStringHelp = F2( 4715 function (error, context) { 4716 errorToStringHelp: 4717 while (true) { 4718 switch (error.$) { 4719 case 'Field': 4720 var f = error.a; 4721 var err = error.b; 4722 var isSimple = function () { 4723 var _v1 = $elm$core$String$uncons(f); 4724 if (_v1.$ === 'Nothing') { 4725 return false; 4726 } else { 4727 var _v2 = _v1.a; 4728 var _char = _v2.a; 4729 var rest = _v2.b; 4730 return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest); 4731 } 4732 }(); 4733 var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']')); 4734 var $temp$error = err, 4735 $temp$context = A2($elm$core$List$cons, fieldName, context); 4736 error = $temp$error; 4737 context = $temp$context; 4738 continue errorToStringHelp; 4739 case 'Index': 4740 var i = error.a; 4741 var err = error.b; 4742 var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); 4743 var $temp$error = err, 4744 $temp$context = A2($elm$core$List$cons, indexName, context); 4745 error = $temp$error; 4746 context = $temp$context; 4747 continue errorToStringHelp; 4748 case 'OneOf': 4749 var errors = error.a; 4750 if (!errors.b) { 4751 return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { 4752 if (!context.b) { 4753 return '!'; 4754 } else { 4755 return ' at json' + A2( 4756 $elm$core$String$join, 4757 '', 4758 $elm$core$List$reverse(context)); 4759 } 4760 }(); 4761 } else { 4762 if (!errors.b.b) { 4763 var err = errors.a; 4764 var $temp$error = err, 4765 $temp$context = context; 4766 error = $temp$error; 4767 context = $temp$context; 4768 continue errorToStringHelp; 4769 } else { 4770 var starter = function () { 4771 if (!context.b) { 4772 return 'Json.Decode.oneOf'; 4773 } else { 4774 return 'The Json.Decode.oneOf at json' + A2( 4775 $elm$core$String$join, 4776 '', 4777 $elm$core$List$reverse(context)); 4778 } 4779 }(); 4780 var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt( 4781 $elm$core$List$length(errors)) + ' ways:')); 4782 return A2( 4783 $elm$core$String$join, 4784 '\n\n', 4785 A2( 4786 $elm$core$List$cons, 4787 introduction, 4788 A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors))); 4789 } 4790 } 4791 default: 4792 var msg = error.a; 4793 var json = error.b; 4794 var introduction = function () { 4795 if (!context.b) { 4796 return 'Problem with the given value:\n\n'; 4797 } else { 4798 return 'Problem with the value at json' + (A2( 4799 $elm$core$String$join, 4800 '', 4801 $elm$core$List$reverse(context)) + ':\n\n '); 4802 } 4803 }(); 4804 return introduction + ($elm$json$Json$Decode$indent( 4805 A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg)); 4806 } 4807 } 4808 }); 4809var $elm$core$Array$branchFactor = 32; 4810var $elm$core$Array$Array_elm_builtin = F4( 4811 function (a, b, c, d) {
4812 return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d}; 4813 }); 4814var $elm$core$Elm$JsArray$empty = _JsArray_empty; 4815var $elm$core$Basics$ceiling = _Basics_ceiling; 4816var $elm$core$Basics$fdiv = _Basics_fdiv; 4817var $elm$core$Basics$logBase = F2( 4818 function (base, number) { 4819 return _Basics_log(number) / _Basics_log(base); 4820 }); 4821var $elm$core$Basics$toFloat = _Basics_toFloat; 4822var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( 4823 A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor)); 4824var $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); 4825var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; 4826var $elm$core$Array$Leaf = function (a) { 4827 return {$: 'Leaf', a: a}; 4828}; 4829var $elm$core$Basics$apL = F2( 4830 function (f, x) { 4831 return f(x); 4832 }); 4833var $elm$core$Basics$apR = F2( 4834 function (x, f) { 4835 return f(x); 4836 }); 4837var $elm$core$Basics$eq = _Utils_equal; 4838var $elm$core$Basics$floor = _Basics_floor; 4839var $elm$core$Elm$JsArray$length = _JsArray_length; 4840var $elm$core$Basics$gt = _Utils_gt; 4841var $elm$core$Basics$max = F2( 4842 function (x, y) { 4843 return (_Utils_cmp(x, y) > 0) ? x : y; 4844 }); 4845var $elm$core$Basics$mul = _Basics_mul; 4846var $elm$core$Array$SubTree = function (a) { 4847 return {$: 'SubTree', a: a}; 4848}; 4849var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; 4850var $elm$core$Array$compressNodes = F2( 4851 function (nodes, acc) { 4852 compressNodes: 4853 while (true) { 4854 var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes); 4855 var node = _v0.a; 4856 var remainingNodes = _v0.b; 4857 var newAcc = A2( 4858 $elm$core$List$cons, 4859 $elm$core$Array$SubTree(node), 4860 acc); 4861 if (!remainingNodes.b) { 4862 return $elm$core$List$reverse(newAcc); 4863 } else { 4864 var $temp$nodes = remainingNodes, 4865 $temp$acc = newAcc; 4866 nodes = $temp$nodes; 4867 acc = $temp$acc; 4868 continue compressNodes; 4869 } 4870 } 4871 }); 4872var $elm$core$Tuple$first = function (_v0) { 4873 var x = _v0.a; 4874 return x; 4875}; 4876var $elm$core$Array$treeFromBuilder = F2( 4877 function (nodeList, nodeListSize) { 4878 treeFromBuilder: 4879 while (true) { 4880 var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor); 4881 if (newNodeSize === 1) { 4882 return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a; 4883 } else { 4884 var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil), 4885 $temp$nodeListSize = newNodeSize; 4886 nodeList = $temp$nodeList; 4887 nodeListSize = $temp$nodeListSize; 4888 continue treeFromBuilder; 4889 } 4890 } 4891 }); 4892var $elm$core$Array$builderToArray = F2( 4893 function (reverseNodeList, builder) { 4894 if (!builder.nodeListSize) { 4895 return A4( 4896 $elm$core$Array$Array_elm_builtin, 4897 $elm$core$Elm$JsArray$length(builder.tail), 4898 $elm$core$Array$shiftStep, 4899 $elm$core$Elm$JsArray$empty, 4900 builder.tail); 4901 } else { 4902 var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor; 4903 var depth = $elm$core$Basics$floor( 4904 A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); 4905 var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList; 4906 var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize); 4907 return A4( 4908 $elm$core$Array$Array_elm_builtin, 4909 $elm$core$Elm$JsArray$length(builder.tail) + treeLen, 4910 A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), 4911 tree, 4912 builder.tail); 4913 } 4914 }); 4915var $elm$core$Basics$idiv = _Basics_idiv; 4916var $elm$core$Basics$lt = _Utils_lt; 4917var $elm$core$Array$initializeHelp = F5( 4918 function (fn, fromIndex, len, nodeList, tail) { 4919 initializeHelp: 4920 while (true) { 4921 if (fromIndex < 0) { 4922 return A2( 4923 $elm$core$Array$builderToArray, 4924 false, 4925 {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail}); 4926 } else { 4927 var leaf = $elm$core$Array$Leaf( 4928 A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); 4929 var $temp$fn = fn, 4930 $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor, 4931 $temp$len = len, 4932 $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList), 4933 $temp$tail = tail; 4934 fn = $temp$fn; 4935 fromIndex = $temp$fromIndex; 4936 len = $temp$len; 4937 nodeList = $temp$nodeList; 4938 tail = $temp$tail; 4939 continue initializeHelp; 4940 } 4941 } 4942 }); 4943var $elm$core$Basics$remainderBy = _Basics_remainderBy; 4944var $elm$core$Array$initialize = F2( 4945 function (len, fn) { 4946 if (len <= 0) { 4947 return $elm$core$Array$empty; 4948 } else { 4949 var tailLen = len % $elm$core$Array$branchFactor; 4950 var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tail
4950Len, fn); 4951 var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor; 4952 return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); 4953 } 4954 }); 4955var $elm$core$Basics$True = {$: 'True'}; 4956var $elm$core$Result$isOk = function (result) { 4957 if (result.$ === 'Ok') { 4958 return true; 4959 } else { 4960 return false; 4961 } 4962}; 4963var $elm$json$Json$Decode$map = _Json_map1; 4964var $elm$json$Json$Decode$map2 = _Json_map2; 4965var $elm$json$Json$Decode$succeed = _Json_succeed; 4966var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { 4967 switch (handler.$) { 4968 case 'Normal': 4969 return 0; 4970 case 'MayStopPropagation': 4971 return 1; 4972 case 'MayPreventDefault': 4973 return 2; 4974 default: 4975 return 3; 4976 } 4977}; 4978var $elm$browser$Browser$External = function (a) { 4979 return {$: 'External', a: a}; 4980}; 4981var $elm$browser$Browser$Internal = function (a) { 4982 return {$: 'Internal', a: a}; 4983}; 4984var $elm$core$Basics$identity = function (x) { 4985 return x; 4986}; 4987var $elm$browser$Browser$Dom$NotFound = function (a) { 4988 return {$: 'NotFound', a: a}; 4989}; 4990var $elm$url$Url$Http = {$: 'Http'}; 4991var $elm$url$Url$Https = {$: 'Https'}; 4992var $elm$url$Url$Url = F6( 4993 function (protocol, host, port_, path, query, fragment) { 4994 return {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query}; 4995 }); 4996var $elm$core$String$contains = _String_contains; 4997var $elm$core$String$length = _String_length; 4998var $elm$core$String$slice = _String_slice; 4999var $elm$core$String$dropLeft = F2( 5000 function (n, string) { 5001 return (n < 1) ? string : A3( 5002 $elm$core$String$slice, 5003 n, 5004 $elm$core$String$length(string), 5005 string); 5006 }); 5007var $elm$core$String$indexes = _String_indexes; 5008var $elm$core$String$isEmpty = function (string) { 5009 return string === ''; 5010}; 5011var $elm$core$String$left = F2( 5012 function (n, string) { 5013 return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string); 5014 }); 5015var $elm$core$String$toInt = _String_toInt; 5016var $elm$url$Url$chompBeforePath = F5( 5017 function (protocol, path, params, frag, str) { 5018 if ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) { 5019 return $elm$core$Maybe$Nothing; 5020 } else { 5021 var _v0 = A2($elm$core$String$indexes, ':', str); 5022 if (!_v0.b) { 5023 return $elm$core$Maybe$Just( 5024 A6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag)); 5025 } else { 5026 if (!_v0.b.b) { 5027 var i = _v0.a; 5028 var _v1 = $elm$core$String$toInt( 5029 A2($elm$core$String$dropLeft, i + 1, str)); 5030 if (_v1.$ === 'Nothing') { 5031 return $elm$core$Maybe$Nothing; 5032 } else { 5033 var port_ = _v1; 5034 return $elm$core$Maybe$Just( 5035 A6( 5036 $elm$url$Url$Url, 5037 protocol, 5038 A2($elm$core$String$left, i, str), 5039 port_, 5040 path, 5041 params, 5042 frag)); 5043 } 5044 } else { 5045 return $elm$core$Maybe$Nothing; 5046 } 5047 } 5048 } 5049 }); 5050var $elm$url$Url$chompBeforeQuery = F4( 5051 function (protocol, params, frag, str) { 5052 if ($elm$core$String$isEmpty(str)) { 5053 return $elm$core$Maybe$Nothing; 5054 } else { 5055 var _v0 = A2($elm$core$String$indexes, '/', str); 5056 if (!_v0.b) { 5057 return A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str); 5058 } else { 5059 var i = _v0.a; 5060 return A5( 5061 $elm$url$Url$chompBeforePath, 5062 protocol, 5063 A2($elm$core$String$dropLeft, i, str), 5064 params, 5065 frag, 5066 A2($elm$core$String$left, i, str)); 5067 } 5068 } 5069 }); 5070var $elm$url$Url$chompBeforeFragment = F3( 5071 function (protocol, frag, str) { 5072 if ($elm$core$String$isEmpty(str)) { 5073 return $elm$core$Maybe$Nothing; 5074 } else { 5075 var _v0 = A2($elm$core$String$indexes, '?', str); 5076 if (!_v0.b) { 5077 return A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str); 5078 } else { 5079 var i = _v0.a; 5080 return A4( 5081 $elm$url$Url$chompBeforeQuery, 5082 protocol, 5083 $elm$core$Maybe$Just( 5084 A2($elm$core$String$dropLeft, i + 1, str)), 5085 frag, 5086 A2($elm$core$String$left, i, str)); 5087 } 5088 } 5089 }); 5090var $elm$url$Url$chompAfterProtocol = F2( 5091 function (protocol, str) { 5092 if ($elm$core$String$isEmpty(str)) { 5093 return $elm$core$Maybe$Nothing; 5094 } else { 5095 var _v0 = A2($elm$core$String$indexes, '#', str); 5096 if (!_v0.b) { 5097 return A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str); 5098 } else { 5099 var i = _v0.a; 5100 return A3( 5101 $elm$url$Url$chompBeforeFragment, 5102 protocol, 5103 $elm$core$Maybe$Just( 5104 A2($elm$core$String$dropLeft, i + 1, str)), 5105 A2($elm$core$String$left, i, str)); 5106 } 5107 } 5108 }); 5109var $elm$core$String$startsWith = _String_startsWith; 5110var $elm$url$Url$fromString = function (str) { 5111 return A2($elm$core$String$startsWith, 'http://', str) ? A2( 5112 $elm$url$Url$chompAfterProtocol, 5113 $elm$url$Url$Http, 5114 A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( 5115 $elm$url$Url$chompAfterProtocol, 5116 $elm$url$Url$Https, 5117 A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); 5118}; 5119var $elm$core$Basics$never = function (_v0) { 5120 never: 5121 while (true) { 5122 var nvr = _v0.a; 5123 var $temp$_v0 = nvr; 5124 _v0 = $temp$_v0; 5125 continue never; 5126 } 5127}; 5128var $elm$core$Task$Perform = function (a) { 5129 return {$: 'Perform', a: a}; 5130}; 5131var $elm$core$Task$succeed = _Scheduler_succeed; 5132var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0); 5133var $elm$core$List$foldrHelper = F4( 5134 function (fn, acc, ctr, ls) { 5135 if (!ls.b) { 5136 return acc; 5137 } else { 5138 var a = ls.a; 5139 var r1 = ls.b; 5140 if (!r1.b) { 5141 return A2(fn, a, acc); 5142 } else { 5143 var b = r1.a; 5144 var r2 = r1.b; 5145 if (!r2.b) { 5146 return A2( 5147 fn, 5148 a, 5149 A2(fn, b, acc)); 5150 } else { 5151 var c = r2.a; 5152 var r3 = r2.b; 5153 if (!r3.b) { 5154 return A2( 5155 fn, 5156 a, 5157 A2( 5158 fn, 5159 b, 5160 A2(fn, c, acc))); 5161 } else { 5162 var d = r3.a; 5163 var r4 = r3.b; 5164 var res = (ctr > 500) ? A3( 5165 $elm$core$List$foldl, 5166 fn, 5167 acc, 5168 $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4); 5169 return A2( 5170 fn, 5171 a, 5172 A2( 5173 fn, 5174 b, 5175 A2( 5176 fn, 5177 c, 5178 A2(fn, d, res)))); 5179 } 5180 } 5181 } 5182 } 5183 }); 5184var $elm$core$List$foldr = F3( 5185 function (fn, acc, ls) { 5186 return A4($elm$core$List$foldrHelper, fn, acc, 0, ls); 5187 }); 5188var $elm$core$List$map = F2( 5189 function (f, xs) { 5190 return A3( 5191 $elm$core$List$foldr, 5192 F2( 5193 function (x, acc) { 5194 return A2( 5195 $elm$core$List$cons, 5196 f(x), 5197 acc); 5198 }), 5199 _List_Nil, 5200 xs); 5201 }); 5202var $elm$core$Task$andThen = _Scheduler_andThen; 5203var $elm$core$Task$map = F2( 5204 function (func, taskA) { 5205 return A2( 5206 $elm$core$Task$andThen, 5207 function (a) { 5208 return $elm$core$Task$succeed( 5209 func(a)); 5210 }, 5211 taskA); 5212 }); 5213var $elm$core$Task$map2 = F3( 5214 function (func, taskA, taskB) { 5215 return A2( 5216 $elm$core$Task$andThen, 5217 function (a) { 5218 return A2( 5219 $elm$core$Task$andThen, 5220 function (b) { 5221 return $elm$core$Task$succeed( 5222 A2(func, a, b)); 5223 }, 5224 taskB); 5225 }, 5226 taskA); 5227 }); 5228var $elm$core$Task$sequence = function (tasks) { 5229 return A3( 5230 $elm$core$List$foldr, 5231 $elm$core$Task$map2($elm$core$List$cons), 5232 $elm$core$Task$succeed(_List_Nil), 5233 tasks); 5234}; 5235var $elm$core$Platform$sendToApp = _Platform_sendToApp; 5236var $elm$core$Task$spawnCmd = F2(
5237 function (router, _v0) { 5238 var task = _v0.a; 5239 return _Scheduler_spawn( 5240 A2( 5241 $elm$core$Task$andThen, 5242 $elm$core$Platform$sendToApp(router), 5243 task)); 5244 }); 5245var $elm$core$Task$onEffects = F3( 5246 function (router, commands, state) { 5247 return A2( 5248 $elm$core$Task$map, 5249 function (_v0) { 5250 return _Utils_Tuple0; 5251 }, 5252 $elm$core$Task$sequence( 5253 A2( 5254 $elm$core$List$map, 5255 $elm$core$Task$spawnCmd(router), 5256 commands))); 5257 }); 5258var $elm$core$Task$onSelfMsg = F3( 5259 function (_v0, _v1, _v2) { 5260 return $elm$core$Task$succeed(_Utils_Tuple0); 5261 }); 5262var $elm$core$Task$cmdMap = F2( 5263 function (tagger, _v0) { 5264 var task = _v0.a; 5265 return $elm$core$Task$Perform( 5266 A2($elm$core$Task$map, tagger, task)); 5267 }); 5268_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); 5269var $elm$core$Task$command = _Platform_leaf('Task'); 5270var $elm$core$Task$perform = F2( 5271 function (toMessage, task) { 5272 return $elm$core$Task$command( 5273 $elm$core$Task$Perform( 5274 A2($elm$core$Task$map, toMessage, task))); 5275 }); 5276var $elm$browser$Browser$element = _Browser_element; 5277var $elm$core$Platform$Cmd$batch = _Platform_batch; 5278var $author$project$MainCupnakyma$CupMatchData = F2( 5279 function (admin, cup_match_data) { 5280 return {admin: admin, cup_match_data: cup_match_data}; 5281 }); 5282var $elm$json$Json$Decode$bool = _Json_decodeBool; 5283var $author$project$MainCupnakyma$CupMatchItem = function (kilpailu_id) { 5284 return function (luokka) { 5285 return function (ottelu_id) { 5286 return function (koti_id) { 5287 return function (koti_nimi) { 5288 return function (koti_seura) { 5289 return function (koti_rating) { 5290 return function (koti2_id) { 5291 return function (koti2_nimi) { 5292 return function (koti2_seura) { 5293 return function (koti2_rating) { 5294 return function (vieras_id) { 5295 return function (vieras_nimi) { 5296 return function (vieras_seura) { 5297 return function (vieras_rating) { 5298 return function (vieras2_id) { 5299 return function (vieras2_nimi) { 5300 return function (vieras2_seura) { 5301 return function (vieras2_rating) { 5302 return function (kotijoukkue) { 5303 return function (vierasjoukkue) { 5304 return function (era1) { 5305 return function (era2) { 5306 return function (era3) { 5307 return function (era4) { 5308 return function (era5) { 5309 return function (era6) { 5310 return function (era7) { 5311 return function (era8) { 5312 return function (era9) { 5313 return function (koti_erat) { 5314 return function (vieras_erat) { 5315 return function (voittaja) { 5316 return function (voittotyyppi) { 5317 return function (voittajan_jatko_id) { 5318 return function (voittajan_jatko_cup) { 5319 return function (voittajan_jatko_koti) { 5320 return function (haviajan_jatko_id) { 5321 return function (haviajan_jatko_cup) { 5322 return function (haviajan_jatko_koti) { 5323 return function (poolista_koti) { 5324 return function (poolisijalta_koti) { 5325 return function (poolista_vieras) { 5326 return function (poolisijalta_vieras) { 5327 return function (ottelu_id_cupissa) { 5328 return function (cup_id) { 5329 return {cup_id: cup_id, era1: era1, era2: era2, era3: era3, era4: era4, era5: era5, era6: era6, era7: era7, era8: era8, era9: era9, haviajan_jatko_cup: haviajan_jatko_cup, haviajan_jatko_id: haviajan_jatko_id, haviajan_jatko_koti: havi
5329ajan_jatko_koti, kilpailu_id: kilpailu_id, koti2_id: koti2_id, koti2_nimi: koti2_nimi, koti2_rating: koti2_rating, koti2_seura: koti2_seura, koti_erat: koti_erat, koti_id: koti_id, koti_nimi: koti_nimi, koti_rating: koti_rating, koti_seura: koti_seura, kotijoukkue: kotijoukkue, luokka: luokka, ottelu_id: ottelu_id, ottelu_id_cupissa: ottelu_id_cupissa, poolisijalta_koti: poolisijalta_koti, poolisijalta_vieras: poolisijalta_vieras, poolista_koti: poolista_koti, poolista_vieras: poolista_vieras, vieras2_id: vieras2_id, vieras2_nimi: vieras2_nimi, vieras2_rating: vieras2_rating, vieras2_seura: vieras2_seura, vieras_erat: vieras_erat, vieras_id: vieras_id, vieras_nimi: vieras_nimi, vieras_rating: vieras_rating, vieras_seura: vieras_seura, vierasjoukkue: vierasjoukkue, voittaja: voittaja, voittajan_jatko_cup: voittajan_jatko_cup, voittajan_jatko_id: voittajan_jatko_id, voittajan_jatko_koti: voittajan_jatko_koti, voittotyyppi: voittotyyppi}; 5330 }; 5331 }; 5332 }; 5333 }; 5334 }; 5335 }; 5336 }; 5337 }; 5338 }; 5339 }; 5340 }; 5341 }; 5342 }; 5343 }; 5344 }; 5345 }; 5346 }; 5347 }; 5348 }; 5349 }; 5350 }; 5351 }; 5352 }; 5353 }; 5354 }; 5355 }; 5356 }; 5357 }; 5358 }; 5359 }; 5360 }; 5361 }; 5362 }; 5363 }; 5364 }; 5365 }; 5366 }; 5367 }; 5368 }; 5369 }; 5370 }; 5371 }; 5372 }; 5373 }; 5374 }; 5375}; 5376var $elm$json$Json$Decode$int = _Json_decodeInt; 5377var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom = $elm$json$Json$Decode$map2($elm$core$Basics$apR); 5378var $elm$json$Json$Decode$andThen = _Json_andThen; 5379var $elm$json$Json$Decode$field = _Json_decodeField; 5380var $elm$json$Json$Decode$at = F2( 5381 function (fields, decoder) { 5382 return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); 5383 }); 5384var $elm$json$Json$Decode$decodeValue = _Json_run; 5385var $elm$json$Json$Decode$null = _Json_decodeNull; 5386var $elm$json$Json$Decode$oneOf = _Json_oneOf; 5387var $elm$json$Json$Decode$value = _Json_decodeValue; 5388var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optionalDecoder = F3( 5389 function (path, valDecoder, fallback) { 5390 var nullOr = function (decoder) { 5391 return $elm$json$Json$Decode$oneOf( 5392 _List_fromArray( 5393 [ 5394 decoder, 5395 $elm$json$Json$Decode$null(fallback) 5396 ])); 5397 }; 5398 var handleResult = function (input) { 5399 var _v0 = A2( 5400 $elm$json$Json$Decode$decodeValue, 5401 A2($elm$json$Json$Decode$at, path, $elm$json$Json$Decode$value), 5402 input); 5403 if (_v0.$ === 'Ok') { 5404 var rawValue = _v0.a; 5405 var _v1 = A2( 5406 $elm$json$Json$Decode$decodeValue, 5407 nullOr(valDecoder), 5408 rawValue); 5409 if (_v1.$ === 'Ok') { 5410 var finalResult = _v1.a; 5411 return $elm$json$Json$Decode$succeed(finalResult); 5412 } else { 5413 return A2( 5414 $elm$json$Json$Decode$at, 5415 path, 5416 nullOr(valDecoder)); 5417 } 5418 } else { 5419 return $elm$json$Json$Decode$succeed(fallback); 5420 } 5421 }; 5422 return A2($elm$json$Json$Decode$andThen, handleResult, $elm$json$Json$Decode$value); 5423 }); 5424var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional = F4( 5425 function (key, valDecoder, fallback, decoder) { 5426 return A2( 5427 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, 5428 A3( 5429 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optionalDecoder, 5430 _List_fromArray( 5431 [key]), 5432 valDecoder, 5433 fallback), 5434 decoder); 5435 }); 5436var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required = F3( 5437 function (key, valDecoder, decoder) { 5438 return A2(
5439 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, 5440 A2($elm$json$Json$Decode$field, key, valDecoder), 5441 decoder); 5442 }); 5443var $elm$json$Json$Decode$string = _Json_decodeString; 5444var $author$project$MainCupnakyma$cupMatchItemDecoder = A3( 5445 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5446 'cup_id', 5447 $elm$json$Json$Decode$string, 5448 A3( 5449 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5450 'ottelu_id_cupissa', 5451 $elm$json$Json$Decode$int, 5452 A3( 5453 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5454 'poolisijalta_vieras', 5455 $elm$json$Json$Decode$int, 5456 A3( 5457 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5458 'poolista_vieras', 5459 $elm$json$Json$Decode$string, 5460 A3( 5461 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5462 'poolisijalta_koti', 5463 $elm$json$Json$Decode$int, 5464 A3( 5465 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5466 'poolista_koti', 5467 $elm$json$Json$Decode$string, 5468 A3( 5469 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5470 'haviajan_jatko_koti', 5471 $elm$json$Json$Decode$string, 5472 A3( 5473 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5474 'haviajan_jatko_cup', 5475 $elm$json$Json$Decode$string, 5476 A3( 5477 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5478 'haviajan_jatko_id', 5479 $elm$json$Json$Decode$int, 5480 A3( 5481 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5482 'voittajan_jatko_koti', 5483 $elm$json$Json$Decode$string, 5484 A3( 5485 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5486 'voittajan_jatko_cup', 5487 $elm$json$Json$Decode$string, 5488 A3( 5489 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5490 'voittajan_jatko_id', 5491 $elm$json$Json$Decode$int, 5492 A3( 5493 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5494 'voittotyyppi', 5495 $elm$json$Json$Decode$string, 5496 A3( 5497 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5498 'voittaja', 5499 $elm$json$Json$Decode$string, 5500 A3( 5501 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5502 'vieras_erat', 5503 $elm$json$Json$Decode$int, 5504 A3( 5505 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5506 'koti_erat', 5507 $elm$json$Json$Decode$int, 5508 A3( 5509 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5510 'era9', 5511 $elm$json$Json$Decode$string, 5512 A3( 5513 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5514 'era8', 5515 $elm$json$Json$Decode$string, 5516 A3( 5517 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5518 'era7', 5519 $elm$json$Json$Decode$string, 5520 A3( 5521 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5522 'era6', 5523 $elm$json$Json$Decode$string, 5524 A3( 5525 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5526 'era5', 5527 $elm$json$Json$Decode$string, 5528 A3( 5529 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5530 'era4', 5531 $elm$json$Json$Decode$string, 5532 A3( 5533 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5534 'era3', 5535 $elm$json$Json$Decode$string, 5536 A3( 5537 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5538 'era2', 5539 $elm$json$Json$Decode$string, 5540 A3( 5541 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5542 'era1', 5543 $elm$json$Json$Decode$string, 5544 A4( 5545 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5546 'vierasjoukkue', 5547 $elm$json$Json$Decode$string, 5548 '', 5549 A4( 5550 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5551 'kotijoukkue', 5552 $elm$json$Json$Decode$string, 5553 '', 5554 A4( 5555 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5556 'vieras2_rating', 5557 $elm$json$Json$Decode$int, 5558 0, 5559 A3( 5560 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5561 'vieras2_seura', 5562 $elm$json$Json$Decode$string, 5563 A3( 5564 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5565 'vieras2_nimi', 5566 $elm$json$Json$Decode$string, 5567 A3( 5568 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5569 'vieras2_id', 5570 $elm$json$Json$Decode$string, 5571 A4( 5572 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5573 'vieras_rating', 5574 $elm$json$Json$Decode$int, 5575 0, 5576 A3( 5577 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5578 'vieras_seura', 5579 $elm$json$Json$Decode$string, 5580 A3( 5581 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5582 'vieras_nimi', 5583 $elm$json$Json$Decode$string, 5584 A3( 5585 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5586 'vieras_id', 5587 $elm$json$Json$Decode$string, 5588 A4( 5589 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5590 'koti2_rating', 5591 $elm$json$Json$Decode$int, 5592 0, 5593 A3( 5594 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5595 'koti2_seura', 5596 $elm$json$Json$Decode$string, 5597 A3( 5598 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5599 'koti2_nimi', 5600 $elm$json$Json$Decode$string, 5601 A3( 5602 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5603 'koti2_id', 5604 $elm$json$Json$Decode$string, 5605 A4( 5606 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 5607 'koti_rating', 5608 $elm$json$Json$Decode$int, 5609 0, 5610 A3( 5611 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5612 'koti_seura', 5613 $elm$json$Json$Decode$string, 5614 A3( 5615 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5616 'koti_nimi', 5617 $elm$json$Json$Decode$string, 5618 A3( 5619 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5620 'koti_id', 5621 $elm$json$Json$Decode$string, 5622 A3( 5623 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5624 'ottelu_id', 5625 $elm$json$Json$Decode$int, 5626 A3( 5627 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5628 'luokka', 5629 $elm$json$Json$Decode$string, 5630 A3( 5631 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5632 'kilpailu_id', 5633 $elm$json$Json$Decode$int, 5634 $elm$json$Json$Decode$succeed($author$project$MainCupnakyma$CupMatchItem))))))))))))))))))))))))))))))))))))))))))))))); 5635var $elm$json$Json$Decode$list = _Json_decodeList; 5636var $author$project$MainCupnakyma$cupMatchDataDecoder = A3( 5637 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5638 'cupin_ottelut', 5639 $elm$json$Json$Decode$list($author$project$MainCupnakyma$cupMatchItemDecoder), 5640 A3( 5641 $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 5642 'admin', 5643 $elm$json$Json$Decode$bool, 5644 $elm$json$Json$Decode$succeed($author$project$MainCupnakyma$CupMatchData))); 5645var $elm$json$Json$Decode$decodeString = _Json_runOnString; 5646var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); 5647var $author$project$MainCupnakyma$init = function (input) { 5648 var _v0 = A2($elm$json$Json$Decode$decodeString, $author$project$MainCupnakyma$cupMatchDataDecoder, input); 5649 if (_v0.$ === 'Ok') { 5650 var cup_data = _v0.a; 5651 return _Utils_Tuple2( 5652 {admin: cup_data.admin, cupMatches: cup_data.cup_match_data, message: input}, 5653 $elm$core$Platform$Cmd$batch( 5654 _List_fromArray( 5655 [$elm$core$Platform$Cmd$none]))); 5656 } else { 5657 var err = _v0.a; 5658 return _Utils_Tuple2( 5659 { 5660 admin: false, 5661 cupMatches: _List_Nil, 5662 message: 'Parse error:' + $elm$json$Json$Decode$errorToString(err) 5663 }, 5664 $elm$core$Platform$Cmd$batch( 5665 _List_fromArray( 5666 [$elm$core$Platform$Cmd$none]))); 5667 } 5668}; 5669var $elm$core$Platform$Sub$batch = _Platform_batch; 5670var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); 5671var $author$project$MainCupnakyma$subscriptions = function (_v0) { 5672 return $elm$core$Platform$Sub$none; 5673}; 5674var $author$project$MainCupnakyma$emptyModel = {admin: false, cupMatches: _List_Nil, message: ''}; 5675var $author$project$MainCupnakyma$update = F2( 5676 function (msg, model) { 5677 return _Utils_Tuple2($author$project$MainCupnakyma$emptyModel, $elm$core$Platform$Cmd$none); 5678 }); 5679var $elm$core$Basics$neq = _Utils_notEqual; 5680var $author$project$MainCupnakyma$allPoolsPlayed = function (cupMatches) { 5681 allPoolsPlayed: 5682 while (true) { 5683 if (!cupMatches.b) { 5684 return true; 5685 } else { 5686 var cmi = cupMatches.a; 5687 var cmis = cupMatches.b; 5688 if (((cmi.koti_id === '') && ((cmi.kotijoukkue === '') && (cmi.poolista_koti !== ''))) || ((cmi.vieras_id === '') && ((cmi.vierasjoukkue === '') && (cmi.poolista_vieras !== '')))) { 5689 return false;
5690 } else { 5691 var $temp$cupMatches = cmis; 5692 cupMatches = $temp$cupMatches; 5693 continue allPoolsPlayed; 5694 } 5695 } 5696 } 5697}; 5698var $author$project$MainCupnakyma$getColNext = F2( 5699 function (colNo, s) { 5700 if (colNo === 1) { 5701 return ''; 5702 } else { 5703 var _v0 = $elm$core$String$uncons(s); 5704 if (_v0.$ === 'Nothing') { 5705 return ' border-bottom: none;\" >'; 5706 } else { 5707 var _v1 = _v0.a; 5708 var x = _v1.a; 5709 var xs = _v1.b; 5710 return _Utils_eq( 5711 x, 5712 _Utils_chr('<')) ? ' border-bottom: 1px solid black;\" >' : ' border-bottom: none;\" >'; 5713 } 5714 } 5715 }); 5716var $elm$core$Basics$modBy = _Basics_modBy; 5717var $elm$core$Basics$ge = _Utils_ge; 5718var $elm$core$Basics$pow = _Basics_pow; 5719var $author$project$MainCupnakyma$test_vertical_line = F3( 5720 function (row, col, k) { 5721 test_vertical_line: 5722 while (true) { 5723 if (_Utils_cmp( 5724 (A2($elm$core$Basics$pow, 2, col - 1) + 1) + (k * A2($elm$core$Basics$pow, 2, col + 1)), 5725 row) > 0) { 5726 return false; 5727 } else { 5728 if ((_Utils_cmp( 5729 row, 5730 (A2($elm$core$Basics$pow, 2, col - 1) + 1) + (k * A2($elm$core$Basics$pow, 2, col + 1))) > -1) && (_Utils_cmp( 5731 row, 5732 (((A2($elm$core$Basics$pow, 2, col - 1) + 1) + (k * A2($elm$core$Basics$pow, 2, col + 1))) + A2($elm$core$Basics$pow, 2, col)) - 1) < 1)) { 5733 return true; 5734 } else { 5735 var $temp$row = row, 5736 $temp$col = col, 5737 $temp$k = k + 1; 5738 row = $temp$row; 5739 col = $temp$col; 5740 k = $temp$k; 5741 continue test_vertical_line; 5742 } 5743 } 5744 } 5745 }); 5746var $author$project$MainCupnakyma$vertical_line = F2( 5747 function (row, col) { 5748 return A3($author$project$MainCupnakyma$test_vertical_line, row, col - 1, 0); 5749 }); 5750var $author$project$MainCupnakyma$getColStart = F2( 5751 function (rowNo, colNo) { 5752 return ((colNo === 1) && ((A2($elm$core$Basics$modBy, 4, rowNo) === 1) || (A2($elm$core$Basics$modBy, 4, rowNo) === 2))) ? '<td width = \"300\" style = \"border: 1px solid black; background-color: #C7DBEA; text-align: left;\" >' : (((colNo === 1) && ((A2($elm$core$Basics$modBy, 4, rowNo) === 3) || (!A2($elm$core$Basics$modBy, 4, rowNo)))) ? '<td width = \"300\" style = \"border: 1px solid black; text-align: left;\" >' : ((colNo > 1) ? (A2($author$project$MainCupnakyma$vertical_line, rowNo, colNo) ? '<td width =\"300\" style = \"border-top: none; border-right: 1px solid black; border-left: none;; text-align: left;' : '<td width =\"300\" style = \"border-top: none; border-right: none; border-left: none;; text-align: left;') : '')); 5753 }); 5754var $author$project$MainCupnakyma$getCupTableContent = F3( 5755 function (rowNo, colNo, cupStrings) { 5756 getCupTableContent: 5757 while (true) { 5758 if (!cupStrings.b) { 5759 return ' '; 5760 } else { 5761 var _v1 = cupStrings.a; 5762 var r = _v1.a; 5763 var c = _v1.b; 5764 var s = _v1.c; 5765 var cupStrs = cupStrings.b; 5766 if (_Utils_eq(r, rowNo) && _Utils_eq(c, colNo)) { 5767 return s; 5768 } else { 5769 var $temp$rowNo = rowNo, 5770 $temp$colNo = colNo, 5771 $temp$cupStrings = cupStrs; 5772 rowNo = $temp$rowNo; 5773 colNo = $temp$colNo; 5774 cupStrings = $temp$cupStrings; 5775 continue getCupTableContent; 5776 } 5777 } 5778 } 5779 }); 5780var $author$project$MainCupnakyma$makeCupHtmlRow = F5( 5781 function (cupStrings, width, height, rowNo, colNo) { 5782 var s = A3($author$project$MainCupnakyma$getCupTableContent, rowNo, colNo, cupStrings); 5783 return (_Utils_cmp(colNo, height) > 0) ? '' : (A2($author$project$MainCupnakyma$getColStart, rowNo, colNo) + (A2($author$project$MainCupnakyma$getColNext, colNo, s) + (s + ('</td>' + A5($author$project$MainCupnakyma$makeCupHtmlRow, cupStrings, width, height, rowNo, colNo + 1))))); 5784 }); 5785var $author$project$MainCupnakyma$makeCupHtmlRows = F4( 5786 function (cupStrings, width, height, rowNo) { 5787 return (_Utils_cmp(rowNo, width) > 0) ? '' : _Utils_ap( 5788 '<tr>' + (A5($author$project$MainCupnakyma$makeCupHtmlRow, cupStrings, width, height, rowNo, 1) + '</tr>'), 5789 A4($author$project$MainCupnakyma$makeCupHtmlRows, cupStrings, width, height, rowNo + 1)); 5790 }); 5791var $author$project$MainCupnakyma$cupString = F3( 5792 function (cupStrings, width, height) { 5793 return '<table>' + (A4($author$project$MainCupnakyma$makeCupHtmlRows, cupStrings, width, height, 1) + '</table>'); 5794 }); 5795var $author$project$MainCupnakyma$is_joukkuecup = function (ms) { 5796 is_joukkuecup: 5797 while (true) { 5798 if (!ms.b) { 5799 return false;
5800 } else { 5801 var m = ms.a; 5802 var matches = ms.b; 5803 if (m.kotijoukkue !== '') { 5804 return true; 5805 } else { 5806 var $temp$ms = matches; 5807 ms = $temp$ms; 5808 continue is_joukkuecup; 5809 } 5810 } 5811 } 5812}; 5813var $author$project$MainCupnakyma$Bye = {$: 'Bye'}; 5814var $author$project$MainCupnakyma$CupMatchNode = F3( 5815 function (a, b, c) { 5816 return {$: 'CupMatchNode', a: a, b: b, c: c}; 5817 }); 5818var $author$project$MainCupnakyma$PoolPos = F3( 5819 function (a, b, c) { 5820 return {$: 'PoolPos', a: a, b: b, c: c}; 5821 }); 5822var $author$project$MainCupnakyma$PositionedPlayer = function (a) { 5823 return {$: 'PositionedPlayer', a: a}; 5824}; 5825var $author$project$WelhoCommon$awayPlayer = 'vieras'; 5826var $author$project$WelhoCommon$homePlayer = 'koti'; 5827var $author$project$MainCupnakyma$findLeftChild = F3( 5828 function (x, inCmis, origCmis) { 5829 findLeftChild: 5830 while (true) { 5831 if (!inCmis.b) { 5832 return (x.poolista_koti !== '') ? A3( 5833 $author$project$MainCupnakyma$PoolPos, 5834 x.poolista_koti, 5835 x.poolisijalta_koti, 5836 _Utils_ap( 5837 x.koti_nimi, 5838 _Utils_ap( 5839 (x.koti2_nimi === '') ? '' : (' ' + x.koti2_nimi), 5840 (x.koti_nimi === '') ? '' : ('/' + (x.koti_seura + (' ' + x.koti2_seura)))))) : (((x.koti_id !== '') || (x.kotijoukkue !== '')) ? $author$project$MainCupnakyma$PositionedPlayer( 5841 {id: x.koti_id, id2: x.koti2_id, joukkue: x.kotijoukkue, nimi: x.koti_nimi, nimi2: x.koti2_nimi, rating: x.koti_rating, rating2: x.koti2_rating, seura: x.koti_seura, seura2: x.koti2_seura}) : $author$project$MainCupnakyma$Bye); 5842 } else { 5843 var cmi = inCmis.a; 5844 var cmis = inCmis.b; 5845 if (_Utils_eq(cmi.voittajan_jatko_id, x.ottelu_id_cupissa) && _Utils_eq(cmi.voittajan_jatko_koti, $author$project$WelhoCommon$homePlayer)) { 5846 return A3( 5847 $author$project$MainCupnakyma$CupMatchNode, 5848 cmi, 5849 A3($author$project$MainCupnakyma$findLeftChild, cmi, origCmis, origCmis), 5850 A3($author$project$MainCupnakyma$findRightChild, cmi, origCmis, origCmis)); 5851 } else { 5852 var $temp$x = x, 5853 $temp$inCmis = cmis, 5854 $temp$origCmis = origCmis; 5855 x = $temp$x; 5856 inCmis = $temp$inCmis; 5857 origCmis = $temp$origCmis; 5858 continue findLeftChild; 5859 } 5860 } 5861 } 5862 }); 5863var $author$project$MainCupnakyma$findRightChild = F3( 5864 function (x, inCmis, origCmis) { 5865 findRightChild: 5866 while (true) { 5867 if (!inCmis.b) { 5868 return (x.poolista_vieras !== '') ? A3( 5869 $author$project$MainCupnakyma$PoolPos, 5870 x.poolista_vieras, 5871 x.poolisijalta_vieras, 5872 _Utils_ap( 5873 x.vieras_nimi, 5874 _Utils_ap( 5875 (x.vieras2_nimi === '') ? '' : (' ' + x.vieras2_nimi), 5876 (x.vieras_nimi === '') ? '' : ('/' + (x.vieras_seura + (' ' + x.vieras2_seura)))))) : (((x.vieras_id !== '') || (x.vierasjoukkue !== '')) ? $author$project$MainCupnakyma$PositionedPlayer( 5877 {id: x.vieras_id, id2: x.vieras2_id, joukkue: x.vierasjoukkue, nimi: x.vieras_nimi, nimi2: x.vieras2_nimi, rating: x.vieras_rating, rating2: x.vieras2_rating, seura: x.vieras_seura, seura2: x.vieras2_seura}) : $author$project$MainCupnakyma$Bye); 5878 } else { 5879 var cmi = inCmis.a; 5880 var cmis = inCmis.b; 5881 if (_Utils_eq(cmi.voittajan_jatko_id, x.ottelu_id_cupissa) && _Utils_eq(cmi.voittajan_jatko_koti, $author$project$WelhoCommon$awayPlayer)) { 5882 return A3( 5883 $author$project$MainCupnakyma$CupMatchNode, 5884 cmi, 5885 A3($author$project$MainCupnakyma$findLeftChild, cmi, origCmis, origCmis), 5886 A3($author$project$MainCupnakyma$findRightChild, cmi, origCmis, origCmis)); 5887 } else { 5888 var $temp$x = x, 5889 $temp$inCmis = cmis, 5890 $temp$origCmis = origCmis; 5891 x = $temp$x; 5892 inCmis = $temp$inCmis; 5893 origCmis = $temp$origCmis; 5894 continue findRightChild; 5895 } 5896 } 5897 } 5898 }); 5899var $author$project$MainCupnakyma$findRoot = F2( 5900 function (inCmis, origCmis) { 5901 findRoot: 5902 while (true) { 5903 if (!inCmis.b) { 5904 return $author$project$MainCupnakyma$Bye; 5905 } else { 5906 var cmi = inCmis.a; 5907 var cmis = inCmis.b; 5908 if (cmi.ottelu_id_cupissa === 1) { 5909 return A3( 5910 $author$project$MainCupnakyma$CupMatchNode, 5911 cmi, 5912 A3($author$project$MainCupnakyma$findLeftChild, cmi, origCmis, origCmis), 5913 A3($author$project$MainCupnakyma$findRightChild, cmi, origCmis, origCmis)); 5914 } else { 5915 var $temp$inCmis = inCmis, 5916 $temp$origCmis = origCmis; 5917 inCmis = $temp$inCmis; 5918 origCmis = $temp$origCmis; 5919 continue findRoot; 5920 } 5921 } 5922 } 5923 }); 5924var $author$project$MainCupnakyma$makeCup = function (inCmis) { 5925 return A2($author$project$MainCupnakyma$findRoot, inCmis, inCmis); 5926}; 5927var $author$project$MainCupnakyma$treeDepth = F2( 5928 function (tree, n) { 5929 switch (tree.$) { 5930 case 'Bye': 5931 return n; 5932 case 'PoolPos': 5933 return n; 5934 case 'CupMatchNode': 5935 var a = tree.a; 5936 var left = tree.b; 5937 var right = tree.c; 5938 return A2( 5939 $elm$core$Basics$max, 5940 A2($author$project$MainCupnakyma$treeDepth, left, n + 1), 5941 A2($author$project$MainCupnakyma$treeDepth, right, n + 1)); 5942 default: 5943 return n; 5944 } 5945 }); 5946var $author$project$MainCupnakyma$treeWidth = function (tree) { 5947 return A2( 5948 $elm$core$Basics$pow, 5949 2, 5950 A2($author$project$MainCupnakyma$treeDepth, tree, 0)); 5951}; 5952var $author$project$MainCupnakyma$putToRow = F2( 5953 function (startRow, tree) { 5954 return (startRow - 1) + $author$project$MainCupnakyma$treeWidth(tree); 5955 }); 5956var $author$project$MainCupnakyma$firstSubRow = F2( 5957 function (startRow, tree) { 5958 if (tree.$ === 'CupMatchNode') { 5959 var left = tree.b; 5960 var right = tree.c; 5961 return A2($author$project$MainCupnakyma$putToRow, startRow, left); 5962 } else { 5963 return startRow; 5964 } 5965 }); 5966var $author$project$MainCupnakyma$lastSubRow = F2( 5967 function (startRow, tree) { 5968 if (tree.$ === 'CupMatchNode') { 5969 var left = tree.b; 5970 var right = tree.c; 5971 return A2($author$project$MainCupnakyma$putToRow, startRow, right); 5972 } else { 5973 return startRow + 1; 5974 } 5975 }); 5976var $elm$core$Basics$not = _Basics_not; 5977var $author$project$MainCupnakyma$matchToString = F2( 5978 function (public_cup, z) {
5979 var vieras_nimi = ((!public_cup) || ((z.vieras_nimi === '') && (z.vierasjoukkue === ''))) ? '---' : ((z.voittaja === 'Vieras') ? ((z.vierasjoukkue === '') ? ('<b>' + (z.vieras_nimi + (' ' + (z.vieras2_nimi + '</b>')))) : ('<b>' + (z.vierasjoukkue + '</b>'))) : ((z.vierasjoukkue === '') ? (z.vieras_nimi + (' ' + z.vieras2_nimi)) : z.vierasjoukkue)); 5980 var koti_nimi = ((!public_cup) || ((z.koti_nimi === '') && (z.kotijoukkue === ''))) ? '---' : ((z.voittaja === 'Koti') ? ((z.kotijoukkue === '') ? ('<b>' + (z.koti_nimi + (' ' + (z.koti2_nimi + '</b>')))) : ('<b>' + (z.kotijoukkue + '</b>'))) : ((z.kotijoukkue === '') ? (z.koti_nimi + (' ' + z.koti2_nimi)) : z.kotijoukkue)); 5981 return (!public_cup) ? ('<a href=\"https://www.sptl.fi/sptl_uudet/?page_id=27426&KilpailuID=' + ($elm$core$String$fromInt(z.kilpailu_id) + ('&OtteluID=0' + ('\">' + ('--' + '</a>'))))) : ((z.kotijoukkue === '') ? ('<a href=\"https://www.sptl.fi/sptl_uudet/?page_id=27426&KilpailuID=' + ($elm$core$String$fromInt(z.kilpailu_id) + ('&OtteluID=' + ($elm$core$String$fromInt(z.ottelu_id) + ('\">' + (koti_nimi + ('-' + (vieras_nimi + '</a>')))))))) : ('<a href=\"https://www.sptl.fi/sptl_uudet/?page_id=61225&KilpailuID=' + ($elm$core$String$fromInt(z.kilpailu_id) + ('&Luokka=' + (z.luokka + ('&Cup=' + ('cup' + ('&Kotijoukkue=' + (z.kotijoukkue + ('&Vierasjoukkue=' + (z.vierasjoukkue + ('\"> ' + (koti_nimi + ('-' + (vieras_nimi + '</a>'))))))))))))))); 5982 }); 5983var $author$project$MainCupnakyma$addSetString = function (s) { 5984 return (s === '') ? '' : (',' + s); 5985}; 5986var $author$project$MainCupnakyma$resultToString = F2( 5987 function (public_cup, z) { 5988 return public_cup ? ((z.kotijoukkue === '') ? ((z.voittaja === '') ? '--' : ((z.voittotyyppi !== '') ? ((z.voittaja === 'Vieras') ? ('-' + z.voittotyyppi) : z.voittotyyppi) : ($elm$core$String$fromInt(z.koti_erat) + ('-' + ($elm$core$String$fromInt(z.vieras_erat) + (' (' + (z.era1 + ($author$project$MainCupnakyma$addSetString(z.era2) + ($author$project$MainCupnakyma$addSetString(z.era3) + ($author$project$MainCupnakyma$addSetString(z.era4) + ($author$project$MainCupnakyma$addSetString(z.era5) + ($author$project$MainCupnakyma$addSetString(z.era6) + ($author$project$MainCupnakyma$addSetString(z.era7) + ($author$project$MainCupnakyma$addSetString(z.era8) + ($author$project$MainCupnakyma$addSetString(z.era9) + ')'))))))))))))))) : ((z.era1 === '0-0') ? '--' : z.era1)) : '--'; 5989 }); 5990var $author$project$MainCupnakyma$treeTableItems = F6( 5991 function (tree, public_cup, startRow, rows, curCol, maxCols) { 5992 switch (tree.$) { 5993 case 'Bye': 5994 return _List_fromArray( 5995 [ 5996 _Utils_Tuple3(startRow, 1, 'Bye') 5997 ]); 5998 case 'PoolPos': 5999 var x = tree.a; 6000 var y = tree.b; 6001 var s = tree.c; 6002 return public_cup ? _List_fromArray( 6003 [ 6004 _Utils_Tuple3( 6005 startRow, 6006 1, 6007 x + ($elm$core$String$fromInt(y) + (' ' + s))) 6008 ]) : _List_fromArray( 6009 [ 6010 _Utils_Tuple3(startRow, 1, '?') 6011 ]); 6012 case 'PositionedPlayer': 6013 var cp = tree.a; 6014 return _List_fromArray( 6015 [ 6016 _Utils_Tuple3( 6017 startRow, 6018 1, 6019 $elm$core$String$fromInt(cp.rating + cp.rating2) + (':' + (((cp.nimi === '') ? cp.joukkue : cp.nimi) + (' ' + (cp.nimi2 + (((cp.nimi === '') ? '' : '/') + (cp.seura + (' ' + cp.seura2)))))))) 6020 ]); 6021 case 'CupMatchNode': 6022 var z = tree.a; 6023 var left = tree.b; 6024 var right = tree.c; 6025 var thisToRow = A2($author$project$MainCupnakyma$putToRow, startRow, left); 6026 var lastSubR = A2( 6027 $author$project$MainCupnakyma$lastSubRow, 6028 startRow + $author$project$MainCupnakyma$treeWidth(left), 6029 right); 6030 var firstSubR = A2($author$project$MainCupnakyma$firstSubRow, startRow, left); 6031 return _Utils_ap( 6032 _List_fromArray( 6033 [ 6034 _Utils_Tuple3( 6035 thisToRow, 6036 curCol, 6037 A2($author$project$MainCupnakyma$matchToString, public_cup, z)) 6038 ]), 6039 _Utils_ap( 6040 _List_fromArray( 6041 [ 6042 _Utils_Tuple3( 6043 thisToRow + 1, 6044 curCol, 6045 A2($author$project$MainCupnakyma$resultToString, public_cup, z)) 6046 ]), 6047 _Utils_ap( 6048 A6( 6049 $author$project$MainCupnakyma$treeTableItems, 6050 left, 6051 public_cup, 6052 startRow, 6053 $author$project$MainCupnakyma$treeWidth(left), 6054 curCol - 1, 6055 maxCols), 6056 A6( 6057 $author$project$MainCupnakyma$treeTableItems, 6058 right, 6059 public_cup, 6060 startRow + $author$project$MainCupnakyma$treeWidth(left), 6061 $author$project$MainCupnakyma$treeWidth(right), 6062 curCol - 1, 6063 maxCols)))); 6064 default: 6065 return _List_Nil; 6066 } 6067 }); 6068var $author$project$MainCupnakyma$makeTreeTableItems = F2( 6069 function (tree, public_cup) { 6070 return A6( 6071 $author$project$MainCupnakyma$treeTableItems, 6072 tree, 6073 public_cup, 6074 1, 6075 $author$project$MainCupnakyma$treeWidth(tree), 6076 A2($author$project$MainCupnakyma$treeDepth, tree, 0) + 1, 6077 A2($author$project$MainCupnakyma$treeDepth, tree, 0) + 1); 6078 }); 6079var $elm$core$List$filter = F2( 6080 function (isGood, list) { 6081 return A3( 6082 $elm$core$List$foldr, 6083 F2( 6084 function (x, xs) { 6085 return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs; 6086 }), 6087 _List_Nil, 6088 list); 6089 }); 6090var $author$project$MainCupnakyma$getCupMatchIds = function (cupMatches) { 6091 if (!cupMatches.b) { 6092 return _List_Nil; 6093 } else { 6094 var cm = cupMatches.a; 6095 var cms = cupMatches.b; 6096 var id = cm.ottelu_id_cupissa; 6097 var others = A2( 6098 $elm$core$List$filter, 6099 function (match) { 6100 return !_Utils_eq(match.ottelu_id_cupissa, id); 6101 }, 6102 A2($elm$core$List$cons, cm, cms)); 6103 return A2( 6104 $elm$core$List$cons, 6105 id, 6106 $author$project$MainCupnakyma$getCupMatchIds(others)); 6107 } 6108}; 6109var $author$project$MainCupnakyma$empty_pmi = {cup_id: '', era1: '', era2: '', era3: '', era4: '', era5: '', era6: '', era7: '', era8: '', era9: '', haviajan_jatko_cup: '', haviajan_jatko_id: 0, haviajan_jatko_koti: '', kilpailu_id: 0, koti2_id: '', koti2_nimi: '', koti2_rating: 0, koti2_seura: '', koti_erat: 0, koti_id: '', koti_nimi: '', koti_rating: 0, koti_seura: '', kotijoukkue: '', luokka: '', ottelu_id: 0, ottelu_id_cupissa: 0, poolisijalta_koti: 0, poolisijalta_vieras: 0, poolista_koti: '', poolista_vieras: '', vieras2_id: '', vieras2_nimi: '', vieras2_rating: 0, vieras2_seura: '', vieras_erat: 0, vieras_id: '', vieras_
6109nimi: '', vieras_rating: 0, vieras_seura: '', vierasjoukkue: '', voittaja: '', voittajan_jatko_cup: '', voittajan_jatko_id: 0, voittajan_jatko_koti: '', voittotyyppi: ''}; 6110var $author$project$MainCupnakyma$mergeMatches = function (matches) { 6111 if (!matches.b) { 6112 return $author$project$MainCupnakyma$empty_pmi; 6113 } else { 6114 var m = matches.a; 6115 var ms = matches.b; 6116 var vie = m.vierasjoukkue; 6117 var ve = $elm$core$List$length( 6118 A2( 6119 $elm$core$List$filter, 6120 function (match) { 6121 return match.voittaja === 'Vieras'; 6122 }, 6123 matches)); 6124 var kv = $elm$core$List$length( 6125 A2( 6126 $elm$core$List$filter, 6127 function (match) { 6128 return match.voittaja === 'Koti'; 6129 }, 6130 matches)); 6131 var voit = (kv > 2) ? 'Koti' : ((ve > 2) ? 'Vieras' : ''); 6132 var kot = m.kotijoukkue; 6133 var er1 = $elm$core$String$fromInt(kv) + ('-' + $elm$core$String$fromInt(ve)); 6134 return _Utils_update( 6135 m, 6136 {era1: er1, era2: '', era3: '', era4: '', era5: '', era6: '', era7: '', koti2_nimi: '', koti_nimi: kot, vieras2_nimi: '', vieras_nimi: vie, voittaja: voit}); 6137 } 6138}; 6139var $author$project$MainCupnakyma$mergeByIds = F2( 6140 function (cupMatchIds, initCupMatches) { 6141 if (!cupMatchIds.b) { 6142 return _List_Nil; 6143 } else { 6144 var id = cupMatchIds.a; 6145 var ids = cupMatchIds.b; 6146 var matches = A2( 6147 $elm$core$List$filter, 6148 function (match) { 6149 return _Utils_eq(match.ottelu_id_cupissa, id); 6150 }, 6151 initCupMatches); 6152 return A2( 6153 $elm$core$List$cons, 6154 $author$project$MainCupnakyma$mergeMatches(matches), 6155 A2($author$project$MainCupnakyma$mergeByIds, ids, initCupMatches)); 6156 } 6157 }); 6158var $author$project$MainCupnakyma$mergeCupMatches = function (initCupMatches) { 6159 var cupMatchIds = $author$project$MainCupnakyma$getCupMatchIds(initCupMatches); 6160 return A2($author$project$MainCupnakyma$mergeByIds, cupMatchIds, initCupMatches); 6161}; 6162var $author$project$MainCupnakyma$cupHtmlTable = function (model) { 6163 var cup = $author$project$MainCupnakyma$is_joukkuecup(model.cupMatches) ? $author$project$MainCupnakyma$makeCup( 6164 $author$project$MainCupnakyma$mergeCupMatches(model.cupMatches)) : $author$project$MainCupnakyma$makeCup(model.cupMatches); 6165 return A3( 6166 $author$project$MainCupnakyma$cupString, 6167 A2( 6168 $author$project$MainCupnakyma$makeTreeTableItems, 6169 cup, 6170 $author$project$MainCupnakyma$allPoolsPlayed(model.cupMatches) || model.admin), 6171 $author$project$MainCupnakyma$treeWidth(cup), 6172 A2($author$project$MainCupnakyma$treeDepth, cup, 0) + 1); 6173}; 6174var $elm$html$Html$span = _VirtualDom_node('span'); 6175var $hecrj$html_parser$Html$Parser$Element = F3( 6176 function (a, b, c) { 6177 return {$: 'Element', a: a, b: b, c: c}; 6178 }); 6179var $elm$parser$Parser$Advanced$Bad = F2( 6180 function (a, b) { 6181 return {$: 'Bad', a: a, b: b}; 6182 }); 6183var $elm$parser$Parser$Advanced$Good = F3( 6184 function (a, b, c) { 6185 return {$: 'Good', a: a, b: b, c: c}; 6186 }); 6187var $elm$parser$Parser$Advanced$Parser = function (a) { 6188 return {$: 'Parser', a: a}; 6189}; 6190var $elm$parser$Parser$Advanced$andThen = F2( 6191 function (callback, _v0) { 6192 var parseA = _v0.a; 6193 return $elm$parser$Parser$Advanced$Parser( 6194 function (s0) { 6195 var _v1 = parseA(s0); 6196 if (_v1.$ === 'Bad') { 6197 var p = _v1.a; 6198 var x = _v1.b; 6199 return A2($elm$parser$Parser$Advanced$Bad, p, x); 6200 } else { 6201 var p1 = _v1.a; 6202 var a = _v1.b; 6203 var s1 = _v1.c; 6204 var _v2 = callback(a); 6205 var parseB = _v2.a; 6206 var _v3 = parseB(s1); 6207 if (_v3.$ === 'Bad') { 6208 var p2 = _v3.a; 6209 var x = _v3.b; 6210 return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x); 6211 } else { 6212 var p2 = _v3.a; 6213 var b = _v3.b; 6214 var s2 = _v3.c; 6215 return A3($elm$parser$Parser$Advanced$Good, p1 || p2, b, s2); 6216 } 6217 } 6218 }); 6219 }); 6220var $elm$parser$Parser$andThen = $elm$parser$Parser$Advanced$andThen; 6221var $elm$parser$Parser$Advanced$backtrackable = function (_v0) { 6222 var parse = _v0.a; 6223 return $elm$parser$Parser$Advanced$Parser( 6224 function (s0) { 6225 var _v1 = parse(s0); 6226 if (_v1.$ === 'Bad') { 6227 var x = _v1.b; 6228 return A2($elm$parser$Parser$Advanced$Bad, false, x); 6229 } else { 6230 var a = _v1.b; 6231 var s1 = _v1.c; 6232 return A3($elm$parser$Parser$Advanced$Good, false, a, s1); 6233 } 6234 }); 6235}; 6236var $elm$parser$Parser$backtrackable = $elm$parser$Parser$Advanced$backtrackable; 6237var $elm$parser$Parser$UnexpectedChar = {$: 'UnexpectedChar'}; 6238var $elm$parser$Parser$Advanced$AddRight = F2( 6239 function (a, b) { 6240 return {$: 'AddRight', a: a, b: b}; 6241 }); 6242var $elm$parser$Parser$Advanced$DeadEnd = F4( 6243 function (row, col, problem, contextStack) { 6244 return {col: col, contextStack: contextStack, problem: problem, row: row}; 6245 }); 6246var $elm$parser$Parser$Advanced$Empty = {$: 'Empty'}; 6247var $elm$parser$Parser$Advanced$fromState = F2( 6248 function (s, x) { 6249 return A2( 6250 $elm$parser$Parser$Advanced$AddRight, 6251 $elm$parser$Parser$Advanced$Empty, 6252 A4($elm$parser$Parser$Advanced$DeadEnd, s.row, s.col, x, s.context)); 6253 }); 6254var $elm$parser$Parser$Advanced$isSubChar = _Parser_isSubChar; 6255var $elm$core$Basics$negate = function (n) { 6256 return -n; 6257}; 6258var $elm$parser$Parser$Advanced$chompIf = F2( 6259 function (isGood, expecting) { 6260 return $elm$parser$Parser$Advanced$Parser( 6261 function (s) { 6262 var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, s.offset, s.src); 6263 return _Utils_eq(newOffset, -1) ? A2( 6264 $elm$parser$Parser$Advanced$Bad, 6265 false, 6266 A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : (_Utils_eq(newOffset, -2) ? A3( 6267 $elm$parser$Parser$Advanced$Good, 6268 true, 6269 _Utils_Tuple0, 6270 {col: 1, context: s.context, indent: s.indent, offset: s.offset + 1, row: s.row + 1, src: s.src}) : A3( 6271 $elm$parser$Parser$Advanced$Good, 6272 true, 6273 _Utils_Tuple0, 6274 {col: s.col + 1, context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src})); 6275 }); 6276 }); 6277var $elm$parser$Parser$chompIf = function (isGood) { 6278 return A2($elm$parser$Parser$Advanced$chompIf, isGood, $elm$parser$Parser$UnexpectedChar); 6279}; 6280var $elm$parser$Parser$Advanced$chompWhileHelp = F5( 6281 function (isGood, offset, row, col, s0) { 6282 chompWhileHelp: 6283 while (true) { 6284 var newOffset = A3($elm$parser$Parser$Advanced$isSubChar, isGood, offset, s0.src); 6285 if (_Utils_eq(newOffset, -1)) { 6286 return A3( 6287 $elm$parser$Parser$Advanced$Good, 6288 _Utils_cmp(s0.offset, offset) < 0, 6289 _Utils_Tuple0, 6290 {col: col, context: s0.context, indent: s0.indent, offset: offset, row: row, src: s0.src}); 6291 } else { 6292 if (_Utils_eq(newOffset, -2)) { 6293 var $temp$isGood = isGood, 6294 $temp$offset = offset + 1, 6295 $temp$row = row + 1, 6296 $temp$col = 1, 6297 $temp$s0 = s0; 6298 isGood = $temp$isGood; 6299 offset = $temp$offset;
6300 row = $temp$row; 6301 col = $temp$col; 6302 s0 = $temp$s0; 6303 continue chompWhileHelp; 6304 } else { 6305 var $temp$isGood = isGood, 6306 $temp$offset = newOffset, 6307 $temp$row = row, 6308 $temp$col = col + 1, 6309 $temp$s0 = s0; 6310 isGood = $temp$isGood; 6311 offset = $temp$offset; 6312 row = $temp$row; 6313 col = $temp$col; 6314 s0 = $temp$s0; 6315 continue chompWhileHelp; 6316 } 6317 } 6318 } 6319 }); 6320var $elm$parser$Parser$Advanced$chompWhile = function (isGood) { 6321 return $elm$parser$Parser$Advanced$Parser( 6322 function (s) { 6323 return A5($elm$parser$Parser$Advanced$chompWhileHelp, isGood, s.offset, s.row, s.col, s); 6324 }); 6325}; 6326var $elm$parser$Parser$chompWhile = $elm$parser$Parser$Advanced$chompWhile; 6327var $elm$core$Basics$always = F2( 6328 function (a, _v0) { 6329 return a; 6330 }); 6331var $elm$parser$Parser$Advanced$map2 = F3( 6332 function (func, _v0, _v1) { 6333 var parseA = _v0.a; 6334 var parseB = _v1.a; 6335 return $elm$parser$Parser$Advanced$Parser( 6336 function (s0) { 6337 var _v2 = parseA(s0); 6338 if (_v2.$ === 'Bad') { 6339 var p = _v2.a; 6340 var x = _v2.b; 6341 return A2($elm$parser$Parser$Advanced$Bad, p, x); 6342 } else { 6343 var p1 = _v2.a; 6344 var a = _v2.b; 6345 var s1 = _v2.c; 6346 var _v3 = parseB(s1); 6347 if (_v3.$ === 'Bad') { 6348 var p2 = _v3.a; 6349 var x = _v3.b; 6350 return A2($elm$parser$Parser$Advanced$Bad, p1 || p2, x); 6351 } else { 6352 var p2 = _v3.a; 6353 var b = _v3.b; 6354 var s2 = _v3.c; 6355 return A3( 6356 $elm$parser$Parser$Advanced$Good, 6357 p1 || p2, 6358 A2(func, a, b), 6359 s2); 6360 } 6361 } 6362 }); 6363 }); 6364var $elm$parser$Parser$Advanced$ignorer = F2( 6365 function (keepParser, ignoreParser) { 6366 return A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$always, keepParser, ignoreParser); 6367 }); 6368var $elm$parser$Parser$ignorer = $elm$parser$Parser$Advanced$ignorer; 6369var $hecrj$html_parser$Html$Parser$chompOneOrMore = function (fn) { 6370 return A2( 6371 $elm$parser$Parser$ignorer, 6372 $elm$parser$Parser$chompIf(fn), 6373 $elm$parser$Parser$chompWhile(fn)); 6374}; 6375var $elm$parser$Parser$Advanced$mapChompedString = F2( 6376 function (func, _v0) { 6377 var parse = _v0.a; 6378 return $elm$parser$Parser$Advanced$Parser( 6379 function (s0) { 6380 var _v1 = parse(s0); 6381 if (_v1.$ === 'Bad') { 6382 var p = _v1.a; 6383 var x = _v1.b; 6384 return A2($elm$parser$Parser$Advanced$Bad, p, x); 6385 } else { 6386 var p = _v1.a; 6387 var a = _v1.b; 6388 var s1 = _v1.c; 6389 return A3( 6390 $elm$parser$Parser$Advanced$Good, 6391 p, 6392 A2( 6393 func, 6394 A3($elm$core$String$slice, s0.offset, s1.offset, s0.src), 6395 a), 6396 s1); 6397 } 6398 }); 6399 }); 6400var $elm$parser$Parser$Advanced$getChompedString = function (parser) { 6401 return A2($elm$parser$Parser$Advanced$mapChompedString, $elm$core$Basics$always, parser); 6402}; 6403var $elm$parser$Parser$getChompedString = $elm$parser$Parser$Advanced$getChompedString; 6404var $hecrj$html_parser$Html$Parser$isSpaceCharacter = function (c) { 6405 return _Utils_eq( 6406 c, 6407 _Utils_chr(' ')) || (_Utils_eq( 6408 c, 6409 _Utils_chr('\t')) || (_Utils_eq( 6410 c, 6411 _Utils_chr('\n')) || (_Utils_eq( 6412 c, 6413 _Utils_chr('\u000D')) || (_Utils_eq( 6414 c, 6415 _Utils_chr('\u000C')) || _Utils_eq( 6416 c, 6417 _Utils_chr('\u00A0')))))); 6418}; 6419var $elm$parser$Parser$Problem = function (a) { 6420 return {$: 'Problem', a: a}; 6421}; 6422var $elm$parser$Parser$Advanced$problem = function (x) { 6423 return $elm$parser$Parser$Advanced$Parser( 6424 function (s) { 6425 return A2( 6426 $elm$parser$Parser$Advanced$Bad, 6427 false, 6428 A2($elm$parser$Parser$Advanced$fromState, s, x)); 6429 }); 6430}; 6431var $elm$parser$Parser$problem = function (msg) { 6432 return $elm$parser$Parser$Advanced$problem( 6433 $elm$parser$Parser$Problem(msg)); 6434}; 6435var $elm$parser$Parser$Advanced$succeed = function (a) { 6436 return $elm$parser$Parser$Advanced$Parser( 6437 function (s) { 6438 return A3($elm$parser$Parser$Advanced$Good, false, a, s); 6439 }); 6440}; 6441var $elm$parser$Parser$succeed = $elm$parser$Parser$Advanced$succeed; 6442var $elm$core$String$toLower = _String_toLower; 6443var $hecrj$html_parser$Html$Parser$closingTag = function (name) { 6444 var chompName = A2( 6445 $elm$parser$Parser$andThen, 6446 function (closingName) { 6447 return _Utils_eq( 6448 $elm$core$String$toLower(closingName), 6449 name) ? $elm$parser$Parser$succeed(_Utils_Tuple0) : $elm$parser$Parser$problem('closing tag does not match opening tag: ' + name); 6450 }, 6451 $elm$parser$Parser$getChompedString( 6452 $hecrj$html_parser$Html$Parser$chompOneOrMore( 6453 function (c) { 6454 return (!$hecrj$html_parser$Html$Parser$isSpaceCharacter(c)) && (!_Utils_eq( 6455 c, 6456 _Utils_chr('>'))); 6457 }))); 6458 return A2( 6459 $elm$parser$Parser$ignorer, 6460 A2( 6461 $elm$parser$Parser$ignorer, 6462 A2( 6463 $elm$parser$Parser$ignorer, 6464 A2( 6465 $elm$parser$Parser$ignorer, 6466 $elm$parser$Parser$chompIf( 6467 $elm$core$Basics$eq( 6468 _Utils_chr('<'))), 6469 $elm$parser$Parser$chompIf( 6470 $elm$core$Basics$eq( 6471 _Utils_chr('/')))), 6472 chompName), 6473 $elm$parser$Parser$chompWhile($hecrj$html_parser$Html$Parser$isSpaceCharacter)), 6474 $elm$parser$Parser$chompIf( 6475 $elm$core$Basics$eq( 6476 _Utils_chr('>')))); 6477}; 6478var $hecrj$html_parser$Html$Parser$Comment = function (a) { 6479 return {$: 'Comment', a: a}; 6480}; 6481var $elm$parser$Parser$Advanced$findSubString = _Parser_findSubString; 6482var $elm$parser$Parser$Advanced$fromInfo = F4( 6483 function (row, col, x, context) { 6484 return A2( 6485 $elm$parser$Parser$Advanced$AddRight, 6486 $elm$parser$Parser$Advanced$Empty,
6487 A4($elm$parser$Parser$Advanced$DeadEnd, row, col, x, context)); 6488 }); 6489var $elm$parser$Parser$Advanced$chompUntil = function (_v0) { 6490 var str = _v0.a; 6491 var expecting = _v0.b; 6492 return $elm$parser$Parser$Advanced$Parser( 6493 function (s) { 6494 var _v1 = A5($elm$parser$Parser$Advanced$findSubString, str, s.offset, s.row, s.col, s.src); 6495 var newOffset = _v1.a; 6496 var newRow = _v1.b; 6497 var newCol = _v1.c; 6498 return _Utils_eq(newOffset, -1) ? A2( 6499 $elm$parser$Parser$Advanced$Bad, 6500 false, 6501 A4($elm$parser$Parser$Advanced$fromInfo, newRow, newCol, expecting, s.context)) : A3( 6502 $elm$parser$Parser$Advanced$Good, 6503 _Utils_cmp(s.offset, newOffset) < 0, 6504 _Utils_Tuple0, 6505 {col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src}); 6506 }); 6507}; 6508var $elm$parser$Parser$Expecting = function (a) { 6509 return {$: 'Expecting', a: a}; 6510}; 6511var $elm$parser$Parser$Advanced$Token = F2( 6512 function (a, b) { 6513 return {$: 'Token', a: a, b: b}; 6514 }); 6515var $elm$parser$Parser$toToken = function (str) { 6516 return A2( 6517 $elm$parser$Parser$Advanced$Token, 6518 str, 6519 $elm$parser$Parser$Expecting(str)); 6520}; 6521var $elm$parser$Parser$chompUntil = function (str) { 6522 return $elm$parser$Parser$Advanced$chompUntil( 6523 $elm$parser$Parser$toToken(str)); 6524}; 6525var $elm$parser$Parser$Advanced$keeper = F2( 6526 function (parseFunc, parseArg) { 6527 return A3($elm$parser$Parser$Advanced$map2, $elm$core$Basics$apL, parseFunc, parseArg); 6528 }); 6529var $elm$parser$Parser$keeper = $elm$parser$Parser$Advanced$keeper; 6530var $elm$parser$Parser$Advanced$isSubString = _Parser_isSubString; 6531var $elm$parser$Parser$Advanced$token = function (_v0) { 6532 var str = _v0.a; 6533 var expecting = _v0.b; 6534 var progress = !$elm$core$String$isEmpty(str); 6535 return $elm$parser$Parser$Advanced$Parser( 6536 function (s) { 6537 var _v1 = A5($elm$parser$Parser$Advanced$isSubString, str, s.offset, s.row, s.col, s.src); 6538 var newOffset = _v1.a; 6539 var newRow = _v1.b; 6540 var newCol = _v1.c; 6541 return _Utils_eq(newOffset, -1) ? A2( 6542 $elm$parser$Parser$Advanced$Bad, 6543 false, 6544 A2($elm$parser$Parser$Advanced$fromState, s, expecting)) : A3( 6545 $elm$parser$Parser$Advanced$Good, 6546 progress, 6547 _Utils_Tuple0, 6548 {col: newCol, context: s.context, indent: s.indent, offset: newOffset, row: newRow, src: s.src}); 6549 }); 6550}; 6551var $elm$parser$Parser$token = function (str) { 6552 return $elm$parser$Parser$Advanced$token( 6553 $elm$parser$Parser$toToken(str)); 6554}; 6555var $hecrj$html_parser$Html$Parser$commentString = A2( 6556 $elm$parser$Parser$keeper, 6557 A2( 6558 $elm$parser$Parser$ignorer, 6559 A2( 6560 $elm$parser$Parser$ignorer, 6561 $elm$parser$Parser$succeed($elm$core$Basics$identity), 6562 $elm$parser$Parser$token('<!')), 6563 $elm$parser$Parser$token('--')), 6564 A2( 6565 $elm$parser$Parser$ignorer, 6566 $elm$parser$Parser$getChompedString( 6567 $elm$parser$Parser$chompUntil('-->')), 6568 $elm$parser$Parser$token('-->'))); 6569var $elm$parser$Parser$Advanced$map = F2( 6570 function (func, _v0) { 6571 var parse = _v0.a; 6572 return $elm$parser$Parser$Advanced$Parser( 6573 function (s0) { 6574 var _v1 = parse(s0); 6575 if (_v1.$ === 'Good') { 6576 var p = _v1.a; 6577 var a = _v1.b; 6578 var s1 = _v1.c; 6579 return A3( 6580 $elm$parser$Parser$Advanced$Good, 6581 p, 6582 func(a), 6583 s1); 6584 } else { 6585 var p = _v1.a; 6586 var x = _v1.b; 6587 return A2($elm$parser$Parser$Advanced$Bad, p, x); 6588 } 6589 }); 6590 }); 6591var $elm$parser$Parser$map = $elm$parser$Parser$Advanced$map; 6592var $hecrj$html_parser$Html$Parser$comment = A2($elm$parser$Parser$map, $hecrj$html_parser$Html$Parser$Comment, $hecrj$html_parser$Html$Parser$commentString); 6593var $elm$core$List$any = F2( 6594 function (isOkay, list) { 6595 any: 6596 while (true) { 6597 if (!list.b) { 6598 return false; 6599 } else { 6600 var x = list.a; 6601 var xs = list.b; 6602 if (isOkay(x)) { 6603 return true; 6604 } else { 6605 var $temp$isOkay = isOkay, 6606 $temp$list = xs; 6607 isOkay = $temp$isOkay; 6608 list = $temp$list; 6609 continue any; 6610 } 6611 } 6612 } 6613 }); 6614var $elm$core$List$member = F2( 6615 function (x, xs) { 6616 return A2( 6617 $elm$core$List$any, 6618 function (a) { 6619 return _Utils_eq(a, x); 6620 }, 6621 xs); 6622 }); 6623var $hecrj$html_parser$Html$Parser$voidElements = _List_fromArray( 6624 ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr']); 6625var $hecrj$html_parser$Html$Parser$isVoidElement = function (name) { 6626 return A2($elm$core$List$member, name, $hecrj$html_parser$Html$Parser$voidElements); 6627}; 6628var $elm$parser$Parser$Done = function (a) { 6629 return {$: 'Done', a: a}; 6630}; 6631var $elm$parser$Parser$Loop = function (a) { 6632 return {$: 'Loop', a: a}; 6633}; 6634var $elm$parser$Parser$Advanced$loopHelp = F4( 6635 function (p, state, callback, s0) { 6636 loopHelp: 6637 while (true) { 6638 var _v0 = callback(state); 6639 var parse = _v0.a; 6640 var _v1 = parse(s0); 6641 if (_v1.$ === 'Good') { 6642 var p1 = _v1.a; 6643 var step = _v1.b; 6644 var s1 = _v1.c; 6645 if (step.$ === 'Loop') { 6646 var newState = step.a; 6647 var $temp$p = p || p1, 6648 $temp$state = newState, 6649 $temp$callback = callback, 6650 $temp$s0 = s1; 6651 p = $temp$p; 6652 state = $temp$state; 6653 callback = $temp$callback; 6654 s0 = $temp$s0; 6655 continue loopHelp; 6656 } else { 6657 var result = step.a; 6658 return A3($elm$parser$Parser$Advanced$Good, p || p1, result, s1); 6659 } 6660 } else { 6661 var p1 = _v1.a; 6662 var x = _v1.b; 6663 return A2($elm$parser$Parser$Advanced$Bad, p || p1, x); 6664 } 6665 } 6666 }); 6667var $elm$parser$Parser$Advanced$loop = F2( 6668 function (state, callback) { 6669 return $elm$parser$Parser$Advanced$Parser( 6670 function (s) { 6671 return A4($elm$parser$Parser$Advanced$loopHelp, false, state, callback, s); 6672 }); 6673 }); 6674var $elm$parser$Parser$Advanced$Done = function (a) { 6675 return {$: 'Done', a: a}; 6676}; 6677var $elm$parser$Parser$Advanced$Loop = function (a) { 6678 return {$: 'Loop', a: a}; 6679}; 6680var $elm$parser$Parser$toAdvancedStep = function (step) { 6681 if (step.$ === 'Loop') { 6682 var s = step.a; 6683 return $elm$parser$Parser$Advanced$Loop(s); 6684 } else { 6685 var a = step.a; 6686 return $elm$parser$Parser$Advanced$Done(a); 6687 } 6688}; 6689var $elm$parser$Parser$loop = F2( 6690 function (state, callback) { 6691 return A2( 6692 $elm$parser$Parser$Advanced$loop, 6693 state, 6694 function (s) { 6695 return A2( 6696 $elm$parser$Parser$map, 6697 $elm$parser$Parser$toAdvancedStep, 6698 callback(s)); 6699 }); 6700 }); 6701var $elm$parser$Parser$Advanced$Append = F2( 6702 function (a, b) { 6703 return {$: 'Append', a: a, b: b}; 6704 }); 6705var $elm$parser$Parser$Advanced$oneOfHelp = F3( 6706 function (s0, bag, parsers) { 6707 oneOfHelp: 6708 while (true) { 6709 if (!parsers.b) { 6710 return A2($elm$parser$Parser$Advanced$Bad, false, bag); 6711 } else { 6712 var parse = parsers.a.a; 6713 var remainingParsers = parsers.b; 6714 var _v1 = parse(s0); 6715 if (_v1.$ === 'Good') { 6716 var step = _v1; 6717 return step; 6718 } else { 6719 var step = _v1; 6720 var p = step.a; 6721 var x = step.b; 6722 if (p) { 6723 return step; 6724 } else { 6725 var $temp$s0 = s0, 6726 $temp$bag = A2($elm$parser$Parser$Advanced$Append, bag, x), 6727 $temp$parsers = remainingParsers; 6728 s0 = $temp$s0; 6729 bag = $temp$bag; 6730 parsers = $temp$parsers; 6731 continue oneOfHelp; 6732 } 6733 } 6734 } 6735 } 6736 }); 6737var $elm$parser$Parser$Advanced$oneOf = function (parsers) { 6738 return $elm$parser$Parser$Advanced$Parser( 6739 function (s) { 6740 return A3($elm$parser$Parser$Advanced$oneOfHelp, s, $elm$parser$Parser$Advanced$Empty, parsers); 6741 }); 6742}; 6743var $elm$parser$Parser$oneOf = $elm$parser$Parser$Advanced$oneOf; 6744var $hecrj$html_parser$Html$Parser$many = function (parser_) { 6745 return A2( 6746 $elm$parser$Parser$loop, 6747 _List_Nil, 6748 function (list) { 6749 return $elm$parser$Parser$oneOf( 6750 _List_fromArray( 6751 [ 6752 A2( 6753 $elm$parser$Parser$map, 6754 function (_new) { 6755 return $elm$parser$Parser$Loop( 6756 A2($elm$core$List$cons, _new, list)); 6757 }, 6758 parser_), 6759 $elm$parser$Parser$succeed( 6760 $elm$parser$Parser$Done( 6761 $elm$core$List$reverse(list))) 6762 ])); 6763 }); 6764}; 6765var $elm$core$Tuple$pair = F2( 6766 function (a, b) { 6767 return _Utils_Tuple2(a, b); 6768 }); 6769var $hecrj$html_parser$Html$Parser$isTagAttributeCharacter = function (c) { 6770 return (!$hecrj$html_parser$Html$Parser$isSpaceCharacter(c)) && ((!_Utils_eq( 6771 c, 6772 _Utils_chr('\"'))) && ((!_Utils_eq( 6773 c, 6774 _Utils_chr('\''))) && ((!_Utils_eq( 6775 c, 6776 _Utils_chr('>'))) && ((!_Utils_eq( 6777 c, 6778 _Utils_chr('/'))) && (!_Utils_eq( 6779 c, 6780 _Utils_chr('='))))))); 6781}; 6782var $hecrj$html_parser$Html$Parser$tagAttributeName = A2( 6783 $elm$parser$Parser$map, 6784 $elm$core$String$toLower, 6785 $elm$parser$Parser$getChompedString( 6786 $hecrj$html_parser$Html$Parser$chompOneOrMore($hecrj$html_parser$Html$Parser$isTagAttributeCharacter))); 6787var $hecrj$html_parser$Html$Parser$chompSemicolon = $elm$parser$Parser$chompIf( 6788 $elm$core$Basics$eq( 6789 _Utils_chr(';'))); 6790var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'}; 6791var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; 6792var $elm$core$Dict$Black = {$: 'Black'}; 6793var $elm$core$Dict$RBNode_elm_builtin = F5( 6794 function (a, b, c, d, e) {
6795 return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e}; 6796 }); 6797var $elm$core$Dict$Red = {$: 'Red'}; 6798var $elm$core$Dict$balance = F5( 6799 function (color, key, value, left, right) { 6800 if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) { 6801 var _v1 = right.a; 6802 var rK = right.b; 6803 var rV = right.c; 6804 var rLeft = right.d; 6805 var rRight = right.e; 6806 if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { 6807 var _v3 = left.a; 6808 var lK = left.b; 6809 var lV = left.c; 6810 var lLeft = left.d; 6811 var lRight = left.e; 6812 return A5( 6813 $elm$core$Dict$RBNode_elm_builtin, 6814 $elm$core$Dict$Red, 6815 key, 6816 value, 6817 A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight), 6818 A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight)); 6819 } else { 6820 return A5( 6821 $elm$core$Dict$RBNode_elm_builtin, 6822 color, 6823 rK, 6824 rV, 6825 A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft), 6826 rRight); 6827 } 6828 } else { 6829 if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) { 6830 var _v5 = left.a; 6831 var lK = left.b; 6832 var lV = left.c; 6833 var _v6 = left.d; 6834 var _v7 = _v6.a; 6835 var llK = _v6.b; 6836 var llV = _v6.c; 6837 var llLeft = _v6.d; 6838 var llRight = _v6.e; 6839 var lRight = left.e; 6840 return A5( 6841 $elm$core$Dict$RBNode_elm_builtin, 6842 $elm$core$Dict$Red, 6843 lK, 6844 lV, 6845 A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), 6846 A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right)); 6847 } else { 6848 return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); 6849 } 6850 } 6851 }); 6852var $elm$core$Basics$compare = _Utils_compare; 6853var $elm$core$Dict$insertHelp = F3( 6854 function (key, value, dict) { 6855 if (dict.$ === 'RBEmpty_elm_builtin') { 6856 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); 6857 } else { 6858 var nColor = dict.a; 6859 var nKey = dict.b; 6860 var nValue = dict.c; 6861 var nLeft = dict.d; 6862 var nRight = dict.e; 6863 var _v1 = A2($elm$core$Basics$compare, key, nKey); 6864 switch (_v1.$) { 6865 case 'LT': 6866 return A5( 6867 $elm$core$Dict$balance, 6868 nColor, 6869 nKey, 6870 nValue, 6871 A3($elm$core$Dict$insertHelp, key, value, nLeft), 6872 nRight); 6873 case 'EQ': 6874 return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); 6875 default: 6876 return A5( 6877 $elm$core$Dict$balance, 6878 nColor, 6879 nKey, 6880 nValue, 6881 nLeft, 6882 A3($elm$core$Dict$insertHelp, key, value, nRight)); 6883 } 6884 } 6885 }); 6886var $elm$core$Dict$insert = F3( 6887 function (key, value, dict) { 6888 var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); 6889 if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { 6890 var _v1 = _v0.a; 6891 var k = _v0.b; 6892 var v = _v0.c; 6893 var l = _v0.d; 6894 var r = _v0.e; 6895 return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); 6896 } else { 6897 var x = _v0; 6898 return x; 6899 } 6900 }); 6901var $elm$core$Dict$fromList = function (assocs) { 6902 return A3( 6903 $elm$core$List$foldl, 6904 F2( 6905 function (_v0, dict) { 6906 var key = _v0.a; 6907 var value = _v0.b; 6908 return A3($elm$core$Dict$insert, key, value, dict); 6909 }), 6910 $elm$core$Dict$empty, 6911 assocs); 6912}; 6913var $hecrj$html_parser$Html$Parser$NamedCharacterReferences$dict = $elm$core$Dict$fromList( 6914 _List_fromArray( 6915 [ 6916 _Utils_Tuple2('Aacute', 'Ã'), 6917 _Utils_Tuple2('aacute', 'á'), 6918 _Utils_Tuple2('Abreve', 'Ä'), 6919 _Utils_Tuple2('abreve', 'Ä'), 6920 _Utils_Tuple2('ac', 'â¾'), 6921 _Utils_Tuple2('acd', 'â¿'), 6922 _Utils_Tuple2('acE', 'â¾Ì³'), 6923 _Utils_Tuple2('Acirc', 'Ã'), 6924 _Utils_Tuple2('acirc', 'â'), 6925 _Utils_Tuple2('acute', '´'), 6926 _Utils_Tuple2('Acy', 'Ð'), 6927 _Utils_Tuple2('acy', 'а'), 6928 _Utils_Tuple2('AElig', 'Ã'), 6929 _Utils_Tuple2('aelig', 'æ'), 6930 _Utils_Tuple2('af', '\u2061'), 6931 _Utils_Tuple2('Afr', '\uD835\uDD04'), 6932 _Utils_Tuple2('afr', '\uD835\uDD1E'),
6933 _Utils_Tuple2('Agrave', 'Ã'), 6934 _Utils_Tuple2('agrave', 'à '), 6935 _Utils_Tuple2('alefsym', 'âµ'), 6936 _Utils_Tuple2('aleph', 'âµ'), 6937 _Utils_Tuple2('Alpha', 'Î'), 6938 _Utils_Tuple2('alpha', 'α'), 6939 _Utils_Tuple2('Amacr', 'Ä'), 6940 _Utils_Tuple2('amacr', 'Ä'), 6941 _Utils_Tuple2('amalg', '⨿'), 6942 _Utils_Tuple2('amp', '&'), 6943 _Utils_Tuple2('AMP', '&'), 6944 _Utils_Tuple2('andand', 'â©'), 6945 _Utils_Tuple2('And', 'â©'), 6946 _Utils_Tuple2('and', 'â§'), 6947 _Utils_Tuple2('andd', 'â©'), 6948 _Utils_Tuple2('andslope', 'â©'), 6949 _Utils_Tuple2('andv', 'â©'), 6950 _Utils_Tuple2('ang', 'â '), 6951 _Utils_Tuple2('ange', '⦤'), 6952 _Utils_Tuple2('angle', 'â '), 6953 _Utils_Tuple2('angmsdaa', '⦨'), 6954 _Utils_Tuple2('angmsdab', '⦩'), 6955 _Utils_Tuple2('angmsdac', '⦪'), 6956 _Utils_Tuple2('angmsdad', '⦫'), 6957 _Utils_Tuple2('angmsdae', '⦬'), 6958 _Utils_Tuple2('angmsdaf', 'â¦'), 6959 _Utils_Tuple2('angmsdag', '⦮'), 6960 _Utils_Tuple2('angmsdah', '⦯'), 6961 _Utils_Tuple2('angmsd', 'â¡'), 6962 _Utils_Tuple2('angrt', 'â'), 6963 _Utils_Tuple2('angrtvb', 'â¾'), 6964 _Utils_Tuple2('angrtvbd', 'â¦'), 6965 _Utils_Tuple2('angsph', 'â¢'), 6966 _Utils_Tuple2('angst', 'à '), 6967 _Utils_Tuple2('angzarr', 'â¼'), 6968 _Utils_Tuple2('Aogon', 'Ä'), 6969 _Utils_Tuple2('aogon', 'Ä '), 6970 _Utils_Tuple2('Aopf', '\uD835\uDD38'), 6971 _Utils_Tuple2('aopf', '\uD835\uDD52'), 6972 _Utils_Tuple2('apacir', '⩯'), 6973 _Utils_Tuple2('ap', 'â'), 6974 _Utils_Tuple2('apE', 'â©°'), 6975 _Utils_Tuple2('ape', 'â'), 6976 _Utils_Tuple2('apid', 'â'), 6977 _Utils_Tuple2('apos', '\''), 6978 _Utils_Tuple2('ApplyFunction', '\u2061'), 6979 _Utils_Tuple2('approx', 'â'), 6980 _Utils_Tuple2('approxeq', 'â'), 6981 _Utils_Tuple2('Aring', 'à '), 6982 _Utils_Tuple2('aring', 'Ã¥'), 6983 _Utils_Tuple2('Ascr', '\uD835\uDC9C'), 6984 _Utils_Tuple2('ascr', '\uD835\uDCB6'), 6985 _Utils_Tuple2('Assign', 'â'), 6986 _Utils_Tuple2('ast', '*'), 6987 _Utils_Tuple2('asymp', 'â'), 6988 _Utils_Tuple2('asympeq', 'â'), 6989 _Utils_Tuple2('Atilde', 'Ã'), 6990 _Utils_Tuple2('atilde', 'ã'), 6991 _Utils_Tuple2('Auml', 'Ã'), 6992 _Utils_Tuple2('auml', 'ä'), 6993 _Utils_Tuple2('awconint', 'â³'), 6994 _Utils_Tuple2('awint', 'â¨'), 6995 _Utils_Tuple2('backcong', 'â'), 6996 _Utils_Tuple2('backepsilon', '϶'), 6997 _Utils_Tuple2('backprime', 'âµ'), 6998 _Utils_Tuple2('backsim', 'â½'), 6999 _Utils_Tuple2('backsimeq', 'â'), 7000 _Utils_Tuple2('Backslash', 'â'), 7001 _Utils_Tuple2('Barv', 'â«§'), 7002 _Utils_Tuple2('barvee', 'â½'), 7003 _Utils_Tuple2('barwed', 'â '), 7004 _Utils_Tuple2('Barwed', 'â'), 7005 _Utils_Tuple2('barwedge', 'â '), 7006 _Utils_Tuple2('bbrk', 'âµ'), 7007 _Utils_Tuple2('bbrktbrk', 'â¶'), 7008 _Utils_Tuple2('bcong', 'â'), 7009 _Utils_Tuple2('Bcy', 'Ð'), 7010 _Utils_Tuple2('bcy', 'б'), 7011 _Utils_Tuple2('bdquo', 'â'), 7012 _Utils_Tuple2('becaus', 'âµ'), 7013 _Utils_Tuple2('because', 'âµ'), 7014 _Utils_Tuple2('Because', 'âµ'), 7015 _Utils_Tuple2('bemptyv', '⦰'), 7016 _Utils_Tuple2('bepsi', '϶'), 7017 _Utils_Tuple2('bernou', 'â¬'), 7018 _Utils_Tuple2('Bernoullis', 'â¬'), 7019 _Utils_Tuple2('Beta', 'Î'), 7020 _Utils_Tuple2('beta', 'β'), 7021 _Utils_Tuple2('beth', 'â¶'), 7022 _Utils_Tuple2('between', 'â¬'), 7023 _Utils_Tuple2('Bfr', '\uD835\uDD05'), 7024 _Utils_Tuple2('bfr', '\uD835\uDD1F'), 7025 _Utils_Tuple2('bigcap', 'â'), 7026 _Utils_Tuple2('bigcirc', 'â¯'), 7027 _Utils_Tuple2('bigcup', 'â'), 7028 _Utils_Tuple2('bigodot', 'â¨'), 7029 _Utils_Tuple2('bigoplus', 'â¨'), 7030 _Utils_Tuple2('bigotimes', 'â¨'), 7031 _Utils_Tuple2('bigsqcup', 'â¨'), 7032 _Utils_Tuple2('bigstar', 'â '), 7033 _Utils_Tuple2('bigtriangledown', 'â½'), 7034 _Utils_Tuple2('bigtriangleup', 'â³'), 7035 _Utils_Tuple2('biguplus', 'â¨'), 7036 _Utils_Tuple2('bigvee', 'â'), 7037 _Utils_Tuple2('bigwedge', 'â'), 7038 _Utils_Tuple2('bkarow', 'â¤'), 7039 _Utils_Tuple2('blacklozenge', 'â§«'), 7040 _Utils_Tuple2('blacksquare', 'âª'), 7041 _Utils_Tuple2('blacktriangle', 'â´'), 7042 _Utils_Tuple2('blacktriangledown', 'â¾'), 7043 _Utils_Tuple2('blacktriangleleft', 'â'), 7044 _Utils_Tuple2('blacktriangleright', 'â¸'), 7045 _Utils_Tuple2('blank', 'â£'), 7046 _Utils_Tuple2('blk12', 'â'), 7047 _Utils_Tuple2('blk14', 'â'), 7048 _Utils_Tuple2('blk34', 'â'), 7049 _Utils_Tuple2('block', 'â'), 7050 _Utils_Tuple2('bne', '=â¥'), 7051 _Utils_Tuple2('bnequiv', 'â¡â¥'), 7052 _Utils_Tuple2('bNot', 'â«'), 7053 _Utils_Tuple2('bnot', 'â'), 7054 _Utils_Tuple2('Bopf', '\uD835\uDD39'), 7055 _Utils_Tuple2('bopf', '\uD835\uDD53'), 7056 _Utils_Tuple2('bot', 'â¥'), 7057 _Utils_Tuple2('bottom', 'â¥'), 7058 _Utils_Tuple2('bowtie', 'â'), 7059 _Utils_Tuple2('boxbox', 'â§'), 7060 _Utils_Tuple2('boxdl', 'â'), 7061 _Utils_Tuple2('boxdL', 'â'), 7062 _Utils_Tuple2('boxDl', 'â'),
7063 _Utils_Tuple2('boxDL', 'â'), 7064 _Utils_Tuple2('boxdr', 'â'), 7065 _Utils_Tuple2('boxdR', 'â'), 7066 _Utils_Tuple2('boxDr', 'â'), 7067 _Utils_Tuple2('boxDR', 'â'), 7068 _Utils_Tuple2('boxh', 'â'), 7069 _Utils_Tuple2('boxH', 'â'), 7070 _Utils_Tuple2('boxhd', 'â¬'), 7071 _Utils_Tuple2('boxHd', 'â¤'), 7072 _Utils_Tuple2('boxhD', 'â¥'), 7073 _Utils_Tuple2('boxHD', 'â¦'), 7074 _Utils_Tuple2('boxhu', 'â´'), 7075 _Utils_Tuple2('boxHu', 'â§'), 7076 _Utils_Tuple2('boxhU', 'â¨'), 7077 _Utils_Tuple2('boxHU', 'â©'), 7078 _Utils_Tuple2('boxminus', 'â'), 7079 _Utils_Tuple2('boxplus', 'â'), 7080 _Utils_Tuple2('boxtimes', 'â '), 7081 _Utils_Tuple2('boxul', 'â'), 7082 _Utils_Tuple2('boxuL', 'â'), 7083 _Utils_Tuple2('boxUl', 'â'), 7084 _Utils_Tuple2('boxUL', 'â'), 7085 _Utils_Tuple2('boxur', 'â'), 7086 _Utils_Tuple2('boxuR', 'â'), 7087 _Utils_Tuple2('boxUr', 'â'), 7088 _Utils_Tuple2('boxUR', 'â'), 7089 _Utils_Tuple2('boxv', 'â'), 7090 _Utils_Tuple2('boxV', 'â'), 7091 _Utils_Tuple2('boxvh', 'â¼'), 7092 _Utils_Tuple2('boxvH', 'âª'), 7093 _Utils_Tuple2('boxVh', 'â«'), 7094 _Utils_Tuple2('boxVH', 'â¬'), 7095 _Utils_Tuple2('boxvl', 'â¤'), 7096 _Utils_Tuple2('boxvL', 'â¡'), 7097 _Utils_Tuple2('boxVl', 'â¢'), 7098 _Utils_Tuple2('boxVL', 'â£'), 7099 _Utils_Tuple2('boxvr', 'â'), 7100 _Utils_Tuple2('boxvR', 'â'), 7101 _Utils_Tuple2('boxVr', 'â'), 7102 _Utils_Tuple2('boxVR', 'â '), 7103 _Utils_Tuple2('bprime', 'âµ'), 7104 _Utils_Tuple2('breve', 'Ë'), 7105 _Utils_Tuple2('Breve', 'Ë'), 7106 _Utils_Tuple2('brvbar', '¦'), 7107 _Utils_Tuple2('bscr', '\uD835\uDCB7'), 7108 _Utils_Tuple2('Bscr', 'â¬'), 7109 _Utils_Tuple2('bsemi', 'â'), 7110 _Utils_Tuple2('bsim', 'â½'), 7111 _Utils_Tuple2('bsime', 'â'), 7112 _Utils_Tuple2('bsolb', 'â§ '), 7113 _Utils_Tuple2('bsol', '\\'), 7114 _Utils_Tuple2('bsolhsub', 'â'), 7115 _Utils_Tuple2('bull', 'â¢'), 7116 _Utils_Tuple2('bullet', 'â¢'), 7117 _Utils_Tuple2('bump', 'â'), 7118 _Utils_Tuple2('bumpE', '⪮'), 7119 _Utils_Tuple2('bumpe', 'â'), 7120 _Utils_Tuple2('Bumpeq', 'â'), 7121 _Utils_Tuple2('bumpeq', 'â'), 7122 _Utils_Tuple2('Cacute', 'Ä'), 7123 _Utils_Tuple2('cacute', 'Ä'), 7124 _Utils_Tuple2('capand', 'â©'), 7125 _Utils_Tuple2('capbrcup', 'â©'), 7126 _Utils_Tuple2('capcap', 'â©'), 7127 _Utils_Tuple2('cap', 'â©'), 7128 _Utils_Tuple2('Cap', 'â'), 7129 _Utils_Tuple2('capcup', 'â©'), 7130 _Utils_Tuple2('capdot', 'â©'), 7131 _Utils_Tuple2('CapitalDifferentialD', 'â '), 7132 _Utils_Tuple2('caps', 'â©ï¸'), 7133 _Utils_Tuple2('caret', 'â'), 7134 _Utils_Tuple2('caron', 'Ë'), 7135 _Utils_Tuple2('Cayleys', 'â'), 7136 _Utils_Tuple2('ccaps', 'â©'), 7137 _Utils_Tuple2('Ccaron', 'Ä'), 7138 _Utils_Tuple2('ccaron', 'Ä'), 7139 _Utils_Tuple2('Ccedil', 'Ã'), 7140 _Utils_Tuple2('ccedil', 'ç'), 7141 _Utils_Tuple2('Ccirc', 'Ä'), 7142 _Utils_Tuple2('ccirc', 'Ä'), 7143 _Utils_Tuple2('Cconint', 'â°'), 7144 _Utils_Tuple2('ccups', 'â©'), 7145 _Utils_Tuple2('ccupssm', 'â©'), 7146 _Utils_Tuple2('Cdot', 'Ä'), 7147 _Utils_Tuple2('cdot', 'Ä'), 7148 _Utils_Tuple2('cedil', '¸'), 7149 _Utils_Tuple2('Cedilla', '¸'), 7150 _Utils_Tuple2('cemptyv', '⦲'), 7151 _Utils_Tuple2('cent', '¢'), 7152 _Utils_Tuple2('centerdot', '·'), 7153 _Utils_Tuple2('CenterDot', '·'), 7154 _Utils_Tuple2('cfr', '\uD835\uDD20'), 7155 _Utils_Tuple2('Cfr', 'â'), 7156 _Utils_Tuple2('CHcy', 'Ч'), 7157 _Utils_Tuple2('chcy', 'Ñ'), 7158 _Utils_Tuple2('check', 'â'), 7159 _Utils_Tuple2('checkmark', 'â'), 7160 _Utils_Tuple2('Chi', 'Χ'), 7161 _Utils_Tuple2('chi', 'Ï'), 7162 _Utils_Tuple2('circ', 'Ë'), 7163 _Utils_Tuple2('circeq', 'â'), 7164 _Utils_Tuple2('circlearrowleft', 'âº'), 7165 _Utils_Tuple2('circlearrowright', 'â»'), 7166 _Utils_Tuple2('circledast', 'â'), 7167 _Utils_Tuple2('circledcirc', 'â'), 7168 _Utils_Tuple2('circleddash', 'â'), 7169 _Utils_Tuple2('CircleDot', 'â'), 7170 _Utils_Tuple2('circledR', '®'), 7171 _Utils_Tuple2('circledS', 'â'), 7172 _Utils_Tuple2('CircleMinus', 'â'), 7173 _Utils_Tuple2('CirclePlus', 'â'), 7174 _Utils_Tuple2('CircleTimes', 'â'), 7175 _Utils_Tuple2('cir', 'â'), 7176 _Utils_Tuple2('cirE', 'â§'), 7177 _Utils_Tuple2('cire', 'â'), 7178 _Utils_Tuple2('cirfnint', 'â¨'), 7179 _Utils_Tuple2('cirmid', '⫯'), 7180 _Utils_Tuple2('cirscir', 'â§'), 7181 _Utils_Tuple2('ClockwiseContourIntegral', 'â²'), 7182 _Utils_Tuple2('CloseCurlyDoubleQuote', 'â'), 7183 _Utils_Tuple2('CloseCurlyQuote', 'â'), 7184 _Utils_Tuple2('clubs', 'â£'), 7185 _Utils_Tuple2('clubsuit', 'â£'), 7186 _Utils_Tuple2('colon', ':'), 7187 _Utils_Tuple2('Colon', 'â·'), 7188 _Utils_Tuple2('Colone', 'â©´'), 7189 _Utils_Tuple2('colone', 'â'), 7190 _Utils_Tuple2('coloneq', 'â'), 7191 _Utils_Tuple2('comma', ','), 7192 _Utils_Tuple2('commat', '@'), 7193 _Utils_Tuple2('comp', 'â'), 7194 _Utils_Tuple2('compfn', 'â'), 7195 _Utils_Tuple2('complement', 'â'), 7196 _Utils_Tuple2('complexes', 'â'), 7197 _Utils_Tuple2('cong', 'â '), 7198 _Utils_Tuple2('congdot', 'â©'), 7199 _Utils_Tuple2('Congruent', 'â¡'), 7200 _Utils_Tuple2('conint', 'â®'), 7201 _Utils_Tuple2('Conint', 'â¯'), 7202 _Utils_Tuple2('ContourIntegral', 'â®'), 7203 _Utils_Tuple2('copf', '\uD835\uDD54'), 7204 _Utils_Tuple2('Copf', 'â'), 7205 _Utils_Tuple2('coprod', 'â'), 7206 _Utils_Tuple2('Coproduct', 'â'), 7207 _Utils_Tuple2('copy', '©'), 7208 _Utils_Tuple2('COPY', '©'), 7209 _Utils_Tuple2('copysr', 'â'), 7210 _Utils_Tuple2('CounterClockwiseContourIntegral', 'â³'), 7211 _Utils_Tuple2('crarr', 'âµ'), 7212 _Utils_Tuple2('cross', 'â'), 7213 _Utils_Tuple2('Cross', '⨯'), 7214 _Utils_Tuple2('Cscr', '\uD835\uDC9E'), 7215 _Utils_Tuple2('cscr', '\uD835\uDCB8'), 7216 _Utils_Tuple2('csub', 'â«'), 7217 _Utils_Tuple2('csube', 'â«'), 7218 _Utils_Tuple2('csup', 'â«'), 7219 _Utils_Tuple2('csupe', 'â«'), 7220 _Utils_Tuple2('ctdot', 'â¯'), 7221 _Utils_Tuple2('cudarrl', '⤸'), 7222 _Utils_Tuple2('cudarrr', '⤵'), 7223 _Utils_Tuple2('cuepr', 'â'), 7224 _Utils_Tuple2('cuesc', 'â'), 7225 _Utils_Tuple2('cularr', 'â¶'), 7226 _Utils_Tuple2('cularrp', '⤽'), 7227 _Utils_Tuple2('cupbrcap', 'â©'), 7228 _Utils_Tuple2('cupcap', 'â©'), 7229 _Utils_Tuple2('CupCap', 'â'), 7230 _Utils_Tuple2('cup', 'âª'), 7231 _Utils_Tuple2('Cup', 'â'), 7232 _Utils_Tuple2('cupcup', 'â©'), 7233 _Utils_Tuple2('cupdot', 'â'), 7234 _Utils_Tuple2('cupor', 'â© '), 7235 _Utils_Tuple2('cups', 'âªï¸'), 7236 _Utils_Tuple2('curarr', 'â·'), 7237 _Utils_Tuple2('curarrm', '⤼'), 7238 _Utils_Tuple2('curlyeqprec', 'â'), 7239 _Utils_Tuple2('curlyeqsucc', 'â'), 7240 _Utils_Tuple2('curlyvee', 'â'), 7241 _Utils_Tuple2('curlywedge', 'â'), 7242 _Utils_Tuple2('curren', '¤'), 7243 _Utils_Tuple2('curvearrowleft', 'â¶'), 7244 _Utils_Tuple2('curvearrowright', 'â·'), 7245 _Utils_Tuple2('cuvee', 'â'), 7246 _Utils_Tuple2('cuwed', 'â'), 7247 _Utils_Tuple2('cwconint', 'â²'), 7248 _Utils_Tuple2('cwint', 'â±'), 7249 _Utils_Tuple2('cylcty', 'â'), 7250 _Utils_Tuple2('dagger', 'â '), 7251 _Utils_Tuple2('Dagger', 'â¡'), 7252 _Utils_Tuple2('daleth', 'â¸'), 7253 _Utils_Tuple2('darr', 'â'), 7254 _Utils_Tuple2('Darr', 'â¡'), 7255 _Utils_Tuple2('dArr', 'â'), 7256 _Utils_Tuple2('dash', 'â'), 7257 _Utils_Tuple2('Dashv', '⫤'), 7258 _Utils_Tuple2('dashv', 'â£'), 7259 _Utils_Tuple2('dbkarow', 'â¤'), 7260 _Utils_Tuple2('dblac', 'Ë'), 7261 _Utils_Tuple2('Dcaron', 'Ä'), 7262 _Utils_Tuple2('dcaron', 'Ä'), 7263 _Utils_Tuple2('Dcy', 'Ð'), 7264 _Utils_Tuple2('dcy', 'д'), 7265 _Utils_Tuple2('ddagger', 'â¡'), 7266 _Utils_Tuple2('ddarr', 'â'), 7267 _Utils_Tuple2('DD', 'â '), 7268 _Utils_Tuple2('dd', 'â '), 7269 _Utils_Tuple2('DDotrahd', 'â¤'), 7270 _Utils_Tuple2('ddotseq', 'â©·'), 7271 _Utils_Tuple2('deg', '°'), 7272 _Utils_Tuple2('Del', 'â'), 7273 _Utils_Tuple2('Delta', 'Î'), 7274 _Utils_Tuple2('delta', 'δ'), 7275 _Utils_Tuple2('demptyv', '⦱'), 7276 _Utils_Tuple2('dfisht', '⥿'), 7277 _Utils_Tuple2('Dfr', '\uD835\uDD07'), 7278 _Utils_Tuple2('dfr', '\uD835\uDD21'), 7279 _Utils_Tuple2('dHar', '⥥'), 7280 _Utils_Tuple2('dharl', 'â'), 7281 _Utils_Tuple2('dharr', 'â'), 7282 _Utils_Tuple2('DiacriticalAcute', '´'), 7283 _Utils_Tuple2('DiacriticalDot', 'Ë'),
7284 _Utils_Tuple2('DiacriticalDoubleAcute', 'Ë'), 7285 _Utils_Tuple2('DiacriticalGrave', '`'), 7286 _Utils_Tuple2('DiacriticalTilde', 'Ë'), 7287 _Utils_Tuple2('diam', 'â'), 7288 _Utils_Tuple2('diamond', 'â'), 7289 _Utils_Tuple2('Diamond', 'â'), 7290 _Utils_Tuple2('diamondsuit', 'â¦'), 7291 _Utils_Tuple2('diams', 'â¦'), 7292 _Utils_Tuple2('die', '¨'), 7293 _Utils_Tuple2('DifferentialD', 'â '), 7294 _Utils_Tuple2('digamma', 'Ï'), 7295 _Utils_Tuple2('disin', 'â²'), 7296 _Utils_Tuple2('div', '÷'), 7297 _Utils_Tuple2('divide', '÷'), 7298 _Utils_Tuple2('divideontimes', 'â'), 7299 _Utils_Tuple2('divonx', 'â'), 7300 _Utils_Tuple2('DJcy', 'Ð'), 7301 _Utils_Tuple2('djcy', 'Ñ'), 7302 _Utils_Tuple2('dlcorn', 'â'), 7303 _Utils_Tuple2('dlcrop', 'â'), 7304 _Utils_Tuple2('dollar', '$'), 7305 _Utils_Tuple2('Dopf', '\uD835\uDD3B'), 7306 _Utils_Tuple2('dopf', '\uD835\uDD55'), 7307 _Utils_Tuple2('Dot', '¨'), 7308 _Utils_Tuple2('dot', 'Ë'), 7309 _Utils_Tuple2('DotDot', 'â'), 7310 _Utils_Tuple2('doteq', 'â'), 7311 _Utils_Tuple2('doteqdot', 'â'), 7312 _Utils_Tuple2('DotEqual', 'â'), 7313 _Utils_Tuple2('dotminus', 'â¸'), 7314 _Utils_Tuple2('dotplus', 'â'), 7315 _Utils_Tuple2('dotsquare', 'â¡'), 7316 _Utils_Tuple2('doublebarwedge', 'â'), 7317 _Utils_Tuple2('DoubleContourIntegral', 'â¯'), 7318 _Utils_Tuple2('DoubleDot', '¨'), 7319 _Utils_Tuple2('DoubleDownArrow', 'â'), 7320 _Utils_Tuple2('DoubleLeftArrow', 'â'), 7321 _Utils_Tuple2('DoubleLeftRightArrow', 'â'), 7322 _Utils_Tuple2('DoubleLeftTee', '⫤'), 7323 _Utils_Tuple2('DoubleLongLeftArrow', 'â¸'), 7324 _Utils_Tuple2('DoubleLongLeftRightArrow', 'âº'), 7325 _Utils_Tuple2('DoubleLongRightArrow', 'â¹'), 7326 _Utils_Tuple2('DoubleRightArrow', 'â'), 7327 _Utils_Tuple2('DoubleRightTee', 'â¨'), 7328 _Utils_Tuple2('DoubleUpArrow', 'â'), 7329 _Utils_Tuple2('DoubleUpDownArrow', 'â'), 7330 _Utils_Tuple2('DoubleVerticalBar', 'â¥'), 7331 _Utils_Tuple2('DownArrowBar', 'â¤'), 7332 _Utils_Tuple2('downarrow', 'â'), 7333 _Utils_Tuple2('DownArrow', 'â'), 7334 _Utils_Tuple2('Downarrow', 'â'), 7335 _Utils_Tuple2('DownArrowUpArrow', 'âµ'), 7336 _Utils_Tuple2('DownBreve', 'Ì'), 7337 _Utils_Tuple2('downdownarrows', 'â'), 7338 _Utils_Tuple2('downharpoonleft', 'â'), 7339 _Utils_Tuple2('downharpoonright', 'â'), 7340 _Utils_Tuple2('DownLeftRightVector', 'â¥'), 7341 _Utils_Tuple2('DownLeftTeeVector', 'â¥'), 7342 _Utils_Tuple2('DownLeftVectorBar', 'â¥'), 7343 _Utils_Tuple2('DownLeftVector', 'â½'), 7344 _Utils_Tuple2('DownRightTeeVector', 'â¥'), 7345 _Utils_Tuple2('DownRightVectorBar', 'â¥'), 7346 _Utils_Tuple2('DownRightVector', 'â'), 7347 _Utils_Tuple2('DownTeeArrow', 'â§'), 7348 _Utils_Tuple2('DownTee', 'â¤'), 7349 _Utils_Tuple2('drbkarow', 'â¤'), 7350 _Utils_Tuple2('drcorn', 'â'), 7351 _Utils_Tuple2('drcrop', 'â'), 7352 _Utils_Tuple2('Dscr', '\uD835\uDC9F'), 7353 _Utils_Tuple2('dscr', '\uD835\uDCB9'), 7354 _Utils_Tuple2('DScy', 'Ð '), 7355 _Utils_Tuple2('dscy', 'Ñ'), 7356 _Utils_Tuple2('dsol', 'â§¶'), 7357 _Utils_Tuple2('Dstrok', 'Ä'), 7358 _Utils_Tuple2('dstrok', 'Ä'), 7359 _Utils_Tuple2('dtdot', 'â±'), 7360 _Utils_Tuple2('dtri', 'â¿'), 7361 _Utils_Tuple2('dtrif', 'â¾'), 7362 _Utils_Tuple2('duarr', 'âµ'), 7363 _Utils_Tuple2('duhar', '⥯'), 7364 _Utils_Tuple2('dwangle', '⦦'), 7365 _Utils_Tuple2('DZcy', 'Ð'), 7366 _Utils_Tuple2('dzcy', 'Ñ'), 7367 _Utils_Tuple2('dzigrarr', 'â¿'), 7368 _Utils_Tuple2('Eacute', 'Ã'), 7369 _Utils_Tuple2('eacute', 'é'), 7370 _Utils_Tuple2('easter', 'â©®'), 7371 _Utils_Tuple2('Ecaron', 'Ä'), 7372 _Utils_Tuple2('ecaron', 'Ä'), 7373 _Utils_Tuple2('Ecirc', 'Ã'), 7374 _Utils_Tuple2('ecirc', 'ê'), 7375 _Utils_Tuple2('ecir', 'â'), 7376 _Utils_Tuple2('ecolon', 'â'), 7377 _Utils_Tuple2('Ecy', 'Ð'), 7378 _Utils_Tuple2('ecy', 'Ñ'), 7379 _Utils_Tuple2('eDDot', 'â©·'), 7380 _Utils_Tuple2('Edot', 'Ä'), 7381 _Utils_Tuple2('edot', 'Ä'), 7382 _Utils_Tuple2('eDot', 'â'), 7383 _Utils_Tuple2('ee', 'â '), 7384 _Utils_Tuple2('efDot', 'â'), 7385 _Utils_Tuple2('Efr', '\uD835\uDD08'), 7386 _Utils_Tuple2('efr', '\uD835\uDD22'), 7387 _Utils_Tuple2('eg', 'âª'), 7388 _Utils_Tuple2('Egrave', 'Ã'), 7389 _Utils_Tuple2('egrave', 'è'), 7390 _Utils_Tuple2('egs', 'âª'), 7391 _Utils_Tuple2('egsdot', 'âª'), 7392 _Utils_Tuple2('el', 'âª'), 7393 _Utils_Tuple2('Element', 'â'), 7394 _Utils_Tuple2('elinters', 'â§'), 7395 _Utils_Tuple2('ell', 'â'), 7396 _Utils_Tuple2('els', 'âª'), 7397 _Utils_Tuple2('elsdot', 'âª'), 7398 _Utils_Tuple2('Emacr', 'Ä'), 7399 _Utils_Tuple2('emacr', 'Ä'), 7400 _Utils_Tuple2('empty', 'â '), 7401 _Utils_Tuple2('emptyset', 'â '), 7402 _Utils_Tuple2('EmptySmallSquare', 'â»'), 7403 _Utils_Tuple2('emptyv', 'â '), 7404 _Utils_Tuple2('EmptyVerySmallSquare', 'â«'), 7405 _Utils_Tuple2('emsp13', '\u2004'), 7406 _Utils_Tuple2('emsp14', '\u2005'), 7407 _Utils_Tuple2('emsp', '\u2003'), 7408 _Utils_Tuple2('ENG', 'Å'), 7409 _Utils_Tuple2('eng', 'Å'), 7410 _Utils_Tuple2('ensp', '\u2002'), 7411 _Utils_Tuple2('Eogon', 'Ä'), 7412 _Utils_Tuple2('eogon', 'Ä'), 7413 _Utils_Tuple2('Eopf', '\uD835\uDD3C'), 7414 _Utils_Tuple2('eopf', '\uD835\uDD56'), 7415 _Utils_Tuple2('epar', 'â'), 7416 _Utils_Tuple2('eparsl', 'â§£'), 7417 _Utils_Tuple2('eplus', '⩱'), 7418 _Utils_Tuple2('epsi', 'ε'), 7419 _Utils_Tuple2('Epsilon', 'Î'), 7420 _Utils_Tuple2('epsilon', 'ε'), 7421 _Utils_Tuple2('epsiv', 'ϵ'), 7422 _Utils_Tuple2('eqcirc', 'â'), 7423 _Utils_Tuple2('eqcolon', 'â'), 7424 _Utils_Tuple2('eqsim', 'â'), 7425 _Utils_Tuple2('eqslantgtr', 'âª'), 7426 _Utils_Tuple2('eqslantless', 'âª'), 7427 _Utils_Tuple2('Equal', '⩵'), 7428 _Utils_Tuple2('equals', '='), 7429 _Utils_Tuple2('EqualTilde', 'â'), 7430 _Utils_Tuple2('equest', 'â'), 7431 _Utils_Tuple2('Equilibrium', 'â'), 7432 _Utils_Tuple2('equiv', 'â¡'), 7433 _Utils_Tuple2('equivDD', '⩸'), 7434 _Utils_Tuple2('eqvparsl', 'â§¥'), 7435 _Utils_Tuple2('erarr', '⥱'), 7436 _Utils_Tuple2('erDot', 'â'), 7437 _Utils_Tuple2('escr', 'â¯'), 7438 _Utils_Tuple2('Escr', 'â°'), 7439 _Utils_Tuple2('esdot', 'â'), 7440 _Utils_Tuple2('Esim', '⩳'), 7441 _Utils_Tuple2('esim', 'â'), 7442 _Utils_Tuple2('Eta', 'Î'), 7443 _Utils_Tuple2('eta', 'η'), 7444 _Utils_Tuple2('ETH', 'Ã'), 7445 _Utils_Tuple2('eth', 'ð'), 7446 _Utils_Tuple2('Euml', 'Ã'), 7447 _Utils_Tuple2('euml', 'ë'), 7448 _Utils_Tuple2('euro', 'â¬'), 7449 _Utils_Tuple2('excl', '!'), 7450 _Utils_Tuple2('exist', 'â'), 7451 _Utils_Tuple2('Exists', 'â'), 7452 _Utils_Tuple2('expectation', 'â°'), 7453 _Utils_Tuple2('exponentiale', 'â '), 7454 _Utils_Tuple2('ExponentialE', 'â '), 7455 _Utils_Tuple2('fallingdotseq', 'â'), 7456 _Utils_Tuple2('Fcy', 'Ф'), 7457 _Utils_Tuple2('fcy', 'Ñ'), 7458 _Utils_Tuple2('female', 'â'), 7459 _Utils_Tuple2('ffilig', 'ï¬'), 7460 _Utils_Tuple2('fflig', 'ï¬'), 7461 _Utils_Tuple2('ffllig', 'ï¬'),
7462 _Utils_Tuple2('Ffr', '\uD835\uDD09'), 7463 _Utils_Tuple2('ffr', '\uD835\uDD23'), 7464 _Utils_Tuple2('filig', 'ï¬'), 7465 _Utils_Tuple2('FilledSmallSquare', 'â¼'), 7466 _Utils_Tuple2('FilledVerySmallSquare', 'âª'), 7467 _Utils_Tuple2('fjlig', 'fj'), 7468 _Utils_Tuple2('flat', 'â'), 7469 _Utils_Tuple2('fllig', 'ï¬'), 7470 _Utils_Tuple2('fltns', 'â±'), 7471 _Utils_Tuple2('fnof', 'Æ'), 7472 _Utils_Tuple2('Fopf', '\uD835\uDD3D'), 7473 _Utils_Tuple2('fopf', '\uD835\uDD57'), 7474 _Utils_Tuple2('forall', 'â'), 7475 _Utils_Tuple2('ForAll', 'â'), 7476 _Utils_Tuple2('fork', 'â'), 7477 _Utils_Tuple2('forkv', 'â«'), 7478 _Utils_Tuple2('Fouriertrf', 'â±'), 7479 _Utils_Tuple2('fpartint', 'â¨'), 7480 _Utils_Tuple2('frac12', '½'), 7481 _Utils_Tuple2('frac13', 'â '), 7482 _Utils_Tuple2('frac14', '¼'), 7483 _Utils_Tuple2('frac15', 'â '), 7484 _Utils_Tuple2('frac16', 'â '), 7485 _Utils_Tuple2('frac18', 'â '), 7486 _Utils_Tuple2('frac23', 'â '), 7487 _Utils_Tuple2('frac25', 'â '), 7488 _Utils_Tuple2('frac34', '¾'), 7489 _Utils_Tuple2('frac35', 'â '), 7490 _Utils_Tuple2('frac38', 'â '), 7491 _Utils_Tuple2('frac45', 'â '), 7492 _Utils_Tuple2('frac56', 'â '), 7493 _Utils_Tuple2('frac58', 'â '), 7494 _Utils_Tuple2('frac78', 'â '), 7495 _Utils_Tuple2('frasl', 'â'), 7496 _Utils_Tuple2('frown', 'â¢'), 7497 _Utils_Tuple2('fscr', '\uD835\uDCBB'), 7498 _Utils_Tuple2('Fscr', 'â±'), 7499 _Utils_Tuple2('gacute', 'ǵ'), 7500 _Utils_Tuple2('Gamma', 'Î'), 7501 _Utils_Tuple2('gamma', 'γ'), 7502 _Utils_Tuple2('Gammad', 'Ï'), 7503 _Utils_Tuple2('gammad', 'Ï'), 7504 _Utils_Tuple2('gap', 'âª'), 7505 _Utils_Tuple2('Gbreve', 'Ä'), 7506 _Utils_Tuple2('gbreve', 'Ä'), 7507 _Utils_Tuple2('Gcedil', 'Ä¢'), 7508 _Utils_Tuple2('Gcirc', 'Ä'), 7509 _Utils_Tuple2('gcirc', 'Ä'), 7510 _Utils_Tuple2('Gcy', 'Ð'), 7511 _Utils_Tuple2('gcy', 'г'), 7512 _Utils_Tuple2('Gdot', 'Ä '), 7513 _Utils_Tuple2('gdot', 'Ä¡'), 7514 _Utils_Tuple2('ge', 'â¥'), 7515 _Utils_Tuple2('gE', 'â§'), 7516 _Utils_Tuple2('gEl', 'âª'), 7517 _Utils_Tuple2('gel', 'â'), 7518 _Utils_Tuple2('geq', 'â¥'), 7519 _Utils_Tuple2('geqq', 'â§'), 7520 _Utils_Tuple2('geqslant', '⩾'), 7521 _Utils_Tuple2('gescc', '⪩'), 7522 _Utils_Tuple2('ges', '⩾'), 7523 _Utils_Tuple2('gesdot', 'âª'), 7524 _Utils_Tuple2('gesdoto', 'âª'), 7525 _Utils_Tuple2('gesdotol', 'âª'), 7526 _Utils_Tuple2('gesl', 'âï¸'), 7527 _Utils_Tuple2('gesles', 'âª'), 7528 _Utils_Tuple2('Gfr', '\uD835\uDD0A'), 7529 _Utils_Tuple2('gfr', '\uD835\uDD24'), 7530 _Utils_Tuple2('gg', 'â«'), 7531 _Utils_Tuple2('Gg', 'â'), 7532 _Utils_Tuple2('ggg', 'â'), 7533 _Utils_Tuple2('gimel', 'â·'), 7534 _Utils_Tuple2('GJcy', 'Ð'), 7535 _Utils_Tuple2('gjcy', 'Ñ'), 7536 _Utils_Tuple2('gla', '⪥'), 7537 _Utils_Tuple2('gl', 'â·'), 7538 _Utils_Tuple2('glE', 'âª'), 7539 _Utils_Tuple2('glj', '⪤'), 7540 _Utils_Tuple2('gnap', 'âª'), 7541 _Utils_Tuple2('gnapprox', 'âª'), 7542 _Utils_Tuple2('gne', 'âª'), 7543 _Utils_Tuple2('gnE', 'â©'), 7544 _Utils_Tuple2('gneq', 'âª'), 7545 _Utils_Tuple2('gneqq', 'â©'), 7546 _Utils_Tuple2('gnsim', 'â§'), 7547 _Utils_Tuple2('Gopf', '\uD835\uDD3E'), 7548 _Utils_Tuple2('gopf', '\uD835\uDD58'), 7549 _Utils_Tuple2('grave', '`'), 7550 _Utils_Tuple2('GreaterEqual', 'â¥'), 7551 _Utils_Tuple2('GreaterEqualLess', 'â'), 7552 _Utils_Tuple2('GreaterFullEqual', 'â§'), 7553 _Utils_Tuple2('GreaterGreater', '⪢'), 7554 _Utils_Tuple2('GreaterLess', 'â·'), 7555 _Utils_Tuple2('GreaterSlantEqual', '⩾'), 7556 _Utils_Tuple2('GreaterTilde', 'â³'), 7557 _Utils_Tuple2('Gscr', '\uD835\uDCA2'), 7558 _Utils_Tuple2('gscr', 'â'), 7559 _Utils_Tuple2('gsim', 'â³'), 7560 _Utils_Tuple2('gsime', 'âª'), 7561 _Utils_Tuple2('gsiml', 'âª'), 7562 _Utils_Tuple2('gtcc', '⪧'), 7563 _Utils_Tuple2('gtcir', '⩺'), 7564 _Utils_Tuple2('gt', '>'), 7565 _Utils_Tuple2('GT', '>'), 7566 _Utils_Tuple2('Gt', 'â«'), 7567 _Utils_Tuple2('gtdot', 'â'), 7568 _Utils_Tuple2('gtlPar', 'â¦'), 7569 _Utils_Tuple2('gtquest', '⩼'), 7570 _Utils_Tuple2('gtrapprox', 'âª'), 7571 _Utils_Tuple2('gtrarr', '⥸'), 7572 _Utils_Tuple2('gtrdot', 'â'), 7573 _Utils_Tuple2('gtreqless', 'â'), 7574 _Utils_Tuple2('gtreqqless', 'âª'), 7575 _Utils_Tuple2('gtrless', 'â·'), 7576 _Utils_Tuple2('gtrsim', 'â³'), 7577 _Utils_Tuple2('gvertneqq', 'â©ï¸'), 7578 _Utils_Tuple2('gvnE', 'â©ï¸'), 7579 _Utils_Tuple2('Hacek', 'Ë'), 7580 _Utils_Tuple2('hairsp', '\u200A'), 7581 _Utils_Tuple2('half', '½'), 7582 _Utils_Tuple2('hamilt', 'â'), 7583 _Utils_Tuple2('HARDcy', 'Ъ'), 7584 _Utils_Tuple2('hardcy', 'Ñ'), 7585 _Utils_Tuple2('harrcir', 'â¥'), 7586 _Utils_Tuple2('harr', 'â'), 7587 _Utils_Tuple2('hArr', 'â'), 7588 _Utils_Tuple2('harrw', 'â'), 7589 _Utils_Tuple2('Hat', '^'), 7590 _Utils_Tuple2('hbar', 'â'), 7591 _Utils_Tuple2('Hcirc', 'Ĥ'), 7592 _Utils_Tuple2('hcirc', 'Ä¥'), 7593 _Utils_Tuple2('hearts', 'â¥'), 7594 _Utils_Tuple2('heartsuit', 'â¥'), 7595 _Utils_Tuple2('hellip', 'â¦'), 7596 _Utils_Tuple2('hercon', 'â¹'), 7597 _Utils_Tuple2('hfr', '\uD835\uDD25'), 7598 _Utils_Tuple2('Hfr', 'â'), 7599 _Utils_Tuple2('HilbertSpace', 'â'), 7600 _Utils_Tuple2('hksearow', '⤥'), 7601 _Utils_Tuple2('hkswarow', '⤦'), 7602 _Utils_Tuple2('hoarr', 'â¿'), 7603 _Utils_Tuple2('homtht', 'â»'), 7604 _Utils_Tuple2('hookleftarrow', 'â©'), 7605 _Utils_Tuple2('hookrightarrow', 'âª'), 7606 _Utils_Tuple2('hopf', '\uD835\uDD59'), 7607 _Utils_Tuple2('Hopf', 'â'), 7608 _Utils_Tuple2('horbar', 'â'), 7609 _Utils_Tuple2('HorizontalLine', 'â'), 7610 _Utils_Tuple2('hscr', '\uD835\uDCBD'), 7611 _Utils_Tuple2('Hscr', 'â'), 7612 _Utils_Tuple2('hslash', 'â'), 7613 _Utils_Tuple2('Hstrok', 'Ħ'), 7614 _Utils_Tuple2('hstrok', 'ħ'), 7615 _Utils_Tuple2('HumpDownHump', 'â'), 7616 _Utils_Tuple2('HumpEqual', 'â'), 7617 _Utils_Tuple2('hybull', 'â'), 7618 _Utils_Tuple2('hyphen', 'â'), 7619 _Utils_Tuple2('Iacute', 'Ã'), 7620 _Utils_Tuple2('iacute', 'Ã'), 7621 _Utils_Tuple2('ic', '\u2063'), 7622 _Utils_Tuple2('Icirc', 'Ã'), 7623 _Utils_Tuple2('icirc', 'î'), 7624 _Utils_Tuple2('Icy', 'Ð'), 7625 _Utils_Tuple2('icy', 'и'), 7626 _Utils_Tuple2('Idot', 'İ'), 7627 _Utils_Tuple2('IEcy', 'Ð'), 7628 _Utils_Tuple2('iecy', 'е'), 7629 _Utils_Tuple2('iexcl', '¡'), 7630 _Utils_Tuple2('iff', 'â'), 7631 _Utils_Tuple2('ifr', '\uD835\uDD26'), 7632 _Utils_Tuple2('Ifr', 'â'), 7633 _Utils_Tuple2('Igrave', 'Ã'), 7634 _Utils_Tuple2('igrave', 'ì'), 7635 _Utils_Tuple2('ii', 'â '), 7636 _Utils_Tuple2('iiiint', 'â¨'), 7637 _Utils_Tuple2('iiint', 'â'), 7638 _Utils_Tuple2('iinfin', 'â§'), 7639 _Utils_Tuple2('iiota', 'â©'), 7640 _Utils_Tuple2('IJlig', 'IJ'), 7641 _Utils_Tuple2('ijlig', 'ij'), 7642 _Utils_Tuple2('Imacr', 'Ī'), 7643 _Utils_Tuple2('imacr', 'Ä«'), 7644 _Utils_Tuple2('image', 'â'), 7645 _Utils_Tuple2('ImaginaryI', 'â '), 7646 _Utils_Tuple2('imagline', 'â'), 7647 _Utils_Tuple2('imagpart', 'â'), 7648 _Utils_Tuple2('imath', 'ı'), 7649 _Utils_Tuple2('Im', 'â'), 7650 _Utils_Tuple2('imof', 'â·'), 7651 _Utils_Tuple2('imped', 'Ƶ'), 7652 _Utils_Tuple2('Implies', 'â'), 7653 _Utils_Tuple2('incare', 'â '), 7654 _Utils_Tuple2('in', 'â'), 7655 _Utils_Tuple2('infin', 'â'), 7656 _Utils_Tuple2('infintie', 'â§'), 7657 _Utils_Tuple2('inodot', 'ı'), 7658 _Utils_Tuple2('intcal', 'âº'), 7659 _Utils_Tuple2('int', 'â«'), 7660 _Utils_Tuple2('Int', 'â¬'), 7661 _Utils_Tuple2('integers', 'â¤'), 7662 _Utils_Tuple2('Integral', 'â«'), 7663 _Utils_Tuple2('intercal', 'âº'), 7664 _Utils_Tuple2('Intersection', 'â'),
7665 _Utils_Tuple2('intlarhk', 'â¨'), 7666 _Utils_Tuple2('intprod', '⨼'), 7667 _Utils_Tuple2('InvisibleComma', '\u2063'), 7668 _Utils_Tuple2('InvisibleTimes', '\u2062'), 7669 _Utils_Tuple2('IOcy', 'Ð'), 7670 _Utils_Tuple2('iocy', 'Ñ'), 7671 _Utils_Tuple2('Iogon', 'Ä®'), 7672 _Utils_Tuple2('iogon', 'į'), 7673 _Utils_Tuple2('Iopf', '\uD835\uDD40'), 7674 _Utils_Tuple2('iopf', '\uD835\uDD5A'), 7675 _Utils_Tuple2('Iota', 'Î'), 7676 _Utils_Tuple2('iota', 'ι'), 7677 _Utils_Tuple2('iprod', '⨼'), 7678 _Utils_Tuple2('iquest', '¿'), 7679 _Utils_Tuple2('iscr', '\uD835\uDCBE'), 7680 _Utils_Tuple2('Iscr', 'â'), 7681 _Utils_Tuple2('isin', 'â'), 7682 _Utils_Tuple2('isindot', 'âµ'), 7683 _Utils_Tuple2('isinE', 'â¹'), 7684 _Utils_Tuple2('isins', 'â´'), 7685 _Utils_Tuple2('isinsv', 'â³'), 7686 _Utils_Tuple2('isinv', 'â'), 7687 _Utils_Tuple2('it', '\u2062'), 7688 _Utils_Tuple2('Itilde', 'Ĩ'), 7689 _Utils_Tuple2('itilde', 'Ä©'), 7690 _Utils_Tuple2('Iukcy', 'Ð'), 7691 _Utils_Tuple2('iukcy', 'Ñ'), 7692 _Utils_Tuple2('Iuml', 'Ã'), 7693 _Utils_Tuple2('iuml', 'ï'), 7694 _Utils_Tuple2('Jcirc', 'Ä´'), 7695 _Utils_Tuple2('jcirc', 'ĵ'), 7696 _Utils_Tuple2('Jcy', 'Ð'), 7697 _Utils_Tuple2('jcy', 'й'), 7698 _Utils_Tuple2('Jfr', '\uD835\uDD0D'), 7699 _Utils_Tuple2('jfr', '\uD835\uDD27'), 7700 _Utils_Tuple2('jmath', 'È·'), 7701 _Utils_Tuple2('Jopf', '\uD835\uDD41'), 7702 _Utils_Tuple2('jopf', '\uD835\uDD5B'), 7703 _Utils_Tuple2('Jscr', '\uD835\uDCA5'), 7704 _Utils_Tuple2('jscr', '\uD835\uDCBF'), 7705 _Utils_Tuple2('Jsercy', 'Ð'), 7706 _Utils_Tuple2('jsercy', 'Ñ'), 7707 _Utils_Tuple2('Jukcy', 'Ð'), 7708 _Utils_Tuple2('jukcy', 'Ñ'), 7709 _Utils_Tuple2('Kappa', 'Î'), 7710 _Utils_Tuple2('kappa', 'κ'), 7711 _Utils_Tuple2('kappav', 'ϰ'), 7712 _Utils_Tuple2('Kcedil', 'Ķ'), 7713 _Utils_Tuple2('kcedil', 'Ä·'), 7714 _Utils_Tuple2('Kcy', 'Ð'), 7715 _Utils_Tuple2('kcy', 'к'), 7716 _Utils_Tuple2('Kfr', '\uD835\uDD0E'), 7717 _Utils_Tuple2('kfr', '\uD835\uDD28'), 7718 _Utils_Tuple2('kgreen', 'ĸ'), 7719 _Utils_Tuple2('KHcy', 'Ð¥'), 7720 _Utils_Tuple2('khcy', 'Ñ '), 7721 _Utils_Tuple2('KJcy', 'Ð'), 7722 _Utils_Tuple2('kjcy', 'Ñ'), 7723 _Utils_Tuple2('Kopf', '\uD835\uDD42'), 7724 _Utils_Tuple2('kopf', '\uD835\uDD5C'), 7725 _Utils_Tuple2('Kscr', '\uD835\uDCA6'), 7726 _Utils_Tuple2('kscr', '\uD835\uDCC0'), 7727 _Utils_Tuple2('lAarr', 'â'), 7728 _Utils_Tuple2('Lacute', 'Ĺ'), 7729 _Utils_Tuple2('lacute', 'ĺ'), 7730 _Utils_Tuple2('laemptyv', '⦴'), 7731 _Utils_Tuple2('lagran', 'â'), 7732 _Utils_Tuple2('Lambda', 'Î'), 7733 _Utils_Tuple2('lambda', 'λ'), 7734 _Utils_Tuple2('lang', 'â¨'), 7735 _Utils_Tuple2('Lang', 'âª'), 7736 _Utils_Tuple2('langd', 'â¦'), 7737 _Utils_Tuple2('langle', 'â¨'), 7738 _Utils_Tuple2('lap', '⪠'), 7739 _Utils_Tuple2('Laplacetrf', 'â'), 7740 _Utils_Tuple2('laquo', '«'), 7741 _Utils_Tuple2('larrb', 'â¤'), 7742 _Utils_Tuple2('larrbfs', 'â¤'), 7743 _Utils_Tuple2('larr', 'â'), 7744 _Utils_Tuple2('Larr', 'â'), 7745 _Utils_Tuple2('lArr', 'â'), 7746 _Utils_Tuple2('larrfs', 'â¤'), 7747 _Utils_Tuple2('larrhk', 'â©'), 7748 _Utils_Tuple2('larrlp', 'â«'), 7749 _Utils_Tuple2('larrpl', '⤹'), 7750 _Utils_Tuple2('larrsim', '⥳'), 7751 _Utils_Tuple2('larrtl', 'â¢'), 7752 _Utils_Tuple2('latail', 'â¤'), 7753 _Utils_Tuple2('lAtail', 'â¤'), 7754 _Utils_Tuple2('lat', '⪫'), 7755 _Utils_Tuple2('late', 'âª'), 7756 _Utils_Tuple2('lates', 'âªï¸'), 7757 _Utils_Tuple2('lbarr', 'â¤'), 7758 _Utils_Tuple2('lBarr', 'â¤'), 7759 _Utils_Tuple2('lbbrk', 'â²'), 7760 _Utils_Tuple2('lbrace', '{'), 7761 _Utils_Tuple2('lbrack', '['), 7762 _Utils_Tuple2('lbrke', 'â¦'), 7763 _Utils_Tuple2('lbrksld', 'â¦'), 7764 _Utils_Tuple2('lbrkslu', 'â¦'), 7765 _Utils_Tuple2('Lcaron', 'Ľ'), 7766 _Utils_Tuple2('lcaron', 'ľ'), 7767 _Utils_Tuple2('Lcedil', 'Ä»'), 7768 _Utils_Tuple2('lcedil', 'ļ'), 7769 _Utils_Tuple2('lceil', 'â'), 7770 _Utils_Tuple2('lcub', '{'), 7771 _Utils_Tuple2('Lcy', 'Ð'), 7772 _Utils_Tuple2('lcy', 'л'), 7773 _Utils_Tuple2('ldca', '⤶'), 7774 _Utils_Tuple2('ldquo', 'â'), 7775 _Utils_Tuple2('ldquor', 'â'), 7776 _Utils_Tuple2('ldrdhar', '⥧'), 7777 _Utils_Tuple2('ldrushar', 'â¥'), 7778 _Utils_Tuple2('ldsh', 'â²'), 7779 _Utils_Tuple2('le', 'â¤'), 7780 _Utils_Tuple2('lE', 'â¦'), 7781 _Utils_Tuple2('LeftAngleBracket', 'â¨'), 7782 _Utils_Tuple2('LeftArrowBar', 'â¤'), 7783 _Utils_Tuple2('leftarrow', 'â'), 7784 _Utils_Tuple2('LeftArrow', 'â'), 7785 _Utils_Tuple2('Leftarrow', 'â'), 7786 _Utils_Tuple2('LeftArrowRightArrow', 'â'), 7787 _Utils_Tuple2('leftarrowtail', 'â¢'), 7788 _Utils_Tuple2('LeftCeiling', 'â'), 7789 _Utils_Tuple2('LeftDoubleBracket', 'â¦'), 7790 _Utils_Tuple2('LeftDownTeeVector', '⥡'), 7791 _Utils_Tuple2('LeftDownVectorBar', 'â¥'), 7792 _Utils_Tuple2('LeftDownVector', 'â'), 7793 _Utils_Tuple2('LeftFloor', 'â'), 7794 _Utils_Tuple2('leftharpoondown', 'â½'),
7795 _Utils_Tuple2('leftharpoonup', 'â¼'), 7796 _Utils_Tuple2('leftleftarrows', 'â'), 7797 _Utils_Tuple2('leftrightarrow', 'â'), 7798 _Utils_Tuple2('LeftRightArrow', 'â'), 7799 _Utils_Tuple2('Leftrightarrow', 'â'), 7800 _Utils_Tuple2('leftrightarrows', 'â'), 7801 _Utils_Tuple2('leftrightharpoons', 'â'), 7802 _Utils_Tuple2('leftrightsquigarrow', 'â'), 7803 _Utils_Tuple2('LeftRightVector', 'â¥'), 7804 _Utils_Tuple2('LeftTeeArrow', 'â¤'), 7805 _Utils_Tuple2('LeftTee', 'â£'), 7806 _Utils_Tuple2('LeftTeeVector', 'â¥'), 7807 _Utils_Tuple2('leftthreetimes', 'â'), 7808 _Utils_Tuple2('LeftTriangleBar', 'â§'), 7809 _Utils_Tuple2('LeftTriangle', 'â²'), 7810 _Utils_Tuple2('LeftTriangleEqual', 'â´'), 7811 _Utils_Tuple2('LeftUpDownVector', 'â¥'), 7812 _Utils_Tuple2('LeftUpTeeVector', '⥠'), 7813 _Utils_Tuple2('LeftUpVectorBar', 'â¥'), 7814 _Utils_Tuple2('LeftUpVector', 'â¿'), 7815 _Utils_Tuple2('LeftVectorBar', 'â¥'), 7816 _Utils_Tuple2('LeftVector', 'â¼'), 7817 _Utils_Tuple2('lEg', 'âª'), 7818 _Utils_Tuple2('leg', 'â'), 7819 _Utils_Tuple2('leq', 'â¤'), 7820 _Utils_Tuple2('leqq', 'â¦'), 7821 _Utils_Tuple2('leqslant', '⩽'), 7822 _Utils_Tuple2('lescc', '⪨'), 7823 _Utils_Tuple2('les', '⩽'), 7824 _Utils_Tuple2('lesdot', 'â©¿'), 7825 _Utils_Tuple2('lesdoto', 'âª'), 7826 _Utils_Tuple2('lesdotor', 'âª'), 7827 _Utils_Tuple2('lesg', 'âï¸'), 7828 _Utils_Tuple2('lesges', 'âª'), 7829 _Utils_Tuple2('lessapprox', '⪠'), 7830 _Utils_Tuple2('lessdot', 'â'), 7831 _Utils_Tuple2('lesseqgtr', 'â'), 7832 _Utils_Tuple2('lesseqqgtr', 'âª'), 7833 _Utils_Tuple2('LessEqualGreater', 'â'), 7834 _Utils_Tuple2('LessFullEqual', 'â¦'), 7835 _Utils_Tuple2('LessGreater', 'â¶'), 7836 _Utils_Tuple2('lessgtr', 'â¶'), 7837 _Utils_Tuple2('LessLess', '⪡'), 7838 _Utils_Tuple2('lesssim', 'â²'), 7839 _Utils_Tuple2('LessSlantEqual', '⩽'), 7840 _Utils_Tuple2('LessTilde', 'â²'), 7841 _Utils_Tuple2('lfisht', '⥼'), 7842 _Utils_Tuple2('lfloor', 'â'), 7843 _Utils_Tuple2('Lfr', '\uD835\uDD0F'), 7844 _Utils_Tuple2('lfr', '\uD835\uDD29'), 7845 _Utils_Tuple2('lg', 'â¶'), 7846 _Utils_Tuple2('lgE', 'âª'), 7847 _Utils_Tuple2('lHar', '⥢'), 7848 _Utils_Tuple2('lhard', 'â½'), 7849 _Utils_Tuple2('lharu', 'â¼'), 7850 _Utils_Tuple2('lharul', '⥪'), 7851 _Utils_Tuple2('lhblk', 'â'), 7852 _Utils_Tuple2('LJcy', 'Ð'), 7853 _Utils_Tuple2('ljcy', 'Ñ'), 7854 _Utils_Tuple2('llarr', 'â'), 7855 _Utils_Tuple2('ll', 'âª'), 7856 _Utils_Tuple2('Ll', 'â'), 7857 _Utils_Tuple2('llcorner', 'â'), 7858 _Utils_Tuple2('Lleftarrow', 'â'), 7859 _Utils_Tuple2('llhard', '⥫'), 7860 _Utils_Tuple2('lltri', 'âº'), 7861 _Utils_Tuple2('Lmidot', 'Ä¿'), 7862 _Utils_Tuple2('lmidot', 'Å'), 7863 _Utils_Tuple2('lmoustache', 'â°'), 7864 _Utils_Tuple2('lmoust', 'â°'), 7865 _Utils_Tuple2('lnap', 'âª'), 7866 _Utils_Tuple2('lnapprox', 'âª'), 7867 _Utils_Tuple2('lne', 'âª'), 7868 _Utils_Tuple2('lnE', 'â¨'), 7869 _Utils_Tuple2('lneq', 'âª'), 7870 _Utils_Tuple2('lneqq', 'â¨'), 7871 _Utils_Tuple2('lnsim', 'â¦'), 7872 _Utils_Tuple2('loang', 'â¬'), 7873 _Utils_Tuple2('loarr', 'â½'), 7874 _Utils_Tuple2('lobrk', 'â¦'), 7875 _Utils_Tuple2('longleftarrow', 'âµ'), 7876 _Utils_Tuple2('LongLeftArrow', 'âµ'), 7877 _Utils_Tuple2('Longleftarrow', 'â¸'), 7878 _Utils_Tuple2('longleftrightarrow', 'â·'), 7879 _Utils_Tuple2('LongLeftRightArrow', 'â·'), 7880 _Utils_Tuple2('Longleftrightarrow', 'âº'), 7881 _Utils_Tuple2('longmapsto', 'â¼'), 7882 _Utils_Tuple2('longrightarrow', 'â¶'), 7883 _Utils_Tuple2('LongRightArrow', 'â¶'), 7884 _Utils_Tuple2('Longrightarrow', 'â¹'), 7885 _Utils_Tuple2('looparrowleft', 'â«'), 7886 _Utils_Tuple2('looparrowright', 'â¬'), 7887 _Utils_Tuple2('lopar', '⦠'), 7888 _Utils_Tuple2('Lopf', '\uD835\uDD43'), 7889 _Utils_Tuple2('lopf', '\uD835\uDD5D'), 7890 _Utils_Tuple2('loplus', 'â¨'), 7891 _Utils_Tuple2('lotimes', '⨴'), 7892 _Utils_Tuple2('lowast', 'â'), 7893 _Utils_Tuple2('lowbar', '_'), 7894 _Utils_Tuple2('LowerLeftArrow', 'â'), 7895 _Utils_Tuple2('LowerRightArrow', 'â'), 7896 _Utils_Tuple2('loz', 'â'), 7897 _Utils_Tuple2('lozenge', 'â'), 7898 _Utils_Tuple2('lozf', 'â§«'), 7899 _Utils_Tuple2('lpar', '('), 7900 _Utils_Tuple2('lparlt', 'â¦'), 7901 _Utils_Tuple2('lrarr', 'â'), 7902 _Utils_Tuple2('lrcorner', 'â'), 7903 _Utils_Tuple2('lrhar', 'â'), 7904 _Utils_Tuple2('lrhard', 'â¥'), 7905 _Utils_Tuple2('lrm', '\u200E'), 7906 _Utils_Tuple2('lrtri', 'â¿'), 7907 _Utils_Tuple2('lsaquo', 'â¹'), 7908 _Utils_Tuple2('lscr', '\uD835\uDCC1'), 7909 _Utils_Tuple2('Lscr', 'â'), 7910 _Utils_Tuple2('lsh', 'â°'), 7911 _Utils_Tuple2('Lsh', 'â°'), 7912 _Utils_Tuple2('lsim', 'â²'), 7913 _Utils_Tuple2('lsime', 'âª'), 7914 _Utils_Tuple2('lsimg', 'âª'), 7915 _Utils_Tuple2('lsqb', '['), 7916 _Utils_Tuple2('lsquo', 'â'), 7917 _Utils_Tuple2('lsquor', 'â'), 7918 _Utils_Tuple2('Lstrok', 'Å'), 7919 _Utils_Tuple2('lstrok', 'Å'), 7920 _Utils_Tuple2('ltcc', '⪦'), 7921 _Utils_Tuple2('ltcir', '⩹'), 7922 _Utils_Tuple2('lt', '<'), 7923 _Utils_Tuple2('LT', '<'), 7924 _Utils_Tuple2('Lt', 'âª'), 7925 _Utils_Tuple2('ltdot', 'â'), 7926 _Utils_Tuple2('lthree', 'â'), 7927 _Utils_Tuple2('ltimes', 'â'), 7928 _Utils_Tuple2('ltlarr', '⥶'), 7929 _Utils_Tuple2('ltquest', 'â©»'), 7930 _Utils_Tuple2('ltri', 'â'), 7931 _Utils_Tuple2('ltrie', 'â´'), 7932 _Utils_Tuple2('ltrif', 'â'), 7933 _Utils_Tuple2('ltrPar', 'â¦'), 7934 _Utils_Tuple2('lurdshar', 'â¥'), 7935 _Utils_Tuple2('luruhar', '⥦'), 7936 _Utils_Tuple2('lvertneqq', 'â¨ï¸'), 7937 _Utils_Tuple2('lvnE', 'â¨ï¸'), 7938 _Utils_Tuple2('macr', '¯'), 7939 _Utils_Tuple2('male', 'â'), 7940 _Utils_Tuple2('malt', 'â '), 7941 _Utils_Tuple2('maltese', 'â '), 7942 _Utils_Tuple2('Map', '⤠'), 7943 _Utils_Tuple2('map', 'â¦'), 7944 _Utils_Tuple2('mapsto', 'â¦'), 7945 _Utils_Tuple2('mapstodown', 'â§'), 7946 _Utils_Tuple2('mapstoleft', 'â¤'),
7947 _Utils_Tuple2('mapstoup', 'â¥'), 7948 _Utils_Tuple2('marker', 'â®'), 7949 _Utils_Tuple2('mcomma', '⨩'), 7950 _Utils_Tuple2('Mcy', 'Ð'), 7951 _Utils_Tuple2('mcy', 'м'), 7952 _Utils_Tuple2('mdash', 'â'), 7953 _Utils_Tuple2('mDDot', 'âº'), 7954 _Utils_Tuple2('measuredangle', 'â¡'), 7955 _Utils_Tuple2('MediumSpace', '\u205F'), 7956 _Utils_Tuple2('Mellintrf', 'â³'), 7957 _Utils_Tuple2('Mfr', '\uD835\uDD10'), 7958 _Utils_Tuple2('mfr', '\uD835\uDD2A'), 7959 _Utils_Tuple2('mho', 'â§'), 7960 _Utils_Tuple2('micro', 'µ'), 7961 _Utils_Tuple2('midast', '*'), 7962 _Utils_Tuple2('midcir', 'â«°'), 7963 _Utils_Tuple2('mid', 'â£'), 7964 _Utils_Tuple2('middot', '·'), 7965 _Utils_Tuple2('minusb', 'â'), 7966 _Utils_Tuple2('minus', 'â'), 7967 _Utils_Tuple2('minusd', 'â¸'), 7968 _Utils_Tuple2('minusdu', '⨪'), 7969 _Utils_Tuple2('MinusPlus', 'â'), 7970 _Utils_Tuple2('mlcp', 'â«'), 7971 _Utils_Tuple2('mldr', 'â¦'), 7972 _Utils_Tuple2('mnplus', 'â'), 7973 _Utils_Tuple2('models', 'â§'), 7974 _Utils_Tuple2('Mopf', '\uD835\uDD44'), 7975 _Utils_Tuple2('mopf', '\uD835\uDD5E'), 7976 _Utils_Tuple2('mp', 'â'), 7977 _Utils_Tuple2('mscr', '\uD835\uDCC2'), 7978 _Utils_Tuple2('Mscr', 'â³'), 7979 _Utils_Tuple2('mstpos', 'â¾'), 7980 _Utils_Tuple2('Mu', 'Î'), 7981 _Utils_Tuple2('mu', 'μ'), 7982 _Utils_Tuple2('multimap', 'â¸'), 7983 _Utils_Tuple2('mumap', 'â¸'), 7984 _Utils_Tuple2('nabla', 'â'), 7985 _Utils_Tuple2('Nacute', 'Å'), 7986 _Utils_Tuple2('nacute', 'Å'), 7987 _Utils_Tuple2('nang', 'â â'), 7988 _Utils_Tuple2('nap', 'â'), 7989 _Utils_Tuple2('napE', '⩰̸'), 7990 _Utils_Tuple2('napid', 'â̸'), 7991 _Utils_Tuple2('napos', 'Å'), 7992 _Utils_Tuple2('napprox', 'â'), 7993 _Utils_Tuple2('natural', 'â®'), 7994 _Utils_Tuple2('naturals', 'â'), 7995 _Utils_Tuple2('natur', 'â®'), 7996 _Utils_Tuple2('nbsp', '\u00A0'), 7997 _Utils_Tuple2('nbump', 'â̸'), 7998 _Utils_Tuple2('nbumpe', 'â̸'), 7999 _Utils_Tuple2('ncap', 'â©'), 8000 _Utils_Tuple2('Ncaron', 'Å'), 8001 _Utils_Tuple2('ncaron', 'Å'), 8002 _Utils_Tuple2('Ncedil', 'Å '), 8003 _Utils_Tuple2('ncedil', 'Å'), 8004 _Utils_Tuple2('ncong', 'â'), 8005 _Utils_Tuple2('ncongdot', 'â©Ì¸'), 8006 _Utils_Tuple2('ncup', 'â©'), 8007 _Utils_Tuple2('Ncy', 'Ð'), 8008 _Utils_Tuple2('ncy', 'н'), 8009 _Utils_Tuple2('ndash', 'â'), 8010 _Utils_Tuple2('nearhk', '⤤'), 8011 _Utils_Tuple2('nearr', 'â'), 8012 _Utils_Tuple2('neArr', 'â'), 8013 _Utils_Tuple2('nearrow', 'â'), 8014 _Utils_Tuple2('ne', 'â '), 8015 _Utils_Tuple2('nedot', 'â̸'), 8016 _Utils_Tuple2('NegativeMediumSpace', '\u200B'), 8017 _Utils_Tuple2('NegativeThickSpace', '\u200B'), 8018 _Utils_Tuple2('NegativeThinSpace', '\u200B'), 8019 _Utils_Tuple2('NegativeVeryThinSpace', '\u200B'), 8020 _Utils_Tuple2('nequiv', 'â¢'), 8021 _Utils_Tuple2('nesear', '⤨'), 8022 _Utils_Tuple2('nesim', 'â̸'), 8023 _Utils_Tuple2('NestedGreaterGreater', 'â«'), 8024 _Utils_Tuple2('NestedLessLess', 'âª'), 8025 _Utils_Tuple2('NewLine', '\n'), 8026 _Utils_Tuple2('nexist', 'â'), 8027 _Utils_Tuple2('nexists', 'â'), 8028 _Utils_Tuple2('Nfr', '\uD835\uDD11'), 8029 _Utils_Tuple2('nfr', '\uD835\uDD2B'), 8030 _Utils_Tuple2('ngE', 'â§Ì¸'), 8031 _Utils_Tuple2('nge', 'â±'), 8032 _Utils_Tuple2('ngeq', 'â±'), 8033 _Utils_Tuple2('ngeqq', 'â§Ì¸'), 8034 _Utils_Tuple2('ngeqslant', '⩾̸'), 8035 _Utils_Tuple2('nges', '⩾̸'), 8036 _Utils_Tuple2('nGg', 'â̸'), 8037 _Utils_Tuple2('ngsim', 'âµ'), 8038 _Utils_Tuple2('nGt', 'â«â'), 8039 _Utils_Tuple2('ngt', 'â¯'), 8040 _Utils_Tuple2('ngtr', 'â¯'), 8041 _Utils_Tuple2('nGtv', 'â«Ì¸'), 8042 _Utils_Tuple2('nharr', 'â®'), 8043 _Utils_Tuple2('nhArr', 'â'), 8044 _Utils_Tuple2('nhpar', '⫲'), 8045 _Utils_Tuple2('ni', 'â'), 8046 _Utils_Tuple2('nis', 'â¼'), 8047 _Utils_Tuple2('nisd', 'âº'), 8048 _Utils_Tuple2('niv', 'â'), 8049 _Utils_Tuple2('NJcy', 'Ð'), 8050 _Utils_Tuple2('njcy', 'Ñ'), 8051 _Utils_Tuple2('nlarr', 'â'), 8052 _Utils_Tuple2('nlArr', 'â'), 8053 _Utils_Tuple2('nldr', 'â¥'), 8054 _Utils_Tuple2('nlE', 'â¦Ì¸'), 8055 _Utils_Tuple2('nle', 'â°'), 8056 _Utils_Tuple2('nleftarrow', 'â'), 8057 _Utils_Tuple2('nLeftarrow', 'â'), 8058 _Utils_Tuple2('nleftrightarrow', 'â®'), 8059 _Utils_Tuple2('nLeftrightarrow', 'â'), 8060 _Utils_Tuple2('nleq', 'â°'), 8061 _Utils_Tuple2('nleqq', 'â¦Ì¸'), 8062 _Utils_Tuple2('nleqslant', '⩽̸'), 8063 _Utils_Tuple2('nles', '⩽̸'), 8064 _Utils_Tuple2('nless', 'â®'), 8065 _Utils_Tuple2('nLl', 'â̸'), 8066 _Utils_Tuple2('nlsim', 'â´'), 8067 _Utils_Tuple2('nLt', 'âªâ'), 8068 _Utils_Tuple2('nlt', 'â®'), 8069 _Utils_Tuple2('nltri', 'âª'), 8070 _Utils_Tuple2('nltrie', 'â¬'), 8071 _Utils_Tuple2('nLtv', 'âªÌ¸'), 8072 _Utils_Tuple2('nmid', 'â¤'), 8073 _Utils_Tuple2('NoBreak', '\u2060'), 8074 _Utils_Tuple2('NonBreakingSpace', '\u00A0'), 8075 _Utils_Tuple2('nopf', '\uD835\uDD5F'), 8076 _Utils_Tuple2('Nopf', 'â'), 8077 _Utils_Tuple2('Not', '⫬'), 8078 _Utils_Tuple2('not', '¬'), 8079 _Utils_Tuple2('NotCongruent', 'â¢'), 8080 _Utils_Tuple2('NotCupCap', 'â'), 8081 _Utils_Tuple2('NotDoubleVerticalBar', 'â¦'), 8082 _Utils_Tuple2('NotElement', 'â'), 8083 _Utils_Tuple2('NotEqual', 'â '), 8084 _Utils_Tuple2('NotEqualTilde', 'â̸'), 8085 _Utils_Tuple2('NotExists', 'â'), 8086 _Utils_Tuple2('NotGreater', 'â¯'), 8087 _Utils_Tuple2('NotGreaterEqual', 'â±'),
8088 _Utils_Tuple2('NotGreaterFullEqual', 'â§Ì¸'), 8089 _Utils_Tuple2('NotGreaterGreater', 'â«Ì¸'), 8090 _Utils_Tuple2('NotGreaterLess', 'â¹'), 8091 _Utils_Tuple2('NotGreaterSlantEqual', '⩾̸'), 8092 _Utils_Tuple2('NotGreaterTilde', 'âµ'), 8093 _Utils_Tuple2('NotHumpDownHump', 'â̸'), 8094 _Utils_Tuple2('NotHumpEqual', 'â̸'), 8095 _Utils_Tuple2('notin', 'â'), 8096 _Utils_Tuple2('notindot', 'âµÌ¸'), 8097 _Utils_Tuple2('notinE', 'â¹Ì¸'), 8098 _Utils_Tuple2('notinva', 'â'), 8099 _Utils_Tuple2('notinvb', 'â·'), 8100 _Utils_Tuple2('notinvc', 'â¶'), 8101 _Utils_Tuple2('NotLeftTriangleBar', 'â§Ì¸'), 8102 _Utils_Tuple2('NotLeftTriangle', 'âª'), 8103 _Utils_Tuple2('NotLeftTriangleEqual', 'â¬'), 8104 _Utils_Tuple2('NotLess', 'â®'), 8105 _Utils_Tuple2('NotLessEqual', 'â°'), 8106 _Utils_Tuple2('NotLessGreater', 'â¸'), 8107 _Utils_Tuple2('NotLessLess', 'âªÌ¸'), 8108 _Utils_Tuple2('NotLessSlantEqual', '⩽̸'), 8109 _Utils_Tuple2('NotLessTilde', 'â´'), 8110 _Utils_Tuple2('NotNestedGreaterGreater', '⪢̸'), 8111 _Utils_Tuple2('NotNestedLessLess', '⪡̸'), 8112 _Utils_Tuple2('notni', 'â'), 8113 _Utils_Tuple2('notniva', 'â'), 8114 _Utils_Tuple2('notnivb', 'â¾'), 8115 _Utils_Tuple2('notnivc', 'â½'), 8116 _Utils_Tuple2('NotPrecedes', 'â'), 8117 _Utils_Tuple2('NotPrecedesEqual', '⪯̸'), 8118 _Utils_Tuple2('NotPrecedesSlantEqual', 'â '), 8119 _Utils_Tuple2('NotReverseElement', 'â'), 8120 _Utils_Tuple2('NotRightTriangleBar', 'â§Ì¸'), 8121 _Utils_Tuple2('NotRightTriangle', 'â«'), 8122 _Utils_Tuple2('NotRightTriangleEqual', 'â'), 8123 _Utils_Tuple2('NotSquareSubset', 'â̸'), 8124 _Utils_Tuple2('NotSquareSubsetEqual', 'â¢'), 8125 _Utils_Tuple2('NotSquareSuperset', 'â̸'), 8126 _Utils_Tuple2('NotSquareSupersetEqual', 'â£'), 8127 _Utils_Tuple2('NotSubset', 'ââ'), 8128 _Utils_Tuple2('NotSubsetEqual', 'â'), 8129 _Utils_Tuple2('NotSucceeds', 'â'), 8130 _Utils_Tuple2('NotSucceedsEqual', '⪰̸'), 8131 _Utils_Tuple2('NotSucceedsSlantEqual', 'â¡'), 8132 _Utils_Tuple2('NotSucceedsTilde', 'â¿Ì¸'), 8133 _Utils_Tuple2('NotSuperset', 'ââ'), 8134 _Utils_Tuple2('NotSupersetEqual', 'â'), 8135 _Utils_Tuple2('NotTilde', 'â'), 8136 _Utils_Tuple2('NotTildeEqual', 'â'), 8137 _Utils_Tuple2('NotTildeFullEqual', 'â'), 8138 _Utils_Tuple2('NotTildeTilde', 'â'), 8139 _Utils_Tuple2('NotVerticalBar', 'â¤'), 8140 _Utils_Tuple2('nparallel', 'â¦'), 8141 _Utils_Tuple2('npar', 'â¦'), 8142 _Utils_Tuple2('nparsl', '⫽â¥'), 8143 _Utils_Tuple2('npart', 'â̸'), 8144 _Utils_Tuple2('npolint', 'â¨'), 8145 _Utils_Tuple2('npr', 'â'), 8146 _Utils_Tuple2('nprcue', 'â '), 8147 _Utils_Tuple2('nprec', 'â'), 8148 _Utils_Tuple2('npreceq', '⪯̸'), 8149 _Utils_Tuple2('npre', '⪯̸'), 8150 _Utils_Tuple2('nrarrc', '⤳̸'), 8151 _Utils_Tuple2('nrarr', 'â'), 8152 _Utils_Tuple2('nrArr', 'â'), 8153 _Utils_Tuple2('nrarrw', 'â̸'), 8154 _Utils_Tuple2('nrightarrow', 'â'), 8155 _Utils_Tuple2('nRightarrow', 'â'), 8156 _Utils_Tuple2('nrtri', 'â«'), 8157 _Utils_Tuple2('nrtrie', 'â'), 8158 _Utils_Tuple2('nsc', 'â'), 8159 _Utils_Tuple2('nsccue', 'â¡'), 8160 _Utils_Tuple2('nsce', '⪰̸'), 8161 _Utils_Tuple2('Nscr', '\uD835\uDCA9'), 8162 _Utils_Tuple2('nscr', '\uD835\uDCC3'), 8163 _Utils_Tuple2('nshortmid', 'â¤'), 8164 _Utils_Tuple2('nshortparallel', 'â¦'), 8165 _Utils_Tuple2('nsim', 'â'), 8166 _Utils_Tuple2('nsime', 'â'), 8167 _Utils_Tuple2('nsimeq', 'â'), 8168 _Utils_Tuple2('nsmid', 'â¤'), 8169 _Utils_Tuple2('nspar', 'â¦'), 8170 _Utils_Tuple2('nsqsube', 'â¢'), 8171 _Utils_Tuple2('nsqsupe', 'â£'), 8172 _Utils_Tuple2('nsub', 'â'), 8173 _Utils_Tuple2('nsubE', '⫠̸'), 8174 _Utils_Tuple2('nsube', 'â'), 8175 _Utils_Tuple2('nsubset', 'ââ'), 8176 _Utils_Tuple2('nsubseteq', 'â'), 8177 _Utils_Tuple2('nsubseteqq', '⫠̸'), 8178 _Utils_Tuple2('nsucc', 'â'), 8179 _Utils_Tuple2('nsucceq', '⪰̸'), 8180 _Utils_Tuple2('nsup', 'â '), 8181 _Utils_Tuple2('nsupE', 'â«Ì¸'), 8182 _Utils_Tuple2('nsupe', 'â'), 8183 _Utils_Tuple2('nsupset', 'ââ'), 8184 _Utils_Tuple2('nsupseteq', 'â'), 8185 _Utils_Tuple2('nsupseteqq', 'â«Ì¸'), 8186 _Utils_Tuple2('ntgl', 'â¹'), 8187 _Utils_Tuple2('Ntilde', 'Ã'), 8188 _Utils_Tuple2('ntilde', 'ñ'), 8189 _Utils_Tuple2('ntlg', 'â¸'), 8190 _Utils_Tuple2('ntriangleleft', 'âª'), 8191 _Utils_Tuple2('ntrianglelefteq', 'â¬'), 8192 _Utils_Tuple2('ntriangleright', 'â«'), 8193 _Utils_Tuple2('ntrianglerighteq', 'â'), 8194 _Utils_Tuple2('Nu', 'Î'), 8195 _Utils_Tuple2('nu', 'ν'), 8196 _Utils_Tuple2('num', '#'), 8197 _Utils_Tuple2('numero', 'â'), 8198 _Utils_Tuple2('numsp', '\u2007'), 8199 _Utils_Tuple2('nvap', 'ââ'), 8200 _Utils_Tuple2('nvdash', 'â¬'), 8201 _Utils_Tuple2('nvDash', 'â'), 8202 _Utils_Tuple2('nVdash', 'â®'),
8203 _Utils_Tuple2('nVDash', 'â¯'), 8204 _Utils_Tuple2('nvge', 'â¥â'), 8205 _Utils_Tuple2('nvgt', '>â'), 8206 _Utils_Tuple2('nvHarr', 'â¤'), 8207 _Utils_Tuple2('nvinfin', 'â§'), 8208 _Utils_Tuple2('nvlArr', 'â¤'), 8209 _Utils_Tuple2('nvle', 'â¤â'), 8210 _Utils_Tuple2('nvlt', '<â'), 8211 _Utils_Tuple2('nvltrie', 'â´â'), 8212 _Utils_Tuple2('nvrArr', 'â¤'), 8213 _Utils_Tuple2('nvrtrie', 'âµâ'), 8214 _Utils_Tuple2('nvsim', 'â¼â'), 8215 _Utils_Tuple2('nwarhk', '⤣'), 8216 _Utils_Tuple2('nwarr', 'â'), 8217 _Utils_Tuple2('nwArr', 'â'), 8218 _Utils_Tuple2('nwarrow', 'â'), 8219 _Utils_Tuple2('nwnear', '⤧'), 8220 _Utils_Tuple2('Oacute', 'Ã'), 8221 _Utils_Tuple2('oacute', 'ó'), 8222 _Utils_Tuple2('oast', 'â'), 8223 _Utils_Tuple2('Ocirc', 'Ã'), 8224 _Utils_Tuple2('ocirc', 'ô'), 8225 _Utils_Tuple2('ocir', 'â'), 8226 _Utils_Tuple2('Ocy', 'Ð'), 8227 _Utils_Tuple2('ocy', 'о'), 8228 _Utils_Tuple2('odash', 'â'), 8229 _Utils_Tuple2('Odblac', 'Å'), 8230 _Utils_Tuple2('odblac', 'Å'), 8231 _Utils_Tuple2('odiv', '⨸'), 8232 _Utils_Tuple2('odot', 'â'), 8233 _Utils_Tuple2('odsold', '⦼'), 8234 _Utils_Tuple2('OElig', 'Å'), 8235 _Utils_Tuple2('oelig', 'Å'), 8236 _Utils_Tuple2('ofcir', '⦿'), 8237 _Utils_Tuple2('Ofr', '\uD835\uDD12'), 8238 _Utils_Tuple2('ofr', '\uD835\uDD2C'), 8239 _Utils_Tuple2('ogon', 'Ë'), 8240 _Utils_Tuple2('Ograve', 'Ã'), 8241 _Utils_Tuple2('ograve', 'ò'), 8242 _Utils_Tuple2('ogt', 'â§'), 8243 _Utils_Tuple2('ohbar', '⦵'), 8244 _Utils_Tuple2('ohm', 'Ω'), 8245 _Utils_Tuple2('oint', 'â®'), 8246 _Utils_Tuple2('olarr', 'âº'), 8247 _Utils_Tuple2('olcir', '⦾'), 8248 _Utils_Tuple2('olcross', '⦻'), 8249 _Utils_Tuple2('oline', 'â¾'), 8250 _Utils_Tuple2('olt', 'â§'), 8251 _Utils_Tuple2('Omacr', 'Å'), 8252 _Utils_Tuple2('omacr', 'Å'), 8253 _Utils_Tuple2('Omega', 'Ω'), 8254 _Utils_Tuple2('omega', 'Ï'), 8255 _Utils_Tuple2('Omicron', 'Î'), 8256 _Utils_Tuple2('omicron', 'ο'), 8257 _Utils_Tuple2('omid', '⦶'), 8258 _Utils_Tuple2('ominus', 'â'), 8259 _Utils_Tuple2('Oopf', '\uD835\uDD46'), 8260 _Utils_Tuple2('oopf', '\uD835\uDD60'), 8261 _Utils_Tuple2('opar', '⦷'), 8262 _Utils_Tuple2('OpenCurlyDoubleQuote', 'â'), 8263 _Utils_Tuple2('OpenCurlyQuote', 'â'), 8264 _Utils_Tuple2('operp', '⦹'), 8265 _Utils_Tuple2('oplus', 'â'), 8266 _Utils_Tuple2('orarr', 'â»'),
8267 _Utils_Tuple2('Or', 'â©'), 8268 _Utils_Tuple2('or', 'â¨'), 8269 _Utils_Tuple2('ord', 'â©'), 8270 _Utils_Tuple2('order', 'â´'), 8271 _Utils_Tuple2('orderof', 'â´'), 8272 _Utils_Tuple2('ordf', 'ª'), 8273 _Utils_Tuple2('ordm', 'º'), 8274 _Utils_Tuple2('origof', 'â¶'), 8275 _Utils_Tuple2('oror', 'â©'), 8276 _Utils_Tuple2('orslope', 'â©'), 8277 _Utils_Tuple2('orv', 'â©'), 8278 _Utils_Tuple2('oS', 'â'), 8279 _Utils_Tuple2('Oscr', '\uD835\uDCAA'), 8280 _Utils_Tuple2('oscr', 'â´'), 8281 _Utils_Tuple2('Oslash', 'Ã'), 8282 _Utils_Tuple2('oslash', 'ø'), 8283 _Utils_Tuple2('osol', 'â'), 8284 _Utils_Tuple2('Otilde', 'Ã'), 8285 _Utils_Tuple2('otilde', 'õ'), 8286 _Utils_Tuple2('otimesas', '⨶'), 8287 _Utils_Tuple2('Otimes', '⨷'), 8288 _Utils_Tuple2('otimes', 'â'), 8289 _Utils_Tuple2('Ouml', 'Ã'), 8290 _Utils_Tuple2('ouml', 'ö'), 8291 _Utils_Tuple2('ovbar', 'â½'), 8292 _Utils_Tuple2('OverBar', 'â¾'), 8293 _Utils_Tuple2('OverBrace', 'â'), 8294 _Utils_Tuple2('OverBracket', 'â´'), 8295 _Utils_Tuple2('OverParenthesis', 'â'), 8296 _Utils_Tuple2('para', '¶'), 8297 _Utils_Tuple2('parallel', 'â¥'), 8298 _Utils_Tuple2('par', 'â¥'), 8299 _Utils_Tuple2('parsim', '⫳'), 8300 _Utils_Tuple2('parsl', '⫽'), 8301 _Utils_Tuple2('part', 'â'), 8302 _Utils_Tuple2('PartialD', 'â'), 8303 _Utils_Tuple2('Pcy', 'Ð'), 8304 _Utils_Tuple2('pcy', 'п'), 8305 _Utils_Tuple2('percnt', '%'), 8306 _Utils_Tuple2('period', '.'), 8307 _Utils_Tuple2('permil', 'â°'), 8308 _Utils_Tuple2('perp', 'â¥'), 8309 _Utils_Tuple2('pertenk', 'â±'), 8310 _Utils_Tuple2('Pfr', '\uD835\uDD13'), 8311 _Utils_Tuple2('pfr', '\uD835\uDD2D'), 8312 _Utils_Tuple2('Phi', 'Φ'), 8313 _Utils_Tuple2('phi', 'Ï'), 8314 _Utils_Tuple2('phiv', 'Ï'), 8315 _Utils_Tuple2('phmmat', 'â³'), 8316 _Utils_Tuple2('phone', 'â'), 8317 _Utils_Tuple2('Pi', 'Î '), 8318 _Utils_Tuple2('pi', 'Ï'), 8319 _Utils_Tuple2('pitchfork', 'â'), 8320 _Utils_Tuple2('piv', 'Ï'), 8321 _Utils_Tuple2('planck', 'â'), 8322 _Utils_Tuple2('planckh', 'â'), 8323 _Utils_Tuple2('plankv', 'â'), 8324 _Utils_Tuple2('plusacir', '⨣'), 8325 _Utils_Tuple2('plusb', 'â'), 8326 _Utils_Tuple2('pluscir', '⨢'), 8327 _Utils_Tuple2('plus', '+'), 8328 _Utils_Tuple2('plusdo', 'â'), 8329 _Utils_Tuple2('plusdu', '⨥'), 8330 _Utils_Tuple2('pluse', '⩲'), 8331 _Utils_Tuple2('PlusMinus', '±'), 8332 _Utils_Tuple2('plusmn', '±'), 8333 _Utils_Tuple2('plussim', '⨦'), 8334 _Utils_Tuple2('plustwo', '⨧'), 8335 _Utils_Tuple2('pm', '±'), 8336 _Utils_Tuple2('Poincareplane', 'â'), 8337 _Utils_Tuple2('pointint', 'â¨'), 8338 _Utils_Tuple2('popf', '\uD835\uDD61'), 8339 _Utils_Tuple2('Popf', 'â'), 8340 _Utils_Tuple2('pound', '£'), 8341 _Utils_Tuple2('prap', '⪷'), 8342 _Utils_Tuple2('Pr', '⪻'), 8343 _Utils_Tuple2('pr', 'âº'), 8344 _Utils_Tuple2('prcue', 'â¼'), 8345 _Utils_Tuple2('precapprox', '⪷'), 8346 _Utils_Tuple2('prec', 'âº'), 8347 _Utils_Tuple2('preccurlyeq', 'â¼'), 8348 _Utils_Tuple2('Precedes', 'âº'), 8349 _Utils_Tuple2('PrecedesEqual', '⪯'), 8350 _Utils_Tuple2('PrecedesSlantEqual', 'â¼'), 8351 _Utils_Tuple2('PrecedesTilde', 'â¾'), 8352 _Utils_Tuple2('preceq', '⪯'), 8353 _Utils_Tuple2('precnapprox', '⪹'), 8354 _Utils_Tuple2('precneqq', '⪵'), 8355 _Utils_Tuple2('precnsim', 'â¨'), 8356 _Utils_Tuple2('pre', '⪯'), 8357 _Utils_Tuple2('prE', '⪳'), 8358 _Utils_Tuple2('precsim', 'â¾'), 8359 _Utils_Tuple2('prime', 'â²'), 8360 _Utils_Tuple2('Prime', 'â³'), 8361 _Utils_Tuple2('primes', 'â'), 8362 _Utils_Tuple2('prnap', '⪹'), 8363 _Utils_Tuple2('prnE', '⪵'), 8364 _Utils_Tuple2('prnsim', 'â¨'), 8365 _Utils_Tuple2('prod', 'â'), 8366 _Utils_Tuple2('Product', 'â'), 8367 _Utils_Tuple2('profalar', 'â®'), 8368 _Utils_Tuple2('profline', 'â'),
8369 _Utils_Tuple2('profsurf', 'â'), 8370 _Utils_Tuple2('prop', 'â'), 8371 _Utils_Tuple2('Proportional', 'â'), 8372 _Utils_Tuple2('Proportion', 'â·'), 8373 _Utils_Tuple2('propto', 'â'), 8374 _Utils_Tuple2('prsim', 'â¾'), 8375 _Utils_Tuple2('prurel', 'â°'), 8376 _Utils_Tuple2('Pscr', '\uD835\uDCAB'), 8377 _Utils_Tuple2('pscr', '\uD835\uDCC5'), 8378 _Utils_Tuple2('Psi', 'Ψ'), 8379 _Utils_Tuple2('psi', 'Ï'), 8380 _Utils_Tuple2('puncsp', '\u2008'), 8381 _Utils_Tuple2('Qfr', '\uD835\uDD14'), 8382 _Utils_Tuple2('qfr', '\uD835\uDD2E'), 8383 _Utils_Tuple2('qint', 'â¨'), 8384 _Utils_Tuple2('qopf', '\uD835\uDD62'), 8385 _Utils_Tuple2('Qopf', 'â'), 8386 _Utils_Tuple2('qprime', 'â'), 8387 _Utils_Tuple2('Qscr', '\uD835\uDCAC'), 8388 _Utils_Tuple2('qscr', '\uD835\uDCC6'), 8389 _Utils_Tuple2('quaternions', 'â'), 8390 _Utils_Tuple2('quatint', 'â¨'), 8391 _Utils_Tuple2('quest', '?'), 8392 _Utils_Tuple2('questeq', 'â'), 8393 _Utils_Tuple2('quot', '\"'), 8394 _Utils_Tuple2('QUOT', '\"'), 8395 _Utils_Tuple2('rAarr', 'â'), 8396 _Utils_Tuple2('race', 'â½Ì±'), 8397 _Utils_Tuple2('Racute', 'Å'), 8398 _Utils_Tuple2('racute', 'Å'), 8399 _Utils_Tuple2('radic', 'â'), 8400 _Utils_Tuple2('raemptyv', '⦳'), 8401 _Utils_Tuple2('rang', 'â©'), 8402 _Utils_Tuple2('Rang', 'â«'), 8403 _Utils_Tuple2('rangd', 'â¦'), 8404 _Utils_Tuple2('range', '⦥'), 8405 _Utils_Tuple2('rangle', 'â©'), 8406 _Utils_Tuple2('raquo', '»'), 8407 _Utils_Tuple2('rarrap', '⥵'), 8408 _Utils_Tuple2('rarrb', 'â¥'), 8409 _Utils_Tuple2('rarrbfs', '⤠'), 8410 _Utils_Tuple2('rarrc', '⤳'), 8411 _Utils_Tuple2('rarr', 'â'), 8412 _Utils_Tuple2('Rarr', 'â '), 8413 _Utils_Tuple2('rArr', 'â'), 8414 _Utils_Tuple2('rarrfs', 'â¤'), 8415 _Utils_Tuple2('rarrhk', 'âª'), 8416 _Utils_Tuple2('rarrlp', 'â¬'), 8417 _Utils_Tuple2('rarrpl', '⥠'), 8418 _Utils_Tuple2('rarrsim', '⥴'), 8419 _Utils_Tuple2('Rarrtl', 'â¤'), 8420 _Utils_Tuple2('rarrtl', 'â£'), 8421 _Utils_Tuple2('rarrw', 'â'), 8422 _Utils_Tuple2('ratail', 'â¤'), 8423 _Utils_Tuple2('rAtail', 'â¤'), 8424 _Utils_Tuple2('ratio', 'â¶'), 8425 _Utils_Tuple2('rationals', 'â'), 8426 _Utils_Tuple2('rbarr', 'â¤'), 8427 _Utils_Tuple2('rBarr', 'â¤'), 8428 _Utils_Tuple2('RBarr', 'â¤'), 8429 _Utils_Tuple2('rbbrk', 'â³'), 8430 _Utils_Tuple2('rbrace', '}'), 8431 _Utils_Tuple2('rbrack', ']'), 8432 _Utils_Tuple2('rbrke', 'â¦'), 8433 _Utils_Tuple2('rbrksld', 'â¦'), 8434 _Utils_Tuple2('rbrkslu', 'â¦'), 8435 _Utils_Tuple2('Rcaron', 'Å'), 8436 _Utils_Tuple2('rcaron', 'Å'), 8437 _Utils_Tuple2('Rcedil', 'Å'), 8438 _Utils_Tuple2('rcedil', 'Å'), 8439 _Utils_Tuple2('rceil', 'â'), 8440 _Utils_Tuple2('rcub', '}'), 8441 _Utils_Tuple2('Rcy', 'Ð '), 8442 _Utils_Tuple2('rcy', 'Ñ'), 8443 _Utils_Tuple2('rdca', '⤷'), 8444 _Utils_Tuple2('rdldhar', '⥩'), 8445 _Utils_Tuple2('rdquo', 'â'), 8446 _Utils_Tuple2('rdquor', 'â'), 8447 _Utils_Tuple2('rdsh', 'â³'), 8448 _Utils_Tuple2('real', 'â'), 8449 _Utils_Tuple2('realine', 'â'), 8450 _Utils_Tuple2('realpart', 'â'), 8451 _Utils_Tuple2('reals', 'â'), 8452 _Utils_Tuple2('Re', 'â'), 8453 _Utils_Tuple2('rect', 'â'), 8454 _Utils_Tuple2('reg', '®'), 8455 _Utils_Tuple2('REG', '®'), 8456 _Utils_Tuple2('ReverseElement', 'â'), 8457 _Utils_Tuple2('ReverseEquilibrium', 'â'), 8458 _Utils_Tuple2('ReverseUpEquilibrium', '⥯'), 8459 _Utils_Tuple2('rfisht', '⥽'), 8460 _Utils_Tuple2('rfloor', 'â'), 8461 _Utils_Tuple2('rfr', '\uD835\uDD2F'), 8462 _Utils_Tuple2('Rfr', 'â'), 8463 _Utils_Tuple2('rHar', '⥤'), 8464 _Utils_Tuple2('rhard', 'â'), 8465 _Utils_Tuple2('rharu', 'â'), 8466 _Utils_Tuple2('rharul', '⥬'), 8467 _Utils_Tuple2('Rho', 'Ρ'), 8468 _Utils_Tuple2('rho', 'Ï'), 8469 _Utils_Tuple2('rhov', 'ϱ'), 8470 _Utils_Tuple2('RightAngleBracket', 'â©'), 8471 _Utils_Tuple2('RightArrowBar', 'â¥'), 8472 _Utils_Tuple2('rightarrow', 'â'), 8473 _Utils_Tuple2('RightArrow', 'â'), 8474 _Utils_Tuple2('Rightarrow', 'â'), 8475 _Utils_Tuple2('RightArrowLeftArrow', 'â'), 8476 _Utils_Tuple2('rightarrowtail', 'â£'), 8477 _Utils_Tuple2('RightCeiling', 'â'), 8478 _Utils_Tuple2('RightDoubleBracket', 'â§'), 8479 _Utils_Tuple2('RightDownTeeVector', 'â¥'), 8480 _Utils_Tuple2('RightDownVectorBar', 'â¥'), 8481 _Utils_Tuple2('RightDownVector', 'â'), 8482 _Utils_Tuple2('RightFloor', 'â'),
8483 _Utils_Tuple2('rightharpoondown', 'â'), 8484 _Utils_Tuple2('rightharpoonup', 'â'), 8485 _Utils_Tuple2('rightleftarrows', 'â'), 8486 _Utils_Tuple2('rightleftharpoons', 'â'), 8487 _Utils_Tuple2('rightrightarrows', 'â'), 8488 _Utils_Tuple2('rightsquigarrow', 'â'), 8489 _Utils_Tuple2('RightTeeArrow', 'â¦'), 8490 _Utils_Tuple2('RightTee', 'â¢'), 8491 _Utils_Tuple2('RightTeeVector', 'â¥'), 8492 _Utils_Tuple2('rightthreetimes', 'â'), 8493 _Utils_Tuple2('RightTriangleBar', 'â§'), 8494 _Utils_Tuple2('RightTriangle', 'â³'), 8495 _Utils_Tuple2('RightTriangleEqual', 'âµ'), 8496 _Utils_Tuple2('RightUpDownVector', 'â¥'), 8497 _Utils_Tuple2('RightUpTeeVector', 'â¥'), 8498 _Utils_Tuple2('RightUpVectorBar', 'â¥'), 8499 _Utils_Tuple2('RightUpVector', 'â¾'), 8500 _Utils_Tuple2('RightVectorBar', 'â¥'), 8501 _Utils_Tuple2('RightVector', 'â'), 8502 _Utils_Tuple2('ring', 'Ë'), 8503 _Utils_Tuple2('risingdotseq', 'â'), 8504 _Utils_Tuple2('rlarr', 'â'), 8505 _Utils_Tuple2('rlhar', 'â'), 8506 _Utils_Tuple2('rlm', '\u200F'), 8507 _Utils_Tuple2('rmoustache', 'â±'), 8508 _Utils_Tuple2('rmoust', 'â±'), 8509 _Utils_Tuple2('rnmid', 'â«®'), 8510 _Utils_Tuple2('roang', 'â'), 8511 _Utils_Tuple2('roarr', 'â¾'), 8512 _Utils_Tuple2('robrk', 'â§'), 8513 _Utils_Tuple2('ropar', 'â¦'), 8514 _Utils_Tuple2('ropf', '\uD835\uDD63'), 8515 _Utils_Tuple2('Ropf', 'â'), 8516 _Utils_Tuple2('roplus', '⨮'), 8517 _Utils_Tuple2('rotimes', '⨵'), 8518 _Utils_Tuple2('RoundImplies', '⥰'), 8519 _Utils_Tuple2('rpar', ')'), 8520 _Utils_Tuple2('rpargt', 'â¦'), 8521 _Utils_Tuple2('rppolint', 'â¨'), 8522 _Utils_Tuple2('rrarr', 'â'), 8523 _Utils_Tuple2('Rrightarrow', 'â'), 8524 _Utils_Tuple2('rsaquo', 'âº'), 8525 _Utils_Tuple2('rscr', '\uD835\uDCC7'), 8526 _Utils_Tuple2('Rscr', 'â'), 8527 _Utils_Tuple2('rsh', 'â±'), 8528 _Utils_Tuple2('Rsh', 'â±'), 8529 _Utils_Tuple2('rsqb', ']'), 8530 _Utils_Tuple2('rsquo', 'â'), 8531 _Utils_Tuple2('rsquor', 'â'), 8532 _Utils_Tuple2('rthree', 'â'), 8533 _Utils_Tuple2('rtimes', 'â'), 8534 _Utils_Tuple2('rtri', 'â¹'), 8535 _Utils_Tuple2('rtrie', 'âµ'), 8536 _Utils_Tuple2('rtrif', 'â¸'), 8537 _Utils_Tuple2('rtriltri', 'â§'), 8538 _Utils_Tuple2('RuleDelayed', 'â§´'), 8539 _Utils_Tuple2('ruluhar', '⥨'), 8540 _Utils_Tuple2('rx', 'â'), 8541 _Utils_Tuple2('Sacute', 'Å'), 8542 _Utils_Tuple2('sacute', 'Å'), 8543 _Utils_Tuple2('sbquo', 'â'), 8544 _Utils_Tuple2('scap', '⪸'), 8545 _Utils_Tuple2('Scaron', 'Å '), 8546 _Utils_Tuple2('scaron', 'Å¡'), 8547 _Utils_Tuple2('Sc', '⪼'), 8548 _Utils_Tuple2('sc', 'â»'), 8549 _Utils_Tuple2('sccue', 'â½'), 8550 _Utils_Tuple2('sce', '⪰'), 8551 _Utils_Tuple2('scE', '⪴'), 8552 _Utils_Tuple2('Scedil', 'Å'), 8553 _Utils_Tuple2('scedil', 'Å'), 8554 _Utils_Tuple2('Scirc', 'Å'), 8555 _Utils_Tuple2('scirc', 'Å'), 8556 _Utils_Tuple2('scnap', '⪺'), 8557 _Utils_Tuple2('scnE', '⪶'), 8558 _Utils_Tuple2('scnsim', 'â©'), 8559 _Utils_Tuple2('scpolint', 'â¨'), 8560 _Utils_Tuple2('scsim', 'â¿'), 8561 _Utils_Tuple2('Scy', 'С'), 8562 _Utils_Tuple2('scy', 'Ñ'), 8563 _Utils_Tuple2('sdotb', 'â¡'), 8564 _Utils_Tuple2('sdot', 'â '), 8565 _Utils_Tuple2('sdote', '⩦'), 8566 _Utils_Tuple2('searhk', '⤥'), 8567 _Utils_Tuple2('searr', 'â'), 8568 _Utils_Tuple2('seArr', 'â'), 8569 _Utils_Tuple2('searrow', 'â'), 8570 _Utils_Tuple2('sect', '§'), 8571 _Utils_Tuple2('semi', ';'), 8572 _Utils_Tuple2('seswar', '⤩'), 8573 _Utils_Tuple2('setminus', 'â'), 8574 _Utils_Tuple2('setmn', 'â'), 8575 _Utils_Tuple2('sext', 'â¶'), 8576 _Utils_Tuple2('Sfr', '\uD835\uDD16'), 8577 _Utils_Tuple2('sfr', '\uD835\uDD30'), 8578 _Utils_Tuple2('sfrown', 'â¢'), 8579 _Utils_Tuple2('sharp', 'â¯'), 8580 _Utils_Tuple2('SHCHcy', 'Щ'), 8581 _Utils_Tuple2('shchcy', 'Ñ'), 8582 _Utils_Tuple2('SHcy', 'Ш'), 8583 _Utils_Tuple2('shcy', 'Ñ'), 8584 _Utils_Tuple2('ShortDownArrow', 'â'), 8585 _Utils_Tuple2('ShortLeftArrow', 'â'), 8586 _Utils_Tuple2('shortmid', 'â£'), 8587 _Utils_Tuple2('shortparallel', 'â¥'), 8588 _Utils_Tuple2('ShortRightArrow', 'â'), 8589 _Utils_Tuple2('ShortUpArrow', 'â'), 8590 _Utils_Tuple2('shy', '\u00AD'), 8591 _Utils_Tuple2('Sigma', 'Σ'), 8592 _Utils_Tuple2('sigma', 'Ï'), 8593 _Utils_Tuple2('sigmaf', 'Ï'), 8594 _Utils_Tuple2('sigmav', 'Ï'), 8595 _Utils_Tuple2('sim', 'â¼'), 8596 _Utils_Tuple2('simdot', '⩪'), 8597 _Utils_Tuple2('sime', 'â'), 8598 _Utils_Tuple2('simeq', 'â'), 8599 _Utils_Tuple2('simg', 'âª'), 8600 _Utils_Tuple2('simgE', '⪠'), 8601 _Utils_Tuple2('siml', 'âª'), 8602 _Utils_Tuple2('simlE', 'âª'),
8603 _Utils_Tuple2('simne', 'â'), 8604 _Utils_Tuple2('simplus', '⨤'), 8605 _Utils_Tuple2('simrarr', '⥲'), 8606 _Utils_Tuple2('slarr', 'â'), 8607 _Utils_Tuple2('SmallCircle', 'â'), 8608 _Utils_Tuple2('smallsetminus', 'â'), 8609 _Utils_Tuple2('smashp', '⨳'), 8610 _Utils_Tuple2('smeparsl', '⧤'), 8611 _Utils_Tuple2('smid', 'â£'), 8612 _Utils_Tuple2('smile', 'â£'), 8613 _Utils_Tuple2('smt', '⪪'), 8614 _Utils_Tuple2('smte', '⪬'), 8615 _Utils_Tuple2('smtes', '⪬ï¸'), 8616 _Utils_Tuple2('SOFTcy', 'Ь'), 8617 _Utils_Tuple2('softcy', 'Ñ'), 8618 _Utils_Tuple2('solbar', 'â¿'), 8619 _Utils_Tuple2('solb', 'â§'), 8620 _Utils_Tuple2('sol', '/'), 8621 _Utils_Tuple2('Sopf', '\uD835\uDD4A'), 8622 _Utils_Tuple2('sopf', '\uD835\uDD64'), 8623 _Utils_Tuple2('spades', 'â '), 8624 _Utils_Tuple2('spadesuit', 'â '), 8625 _Utils_Tuple2('spar', 'â¥'), 8626 _Utils_Tuple2('sqcap', 'â'), 8627 _Utils_Tuple2('sqcaps', 'âï¸'), 8628 _Utils_Tuple2('sqcup', 'â'), 8629 _Utils_Tuple2('sqcups', 'âï¸'), 8630 _Utils_Tuple2('Sqrt', 'â'), 8631 _Utils_Tuple2('sqsub', 'â'), 8632 _Utils_Tuple2('sqsube', 'â'), 8633 _Utils_Tuple2('sqsubset', 'â'), 8634 _Utils_Tuple2('sqsubseteq', 'â'), 8635 _Utils_Tuple2('sqsup', 'â'), 8636 _Utils_Tuple2('sqsupe', 'â'), 8637 _Utils_Tuple2('sqsupset', 'â'), 8638 _Utils_Tuple2('sqsupseteq', 'â'), 8639 _Utils_Tuple2('square', 'â¡'), 8640 _Utils_Tuple2('Square', 'â¡'), 8641 _Utils_Tuple2('SquareIntersection', 'â'), 8642 _Utils_Tuple2('SquareSubset', 'â'), 8643 _Utils_Tuple2('SquareSubsetEqual', 'â'), 8644 _Utils_Tuple2('SquareSuperset', 'â'), 8645 _Utils_Tuple2('SquareSupersetEqual', 'â'), 8646 _Utils_Tuple2('SquareUnion', 'â'), 8647 _Utils_Tuple2('squarf', 'âª'), 8648 _Utils_Tuple2('squ', 'â¡'), 8649 _Utils_Tuple2('squf', 'âª'), 8650 _Utils_Tuple2('srarr', 'â'), 8651 _Utils_Tuple2('Sscr', '\uD835\uDCAE'), 8652 _Utils_Tuple2('sscr', '\uD835\uDCC8'), 8653 _Utils_Tuple2('ssetmn', 'â'), 8654 _Utils_Tuple2('ssmile', 'â£'), 8655 _Utils_Tuple2('sstarf', 'â'), 8656 _Utils_Tuple2('Star', 'â'), 8657 _Utils_Tuple2('star', 'â'), 8658 _Utils_Tuple2('starf', 'â '), 8659 _Utils_Tuple2('straightepsilon', 'ϵ'), 8660 _Utils_Tuple2('straightphi', 'Ï'), 8661 _Utils_Tuple2('strns', '¯'), 8662 _Utils_Tuple2('sub', 'â'), 8663 _Utils_Tuple2('Sub', 'â'), 8664 _Utils_Tuple2('subdot', '⪽'), 8665 _Utils_Tuple2('subE', 'â« '), 8666 _Utils_Tuple2('sube', 'â'), 8667 _Utils_Tuple2('subedot', 'â«'), 8668 _Utils_Tuple2('submult', 'â«'), 8669 _Utils_Tuple2('subnE', 'â«'), 8670 _Utils_Tuple2('subne', 'â'), 8671 _Utils_Tuple2('subplus', '⪿'), 8672 _Utils_Tuple2('subrarr', '⥹'), 8673 _Utils_Tuple2('subset', 'â'), 8674 _Utils_Tuple2('Subset', 'â'), 8675 _Utils_Tuple2('subseteq', 'â'), 8676 _Utils_Tuple2('subseteqq', 'â« '), 8677 _Utils_Tuple2('SubsetEqual', 'â'), 8678 _Utils_Tuple2('subsetneq', 'â'), 8679 _Utils_Tuple2('subsetneqq', 'â«'), 8680 _Utils_Tuple2('subsim', 'â«'), 8681 _Utils_Tuple2('subsub', 'â«'), 8682 _Utils_Tuple2('subsup', 'â«'), 8683 _Utils_Tuple2('succapprox', '⪸'), 8684 _Utils_Tuple2('succ', 'â»'), 8685 _Utils_Tuple2('succcurlyeq', 'â½'), 8686 _Utils_Tuple2('Succeeds', 'â»'), 8687 _Utils_Tuple2('SucceedsEqual', '⪰'), 8688 _Utils_Tuple2('SucceedsSlantEqual', 'â½'), 8689 _Utils_Tuple2('SucceedsTilde', 'â¿'), 8690 _Utils_Tuple2('succeq', '⪰'), 8691 _Utils_Tuple2('succnapprox', '⪺'), 8692 _Utils_Tuple2('succneqq', '⪶'), 8693 _Utils_Tuple2('succnsim', 'â©'), 8694 _Utils_Tuple2('succsim', 'â¿'), 8695 _Utils_Tuple2('SuchThat', 'â'), 8696 _Utils_Tuple2('sum', 'â'), 8697 _Utils_Tuple2('Sum', 'â'), 8698 _Utils_Tuple2('sung', 'âª'), 8699 _Utils_Tuple2('sup1', '¹'), 8700 _Utils_Tuple2('sup2', '²'), 8701 _Utils_Tuple2('sup3', '³'), 8702 _Utils_Tuple2('sup', 'â'), 8703 _Utils_Tuple2('Sup', 'â'), 8704 _Utils_Tuple2('supdot', '⪾'), 8705 _Utils_Tuple2('supdsub', 'â«'), 8706 _Utils_Tuple2('supE', 'â«'), 8707 _Utils_Tuple2('supe', 'â'), 8708 _Utils_Tuple2('supedot', 'â«'), 8709 _Utils_Tuple2('Superset', 'â'), 8710 _Utils_Tuple2('SupersetEqual', 'â'), 8711 _Utils_Tuple2('suphsol', 'â'), 8712 _Utils_Tuple2('suphsub', 'â«'), 8713 _Utils_Tuple2('suplarr', '⥻'), 8714 _Utils_Tuple2('supmult', 'â«'), 8715 _Utils_Tuple2('supnE', 'â«'), 8716 _Utils_Tuple2('supne', 'â'), 8717 _Utils_Tuple2('supplus', 'â«'), 8718 _Utils_Tuple2('supset', 'â'), 8719 _Utils_Tuple2('Supset', 'â'), 8720 _Utils_Tuple2('supseteq', 'â'), 8721 _Utils_Tuple2('supseteqq', 'â«'), 8722 _Utils_Tuple2('supsetneq', 'â'), 8723 _Utils_Tuple2('supsetneqq', 'â«'), 8724 _Utils_Tuple2('supsim', 'â«'), 8725 _Utils_Tuple2('supsub', 'â«'), 8726 _Utils_Tuple2('supsup', 'â«'),
8727 _Utils_Tuple2('swarhk', '⤦'), 8728 _Utils_Tuple2('swarr', 'â'), 8729 _Utils_Tuple2('swArr', 'â'), 8730 _Utils_Tuple2('swarrow', 'â'), 8731 _Utils_Tuple2('swnwar', '⤪'), 8732 _Utils_Tuple2('szlig', 'Ã'), 8733 _Utils_Tuple2('Tab', '\t'), 8734 _Utils_Tuple2('target', 'â'), 8735 _Utils_Tuple2('Tau', 'Τ'), 8736 _Utils_Tuple2('tau', 'Ï'), 8737 _Utils_Tuple2('tbrk', 'â´'), 8738 _Utils_Tuple2('Tcaron', 'Ť'), 8739 _Utils_Tuple2('tcaron', 'Å¥'), 8740 _Utils_Tuple2('Tcedil', 'Å¢'), 8741 _Utils_Tuple2('tcedil', 'Å£'), 8742 _Utils_Tuple2('Tcy', 'Т'), 8743 _Utils_Tuple2('tcy', 'Ñ'), 8744 _Utils_Tuple2('tdot', 'â'), 8745 _Utils_Tuple2('telrec', 'â'), 8746 _Utils_Tuple2('Tfr', '\uD835\uDD17'), 8747 _Utils_Tuple2('tfr', '\uD835\uDD31'), 8748 _Utils_Tuple2('there4', 'â´'), 8749 _Utils_Tuple2('therefore', 'â´'), 8750 _Utils_Tuple2('Therefore', 'â´'), 8751 _Utils_Tuple2('Theta', 'Î'), 8752 _Utils_Tuple2('theta', 'θ'), 8753 _Utils_Tuple2('thetasym', 'Ï'), 8754 _Utils_Tuple2('thetav', 'Ï'), 8755 _Utils_Tuple2('thickapprox', 'â'), 8756 _Utils_Tuple2('thicksim', 'â¼'), 8757 _Utils_Tuple2('ThickSpace', '\u205F\u200A'), 8758 _Utils_Tuple2('ThinSpace', '\u2009'), 8759 _Utils_Tuple2('thinsp', '\u2009'), 8760 _Utils_Tuple2('thkap', 'â'), 8761 _Utils_Tuple2('thksim', 'â¼'), 8762 _Utils_Tuple2('THORN', 'Ã'), 8763 _Utils_Tuple2('thorn', 'þ'), 8764 _Utils_Tuple2('tilde', 'Ë'), 8765 _Utils_Tuple2('Tilde', 'â¼'), 8766 _Utils_Tuple2('TildeEqual', 'â'), 8767 _Utils_Tuple2('TildeFullEqual', 'â '), 8768 _Utils_Tuple2('TildeTilde', 'â'), 8769 _Utils_Tuple2('timesbar', '⨱'), 8770 _Utils_Tuple2('timesb', 'â '), 8771 _Utils_Tuple2('times', 'Ã'), 8772 _Utils_Tuple2('timesd', '⨰'), 8773 _Utils_Tuple2('tint', 'â'), 8774 _Utils_Tuple2('toea', '⤨'), 8775 _Utils_Tuple2('topbot', 'â¶'), 8776 _Utils_Tuple2('topcir', '⫱'), 8777 _Utils_Tuple2('top', 'â¤'), 8778 _Utils_Tuple2('Topf', '\uD835\uDD4B'), 8779 _Utils_Tuple2('topf', '\uD835\uDD65'), 8780 _Utils_Tuple2('topfork', 'â«'), 8781 _Utils_Tuple2('tosa', '⤩'), 8782 _Utils_Tuple2('tprime', 'â´'), 8783 _Utils_Tuple2('trade', 'â¢'), 8784 _Utils_Tuple2('TRADE', 'â¢'), 8785 _Utils_Tuple2('triangle', 'âµ'), 8786 _Utils_Tuple2('triangledown', 'â¿'), 8787 _Utils_Tuple2('triangleleft', 'â'), 8788 _Utils_Tuple2('trianglelefteq', 'â´'), 8789 _Utils_Tuple2('triangleq', 'â'), 8790 _Utils_Tuple2('triangleright', 'â¹'), 8791 _Utils_Tuple2('trianglerighteq', 'âµ'), 8792 _Utils_Tuple2('tridot', 'â¬'), 8793 _Utils_Tuple2('trie', 'â'), 8794 _Utils_Tuple2('triminus', '⨺'), 8795 _Utils_Tuple2('TripleDot', 'â'), 8796 _Utils_Tuple2('triplus', '⨹'), 8797 _Utils_Tuple2('trisb', 'â§'), 8798 _Utils_Tuple2('tritime', '⨻'), 8799 _Utils_Tuple2('trpezium', 'â¢'), 8800 _Utils_Tuple2('Tscr', '\uD835\uDCAF'), 8801 _Utils_Tuple2('tscr', '\uD835\uDCC9'), 8802 _Utils_Tuple2('TScy', 'Ц'), 8803 _Utils_Tuple2('tscy', 'Ñ'), 8804 _Utils_Tuple2('TSHcy', 'Ð'), 8805 _Utils_Tuple2('tshcy', 'Ñ'), 8806 _Utils_Tuple2('Tstrok', 'Ŧ'), 8807 _Utils_Tuple2('tstrok', 'ŧ'), 8808 _Utils_Tuple2('twixt', 'â¬'), 8809 _Utils_Tuple2('twoheadleftarrow', 'â'), 8810 _Utils_Tuple2('twoheadrightarrow', 'â '), 8811 _Utils_Tuple2('Uacute', 'Ã'), 8812 _Utils_Tuple2('uacute', 'ú'), 8813 _Utils_Tuple2('uarr', 'â'), 8814 _Utils_Tuple2('Uarr', 'â'), 8815 _Utils_Tuple2('uArr', 'â'), 8816 _Utils_Tuple2('Uarrocir', 'â¥'), 8817 _Utils_Tuple2('Ubrcy', 'Ð'), 8818 _Utils_Tuple2('ubrcy', 'Ñ'), 8819 _Utils_Tuple2('Ubreve', 'Ŭ'), 8820 _Utils_Tuple2('ubreve', 'Å'), 8821 _Utils_Tuple2('Ucirc', 'Ã'), 8822 _Utils_Tuple2('ucirc', 'û'), 8823 _Utils_Tuple2('Ucy', 'У'), 8824 _Utils_Tuple2('ucy', 'Ñ'), 8825 _Utils_Tuple2('udarr', 'â '), 8826 _Utils_Tuple2('Udblac', 'Ű'), 8827 _Utils_Tuple2('udblac', 'ű'), 8828 _Utils_Tuple2('udhar', '⥮'), 8829 _Utils_Tuple2('ufisht', '⥾'), 8830 _Utils_Tuple2('Ufr', '\uD835\uDD18'), 8831 _Utils_Tuple2('ufr', '\uD835\uDD32'), 8832 _Utils_Tuple2('Ugrave', 'Ã'), 8833 _Utils_Tuple2('ugrave', 'ù'), 8834 _Utils_Tuple2('uHar', '⥣'), 8835 _Utils_Tuple2('uharl', 'â¿'), 8836 _Utils_Tuple2('uharr', 'â¾'), 8837 _Utils_Tuple2('uhblk', 'â'), 8838 _Utils_Tuple2('ulcorn', 'â'), 8839 _Utils_Tuple2('ulcorner', 'â'), 8840 _Utils_Tuple2('ulcrop', 'â'), 8841 _Utils_Tuple2('ultri', 'â¸'), 8842 _Utils_Tuple2('Umacr', 'Ū'), 8843 _Utils_Tuple2('umacr', 'Å«'), 8844 _Utils_Tuple2('uml', '¨'), 8845 _Utils_Tuple2('UnderBar', '_'), 8846 _Utils_Tuple2('UnderBrace', 'â'), 8847 _Utils_Tuple2('UnderBracket', 'âµ'), 8848 _Utils_Tuple2('UnderParenthesis', 'â'), 8849 _Utils_Tuple2('Union', 'â'), 8850 _Utils_Tuple2('UnionPlus', 'â'), 8851 _Utils_Tuple2('Uogon', 'Ų'), 8852 _Utils_Tuple2('uogon', 'ų'), 8853 _Utils_Tuple2('Uopf', '\uD835\uDD4C'), 8854 _Utils_Tuple2('uopf', '\uD835\uDD66'), 8855 _Utils_Tuple2('UpArrowBar', 'â¤'), 8856 _Utils_Tuple2('uparrow', 'â'), 8857 _Utils_Tuple2('UpArrow', 'â'), 8858 _Utils_Tuple2('Uparrow', 'â'), 8859 _Utils_Tuple2('UpArrowDownArrow', 'â '), 8860 _Utils_Tuple2('updownarrow', 'â'), 8861 _Utils_Tuple2('UpDownArrow', 'â'), 8862 _Utils_Tuple2('Updownarrow', 'â'), 8863 _Utils_Tuple2('UpEquilibrium', '⥮'),
8864 _Utils_Tuple2('upharpoonleft', 'â¿'), 8865 _Utils_Tuple2('upharpoonright', 'â¾'), 8866 _Utils_Tuple2('uplus', 'â'), 8867 _Utils_Tuple2('UpperLeftArrow', 'â'), 8868 _Utils_Tuple2('UpperRightArrow', 'â'), 8869 _Utils_Tuple2('upsi', 'Ï '), 8870 _Utils_Tuple2('Upsi', 'Ï'), 8871 _Utils_Tuple2('upsih', 'Ï'), 8872 _Utils_Tuple2('Upsilon', 'Î¥'), 8873 _Utils_Tuple2('upsilon', 'Ï '), 8874 _Utils_Tuple2('UpTeeArrow', 'â¥'), 8875 _Utils_Tuple2('UpTee', 'â¥'), 8876 _Utils_Tuple2('upuparrows', 'â'), 8877 _Utils_Tuple2('urcorn', 'â'), 8878 _Utils_Tuple2('urcorner', 'â'), 8879 _Utils_Tuple2('urcrop', 'â'), 8880 _Utils_Tuple2('Uring', 'Å®'), 8881 _Utils_Tuple2('uring', 'ů'), 8882 _Utils_Tuple2('urtri', 'â¹'), 8883 _Utils_Tuple2('Uscr', '\uD835\uDCB0'), 8884 _Utils_Tuple2('uscr', '\uD835\uDCCA'), 8885 _Utils_Tuple2('utdot', 'â°'), 8886 _Utils_Tuple2('Utilde', 'Ũ'), 8887 _Utils_Tuple2('utilde', 'Å©'), 8888 _Utils_Tuple2('utri', 'âµ'), 8889 _Utils_Tuple2('utrif', 'â´'), 8890 _Utils_Tuple2('uuarr', 'â'), 8891 _Utils_Tuple2('Uuml', 'Ã'), 8892 _Utils_Tuple2('uuml', 'ü'), 8893 _Utils_Tuple2('uwangle', '⦧'), 8894 _Utils_Tuple2('vangrt', 'â¦'), 8895 _Utils_Tuple2('varepsilon', 'ϵ'), 8896 _Utils_Tuple2('varkappa', 'ϰ'), 8897 _Utils_Tuple2('varnothing', 'â '), 8898 _Utils_Tuple2('varphi', 'Ï'), 8899 _Utils_Tuple2('varpi', 'Ï'), 8900 _Utils_Tuple2('varpropto', 'â'), 8901 _Utils_Tuple2('varr', 'â'), 8902 _Utils_Tuple2('vArr', 'â'), 8903 _Utils_Tuple2('varrho', 'ϱ'), 8904 _Utils_Tuple2('varsigma', 'Ï'), 8905 _Utils_Tuple2('varsubsetneq', 'âï¸'), 8906 _Utils_Tuple2('varsubsetneqq', 'â«ï¸'), 8907 _Utils_Tuple2('varsupsetneq', 'âï¸'), 8908 _Utils_Tuple2('varsupsetneqq', 'â«ï¸'), 8909 _Utils_Tuple2('vartheta', 'Ï'), 8910 _Utils_Tuple2('vartriangleleft', 'â²'), 8911 _Utils_Tuple2('vartriangleright', 'â³'), 8912 _Utils_Tuple2('vBar', '⫨'), 8913 _Utils_Tuple2('Vbar', 'â««'), 8914 _Utils_Tuple2('vBarv', 'â«©'), 8915 _Utils_Tuple2('Vcy', 'Ð'), 8916 _Utils_Tuple2('vcy', 'в'), 8917 _Utils_Tuple2('vdash', 'â¢'), 8918 _Utils_Tuple2('vDash', 'â¨'), 8919 _Utils_Tuple2('Vdash', 'â©'), 8920 _Utils_Tuple2('VDash', 'â«'), 8921 _Utils_Tuple2('Vdashl', '⫦'), 8922 _Utils_Tuple2('veebar', 'â»'), 8923 _Utils_Tuple2('vee', 'â¨'), 8924 _Utils_Tuple2('Vee', 'â'), 8925 _Utils_Tuple2('veeeq', 'â'), 8926 _Utils_Tuple2('vellip', 'â®'), 8927 _Utils_Tuple2('verbar', '|'), 8928 _Utils_Tuple2('Verbar', 'â'), 8929 _Utils_Tuple2('vert', '|'), 8930 _Utils_Tuple2('Vert', 'â'), 8931 _Utils_Tuple2('VerticalBar', 'â£'), 8932 _Utils_Tuple2('VerticalLine', '|'), 8933 _Utils_Tuple2('VerticalSeparator', 'â'), 8934 _Utils_Tuple2('VerticalTilde', 'â'), 8935 _Utils_Tuple2('VeryThinSpace', '\u200A'), 8936 _Utils_Tuple2('Vfr', '\uD835\uDD19'), 8937 _Utils_Tuple2('vfr', '\uD835\uDD33'), 8938 _Utils_Tuple2('vltri', 'â²'), 8939 _Utils_Tuple2('vnsub', 'ââ'), 8940 _Utils_Tuple2('vnsup', 'ââ'), 8941 _Utils_Tuple2('Vopf', '\uD835\uDD4D'), 8942 _Utils_Tuple2('vopf', '\uD835\uDD67'), 8943 _Utils_Tuple2('vprop', 'â'), 8944 _Utils_Tuple2('vrtri', 'â³'), 8945 _Utils_Tuple2('Vscr', '\uD835\uDCB1'), 8946 _Utils_Tuple2('vscr', '\uD835\uDCCB'), 8947 _Utils_Tuple2('vsubnE', 'â«ï¸'), 8948 _Utils_Tuple2('vsubne', 'âï¸'), 8949 _Utils_Tuple2('vsupnE', 'â«ï¸'), 8950 _Utils_Tuple2('vsupne', 'âï¸'), 8951 _Utils_Tuple2('Vvdash', 'âª'), 8952 _Utils_Tuple2('vzigzag', 'â¦'), 8953 _Utils_Tuple2('Wcirc', 'Å´'), 8954 _Utils_Tuple2('wcirc', 'ŵ'), 8955 _Utils_Tuple2('wedbar', 'â©'), 8956 _Utils_Tuple2('wedge', 'â§'), 8957 _Utils_Tuple2('Wedge', 'â'), 8958 _Utils_Tuple2('wedgeq', 'â'), 8959 _Utils_Tuple2('weierp', 'â'), 8960 _Utils_Tuple2('Wfr', '\uD835\uDD1A'), 8961 _Utils_Tuple2('wfr', '\uD835\uDD34'), 8962 _Utils_Tuple2('Wopf', '\uD835\uDD4E'), 8963 _Utils_Tuple2('wopf', '\uD835\uDD68'), 8964 _Utils_Tuple2('wp', 'â'), 8965 _Utils_Tuple2('wr', 'â'), 8966 _Utils_Tuple2('wreath', 'â'), 8967 _Utils_Tuple2('Wscr', '\uD835\uDCB2'), 8968 _Utils_Tuple2('wscr', '\uD835\uDCCC'), 8969 _Utils_Tuple2('xcap', 'â'), 8970 _Utils_Tuple2('xcirc', 'â¯'), 8971 _Utils_Tuple2('xcup', 'â'), 8972 _Utils_Tuple2('xdtri', 'â½'), 8973 _Utils_Tuple2('Xfr', '\uD835\uDD1B'), 8974 _Utils_Tuple2('xfr', '\uD835\uDD35'), 8975 _Utils_Tuple2('xharr', 'â·'), 8976 _Utils_Tuple2('xhArr', 'âº'), 8977 _Utils_Tuple2('Xi', 'Î'), 8978 _Utils_Tuple2('xi', 'ξ'), 8979 _Utils_Tuple2('xlarr', 'âµ'), 8980 _Utils_Tuple2('xlArr', 'â¸'), 8981 _Utils_Tuple2('xmap', 'â¼'), 8982 _Utils_Tuple2('xnis', 'â»'), 8983 _Utils_Tuple2('xodot', 'â¨'), 8984 _Utils_Tuple2('Xopf', '\uD835\uDD4F'), 8985 _Utils_Tuple2('xopf', '\uD835\uDD69'), 8986 _Utils_Tuple2('xoplus', 'â¨'), 8987 _Utils_Tuple2('xotime', 'â¨'), 8988 _Utils_Tuple2('xrarr', 'â¶'), 8989 _Utils_Tuple2('xrArr', 'â¹'), 8990 _Utils_Tuple2('Xscr', '\uD835\uDCB3'), 8991 _Utils_Tuple2('xscr', '\uD835\uDCCD'), 8992 _Utils_Tuple2('xsqcup', 'â¨'), 8993 _Utils_Tuple2('xuplus', 'â¨'), 8994 _Utils_Tuple2('xutri', 'â³'), 8995 _Utils_Tuple2('xvee', 'â'), 8996 _Utils_Tuple2('xwedge', 'â'), 8997 _Utils_Tuple2('Yacute', 'Ã'), 8998 _Utils_Tuple2('yacute', 'ý'), 8999 _Utils_Tuple2('YAcy', 'Я'), 9000 _Utils_Tuple2('yacy', 'Ñ'), 9001 _Utils_Tuple2('Ycirc', 'Ŷ'), 9002 _Utils_Tuple2('ycirc', 'Å·'), 9003 _Utils_Tuple2('Ycy', 'Ы'), 9004 _Utils_Tuple2('ycy', 'Ñ'), 9005 _Utils_Tuple2('yen', 'Â¥'), 9006 _Utils_Tuple2('Yfr', '\uD835\uDD1C'), 9007 _Utils_Tuple2('yfr', '\uD835\uDD36'), 9008 _Utils_Tuple2('YIcy', 'Ð'), 9009 _Utils_Tuple2('yicy', 'Ñ'), 9010 _Utils_Tuple2('Yopf', '\uD835\uDD50'), 9011 _Utils_Tuple2('yopf', '\uD835\uDD6A'), 9012 _Utils_Tuple2('Yscr', '\uD835\uDCB4'), 9013 _Utils_Tuple2('yscr', '\uD835\uDCCE'), 9014 _Utils_Tuple2('YUcy', 'Ю'), 9015 _Utils_Tuple2('yucy', 'Ñ'), 9016 _Utils_Tuple2('yuml', 'ÿ'), 9017 _Utils_Tuple2('Yuml', 'Ÿ'), 9018 _Utils_Tuple2('Zacute', 'Ź'), 9019 _Utils_Tuple2('zacute', 'ź'), 9020 _Utils_Tuple2('Zcaron', 'Ž'), 9021 _Utils_Tuple2('zcaron', 'ž'), 9022 _Utils_Tuple2('Zcy', 'Ð'), 9023 _Utils_Tuple2('zcy', 'з'), 9024 _Utils_Tuple2('Zdot', 'Å»'), 9025 _Utils_Tuple2('zdot', 'ż'), 9026 _Utils_Tuple2('zeetrf', 'â¨'), 9027 _Utils_Tuple2('ZeroWidthSpace', '\u200B'), 9028 _Utils_Tuple2('Zeta', 'Î'), 9029 _Utils_Tuple2('zeta', 'ζ'), 9030 _Utils_Tuple2('zfr', '\uD835\uDD37'), 9031 _Utils_Tuple2('Zfr', 'â¨'), 9032 _Utils_Tuple2('ZHcy', 'Ð'), 9033 _Utils_Tuple2('zhcy', 'ж'), 9034 _Utils_Tuple2('zigrarr', 'â'), 9035 _Utils_Tuple2('zopf', '\uD835\uDD6B'), 9036 _Utils_Tuple2('Zopf', 'â¤'), 9037 _Utils_Tuple2('Zscr', '\uD835\uDCB5'), 9038 _Utils_Tuple2('zscr', '\uD835\uDCCF'), 9039 _Utils_Tuple2('zwj', '\u200D'), 9040 _Utils_Tuple2('zwnj', '\u200C') 9041 ])); 9042var $elm$core$Dict$get = F2( 9043 function (targetKey, dict) { 9044 get: 9045 while (true) { 9046 if (dict.$ === 'RBEmpty_elm_builtin') { 9047 return $elm$core$Maybe$Nothing; 9048 } else { 9049 var key = dict.b; 9050 var value = dict.c; 9051 var left = dict.d; 9052 var right = dict.e;
9053 var _v1 = A2($elm$core$Basics$compare, targetKey, key); 9054 switch (_v1.$) { 9055 case 'LT': 9056 var $temp$targetKey = targetKey, 9057 $temp$dict = left; 9058 targetKey = $temp$targetKey; 9059 dict = $temp$dict; 9060 continue get; 9061 case 'EQ': 9062 return $elm$core$Maybe$Just(value); 9063 default: 9064 var $temp$targetKey = targetKey, 9065 $temp$dict = right; 9066 targetKey = $temp$targetKey; 9067 dict = $temp$dict; 9068 continue get; 9069 } 9070 } 9071 } 9072 }); 9073var $elm$core$Maybe$withDefault = F2( 9074 function (_default, maybe) { 9075 if (maybe.$ === 'Just') { 9076 var value = maybe.a; 9077 return value; 9078 } else { 9079 return _default; 9080 } 9081 }); 9082var $hecrj$html_parser$Html$Parser$namedCharacterReference = A2( 9083 $elm$parser$Parser$map, 9084 function (reference) { 9085 return A2( 9086 $elm$core$Maybe$withDefault, 9087 '&' + (reference + ';'), 9088 A2($elm$core$Dict$get, reference, $hecrj$html_parser$Html$Parser$NamedCharacterReferences$dict)); 9089 }, 9090 $elm$parser$Parser$getChompedString( 9091 $hecrj$html_parser$Html$Parser$chompOneOrMore($elm$core$Char$isAlpha))); 9092var $elm$core$Basics$composeR = F3( 9093 function (f, g, x) { 9094 return g( 9095 f(x)); 9096 }); 9097var $elm$core$String$cons = _String_cons; 9098var $elm$core$String$fromChar = function (_char) { 9099 return A2($elm$core$String$cons, _char, ''); 9100}; 9101var $elm$core$Char$fromCode = _Char_fromCode; 9102var $rtfeldman$elm_hex$Hex$fromStringHelp = F3( 9103 function (position, chars, accumulated) { 9104 fromStringHelp: 9105 while (true) { 9106 if (!chars.b) { 9107 return $elm$core$Result$Ok(accumulated); 9108 } else { 9109 var _char = chars.a; 9110 var rest = chars.b; 9111 switch (_char.valueOf()) { 9112 case '0': 9113 var $temp$position = position - 1, 9114 $temp$chars = rest, 9115 $temp$accumulated = accumulated; 9116 position = $temp$position; 9117 chars = $temp$chars; 9118 accumulated = $temp$accumulated; 9119 continue fromStringHelp; 9120 case '1': 9121 var $temp$position = position - 1, 9122 $temp$chars = rest, 9123 $temp$accumulated = accumulated + A2($elm$core$Basics$pow, 16, position); 9124 position = $temp$position; 9125 chars = $temp$chars; 9126 accumulated = $temp$accumulated; 9127 continue fromStringHelp; 9128 case '2': 9129 var $temp$position = position - 1, 9130 $temp$chars = rest, 9131 $temp$accumulated = accumulated + (2 * A2($elm$core$Basics$pow, 16, position)); 9132 position = $temp$position; 9133 chars = $temp$chars; 9134 accumulated = $temp$accumulated; 9135 continue fromStringHelp; 9136 case '3': 9137 var $temp$position = position - 1, 9138 $temp$chars = rest, 9139 $temp$accumulated = accumulated + (3 * A2($elm$core$Basics$pow, 16, position)); 9140 position = $temp$position; 9141 chars = $temp$chars; 9142 accumulated = $temp$accumulated; 9143 continue fromStringHelp; 9144 case '4': 9145 var $temp$position = position - 1, 9146 $temp$chars = rest, 9147 $temp$accumulated = accumulated + (4 * A2($elm$core$Basics$pow, 16, position)); 9148 position = $temp$position; 9149 chars = $temp$chars; 9150 accumulated = $temp$accumulated; 9151 continue fromStringHelp; 9152 case '5': 9153 var $temp$position = position - 1, 9154 $temp$chars = rest, 9155 $temp$accumulated = accumulated + (5 * A2($elm$core$Basics$pow, 16, position)); 9156 position = $temp$position; 9157 chars = $temp$chars; 9158 accumulated = $temp$accumulated; 9159 continue fromStringHelp; 9160 case '6': 9161 var $temp$position = position - 1, 9162 $temp$chars = rest, 9163 $temp$accumulated = accumulated + (6 * A2($elm$core$Basics$pow, 16, position)); 9164 position = $temp$position; 9165 chars = $temp$chars; 9166 accumulated = $temp$accumulated; 9167 continue fromStringHelp; 9168 case '7': 9169 var $temp$position = position - 1, 9170 $temp$chars = rest, 9171 $temp$accumulated = accumulated + (7 * A2($elm$core$Basics$pow, 16, position)); 9172 position = $temp$position; 9173 chars = $temp$chars; 9174 accumulated = $temp$accumulated; 9175 continue fromStringHelp; 9176 case '8': 9177 var $temp$position = position - 1, 9178 $temp$chars = rest, 9179 $temp$accumulated = accumulated + (8 * A2($elm$core$Basics$pow, 16, position)); 9180 position = $temp$position; 9181 chars = $temp$chars; 9182 accumulated = $temp$accumulated; 9183 continue fromStringHelp; 9184 case '9': 9185 var $temp$position = position - 1, 9186 $temp$chars = rest, 9187 $temp$accumulated = accumulated + (9 * A2($elm$core$Basics$pow, 16, position)); 9188 position = $temp$position; 9189 chars = $temp$chars; 9190 accumulated = $temp$accumulated; 9191 continue fromStringHelp; 9192 case 'a': 9193 var $temp$position = position - 1, 9194 $temp$chars = rest, 9195 $temp$accumulated = accumulated + (10 * A2($elm$core$Basics$pow, 16, position)); 9196 position = $temp$position; 9197 chars = $temp$chars; 9198 accumulated = $temp$accumulated; 9199 continue fromStringHelp; 9200 case 'b': 9201 var $temp$position = position - 1, 9202 $temp$chars = rest, 9203 $temp$accumulated = accumulated + (11 * A2($elm$core$Basics$pow, 16, position)); 9204 position = $temp$position; 9205 chars = $temp$chars; 9206 accumulated = $temp$accumulated; 9207 continue fromStringHelp; 9208 case 'c': 9209 var $temp$position = position - 1, 9210 $temp$chars = rest, 9211 $temp$accumulated = accumulated + (12 * A2($elm$core$Basics$pow, 16, position)); 9212 position = $temp$position; 9213 chars = $temp$chars; 9214 accumulated = $temp$accumulated; 9215 continue fromStringHelp; 9216 case 'd': 9217 var $temp$position = position - 1, 9218 $temp$chars = rest, 9219 $temp$accumulated = accumulated + (13 * A2($elm$core$Basics$pow, 16, position)); 9220 position = $temp$position; 9221 chars = $temp$chars; 9222 accumulated = $temp$accumulated; 9223 continue fromStringHelp; 9224 case 'e': 9225 var $temp$position = position - 1, 9226 $temp$chars = rest, 9227 $temp$accumulated = accumulated + (14 * A2($elm$core$Basics$pow, 16, position)); 9228 position = $temp$position; 9229 chars = $temp$chars; 9230 accumulated = $temp$accumulated; 9231 continue fromStringHelp; 9232 case 'f': 9233 var $temp$position = position - 1, 9234 $temp$chars = rest, 9235 $temp$accumulated = accumulated + (15 * A2($elm$core$Basics$pow, 16, position)); 9236 position = $temp$position; 9237 chars = $temp$chars; 9238 accumulated = $temp$accumulated; 9239 continue fromStringHelp; 9240 default: 9241 var nonHex = _char; 9242 return $elm$core$Result$Err( 9243 $elm$core$String$fromChar(nonHex) + ' is not a valid hexadecimal character.'); 9244 } 9245 } 9246 } 9247 }); 9248var $elm$core$Result$map = F2( 9249 function (func, ra) { 9250 if (ra.$ === 'Ok') { 9251 var a = ra.a; 9252 return $elm$core$Result$Ok( 9253 func(a)); 9254 } else { 9255 var e = ra.a; 9256 return $elm$core$Result$Err(e); 9257 } 9258 }); 9259var $elm$core$Result$mapError = F2( 9260 function (f, result) { 9261 if (result.$ === 'Ok') { 9262 var v = result.a; 9263 return $elm$core$Result$Ok(v); 9264 } else { 9265 var e = result.a; 9266 return $elm$core$Result$Err( 9267 f(e)); 9268 } 9269 }); 9270var $elm$core$List$tail = function (list) { 9271 if (list.b) { 9272 var x = list.a; 9273 var xs = list.b; 9274 return $elm$core$Maybe$Just(xs); 9275 } else { 9276 return $elm$core$Maybe$Nothing; 9277 } 9278};
9279var $elm$core$String$foldr = _String_foldr; 9280var $elm$core$String$toList = function (string) { 9281 return A3($elm$core$String$foldr, $elm$core$List$cons, _List_Nil, string); 9282}; 9283var $rtfeldman$elm_hex$Hex$fromString = function (str) { 9284 if ($elm$core$String$isEmpty(str)) { 9285 return $elm$core$Result$Err('Empty strings are not valid hexadecimal strings.'); 9286 } else { 9287 var result = function () { 9288 if (A2($elm$core$String$startsWith, '-', str)) { 9289 var list = A2( 9290 $elm$core$Maybe$withDefault, 9291 _List_Nil, 9292 $elm$core$List$tail( 9293 $elm$core$String$toList(str))); 9294 return A2( 9295 $elm$core$Result$map, 9296 $elm$core$Basics$negate, 9297 A3( 9298 $rtfeldman$elm_hex$Hex$fromStringHelp, 9299 $elm$core$List$length(list) - 1, 9300 list, 9301 0)); 9302 } else { 9303 return A3( 9304 $rtfeldman$elm_hex$Hex$fromStringHelp, 9305 $elm$core$String$length(str) - 1, 9306 $elm$core$String$toList(str), 9307 0); 9308 } 9309 }(); 9310 var formatError = function (err) { 9311 return A2( 9312 $elm$core$String$join, 9313 ' ', 9314 _List_fromArray( 9315 ['\"' + (str + '\"'), 'is not a valid hexadecimal string because', err])); 9316 }; 9317 return A2($elm$core$Result$mapError, formatError, result); 9318 } 9319}; 9320var $elm$core$Char$isHexDigit = function (_char) { 9321 var code = $elm$core$Char$toCode(_char); 9322 return ((48 <= code) && (code <= 57)) || (((65 <= code) && (code <= 70)) || ((97 <= code) && (code <= 102))); 9323}; 9324var $hecrj$html_parser$Html$Parser$hexadecimal = A2( 9325 $elm$parser$Parser$andThen, 9326 function (hex) { 9327 var _v0 = $rtfeldman$elm_hex$Hex$fromString( 9328 $elm$core$String$toLower(hex)); 9329 if (_v0.$ === 'Ok') { 9330 var value = _v0.a; 9331 return $elm$parser$Parser$succeed(value); 9332 } else { 9333 var error = _v0.a; 9334 return $elm$parser$Parser$problem(error); 9335 } 9336 }, 9337 $elm$parser$Parser$getChompedString( 9338 $hecrj$html_parser$Html$Parser$chompOneOrMore($elm$core$Char$isHexDigit))); 9339var $elm$parser$Parser$ExpectingInt = {$: 'ExpectingInt'}; 9340var $elm$parser$Parser$Advanced$consumeBase = _Parser_consumeBase; 9341var $elm$parser$Parser$Advanced$consumeBase16 = _Parser_consumeBase16; 9342var $elm$parser$Parser$Advanced$bumpOffset = F2( 9343 function (newOffset, s) { 9344 return {col: s.col + (newOffset - s.offset), context: s.context, indent: s.indent, offset: newOffset, row: s.row, src: s.src}; 9345 }); 9346var $elm$parser$Parser$Advanced$chompBase10 = _Parser_chompBase10; 9347var $elm$parser$Parser$Advanced$isAsciiCode = _Parser_isAsciiCode; 9348var $elm$parser$Parser$Advanced$consumeExp = F2( 9349 function (offset, src) { 9350 if (A3($elm$parser$Parser$Advanced$isAsciiCode, 101, offset, src) || A3($elm$parser$Parser$Advanced$isAsciiCode, 69, offset, src)) { 9351 var eOffset = offset + 1; 9352 var expOffset = (A3($elm$parser$Parser$Advanced$isAsciiCode, 43, eOffset, src) || A3($elm$parser$Parser$Advanced$isAsciiCode, 45, eOffset, src)) ? (eOffset + 1) : eOffset; 9353 var newOffset = A2($elm$parser$Parser$Advanced$chompBase10, expOffset, src); 9354 return _Utils_eq(expOffset, newOffset) ? (-newOffset) : newOffset; 9355 } else { 9356 return offset; 9357 } 9358 }); 9359var $elm$parser$Parser$Advanced$consumeDotAndExp = F2( 9360 function (offset, src) { 9361 return A3($elm$parser$Parser$Advanced$isAsciiCode, 46, offset, src) ? A2( 9362 $elm$parser$Parser$Advanced$consumeExp, 9363 A2($elm$parser$Parser$Advanced$chompBase10, offset + 1, src), 9364 src) : A2($elm$parser$Parser$Advanced$consumeExp, offset, src); 9365 }); 9366var $elm$parser$Parser$Advanced$finalizeInt = F5( 9367 function (invalid, handler, startOffset, _v0, s) { 9368 var endOffset = _v0.a; 9369 var n = _v0.b; 9370 if (handler.$ === 'Err') { 9371 var x = handler.a; 9372 return A2( 9373 $elm$parser$Parser$Advanced$Bad, 9374 true, 9375 A2($elm$parser$Parser$Advanced$fromState, s, x)); 9376 } else { 9377 var toValue = handler.a; 9378 return _Utils_eq(startOffset, endOffset) ? A2( 9379 $elm$parser$Parser$Advanced$Bad, 9380 _Utils_cmp(s.offset, startOffset) < 0, 9381 A2($elm$parser$Parser$Advanced$fromState, s, invalid)) : A3( 9382 $elm$parser$Parser$Advanced$Good, 9383 true, 9384 toValue(n), 9385 A2($elm$parser$Parser$Advanced$bumpOffset, endOffset, s)); 9386 } 9387 }); 9388var $elm$core$String$toFloat = _String_toFloat; 9389var $elm$parser$Parser$Advanced$finalizeFloat = F6( 9390 function (invalid, expecting, intSettings, floatSettings, intPair, s) { 9391 var intOffset = intPair.a; 9392 var floatOffset = A2($elm$parser$Parser$Advanced$consumeDotAndExp, intOffset, s.src); 9393 if (floatOffset < 0) { 9394 return A2( 9395 $elm$parser$Parser$Advanced$Bad, 9396 true, 9397 A4($elm$parser$Parser$Advanced$fromInfo, s.row, s.col - (floatOffset + s.offset), invalid, s.context)); 9398 } else { 9399 if (_Utils_eq(s.offset, floatOffset)) { 9400 return A2( 9401 $elm$parser$Parser$Advanced$Bad, 9402 false, 9403 A2($elm$parser$Parser$Advanced$fromState, s, expecting)); 9404 } else { 9405 if (_Utils_eq(intOffset, floatOffset)) { 9406 return A5($elm$parser$Parser$Advanced$finalizeInt, invalid, intSettings, s.offset, intPair, s); 9407 } else { 9408 if (floatSettings.$ === 'Err') { 9409 var x = floatSettings.a; 9410 return A2( 9411 $elm$parser$Parser$Advanced$Bad, 9412 true, 9413 A2($elm$parser$Parser$Advanced$fromState, s, invalid)); 9414 } else { 9415 var toValue = floatSettings.a; 9416 var _v1 = $elm$core$String$toFloat( 9417 A3($elm$core$String$slice, s.offset, floatOffset, s.src)); 9418 if (_v1.$ === 'Nothing') { 9419 return A2( 9420 $elm$parser$Parser$Advanced$Bad, 9421 true, 9422 A2($elm$parser$Parser$Advanced$fromState, s, invalid)); 9423 } else { 9424 var n = _v1.a; 9425 return A3( 9426 $elm$parser$Parser$Advanced$Good, 9427 true, 9428 toValue(n), 9429 A2($elm$parser$Parser$Advanced$bumpOffset, floatOffset, s)); 9430 } 9431 } 9432 } 9433 } 9434 } 9435 }); 9436var $elm$parser$Parser$Advanced$number = function (c) { 9437 return $elm$parser$Parser$Advanced$Parser( 9438 function (s) { 9439 if (A3($elm$parser$Parser$Advanced$isAsciiCode, 48, s.offset, s.src)) { 9440 var zeroOffset = s.offset + 1; 9441 var baseOffset = zeroOffset + 1; 9442 return A3($elm$parser$Parser$Advanced$isAsciiCode, 120, zeroOffset, s.src) ? A5( 9443 $elm$parser$Parser$Advanced$finalizeInt, 9444 c.invalid, 9445 c.hex, 9446 baseOffset, 9447 A2($elm$parser$Parser$Advanced$consumeBase16, baseOffset, s.src), 9448 s) : (A3($elm$parser$Parser$Advanced$isAsciiCode, 111, zeroOffset, s.src) ? A5( 9449 $elm$parser$Parser$Advanced$finalizeInt, 9450 c.invalid, 9451 c.octal, 9452 baseOffset, 9453 A3($elm$parser$Parser$Advanced$consumeBase, 8, baseOffset, s.src), 9454 s) : (A3($elm$parser$Parser$Advanced$isAsciiCode, 98, zeroOffset, s.src) ? A5( 9455 $elm$parser$Parser$Advanced$finalizeInt, 9456 c.invalid, 9457 c.binary, 9458 baseOffset, 9459 A3($elm$parser$Parser$Advanced$consumeBase, 2, baseOffset, s.src), 9460 s) : A6( 9461 $elm$parser$Parser$Advanced$finalizeFloat, 9462 c.invalid, 9463 c.expecting, 9464 c._int, 9465 c._float, 9466 _Utils_Tuple2(zeroOffset, 0), 9467 s))); 9468 } else { 9469 return A6( 9470 $elm$parser$Parser$Advanced$finalizeFloat, 9471 c.invalid, 9472 c.expecting, 9473 c._int, 9474 c._float, 9475 A3($elm$parser$Parser$Advanced$consumeBase, 10, s.offset, s.src), 9476 s); 9477 } 9478 }); 9479}; 9480var $elm$parser$Parser$Advanced$int = F2( 9481 function (expecting, invalid) { 9482 return $elm$parser$Parser$Advanced$number( 9483 { 9484 binary: $elm$core$Result$Err(invalid), 9485 expecting: expecting, 9486 _float: $elm$core$Result$Err(invalid), 9487 hex: $elm$core$Result$Err(invalid), 9488 _int: $elm$core$Result$Ok($elm$core$Basics$identity),
9489 invalid: invalid, 9490 octal: $elm$core$Result$Err(invalid) 9491 }); 9492 }); 9493var $elm$parser$Parser$int = A2($elm$parser$Parser$Advanced$int, $elm$parser$Parser$ExpectingInt, $elm$parser$Parser$ExpectingInt); 9494var $hecrj$html_parser$Html$Parser$numericCharacterReference = function () { 9495 var codepoint = $elm$parser$Parser$oneOf( 9496 _List_fromArray( 9497 [ 9498 A2( 9499 $elm$parser$Parser$keeper, 9500 A2( 9501 $elm$parser$Parser$ignorer, 9502 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9503 $elm$parser$Parser$chompIf( 9504 function (c) { 9505 return _Utils_eq( 9506 c, 9507 _Utils_chr('x')) || _Utils_eq( 9508 c, 9509 _Utils_chr('X')); 9510 })), 9511 $hecrj$html_parser$Html$Parser$hexadecimal), 9512 A2( 9513 $elm$parser$Parser$keeper, 9514 A2( 9515 $elm$parser$Parser$ignorer, 9516 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9517 $elm$parser$Parser$chompWhile( 9518 $elm$core$Basics$eq( 9519 _Utils_chr('0')))), 9520 $elm$parser$Parser$int) 9521 ])); 9522 return A2( 9523 $elm$parser$Parser$keeper, 9524 A2( 9525 $elm$parser$Parser$ignorer, 9526 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9527 $elm$parser$Parser$chompIf( 9528 $elm$core$Basics$eq( 9529 _Utils_chr('#')))), 9530 A2( 9531 $elm$parser$Parser$map, 9532 A2($elm$core$Basics$composeR, $elm$core$Char$fromCode, $elm$core$String$fromChar), 9533 codepoint)); 9534}(); 9535var $hecrj$html_parser$Html$Parser$characterReference = A2( 9536 $elm$parser$Parser$keeper, 9537 A2( 9538 $elm$parser$Parser$ignorer, 9539 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9540 $elm$parser$Parser$chompIf( 9541 $elm$core$Basics$eq( 9542 _Utils_chr('&')))), 9543 $elm$parser$Parser$oneOf( 9544 _List_fromArray( 9545 [ 9546 A2( 9547 $elm$parser$Parser$ignorer, 9548 $elm$parser$Parser$backtrackable($hecrj$html_parser$Html$Parser$namedCharacterReference), 9549 $hecrj$html_parser$Html$Parser$chompSemicolon), 9550 A2( 9551 $elm$parser$Parser$ignorer, 9552 $elm$parser$Parser$backtrackable($hecrj$html_parser$Html$Parser$numericCharacterReference), 9553 $hecrj$html_parser$Html$Parser$chompSemicolon), 9554 $elm$parser$Parser$succeed('&') 9555 ]))); 9556var $hecrj$html_parser$Html$Parser$tagAttributeQuotedValue = function (quote) { 9557 var isQuotedValueChar = function (c) { 9558 return (!_Utils_eq(c, quote)) && (!_Utils_eq( 9559 c, 9560 _Utils_chr('&'))); 9561 }; 9562 return A2( 9563 $elm$parser$Parser$keeper, 9564 A2( 9565 $elm$parser$Parser$ignorer, 9566 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9567 $elm$parser$Parser$chompIf( 9568 $elm$core$Basics$eq(quote))), 9569 A2( 9570 $elm$parser$Parser$ignorer, 9571 A2( 9572 $elm$parser$Parser$map, 9573 $elm$core$String$join(''), 9574 $hecrj$html_parser$Html$Parser$many( 9575 $elm$parser$Parser$oneOf( 9576 _List_fromArray( 9577 [ 9578 $elm$parser$Parser$getChompedString( 9579 $hecrj$html_parser$Html$Parser$chompOneOrMore(isQuotedValueChar)), 9580 $hecrj$html_parser$Html$Parser$characterReference 9581 ])))), 9582 $elm$parser$Parser$chompIf( 9583 $elm$core$Basics$eq(quote)))); 9584}; 9585var $elm$core$List$isEmpty = function (xs) { 9586 if (!xs.b) { 9587 return true; 9588 } else { 9589 return false; 9590 } 9591}; 9592var $hecrj$html_parser$Html$Parser$oneOrMore = F2( 9593 function (type_, parser_) { 9594 return A2( 9595 $elm$parser$Parser$loop, 9596 _List_Nil, 9597 function (list) { 9598 return $elm$parser$Parser$oneOf( 9599 _List_fromArray( 9600 [ 9601 A2( 9602 $elm$parser$Parser$map, 9603 function (_new) { 9604 return $elm$parser$Parser$Loop( 9605 A2($elm$core$List$cons, _new, list)); 9606 }, 9607 parser_), 9608 $elm$core$List$isEmpty(list) ? $elm$parser$Parser$problem('expecting at least one ' + type_) : $elm$parser$Parser$succeed( 9609 $elm$parser$Parser$Done( 9610 $elm$core$List$reverse(list))) 9611 ])); 9612 }); 9613 }); 9614var $hecrj$html_parser$Html$Parser$tagAttributeUnquotedValue = function () { 9615 var isUnquotedValueChar = function (c) { 9616 return (!$hecrj$html_parser$Html$Parser$isSpaceCharacter(c)) && ((!_Utils_eq( 9617 c, 9618 _Utils_chr('\"'))) && ((!_Utils_eq( 9619 c, 9620 _Utils_chr('\''))) && ((!_Utils_eq( 9621 c, 9622 _Utils_chr('='))) && ((!_Utils_eq( 9623 c, 9624 _Utils_chr('<'))) && ((!_Utils_eq( 9625 c, 9626 _Utils_chr('>'))) && ((!_Utils_eq( 9627 c, 9628 _Utils_chr('`'))) && (!_Utils_eq( 9629 c,
9630 _Utils_chr('&'))))))))); 9631 }; 9632 return A2( 9633 $elm$parser$Parser$map, 9634 $elm$core$String$join(''), 9635 A2( 9636 $hecrj$html_parser$Html$Parser$oneOrMore, 9637 'attribute value', 9638 $elm$parser$Parser$oneOf( 9639 _List_fromArray( 9640 [ 9641 $elm$parser$Parser$getChompedString( 9642 $hecrj$html_parser$Html$Parser$chompOneOrMore(isUnquotedValueChar)), 9643 $hecrj$html_parser$Html$Parser$characterReference 9644 ])))); 9645}(); 9646var $hecrj$html_parser$Html$Parser$tagAttributeValue = $elm$parser$Parser$oneOf( 9647 _List_fromArray( 9648 [ 9649 A2( 9650 $elm$parser$Parser$keeper, 9651 A2( 9652 $elm$parser$Parser$ignorer, 9653 A2( 9654 $elm$parser$Parser$ignorer, 9655 $elm$parser$Parser$succeed($elm$core$Basics$identity), 9656 $elm$parser$Parser$chompIf( 9657 $elm$core$Basics$eq( 9658 _Utils_chr('=')))), 9659 $elm$parser$Parser$chompWhile($hecrj$html_parser$Html$Parser$isSpaceCharacter)), 9660 $elm$parser$Parser$oneOf( 9661 _List_fromArray( 9662 [ 9663 $hecrj$html_parser$Html$Parser$tagAttributeUnquotedValue, 9664 $hecrj$html_parser$Html$Parser$tagAttributeQuotedValue( 9665 _Utils_chr('\"')), 9666 $hecrj$html_parser$Html$Parser$tagAttributeQuotedValue( 9667 _Utils_chr('\'')) 9668 ]))), 9669 $elm$parser$Parser$succeed('') 9670 ])); 9671var $hecrj$html_parser$Html$Parser$tagAttribute = A2( 9672 $elm$parser$Parser$keeper, 9673 A2( 9674 $elm$parser$Parser$keeper, 9675 $elm$parser$Parser$succeed($elm$core$Tuple$pair), 9676 A2( 9677 $elm$parser$Parser$ignorer, 9678 $hecrj$html_parser$Html$Parser$tagAttributeName, 9679 $elm$parser$Parser$chompWhile($hecrj$html_parser$Html$Parser$isSpaceCharacter))), 9680 A2( 9681 $elm$parser$Parser$ignorer, 9682 $hecrj$html_parser$Html$Parser$tagAttributeValue, 9683 $elm$parser$Parser$chompWhile($hecrj$html_parser$Html$Parser$isSpaceCharacter))); 9684var $hecrj$html_parser$Html$Parser$tagAttributes = $hecrj$html_parser$Html$Parser$many($hecrj$html_parser$Html$Parser$tagAttribute); 9685var $hecrj$html_parser$Html$Parser$tagName = A2( 9686 $elm$parser$Parser$map, 9687 $elm$core$String$toLower, 9688 $elm$parser$Parser$getChompedString( 9689 A2( 9690 $elm$parser$Parser$ignorer, 9691 $elm$parser$Parser$chompIf($elm$core$Char$isAlphaNum), 9692 $elm$parser$Parser$chompWhile( 9693 function (c) { 9694 return $elm$core$Char$isAlphaNum(c) || _Utils_eq( 9695 c, 9696 _Utils_chr('-')); 9697 })))); 9698var $hecrj$html_parser$Html$Parser$Text = function (a) { 9699 return {$: 'Text', a: a}; 9700}; 9701var $hecrj$html_parser$Html$Parser$text = A2( 9702 $elm$parser$Parser$map, 9703 A2( 9704 $elm$core$Basics$composeR, 9705 $elm$core$String$join(''), 9706 $hecrj$html_parser$Html$Parser$Text), 9707 A2( 9708 $hecrj$html_parser$Html$Parser$oneOrMore, 9709 'text element', 9710 $elm$parser$Parser$oneOf( 9711 _List_fromArray( 9712 [ 9713 $elm$parser$Parser$getChompedString( 9714 $hecrj$html_parser$Html$Parser$chompOneOrMore( 9715 function (c) { 9716 return (!_Utils_eq( 9717 c, 9718 _Utils_chr('<'))) && (!_Utils_eq( 9719 c, 9720 _Utils_chr('&'))); 9721 })), 9722 $hecrj$html_parser$Html$Parser$characterReference 9723 ])))); 9724function $hecrj$html_parser$Html$Parser$cyclic$node() { 9725 return $elm$parser$Parser$oneOf( 9726 _List_fromArray( 9727 [ 9728 $hecrj$html_parser$Html$Parser$text, 9729 $hecrj$html_parser$Html$Parser$comment, 9730 $hecrj$html_parser$Html$Parser$cyclic$element() 9731 ])); 9732} 9733function $hecrj$html_parser$Html$Parser$cyclic$element() { 9734 return A2( 9735 $elm$parser$Parser$andThen, 9736 function (_v0) { 9737 var name = _v0.a; 9738 var attributes = _v0.b; 9739 return $hecrj$html_parser$Html$Parser$isVoidElement(name) ? A2( 9740 $elm$parser$Parser$ignorer, 9741 A2( 9742 $elm$parser$Parser$ignorer, 9743 $elm$parser$Parser$succeed( 9744 A3($hecrj$html_parser$Html$Parser$Element, name, attributes, _List_Nil)), 9745 $elm$parser$Parser$oneOf( 9746 _List_fromArray( 9747 [ 9748 $elm$parser$Parser$chompIf( 9749 $elm$core$Basics$eq( 9750 _Utils_chr('/'))), 9751 $elm$parser$Parser$succeed(_Utils_Tuple0) 9752 ]))), 9753 $elm$parser$Parser$chompIf( 9754 $elm$core$Basics$eq( 9755 _Utils_chr('>')))) : A2( 9756 $elm$parser$Parser$keeper, 9757 A2( 9758 $elm$parser$Parser$ignorer, 9759 $elm$parser$Parser$succeed( 9760 A2($hecrj$html_parser$Html$Parser$Element, name, attributes)), 9761 $elm$parser$Parser$chompIf( 9762 $elm$core$Basics$eq( 9763 _Utils_chr('>')))), 9764 A2( 9765 $elm$parser$Parser$ignorer, 9766 $hecrj$html_parser$Html$Parser$many( 9767 $elm$parser$Parser$backtrackable( 9768 $hecrj$html_parser$Html$Parser$cyclic$node())), 9769 $hecrj$html_parser$Html$Parser$closingTag(name))); 9770 }, 9771 A2( 9772 $elm$parser$Parser$keeper, 9773 A2( 9774 $elm$parser$Parser$keeper, 9775 A2( 9776 $elm$parser$Parser$ignorer, 9777 $elm$parser$Parser$succeed($elm$core$Tuple$pair), 9778 $elm$parser$Parser$chompIf( 9779 $elm$core$Basics$eq( 9780 _Utils_chr('<')))), 9781 A2( 9782 $elm$parser$Parser$ignorer, 9783 $hecrj$html_parser$Html$Parser$tagName, 9784 $elm$parser$Parser$chompWhile($hecrj$html_parser$Html$Parser$isSpaceCharacter))), 9785 $hecrj$html_parser$Html$Parser$tagAttributes)); 9786} 9787try { 9788 var $hecrj$html_parser$Html$Parser$node = $hecrj$html_parser$Html$Parser$cyclic$node(); 9789 $hecrj$html_parser$Html$Parser$cyclic$node = function () { 9790 return $hecrj$html_parser$Html$Parser$node; 9791 }; 9792 var $hecrj$html_parser$Html$Parser$element = $hecrj$html_parser$Html$Parser$cyclic$element
9792(); 9793 $hecrj$html_parser$Html$Parser$cyclic$element = function () { 9794 return $hecrj$html_parser$Html$Parser$element; 9795 }; 9796} catch ($) { 9797 throw 'Some top-level definitions from `Html.Parser` are causing infinite recursion:\n\n âââââââ\n â node\n â â\n â element\n âââââââ\n\nThese errors are very tricky, so read https://elm-lang.org/0.19.1/bad-recursion to learn how to fix it!';} 9798var $elm$parser$Parser$DeadEnd = F3( 9799 function (row, col, problem) { 9800 return {col: col, problem: problem, row: row}; 9801 }); 9802var $elm$parser$Parser$problemToDeadEnd = function (p) { 9803 return A3($elm$parser$Parser$DeadEnd, p.row, p.col, p.problem); 9804}; 9805var $elm$parser$Parser$Advanced$bagToList = F2( 9806 function (bag, list) { 9807 bagToList: 9808 while (true) { 9809 switch (bag.$) { 9810 case 'Empty': 9811 return list; 9812 case 'AddRight': 9813 var bag1 = bag.a; 9814 var x = bag.b; 9815 var $temp$bag = bag1, 9816 $temp$list = A2($elm$core$List$cons, x, list); 9817 bag = $temp$bag; 9818 list = $temp$list; 9819 continue bagToList; 9820 default: 9821 var bag1 = bag.a; 9822 var bag2 = bag.b; 9823 var $temp$bag = bag1, 9824 $temp$list = A2($elm$parser$Parser$Advanced$bagToList, bag2, list); 9825 bag = $temp$bag; 9826 list = $temp$list; 9827 continue bagToList; 9828 } 9829 } 9830 }); 9831var $elm$parser$Parser$Advanced$run = F2( 9832 function (_v0, src) { 9833 var parse = _v0.a; 9834 var _v1 = parse( 9835 {col: 1, context: _List_Nil, indent: 1, offset: 0, row: 1, src: src}); 9836 if (_v1.$ === 'Good') { 9837 var value = _v1.b; 9838 return $elm$core$Result$Ok(value); 9839 } else { 9840 var bag = _v1.b; 9841 return $elm$core$Result$Err( 9842 A2($elm$parser$Parser$Advanced$bagToList, bag, _List_Nil)); 9843 } 9844 }); 9845var $elm$parser$Parser$run = F2( 9846 function (parser, source) { 9847 var _v0 = A2($elm$parser$Parser$Advanced$run, parser, source); 9848 if (_v0.$ === 'Ok') { 9849 var a = _v0.a; 9850 return $elm$core$Result$Ok(a); 9851 } else { 9852 var problems = _v0.a; 9853 return $elm$core$Result$Err( 9854 A2($elm$core$List$map, $elm$parser$Parser$problemToDeadEnd, problems)); 9855 } 9856 }); 9857var $hecrj$html_parser$Html$Parser$run = function (str) { 9858 return $elm$core$String$isEmpty(str) ? $elm$core$Result$Ok(_List_Nil) : A2( 9859 $elm$parser$Parser$run, 9860 A2($hecrj$html_parser$Html$Parser$oneOrMore, 'node', $hecrj$html_parser$Html$Parser$node), 9861 str); 9862}; 9863var $elm$virtual_dom$VirtualDom$node = function (tag) { 9864 return _VirtualDom_node( 9865 _VirtualDom_noScript(tag)); 9866}; 9867var $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node; 9868var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; 9869var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; 9870var $elm$virtual_dom$VirtualDom$attribute = F2( 9871 function (key, value) { 9872 return A2( 9873 _VirtualDom_attribute, 9874 _VirtualDom_noOnOrFormAction(key), 9875 _VirtualDom_noJavaScriptOrHtmlUri(value)); 9876 }); 9877var $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute; 9878var $hecrj$html_parser$Html$Parser$Util$toAttribute = function (_v0) { 9879 var name = _v0.a; 9880 var value = _v0.b; 9881 return A2($elm$html$Html$Attributes$attribute, name, value); 9882}; 9883var $hecrj$html_parser$Html$Parser$Util$toVirtualDom = function (nodes) { 9884 return A2($elm$core$List$map, $hecrj$html_parser$Html$Parser$Util$toVirtualDomEach, nodes); 9885}; 9886var $hecrj$html_parser$Html$Parser$Util$toVirtualDomEach = function (node) { 9887 switch (node.$) { 9888 case 'Element': 9889 var name = node.a; 9890 var attrs = node.b; 9891 var children = node.c; 9892 return A3( 9893 $elm$html$Html$node, 9894 name, 9895 A2($elm$core$List$map, $hecrj$html_parser$Html$Parser$Util$toAttribute, attrs), 9896 $hecrj$html_parser$Html$Parser$Util$toVirtualDom(children)); 9897 case 'Text': 9898 var s = node.a; 9899 return $elm$html$Html$text(s); 9900 default: 9901 return $elm$html$Html$text(''); 9902 } 9903}; 9904var $author$project$MainCupnakyma$textHtml = function (t) { 9905 var _v0 = $hecrj$html_parser$Html$Parser$run(t); 9906 if (_v0.$ === 'Ok') { 9907 var nodes = _v0.a; 9908 return $hecrj$html_parser$Html$Parser$Util$toVirtualDom(nodes); 9909 } else { 9910 return _List_Nil; 9911 } 9912}; 9913var $author$project$MainCupnakyma$view = function (model) { 9914 return A2( 9915 $elm$html$Html$span, 9916 _List_Nil, 9917 $author$project$MainCupnakyma$textHtml( 9918 $author$project$MainCupnakyma$cupHtmlTable(model))); 9919}; 9920var $author$project$MainCupnakyma$main = $elm$browser$Browser$element( 9921 {init: $author$project$MainCupnakyma$init, subscriptions: $author$project$MainCupnakyma$subscriptions, update: $author$project$MainCupnakyma$update, view: $author$project$MainCupnakyma$view}); 9922_Platform_export({'MainCupnakyma':{'init':$author$project$MainCupnakyma$main($elm$json$Json$Decode$string)(0)}});}(this));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.