appcui 0.4.8

A feature-rich and cross-platform TUI/CUI framework for Rust, enabling modern terminal-based applications on Windows, Linux, and macOS. Includes built-in UI components like buttons, menus, list views, tree views, checkboxes, and more. Perfect for building fast and interactive CLI tools and text-based interfaces.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
use crate::prelude::{BitTile, BitTileU16, BitTileU32, BitTileU64, StringFormatError, Glyph};
use crate::prelude::*;
use super::super::{Character, Color, RenderOptionsBuilder, Size, SurfaceTester};
use super::BitTileRenderMethod;
use super::CharacterSet;
use super::ColorSchema;
use super::Image;
use super::Pixel;
use super::RenderOptions;
use super::Scale;
use std::str::FromStr;

const HEART: &str = r#"
        |BB..........BB|
        |B..rr....rr..B|
        |..rrrr..rrrr..|
        |.rrrrrrrrrrrr.|
        |.raaaaaaaaaar.|
        |..ryyyyyyyyr..|
        |   rwwwwwwr   |
        |....rwwwwr....|
        |G....rwwr....G|
        |GG....rr....GG|
"#;

const HEART_RED: &str = r#"
        |...rr....rr...|
        |..rrrr..rrrr..|
        |.rrrrrrrrrrrr.|
        |.rrrrrrrrrrrr.|
        |..rrrrrrrrrr..|
        |   rrrrrrrr   |
        |....rrrrrr....|
        |.....rrrr.....|
        |......rr......|
"#;

const ALL_COLORS: &str = r#"
        |0123456789gArPYW|
        | BGTRMOSsbgarpyw|
        |.BGTRmoSsbgtrpyw|
"#;

static FLOWER: [u32; 5000] = [
    0xFF6DA8FB, 0xFF6DA9FE, 0xFF6CA8FB, 0xFF6EAAFE, 0xFF6CA7FA, 0xFF6DA9FE, 0xFF6DA7FA, 0xFF6EAAFE, 0xFF6DA7FA, 0xFF6EAAFF, 0xFF6CA7FA, 0xFF6EAAFF,
    0xFF6DA8FA, 0xFF6EAAFF, 0xFF6CA7FA, 0xFF6EAAFE, 0xFF6BA6FA, 0xFF6CA9FF, 0xFF6AA6FA, 0xFF6CA9FE, 0xFF6BA7FB, 0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA8FD,
    0xFF6AA7FB, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6AA7FC, 0xFF6BA8FD, 0xFF6AA6FB, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6BA9FF, 0xFF6AA6FB, 0xFF6CA9FF, 0xFF6AA6FB,
    0xFF6BA8FF, 0xFF6AA6FA, 0xFF6CA9FF, 0xFF6AA5FA, 0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA8FF, 0xFF6AA6FB, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6BA7FC, 0xFF6BA7FD,
    0xFF6AA7FC, 0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA8FE, 0xFF6BA7FC, 0xFF6CA9FE, 0xFF6AA6FA, 0xFF6BA9FF, 0xFF6AA7FB, 0xFF6BA9FF, 0xFF6AA6FB, 0xFF6BA9FF,
    0xFF6AA6FB, 0xFF6BA8FE, 0xFF6AA6FA, 0xFF6BA9FF, 0xFF6AA7FC, 0xFF6CA9FF, 0xFF6AA6FB, 0xFF6BA8FE, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6BA8FE, 0xFF6BA8FE,
    0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA9FF, 0xFF69A5FA, 0xFF6BA9FF, 0xFF6AA6FA, 0xFF6BA9FF, 0xFF6AA7FB, 0xFF6BA9FF, 0xFF69A6FB, 0xFF6BA8FE, 0xFF6AA7FC,
    0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA8FD, 0xFF6BA8FD, 0xFF6AA6FC, 0xFF6AA7FE, 0xFF6AA7FC, 0xFF6BA8FE, 0xFF6AA7FC, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6BA9FF,
    0xFF6AA6FB, 0xFF6BA9FF, 0xFF69A5FA, 0xFF6AA8FF, 0xFF61A2FB, 0xFF62A3FE, 0xFF61A1FB, 0xFF62A4FF, 0xFF60A0F9, 0xFF62A3FF, 0xFF60A0FA, 0xFF62A3FE,
    0xFF60A0FA, 0xFF62A4FF, 0xFF609FF9, 0xFF62A4FF, 0xFF60A0F9, 0xFF62A4FF, 0xFF61A0FA, 0xFF63A4FF, 0xFF6AA6F9, 0xFF6FABFF, 0xFF6BA6F8, 0xFF6EAAFE,
    0xFF6BA6F9, 0xFF6BA8FE, 0xFF6AA6FA, 0xFF6BA8FC, 0xFF6AA6FB, 0xFF6BA7FC, 0xFF6BA7FC, 0xFF6BA7FB, 0xFF6BA8FD, 0xFF6AA6FA, 0xFF6BA8FE, 0xFF6AA5F9,
    0xFF6CA9FF, 0xFF6AA5F9, 0xFF6CA8FE, 0xFF69A5F9, 0xFF6CA9FF, 0xFF69A5F9, 0xFF6CA9FF, 0xFF6AA5F9, 0xFF6BA8FE, 0xFF69A5FA, 0xFF6BA8FF, 0xFF6AA5FA,
    0xFF6AA7FD, 0xFF6AA6FB, 0xFF6AA7FC, 0xFF6BA7FC, 0xFF6AA6FB, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6BA8FD, 0xFF6AA5F9, 0xFF6BA9FE, 0xFF6AA6F9, 0xFF6BA9FE,
    0xFF6AA6FA, 0xFF6BA8FE, 0xFF69A5F9, 0xFF6CA9FF, 0xFF69A5F9, 0xFF6BA8FE, 0xFF69A5F9, 0xFF6BA9FF, 0xFF69A5FA, 0xFF6BA8FE, 0xFF69A5FA, 0xFF6BA8FE,
    0xFF6AA7FC, 0xFF6AA7FC, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6BA8FE, 0xFF69A5F8, 0xFF6CA9FF, 0xFF69A5F9, 0xFF6BA9FE, 0xFF6AA5F9,
    0xFF6CA9FF, 0xFF69A5FA, 0xFF6DA9FE, 0xFF6CA7FB, 0xFF6DA9FD, 0xFF6CA8FB, 0xFF6CA8FC, 0xFF6DA9FD, 0xFF6CA7FA, 0xFF6DA9FD, 0xFF6CA7FA, 0xFF6DA9FE,
    0xFF6CA7FA, 0xFF6CA9FD, 0xFF6AA6F9, 0xFF6BA9FF, 0xFF69A5F8, 0xFF6CA9FF, 0xFF69A5F8, 0xFF6BA8FF, 0xFFBBD3EE, 0xFFBCD4F1, 0xFFBAD2EF, 0xFFBAD4F3,
    0xFFB6CEEC, 0xFFB7D1F2, 0xFFB6CFEE, 0xFFB8D3F3, 0xFFB7D0EF, 0xFFB9D3F3, 0xFFB6CFED, 0xFFB9D4F4, 0xFFB5CEED, 0xFFB8D3F4, 0xFFB0CCEE, 0xFFB1CFF2,
    0xFF72A9F6, 0xFF5FA2FF, 0xFF62A1FA, 0xFF64A6FF, 0xFF66A4FA, 0xFF6EAAFE, 0xFF6CA8FB, 0xFF6DA9FC, 0xFF6CA8FB, 0xFF6BA8FC, 0xFF6BA7FC, 0xFF6BA7FB,
    0xFF6BA8FE, 0xFF6AA7FB, 0xFF6BA8FD, 0xFF6AA6F9, 0xFF6CA9FF, 0xFF69A5F8, 0xFF6BA8FE, 0xFF69A4F7, 0xFF6CA9FF, 0xFF6AA5FA, 0xFF6CA9FF, 0xFF6AA5F9,
    0xFF6BA8FD, 0xFF69A5F8, 0xFF6BA8FF, 0xFF69A5F9, 0xFF6BA8FE, 0xFF6BA6FA, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6AA6FB, 0xFF6BA8FD, 0xFF6AA6FB, 0xFF6BA8FE,
    0xFF6AA5F8, 0xFF6CA9FF, 0xFF6AA6FA, 0xFF6BA7FD, 0xFF69A5F8, 0xFF6BA9FE, 0xFF69A5F7, 0xFF6CAAFF, 0xFF6AA5FA, 0xFF6BA8FE, 0xFF69A5F9, 0xFF6BA9FF,
    0xFF69A4F8, 0xFF6BA8FE, 0xFF6AA6FA, 0xFF6BA8FE, 0xFF6AA7FB, 0xFF6BA8FD, 0xFF6BA7FB, 0xFF6AA6FA, 0xFF6CA9FE, 0xFF6AA6FA, 0xFF6BA8FE, 0xFF6AA5F8,
    0xFF6CAAFF, 0xFF6AA6F8, 0xFF6EAAFE, 0xFF6CA6F8, 0xFF6EABFE, 0xFF6CA7FA, 0xFF65A6FF, 0xFF63A3FD, 0xFF62A3FF, 0xFF61A1FC, 0xFF60A1FC, 0xFF61A2FE,
    0xFF60A1FB, 0xFF62A3FF, 0xFF60A0FA, 0xFF62A3FF, 0xFF62A2FB, 0xFF65A5FF, 0xFF6BA7F9, 0xFF6EABFF, 0xFF6BA6F7, 0xFF6DAAFF, 0xFF6AA5F9, 0xFF6BA9FE,
    0xFFFEFAED, 0xFFFFFCEF, 0xFFFDF9EB, 0xFFFFFEF0, 0xFFFDFAED, 0xFFFDF9ED, 0xFFFBF8EC, 0xFFFFFCEF, 0xFFFBF8EB, 0xFFFEFBEF, 0xFFFCF9EC, 0xFFFFFCF0,
    0xFFFAF7EA, 0xFFFFFDF1, 0xFFF8F7ED, 0xFFFAF8ED, 0xFFBCD4F0, 0xFFA4C8F7, 0xFF9EC1EF, 0xFF9FC4F3, 0xFF83B2F4, 0xFF5DA1FF, 0xFF62A2FD, 0xFF62A3FE,
    0xFF62A3FC, 0xFF6CA9FC, 0xFF6DA8FB, 0xFF6CA8FB, 0xFF6DA9FC, 0xFF6BA6FB, 0xFF6BA8FD, 0xFF6AA5F8, 0xFF6BA8FE, 0xFF69A5F8, 0xFF6CA9FF, 0xFF6AA5F9,
    0xFF6CA9FF, 0xFF69A4F7, 0xFF6CA9FF, 0xFF69A4F7, 0xFF6BA8FE, 0xFF6AA6FA, 0xFF6BA8FE, 0xFF6AA5F9, 0xFF6BA8FD, 0xFF6BA7FB, 0xFF6BA8FC, 0xFF6AA6F9,
    0xFF69A5F9, 0xFF69A5F9, 0xFF69A4F8, 0xFF6BA7FB, 0xFF69A4F7, 0xFF6BA8FD, 0xFF6AA6FA, 0xFF6CA9FF, 0xFF69A5F9, 0xFF6BA8FE, 0xFF69A4F7, 0xFF6CAAFF,
    0xFF69A5F8, 0xFF6BA7FD, 0xFF69A5F9, 0xFF6BA9FF, 0xFF69A4F8, 0xFF6CA9FF, 0xFF6AA5F9, 0xFF6BA8FD, 0xFF6BA7FB, 0xFF6BA8FC, 0xFF6BA8FC, 0xFF6BA7FA,
    0xFF6EAAFE, 0xFF6CA7F9, 0xFF6DAAFE, 0xFF6CA7F9, 0xFF6FACFF, 0xFF6AA5F8, 0xFF62A4FF, 0xFF60A1FA, 0xFF62A4FF, 0xFF5F9FFA, 0xFF91BCF5, 0xFF9BBFF0,
    0xFFA2C5F3, 0xFFA6C7F1, 0xFFA5C7F2, 0xFFA7C8F3, 0xFFA4C5F0, 0xFFA5C8F4, 0xFFA4C5EF, 0xFFA7C9F6, 0xFF9CC0F0, 0xFF93BCF4, 0xFF65A4FB, 0xFF62A5FF,
    0xFF64A3FD, 0xFF67A8FF, 0xFF6AA5F8, 0xFF6DAAFE, 0xFFDAE3E7, 0xFFDDE5E9, 0xFFD1DDE8, 0xFFD0DCE7, 0xFFF0F2ED, 0xFFF8F8F1, 0xFFF1F2EB, 0xFFF8F8F2,
    0xFFF4F4ED, 0xFFF8F8F1, 0xFFF0F1EC, 0xFFF4F5F1, 0xFFF0F2ED, 0xFFF4F6F1, 0xFFF0F1EC, 0xFFF4F5F1, 0xFFFBF8ED, 0xFFFFFFF2, 0xFFF8F6EB, 0xFFF7F6EC,
    0xFFCFDEED, 0xFF9EC4F8, 0xFF9FC3F2, 0xFF9CC3F5, 0xFF95BFF5, 0xFF66A4FC, 0xFF63A3FE, 0xFF64A4FD, 0xFF65A5FF, 0xFF69A5F9, 0xFF6CA9FE, 0xFF6AA6FA,
    0xFF6CA9FD, 0xFF6AA5F8, 0xFF6CAAFF, 0xFF6AA5F8, 0xFF6CA9FF, 0xFF6AA5FA, 0xFF6CA9FF, 0xFF6AA5F9, 0xFF6CA9FE, 0xFF6AA6FA, 0xFF6CA9FF, 0xFF6AA6F9,
    0xFF6BA8FC, 0xFF6AA5F9, 0xFF6BA8FD, 0xFF71AEFF, 0xFF71AEFF, 0xFF72AFFF, 0xFF71AEFF, 0xFF71AFFF, 0xFF71AEFF, 0xFF6DAAFF, 0xFF69A4F9, 0xFF6BA8FD,
    0xFF6AA5F8, 0xFF6CA9FF, 0xFF6AA5FA, 0xFF6CA9FF, 0xFF6AA5FA, 0xFF6BA8FE, 0xFF69A4F8, 0xFF6CA9FF, 0xFF69A5F8, 0xFF6CA9FF, 0xFF6AA6FA, 0xFF6BA8FE,
    0xFF6BA7FC, 0xFF6CA8FB, 0xFF6DA9FC, 0xFF68A6FA, 0xFF65A5FF, 0xFF63A2FB, 0xFF64A5FF, 0xFF62A1FA, 0xFF61A4FF, 0xFF6EA8F8, 0xFFA8C9F4, 0xFFA6C7F2,
    0xFFA9CBF6, 0xFFA8C6EE, 0xFFE4E9EB, 0xFFF0F1EA, 0xFFF7F6EB, 0xFFFFFBEE, 0xFFFCF9EC, 0xFFFEFAEE, 0xFFFDF9ED, 0xFFFFFCEF, 0xFFFDFAED, 0xFFFFFCF0,
    0xFFEFF0E9, 0xFFE6EBEA, 0xFFB3CFF2, 0xFFA6C9F5, 0xFF91B9F0, 0xFF8DBAF7, 0xFF68A4F8, 0xFF66A6FF, 0xFF90BAF4, 0xFF91B8EE, 0xFFB5CAE3, 0xFFC3D2E3,
    0xFFD5DFE7, 0xFFDFE7ED, 0xFFD8E1E6, 0xFFDFE7ED, 0xFFDBE4E9, 0xFFDDE6EC, 0xFFEDEFEA, 0xFFFBFAF3, 0xFFF4F4ED, 0xFFF9F9F2, 0xFFF6F6EF, 0xFFFAF9F2,
    0xFFECEFED, 0xFFDDE6EE, 0xFFDBE4E9, 0xFFDEE7ED, 0xFFDFE6E6, 0xFFF0F0EA, 0xFFF6F5EB, 0xFFFFFCED, 0xFFF7F6EC, 0xFFA5C7F3, 0xFF94BCF1, 0xFF91BAF1,
    0xFF8FBAF5, 0xFF6FA7F7, 0xFF6BA8FE, 0xFF6AA6F8, 0xFF6CA9FE, 0xFF6AA5F8, 0xFF6CAAFF, 0xFF6AA5F8, 0xFF6CA9FF, 0xFF6AA5F8, 0xFF6CAAFF, 0xFF6AA6FA,
    0xFF6CA9FE, 0xFF6BA6FB, 0xFF6CA9FE, 0xFF6AA6FA, 0xFF6DABFF, 0xFF70AFFF, 0xFF6BA8FC, 0xFF5085C8, 0xFF4E83C6, 0xFF4D83C6, 0xFF4D83C6, 0xFF5086CC,
    0xFF4D82C6, 0xFF649FF2, 0xFF71AFFF, 0xFF6EACFF, 0xFF6AA6FB, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6CA9FF, 0xFF69A5F9, 0xFF6BA8FE, 0xFF6AA5FA, 0xFF6CA9FF,
    0xFF69A5F9, 0xFF6CA9FE, 0xFF6AA7FB, 0xFF6BA8FD, 0xFF6CA9FD, 0xFF67A5FD, 0xFF61A3FF, 0xFF7AAEF7, 0xFF95BEF5, 0xFF94BDF2, 0xFF99C1F6, 0xFF98BEF2,
    0xFF9AC3F8, 0xFFA3C5F2, 0xFFFAF8EE, 0xFFFCF9EC, 0xFFFEFAEF, 0xFFFCF9ED, 0xFFF6F7F1, 0xFFF3F4EF, 0xFFF4F5EE, 0xFFF6F7F1, 0xFFF5F6EF, 0xFFF7F8F1,
    0xFFF4F5EE, 0xFFF7F8F1, 0xFFF2F3EE, 0xFFF3F5F0, 0xFFF3F4EE, 0xFFF7F8F1, 0xFFFEFBED, 0xFFFEFAEC, 0xFFD2DDE4, 0xFFCCDAE7, 0xFF94B8EA, 0xFF84B5F7,
    0xFF67A6FF, 0xFF64A3FC, 0xFF98BCEC, 0xFFA4C3EC, 0xFFB6CAE1, 0xFFC2D3E4, 0xFFBCCDDF, 0xFFC1D2E5, 0xFFBDCDDF, 0xFFC0D0E4, 0xFFD9E1E5, 0xFFE9EDEC,
    0xFFDFE4E3, 0xFFE6EBEB, 0xFFE2E7E7, 0xFFE8ECEA, 0xFFD6DFE5, 0xFFC1D2E5, 0xFFBBCCDE, 0xFFC4D4E5, 0xFFB4CAE4, 0xFF9BBEED, 0xFFAFCCF0, 0xFFB9D4F3,
    0xFFAECCF3, 0xFFB1CEF2, 0xFFACC8ED, 0xFFA8C5EC, 0xFFABC9F0, 0xFF73A9F6, 0xFF6AA8FE, 0xFF6BA7FB, 0xFF6CA9FE, 0xFF69A3F6, 0xFF6AA7FB, 0xFF68A2F5,
    0xFF6AA7FB, 0xFF68A2F3, 0xFF6BA7FB, 0xFF68A2F4, 0xFF6BA8FD, 0xFF6AA5F8, 0xFF6BA8FC, 0xFF6AA7FB, 0xFF649CED, 0xFF5D92D6, 0xFF537DB9, 0xFF2C1518,
    0xFF2D1112, 0xFF2C1213, 0xFF2E1213, 0xFF2D1416, 0xFF280C0B, 0xFF486190, 0xFF5992D2, 0xFF6096E3, 0xFF6EACFF, 0xFF6BA9FF, 0xFF6AA5FA, 0xFF6CA9FF,
    0xFF69A5FA, 0xFF6CAAFF, 0xFF69A5F9, 0xFF6CA9FF, 0xFF69A4F8, 0xFF6BA9FE, 0xFF6AA6F9, 0xFF6BA8FC, 0xFF69A7FC, 0xFF87B6F6, 0xFF8CB9F6, 0xFFBDD1EB,
    0xFFEFF1EB, 0xFFE7EAE7, 0xFFEFF1EC, 0xFFF2F2E9, 0xFFFFFEF1, 0xFFF7F6EB, 0xFFF5F7F2, 0xFFF0F1EC, 0xFFF4F6F0, 0xFFF3F5F0, 0xFFF7F8F2, 0xFFF3F4EE,
    0xFFE7EBEB, 0xFFE6EBEC, 0xFFDEE5E7, 0xFFE4EAEC, 0xFFDFE5E7, 0xFFE4EAEC, 0xFFF1F2EB, 0xFFF8F8F0, 0xFFF4F4ED, 0xFFF6F6EE, 0xFFE7ECEA, 0xFFE7ECED,
    0xFFC7D6E3, 0xFFC1D4E8, 0xFFC4D3E3, 0xFFC0D1E5, 0xFF6DA9FE, 0xFF6CA8FC, 0xFF67A5FD, 0xFF67A5FC, 0xFF95BBEF, 0xFFA1C2ED, 0xFF9EBFEC, 0xFFA0C2EF,
    0xFF9FC0ED, 0xFFA0C2EE, 0xFF9DBFEC, 0xFFA0C1EC, 0xFF9DBDE8, 0xFFA2C3EE, 0xFF9ABCEA, 0xFF9ABFEE, 0xFF99BCEB, 0xFFA4C4EF, 0xFFA0BFE7, 0xFFAEC9ED,
    0xFF91B9EF, 0xFF64A5FF, 0xFF65A3FA, 0xFF63A4FE, 0xFF61A1FB, 0xFF62A3FD, 0xFF64A4FE, 0xFF63A3FC, 0xFF65A6FF, 0xFF68A4F9, 0xFF6CAAFE, 0xFF68A3F5,
    0xFF69A5FB, 0xFF6CA8FE, 0xFF76B5FF, 0xFF72AFFF, 0xFF75B4FF, 0xFF73B0FF, 0xFF75B4FF, 0xFF73B0FF, 0xFF6BA8FD, 0xFF68A3F5, 0xFF6AA6F9, 0xFF6FAEFE,
    0xFF3B5987, 0xFF01080B, 0xFF26171C, 0xFFCD2A24, 0xFFD52922, 0xFFDA2B23, 0xFFDC2B23, 0xFFD52921, 0xFFDC2A23, 0xFF60191A, 0xFF0F080A, 0xFF303E5C,
    0xFF659EE6, 0xFF67A2F3, 0xFF6BA8FB, 0xFF6CA9FE, 0xFF69A5F8, 0xFF6CA9FF, 0xFF68A3F6, 0xFF6AA7FB, 0xFF68A3F5, 0xFF6BA7FB, 0xFF69A4F8, 0xFF6BA7FA,
    0xFF67A4F9, 0xFFAAC9F1, 0xFFC1D5ED, 0xFFD8E2EA, 0xFFEFF3EF, 0xFFE2E8E8, 0xFFE6ECEE, 0xFFE2E8E9, 0xFFEBF0F0, 0xFFE5EAEA, 0xFFEFF2F0, 0xFFE9EDE9,
    0xFFEEF1EE, 0xFFEBEFEC, 0xFFECEFEB, 0xFFE8ECEA, 0xFFC0D0E2, 0xFFBFD1E4, 0xFFB8CBE0, 0xFFBDD1E7, 0xFFBCCFE5, 0xFFBDD0E5, 0xFFD9E2E6, 0xFFECF0EE,
    0xFFE9EDEA, 0xFFEBEFED, 0xFFC3D3E4, 0xFFBCCFE5, 0xFFBBCDE2, 0xFFC0D2E7, 0xFFBCCDDF, 0xFFC0D2E5, 0xFF6CAAFF, 0xFF6AA6FB, 0xFF6BA7FB, 0xFF6CA8FC,
    0xFF66A5FD, 0xFF66A5FE, 0xFF65A4FC, 0xFF66A5FE, 0xFF65A3FB, 0xFF66A6FF, 0xFF65A4FC, 0xFF68A7FF, 0xFF66A3FA, 0xFF69A8FF, 0xFF65A3FB, 0xFF68A8FF,
    0xFF66A4FB, 0xFF67A6FE, 0xFF67A5FC, 0xFF69A8FF, 0xFF67A4F9, 0xFF6EABFF, 0xFF6CA8FB, 0xFF6DA9FD, 0xFF6CA7F9, 0xFF6DA9FC, 0xFF6DA9FC, 0xFF6CA8FA,
    0xFF6EAAFE, 0xFF69A4F7, 0xFF69A6FA, 0xFF6DAAFF, 0xFF79BBFF, 0xFF5282C4, 0xFF2F5985, 0xFF325D8C, 0xFF315D8B, 0xFF336293, 0xFF356498, 0xFF376498,
    0xFF6EAAFF, 0xFF75B3FF, 0xFF6AA5F9, 0xFF6EACFA, 0xFF36517A, 0xFF01090B, 0xFF23171D, 0xFFCF2922, 0xFFD92920, 0xFFD92921, 0xFFDC2A22, 0xFFD62921,
    0xFFDB2921, 0xFFB21B15, 0xFFAB1510, 0xFF571517, 0xFF051219, 0xFF304769, 0xFF6EACFF, 0xFF6BA7FC, 0xFF69A4F7, 0xFF6AA7FB, 0xFF6EABFF, 0xFF76B5FF,
    0xFF72AFFF, 0xFF75B4FF, 0xFF73B0FF, 0xFF76B4FF, 0xFF73B1FF, 0xFF68A5FA, 0xFF61A2FB, 0xFF94BBF1, 0xFFB8CFEB, 0xFFADC7E8, 0xFFB2CCEC, 0xFFAEC7E6,
    0xFFB2CCEC, 0xFFACC6E6, 0xFFB3CCEB, 0xFFADC6E4, 0xFFB3CCEB, 0xFFAEC6E4, 0xFFB0C8E7, 0xFFB0C8E7, 0xFFB0C8E6, 0xFFB3CAE8, 0xFFBDCFE4, 0xFFC0D0E2,
    0xFFBECEE1, 0xFFC0D1E4, 0xFFBCCDE0, 0xFFBFD0E4, 0xFFBCCDDF, 0xFFC0D1E4, 0xFFC0D1E4, 0xFFBFD0E3, 0xFFC0D1E3, 0xFFBBCEE4, 0xFFADC5E4, 0xFFB2CAE8,
    0xFF6CA9FF, 0xFF6AA6FB, 0xFF6BA7FB, 0xFF6BA7FB, 0xFF6CA8FB, 0xFF6CA7FA, 0xFF6BA7FA, 0xFF6CA8FC, 0xFF6BA6F9, 0xFF6CA9FD, 0xFF6AA5F8, 0xFF6DAAFF,
    0xFF6BA6F9, 0xFF6EABFF, 0xFF6BA6F9, 0xFF6DAAFE, 0xFF6CA9FC, 0xFF6EABFF, 0xFF6BA6F9, 0xFF6DAAFF, 0xFF6BA6FA, 0xFF6CA9FE, 0xFF6BA7FB, 0xFF6BA7FC,
    0xFF6AA6FB, 0xFF6BA8FD, 0xFF6BA7FC, 0xFF6AA7FB, 0xFF6CAAFF, 0xFF6FAEFF, 0xFF75B7FF, 0xFF4B76AF, 0xFF396A96, 0xFF2D364B, 0xFF3F0700, 0xFF44100D,
    0xFF430F0B, 0xFF47100B, 0xFF460F0A, 0xFF42110E, 0xFF36537C, 0xFF356291, 0xFF69A1F3, 0xFF7ABDFF, 0xFF3B5886, 0xFF02090C, 0xFF1D171D, 0xFFCA2922,
    0xFFDC2921, 0xFFDB2A22, 0xFFDB2921, 0xFFD72920, 0xFFE02C23, 0xFFB91C16, 0xFFB9150F, 0xFF671516, 0xFF000B0D, 0xFF1F2C40, 0xFF6BA6FA, 0xFF6AA6F9,
    0xFF70AEFF, 0xFF79B9FF, 0xFF4F7FBC, 0xFF386799, 0xFF3F71AA, 0xFF4275AD, 0xFF3B6BA1, 0xFF39689B, 0xFF3F6DA2, 0xFF74AFFF, 0xFF73B2FF, 0xFF6CA8FA,
    0xFF6CA8FA, 0xFF6BA6F9, 0xFF6EAAFE, 0xFF6BA6F8, 0xFF6DABFE, 0xFF6BA6F9, 0xFF6EABFE, 0xFF69A4F8, 0xFF6DA9FE, 0xFF6AA5F9, 0xFF6CA9FD, 0xFF6BA6FA,
    0xFF6CA8FC, 0xFF69A6FD, 0xFF9CBEED, 0xFFB2C9E5, 0xFFABC5E5, 0xFFB2CBEA, 0xFFB0C9E8, 0xFFAEC8E8, 0xFFACC6E7, 0xFFAFC9E9, 0xFFAEC8E8, 0xFFB1CAE9,
    0xFFB1C9E6, 0xFFA3C2EB, 0xFF69A4FB, 0xFF6CA7FB, 0xFF6CAAFF, 0xFF6AA7FC, 0xFF6BA7FC, 0xFF6AA6FB, 0xFF6AA7FC, 0xFF6AA7FC, 0xFF6AA6FB, 0xFF6BA7FD,
    0xFF6AA6FB, 0xFF6BA8FE, 0xFF69A5FA, 0xFF6CAAFF, 0xFF6AA6FA, 0xFF6CAAFF, 0xFF6AA6FA, 0xFF6CAAFF, 0xFF6AA5F9, 0xFF6DAAFF, 0xFF69A5F7, 0xFF6CA9FE,
    0xFF6AA5F9, 0xFF6CA9FE, 0xFF6AA6FA, 0xFF6BA8FD, 0xFF6AA7FC, 0xFF6BA8FD, 0xFF6AA6FB, 0xFF6BA8FC, 0xFF6BA8FC, 0xFF4D75AE, 0xFF4A72A2, 0xFF2C2531,
    0xFF340602, 0xFF751C1A, 0xFFEE2F28, 0xFFE22C24, 0xFFE82D26, 0xFFE52D25, 0xFFE52C24, 0xFFDF2C25, 0xFF58110D, 0xFF330C09, 0xFF3A5A84, 0xFF426F9E,
    0xFF21334E, 0xFF050D12, 0xFF1C161C, 0xFFCC2922, 0xFFE22C23, 0xFFDB2A21, 0xFFDA2A21, 0xFFD1261F, 0xFFCC231D, 0xFFB21813, 0xFFB71610, 0xFF6B1515,
    0xFF010D12, 0xFF1F2D41, 0xFF72AFFF, 0xFF73B1FF, 0xFF4A7DBD, 0xFF3F75A7, 0xFF373243, 0xFF3D0701, 0xFF40100E, 0xFF400F0C, 0xFF410F0C, 0xFF420C07,
    0xFF361314, 0xFF3A6496, 0xFF497BB7, 0xFF6BA7FB, 0xFF72B3FF, 0xFF6BA7FB, 0xFF6DAAFF, 0xFF6BA7FC, 0xFF6DABFF, 0xFF6AA6FA, 0xFF6CAAFF, 0xFF6AA6FA,
    0xFF6CA9FF, 0xFF6AA6FA, 0xFF6BA9FE, 0xFF6AA7FC, 0xFF6BA8FE, 0xFF6AA7FC, 0xFF6AA7FC, 0xFF6CA8FC, 0xFF6BA7FA, 0xFF6DAAFD, 0xFF6CA8FD, 0xFF6CA8FD,
    0xFF6BA7FA, 0xFF6CA9FE, 0xFF6BA7FB, 0xFF6DA9FE, 0xFF6BA6FA, 0xFF6EABFF, 0xFF6AA6FA, 0xFF6CA9FF, 0xFF6BA8FE, 0xFF6AA6F9, 0xFF6AA7FC, 0xFF6AA7FB,
    0xFF6BA7FC, 0xFF6BA7FB, 0xFF69A5F9, 0xFF6BA7FB, 0xFF69A5F9, 0xFF6BA8FD, 0xFF69A4F8, 0xFF6CA9FE, 0xFF69A4F7, 0xFF6BA9FE, 0xFF69A5F8, 0xFF6CA9FF,
    0xFF69A5F8, 0xFF6CA9FF, 0xFF69A5F8, 0xFF6CAAFF, 0xFF6AA6FA, 0xFF6CA9FF, 0xFF6AA6F9, 0xFF6BA8FD, 0xFF6AA7FB, 0xFF6BA8FD, 0xFF6BA8FB, 0xFF6AA8FC,
    0xFF69A4F5, 0xFF151920, 0xFF000000, 0xFF641D1D, 0xFFF73129, 0xFFDC2A21, 0xFFDB2A21, 0xFFD62820, 0xFFDC2A21, 0xFFD62820, 0xFFD82920, 0xFFD52820,
    0xFFE62C24, 0xFFC62B26, 0xFF230B0B, 0xFF180707, 0xFF141012, 0xFF09141A, 0xFF181418, 0xFFBD231E, 0xFFD1241C, 0xFFD42820, 0xFFE22C23, 0xFFC32019,
    0xFFAC130E, 0xFFAC1510, 0xFFB4150F, 0xFF5F1313, 0xFF020F14, 0xFF18212F, 0xFF4673AD, 0xFF3F6BA1, 0xFF35191E, 0xFF340A07, 0xFF8F201C, 0xFFF02F27,
    0xFFDD2A23, 0xFFE52C24, 0xFFDC2A22, 0xFFE72B23, 0xFFB82521, 0xFF2E0502, 0xFF403247, 0xFF5582C1, 0xFF598ACB, 0xFF6AA5F6, 0xFF6DABFF, 0xFF6AA6F9,
    0xFF6CABFF, 0xFF69A5F8, 0xFF6CAAFF, 0xFF6AA5F8, 0xFF6CA9FF, 0xFF69A5F8, 0xFF6BA8FE, 0xFF6AA6FB, 0xFF6AA7FC, 0xFF6AA7FC, 0xFF6AA6FB, 0xFF6BA8FD,
    0xFF69A6FA, 0xFF6BA9FE, 0xFF6AA6F9, 0xFF6BA8FD, 0xFF69A5F8, 0xFF6BA9FE, 0xFF69A6FA, 0xFF6BA9FD, 0xFF6AA6F8, 0xFF6CAAFE, 0xFF69A4F7, 0xFF6CA9FE,
    0xFF97C6FD, 0xFF96C4FA, 0xFF98C6FC, 0xFF97C5FB, 0xFF98C6FC, 0xFF98C6FC, 0xFF97C5FB, 0xFF97C5FC, 0xFF97C4FB, 0xFF97C5FC, 0xFF96C4FA, 0xFF98C6FD,
    0xFF94C2FA, 0xFF99C7FD, 0xFF79AFF8, 0xFF6BA9FE, 0xFF6CA7F9, 0xFF6DAAFE, 0xFF6BA6F8, 0xFF6DABFE, 0xFF6BA8FB, 0xFF6DAAFE, 0xFF6BA7FA, 0xFF6CAAFD,
    0xFF6BA7F9, 0xFF6CA9FD, 0xFF6CA8FB, 0xFF6CAAFC, 0xFF6DA5F1, 0xFF1F2732, 0xFF07161D, 0xFF702324, 0xFFD72922, 0xFFCD2720, 0xFFDD2921, 0xFFD0261E,
    0xFFD82820, 0xFFD92820, 0xFFDB2921, 0xFFD32820, 0xFFCD251D, 0xFFCD241D, 0xFFAD1915, 0xFFAE1613, 0xFF551315, 0xFF021219, 0xFF1E1317, 0xFF9D1713,
    0xFFA51510, 0xFFC1221B, 0xFFDE2A22, 0xFFBE1D17, 0xFFAD150F, 0xFFAB1510, 0xFFB6160F, 0xFF5E1312, 0xFF03141A, 0xFF101318, 0xFF210D0D, 0xFF1E0C0C,
    0xFFA42521, 0xFFEC2D25, 0xFFD62921, 0xFFD82920, 0xFFD2271F, 0xFFDB2A21, 0xFFCF261E, 0xFFD5271F, 0xFFCC241D, 0xFFB81713, 0xFF8F1615, 0xFF0A0F14,
    0xFF0C1219, 0xFF5D8FD4, 0xFF71B0FF, 0xFF6CA7F8, 0xFF6FADFF, 0xFF6EA9FA, 0xFF6FACFE, 0xFF6DA8F8, 0xFF6EABFE, 0xFF6DA8F9, 0xFF6EABFE, 0xFF6CA8F9,
    0xFF6DA9FC, 0xFF6CA9FC, 0xFF6DA9FB, 0xFF6DA9FC, 0xFF6CA8FA, 0xFF6EAAFD, 0xFF6DA8FA, 0xFF6EABFD, 0xFF6DA9FB, 0xFF6CA9FC, 0xFF8DBDF8, 0xFF99C7FD,
    0xFF95C3FA, 0xFF97C6FD, 0xFF95C3FA, 0xFF97C6FE, 0xFFA2CDFF, 0xFF9ECAFB, 0xFFA0CCFE, 0xFF9EC9FB, 0xFFA0CCFE, 0xFF9ECAFB, 0xFFA0CBFD, 0xFF9FCBFD,
    0xFFA0CBFE, 0xFFA0CBFD, 0xFF9FCAFC, 0xFFA1CDFE, 0xFF9DC9FB, 0xFFA2CDFE, 0xFF96C4F9, 0xFF97C6FD, 0xFF95C2F8, 0xFF97C6FD, 0xFF94C2F8, 0xFF97C6FE,
    0xFF94C2F9, 0xFF96C5FD, 0xFF93C2F9, 0xFF96C5FD, 0xFF94C3F9, 0xFF96C5FC, 0xFF96C4FB, 0xFF97C5FC, 0xFF99C7FC, 0xFF8CB4E0, 0xFF94BEE2, 0xFF3F4554,
    0xFF10090B, 0xFF5E1A1A, 0xFFB31915, 0xFFA61813, 0xFFCD2720, 0xFFDA2A22, 0xFFD72820, 0xFFD42720, 0xFFB51A14, 0xFFAE140F, 0xFFAA150F, 0xFFBC1610,
    0xFF5E1413, 0xFF001319, 0xFF091319, 0xFF161419, 0xFF231417, 0xFF921411, 0xFFB31711, 0xFFAB1610, 0xFFAD1610, 0xFFA5140F, 0xFFB21610, 0xFF5B1313,
    0xFF001218, 0xFF281619, 0xFFCB2A24, 0xFFD82B24, 0xFFD02821, 0xFFD92921, 0xFFD62920, 0xFFDB2A21, 0xFFD62820, 0xFFDB2A21, 0xFFC8241D, 0xFFB31812,
    0xFFAB1712, 0xFFAE1611, 0xFF8F120F, 0xFF090B0F, 0xFF000306, 0xFF7195BF, 0xFF9FD0FF, 0xFF96C3F7, 0xFF9AC8FE, 0xFF99C7FC, 0xFF9BC9FE, 0xFF99C6FA,
    0xFF9AC8FD, 0xFF97C4F9, 0xFF9AC8FE, 0xFF97C5FA, 0xFF96C5FB, 0xFF96C4FA, 0xFF95C3FA, 0xFF95C3FB, 0xFF95C4FB, 0xFF97C5FC, 0xFF98C6FC, 0xFF98C6FC,
    0xFF97C5FB, 0xFF98C6FC, 0xFF9FCBFD, 0xFFA1CDFF, 0xFF9ECAFB, 0xFFA1CCFE, 0xFF9FCAFC, 0xFFA1CDFF, 0xFF9ECBFE, 0xFF9CC8FB, 0xFF9DC9FD, 0xFF9CC9FC,
    0xFF9DCAFD, 0xFF9BC8FB, 0xFF9CC9FD, 0xFF9BC7FB, 0xFF9BC8FC, 0xFF9CC9FD, 0xFF9BC7FB, 0xFF9DCAFE, 0xFF9AC6FB, 0xFF9DCAFE, 0xFF9BC7FA, 0xFFA0CCFF,
    0xFF9CC8FA, 0xFFA0CCFF, 0xFF9CC8FB, 0xFFA0CCFF, 0xFF9BC7F9, 0xFF9FCCFF, 0xFF9CC8FA, 0xFF9FCBFE, 0xFF9BC7FA, 0xFF9ECAFD, 0xFF9ECAFC, 0xFF9CC7F8,
    0xFF9DC8F9, 0xFF86BBFC, 0xFF86BEFF, 0xFF679AD6, 0xFF6497C5, 0xFF2F3647, 0xFF0C0000, 0xFF370C0C, 0xFFB71A15, 0xFFBF1913, 0xFFB01812, 0xFFB01812,
    0xFFA91510, 0xFFAB1510, 0xFFA4140F, 0xFFAB1510, 0xFF991410, 0xFF891611, 0xFF4C1615, 0xFF061519, 0xFF101518, 0xFF961611, 0xFFBC170E, 0xFFAF170F,
    0xFFC21910, 0xFF661413, 0xFF181015, 0xFF601A1A, 0xFFB1251F, 0xFFB5251F, 0xFFDB2921, 0xFFD82820, 0xFFDC2A22, 0xFFDA2A21, 0xFFB61A14, 0xFFB21812,
    0xFFAE1812, 0xFFB01812, 0xFFAD1711, 0xFFC11813, 0xFF8E110D, 0xFF1E090A, 0xFF281C25, 0xFF6280A0, 0xFF7294B5, 0xFF91BBEA, 0xFFA2CFFF, 0xFF9CC8F9,
    0xFFA0CCFF, 0xFF9BC6F9, 0xFF9ECBFE, 0xFF9BC7FA, 0xFF9DC9FD, 0xFF9AC5F8, 0xFF9DC9FD, 0xFF9DC9FC, 0xFFA4D2FF, 0xFFA4D3FF, 0xFFA4D2FF, 0xFFA5D2FF,
    0xFFA5D3FF, 0xFFA4D2FF, 0xFF9DC8FC, 0xFF9DC8FC, 0xFF9CC7FB, 0xFF9DC9FC, 0xFF9DCAFD, 0xFF9DCAFD, 0xFF9AC6F9, 0xFF9ECAFE, 0xFF9AC6F9, 0xFF9ECBFF,
    0xFF9FCBFF, 0xFF9CC8FB, 0xFF9DCAFD, 0xFF9CC8FB, 0xFF9DC9FC, 0xFF9CC8FC, 0xFF9CC9FC, 0xFF9CC8FC, 0xFF9CC8FC, 0xFF9DCAFD, 0xFF99C6F9, 0xFF9DCAFE,
    0xFF9BC7FB, 0xFF9DCAFE, 0xFF99C6FA, 0xFF9DCAFE, 0xFF99C6F9, 0xFF9DCAFE, 0xFF98C5F9, 0xFF9DCAFF, 0xFF97C4F9, 0xFF9CC9FE, 0xFF9AC6FB, 0xFF9CC9FE,
    0xFF99C6FA, 0xFF99C5F9, 0xFF9CC8FC, 0xFFA8D6FF, 0xFFACD8FF, 0xFF91C7FF, 0xFF89C5FF, 0xFF8CC6FF, 0xFF98D6FF, 0xFF75A5DE, 0xFF6493B8, 0xFF4D5E77,
    0xFF3C0B0B, 0xFF4B1416, 0xFFA41410, 0xFFB9140E, 0xFFAF140E, 0xFFB3150F, 0xFFAA140D, 0xFFB5160D, 0xFF84100F, 0xFF300513, 0xFF1D0615, 0xFF000718,
    0xFF000718, 0xFF200715, 0xFF280714, 0xFF250714, 0xFF2B0715, 0xFF1B1017, 0xFF001217, 0xFF82221F, 0xFFFF2F24, 0xFFE22920, 0xFFDB2A22, 0xFFC6231C,
    0xFFB31A14, 0xFFB61B15, 0xFFAE140E, 0xFFB6140E, 0xFFAB120D, 0xFFB7140F, 0xFF6E0D0A, 0xFF330301, 0xFF3D1E26, 0xFF547CA3, 0xFF709FCD, 0xFF99C9FF,
    0xFFA6D7FF, 0xFF9BC8FB, 0xFF9CC8FD, 0xFF98C4F8, 0xFF9DC9FE, 0xFF9CC9FB, 0xFFA4D4FF, 0xFFA1D0FF, 0xFFA4D3FF, 0xFFA1D0FF, 0xFFA6D6FF, 0xFF98C2F2,
    0xFF5D76C4, 0xFF5C75C7, 0xFF5D75C6, 0xFF5D75C4, 0xFF5970C0, 0xFF6F8CD2, 0xFFA5D3FF, 0xFFA4D3FF, 0xFFA3D2FF, 0xFFA3D2FF, 0xFF9BC7FB, 0xFF9CC8FC,
    0xFF9AC6FA, 0xFF9CC8FC, 0xFF98C3F7, 0xFF9DC9FD, 0xFF9FCBFE, 0xFF9CC8FB, 0xFF9DC9FC, 0xFF9DC9FC, 0xFF9DCAFD, 0xFF9CC8FB, 0xFF9DC9FC, 0xFF9DC9FD,
    0xFF9BC7FC, 0xFF9BC7FB, 0xFF99C4F9, 0xFF9BC7FC, 0xFF99C5F8, 0xFF9DC9FE, 0xFF9AC6FA, 0xFF9ECAFE, 0xFF9BC7FA, 0xFF9ECAFE, 0xFF99C5F8, 0xFF9ECBFF,
    0xFF9BC7FB, 0xFF9DCAFE, 0xFF9BC8FC, 0xFF9DC9FE, 0xFF9CC9FD, 0xFFA8D7FF, 0xFF9EC9FB, 0xFF4E6D87, 0xFF476983, 0xFF3D627F, 0xFF3B6280, 0xFF365D7B,
    0xFF375E7D, 0xFF396283, 0xFF426E8C, 0xFF224358, 0xFF000C11, 0xFF00131A, 0xFF3C1315, 0xFF491213, 0xFF4D1213, 0xFF561514, 0xFF4A0E13, 0xFF420212,
    0xFF4D2217, 0xFF68631D, 0xFF705D1C, 0xFF7A601C, 0xFF7D621B, 0xFF77621C, 0xFF71601D, 0xFF6F5C1B, 0xFF74661E, 0xFF2C2F1C, 0xFF000918, 0xFF3E1A1C,
    0xFF6D1F1D, 0xFF7F1B19, 0xFFCD1E17, 0xFFBF1913, 0xFFAF120D, 0xFFB6140E, 0xFF661212, 0xFF4E1314, 0xFF4E1516, 0xFF4D0D0B, 0xFF453C4F, 0xFF538AB5,
    0xFF6CA3E0, 0xFF95CFFF, 0xFF94CEFF, 0xFF85BBFA, 0xFF83B8F7, 0xFF8EC2FB, 0xFF9CCFFF, 0xFF9FCEFF, 0xFFAADAFF, 0xFF88AEE8, 0xFF6A87D2, 0xFF6E8BD4,
    0xFF6C88D2, 0xFF6A86D0, 0xFF6F8CD3, 0xFF627BC6, 0xFF3743A9, 0xFF3743A6, 0xFF3845AB, 0xFF3845A9, 0xFF3440A4, 0xFF404FAD, 0xFF6E8BD3, 0xFF6B87CF,
    0xFF6883CC, 0xFF6D89CD, 0xFFA1CDFE, 0xFFA6D6FF, 0xFFA3D1FF, 0xFFA5D5FF, 0xFFA3D1FF, 0xFFA6D5FF, 0xFF9AC9FF, 0xFF98C6FC, 0xFF99C8FF, 0xFF98C6FC,
    0xFF99C7FD, 0xFF99C6FC, 0xFF9AC7FC, 0xFF9CC9FD, 0xFFA2D0FF, 0xFFA4D2FF, 0xFFA2D0FF, 0xFFA4D2FF, 0xFFA1CFFF, 0xFFA4D2FF, 0xFF9BC7FB, 0xFF9CC8FD,
    0xFF9BC7F9, 0xFF9FCBFF, 0xFF9AC6F9, 0xFF9ECBFF, 0xFF9BC7FB, 0xFF9DCAFE, 0xFF9AC6F9, 0xFF9FCDFF, 0xFF94BDEC, 0xFF7191B2, 0xFF6582A1, 0xFF2C1213,
    0xFF390C0A, 0xFF3E0F0C, 0xFF3F0F0B, 0xFF460F0B, 0xFF4E0F0B, 0xFF510F0A, 0xFF510D08, 0xFF541411, 0xFF651F1E, 0xFF611D1C, 0xFF531C1B, 0xFF441A1B,
    0xFF0C1619, 0xFF000F19, 0xFF2B321B, 0xFF49491B, 0xFF8A6E1C, 0xFFFFCA1C, 0xFFFFBE1A, 0xFFFFBE1A, 0xFFFFC01A, 0xFFFFBC19, 0xFFFFC21B, 0xFFFFC21A,
    0xFFFFD01C, 0xFF985F19, 0xFF541E15, 0xFF351F16, 0xFF001017, 0xFF1C1115, 0xFF641110, 0xFF621110, 0xFF631212, 0xFF5E1212, 0xFF0B1217, 0xFF001219,
    0xFF00131B, 0xFF000B0F, 0xFF17374C, 0xFF5A8CB8, 0xFF4B79A5, 0xFF436F98, 0xFF416B93, 0xFF77AAE6, 0xFF8CC9FF, 0xFF6E9AE3, 0xFF7196DC, 0xFF7494D9,
    0xFF7C9DDD, 0xFF5065BB, 0xFF3540AA, 0xFF3743A6, 0xFF3946AE, 0xFF3642A6, 0xFF3844AC, 0xFF3845AA, 0xFF4150B3, 0xFF3C4BA8, 0xFF4150B4, 0xFF3D4CAB,
    0xFF3E4DAC, 0xFF3A48A5, 0xFF2B348C, 0xFF2C368E, 0xFF2E3792, 0xFF2E388F, 0xFF6C87C6, 0xFF7493D0, 0xFF6F8DCD, 0xFF728FCE, 0xFF708DCB, 0xFF728FCC,
    0xFFB3D5FA, 0xFFB1D2F6, 0xFFB0D2F8, 0xFFB0D3F9, 0xFFB3D8FD, 0xFFAED4FB, 0xFFACD5FF, 0xFFA3CCFA, 0xFF7EA0DE, 0xFF7D9EDF, 0xFF799AD9, 0xFF7E9FDE,
    0xFF82A4DF, 0xFF83A5DF, 0xFF96C0F3, 0xFFA5D4FF, 0xFF9CC8FC, 0xFF9CC9FD, 0xFF99C5F8, 0xFF9ECBFE, 0xFF99C5F8, 0xFF9ECAFE, 0xFF9AC6F9, 0xFFA4D4FF,
    0xFF7FA1C4, 0xFF030505, 0xFF000A0E, 0xFFA12724, 0xFFEA2E25, 0xFFDE2B24, 0xFFE32C24, 0xFFE22C24, 0xFFEB2E26, 0xFFE52C24, 0xFFEE2E26, 0xFFE12B22,
    0xFFDE271E, 0xFFD5241C, 0xFFDB251D, 0xFFD2241C, 0xFF371716, 0xFF020617, 0xFF9C791E, 0xFFFFCE1A, 0xFFFFB619, 0xFFF9B21A, 0xFFF6AF19, 0xFFF7AE19,
    0xFFF9AF19, 0xFFF7AD19, 0xFFF9AF19, 0xFFEC8C16, 0xFFED8916, 0xFFE65B11, 0xFFF84A0D, 0xFF9B3513, 0xFF061119, 0xFF191619, 0xFF421A1B, 0xFF481A1B,
    0xFF461A1B, 0xFF3C181A, 0xFF41181A, 0xFF47191A, 0xFF46191A, 0xFF471B1C, 0xFF451615, 0xFF370705, 0xFF350604, 0xFF380907, 0xFF2C0200, 0xFF4E6F94,
    0xFF6298C4, 0xFF3E51A4, 0xFF3C46B4, 0xFF3744A7, 0xFF3945AE, 0xFF3B48AA, 0xFF4251B5, 0xFF3F4DAE, 0xFF4251B5, 0xFF3F4EAE, 0xFF4251B5, 0xFF3E4DAC,
    0xFF404EB2, 0xFF3D4BAB, 0xFF404FB3, 0xFF3E4CAD, 0xFF3F4DB1, 0xFF3F4DB0, 0xFF354197, 0xFF354197, 0xFF303A8A, 0xFF303A8B, 0xFF2A3288, 0xFF293086,
    0xFF283085, 0xFF2A3188, 0xFF293084, 0xFF2C338C, 0xFFF7FBF3, 0xFFF1F6EE, 0xFFF5FBF2, 0xFFD4DEE5, 0xFFB1C3E1, 0xFFB1C3E3, 0xFFA0BAE6, 0xFF8CA8DC,
    0xFF3B48AA, 0xFF3844A9, 0xFF2B3487, 0xFF2C358A, 0xFF30398D, 0xFF2B328B, 0xFF6983C2, 0xFF8DB2E4, 0xFF97C1F3, 0xFFA2D0FF, 0xFF9CC9FC, 0xFFA2D0FF,
    0xFF9CC8FB, 0xFF9DCAFE, 0xFF98C4F6, 0xFFA2D1FE, 0xFF83A6CC, 0xFF0A0E12, 0xFF031219, 0xFFA12521, 0xFFEA2C22, 0xFFD82A22, 0xFFD92A22, 0xFFD62921,
    0xFFDB2A22, 0xFFD32820, 0xFFDD2C23, 0xFFCC251D, 0xFFB3150F, 0xFFAC140E, 0xFFA9130E, 0xFFAF140F, 0xFF301515, 0xFF000818, 0xFF9C781D, 0xFFFFC41A,
    0xFFF7B119, 0xFFFFBA1A, 0xFFFAB219, 0xFFFEB619, 0xFFFDB419, 0xFFFEB318, 0xFFFFB619, 0xFFDD5310, 0xFFDE3C0D, 0xFFD5430E, 0xFFEA4B0E, 0xFF8B3314,
    0xFF000E18, 0xFF33181A, 0xFFE02A22, 0xFFE42920, 0xFFE42920, 0xFFE92B21, 0xFFDB281F, 0xFFE62B22, 0xFFE12920, 0xFFE52A21, 0xFFE52B23, 0xFFC41D17,
    0xFFAF1611, 0xFFB61712, 0xFFA21613, 0xFF2E0F11, 0xFF240B0B, 0xFF292F5F, 0xFF313E84, 0xFF39469A, 0xFF4352B8, 0xFF3C4BA9, 0xFF404EB3, 0xFF3D4BAB,
    0xFF3F4EB2, 0xFF3D4CAC, 0xFF404EB2, 0xFF3D4BAC, 0xFF404FB3, 0xFF3D4CAD, 0xFF404EB2, 0xFF3F4EB0, 0xFF3F4DB0, 0xFF3F4EB2, 0xFF3F4EB0, 0xFF4150B6,
    0xFF333F95, 0xFF313C8E, 0xFF303A8A, 0xFF313B8D, 0xFF323C8D, 0xFF333D91, 0xFF313B8C, 0xFF353E94, 0xFFCCD5E2, 0xFFC5CFE1, 0xFFCFD9E7, 0xFF7F8BC0,
    0xFF3140A9, 0xFF3D4BAE, 0xFF3B49AE, 0xFF3C49AC, 0xFF414FB2, 0xFF404EB0, 0xFF323E90, 0xFF364199, 0xFF313C8E, 0xFF333D92, 0xFF303A8C, 0xFF2D358D,
    0xFF7A99D3, 0xFF99C3F2, 0xFF8EB5EB, 0xFF91B9EF, 0xFF93BBED, 0xFFA2CFFF, 0xFF9CC8FA, 0xFFA3D2FF, 0xFF8CB1D9, 0xFF1A2229, 0xFF141E25, 0xFF97211E,
    0xFFC2251E, 0xFFCE261E, 0xFFD8271F, 0xFFD1251D, 0xFFD8271F, 0xFFD0241C, 0xFFDD2820, 0xFFBB201A, 0xFF8E1410, 0xFF901410, 0xFF971510, 0xFF941612,
    0xFF231416, 0xFF000A18, 0xFF98781F, 0xFFE6B21C, 0xFFEEA719, 0xFFFCA818, 0xFFF69D15, 0xFFF79F16, 0xFFF49915, 0xFFF08F14, 0xFFF39716, 0xFFDE5610,
    0xFFE1460E, 0xFFD4440E, 0xFFED4B0D, 0xFF893314, 0xFF000E18, 0xFF3B191A, 0xFFDE2B22, 0xFFD5271F, 0xFFD22720, 0xFFD72820, 0xFFD1271F, 0xFFD92821,
    0xFFCB251E, 0xFFD82921, 0xFFD82921, 0xFFB81913, 0xFFA4130E, 0xFFA7140F, 0xFFA6140F, 0xFFA7140F, 0xFFA51410, 0xFF241115, 0xFF000A05, 0xFF283166,
    0xFF4454BF, 0xFF3D4BAC, 0xFF404FB5, 0xFF3D4CAB, 0xFF3F4EB1, 0xFF3E4CAE, 0xFF3F4EB3, 0xFF3C4BAB, 0xFF3B49A9, 0xFF3D4BAD, 0xFF3D4BAD, 0xFF3B49A7,
    0xFF3F4EB1, 0xFF3F4EB2, 0xFF3E4DAF, 0xFF404EB3, 0xFF3F4EB1, 0xFF3E4DAF, 0xFF313C8F, 0xFF323C91, 0xFF2E3886, 0xFF323B8F, 0xFF2F388A, 0xFF323B90,
    0xFF3F4EB0, 0xFF3C4BAF, 0xFF3C4BB0, 0xFF3E4CAE, 0xFF414EB1, 0xFF404EB0, 0xFF3F4DAE, 0xFF404EB1, 0xFF404DB0, 0xFF414FB3, 0xFF3F4DB0, 0xFF414FB4,
    0xFF343F95, 0xFF343E93, 0xFF313B8B, 0xFF333D92, 0xFF333E8F, 0xFF374394, 0xFF364192, 0xFF313A91, 0xFF5164AB, 0xFF9DC8F5, 0xFF93BDF1, 0xFF98C2F5,
    0xFF98C1F2, 0xFF9AC5F0, 0xFF82A3C7, 0xFF151A1E, 0xFF1C171C, 0xFF881411, 0xFF9B1510, 0xFF971410, 0xFF9D1611, 0xFF981410, 0xFFA71611, 0xFF7C1613,
    0xFF0B1317, 0xFF0E1318, 0xFF111317, 0xFF101317, 0xFF101418, 0xFF111317, 0xFF1A1A19, 0xFF0D1719, 0xFF803C16, 0xFFE95410, 0xFFD54A0F, 0xFFE14B0E,
    0xFFDD480E, 0xFFDD450D, 0xFFDE450E, 0xFFD7420D, 0xFFE3470D, 0xFFD1430E, 0xFFDD480F, 0xFF722D15, 0xFF010E17, 0xFF3C1A1A, 0xFFD92B23, 0xFFCB261F,
    0xFFAE1711, 0xFFAD1510, 0xFFA91510, 0xFFB11610, 0xFFA71510, 0xFFD42821, 0xFFC8211B, 0xFFAC130E, 0xFFA8140F, 0xFFA8140E, 0xFFA9140F, 0xFFA7140E,
    0xFFA4130E, 0xFF261318, 0xFF030F10, 0xFF222C58, 0xFF4353BD, 0xFF3D4CAC, 0xFF404FB3, 0xFF3D4CAC, 0xFF3F4EB0, 0xFF3D4CAD, 0xFF3E4CAE, 0xFF3D4BAD,
    0xFF303A8E, 0xFF2F3889, 0xFF30398D, 0xFF313B8E, 0xFF3F4DB0, 0xFF3E4CAE, 0xFF3E4CAE, 0xFF3F4DB0, 0xFF3D4CAD, 0xFF3E4BAE, 0xFF3B49A8, 0xFF3D4AAC,
    0xFF303B8D, 0xFF313A8D, 0xFF2F3989, 0xFF323B8F, 0xFF414FB5, 0xFF3F4DB0, 0xFF404EB1, 0xFF3F4DAF, 0xFF404EB0, 0xFF404EB1, 0xFF3F4EAF, 0xFF404EB1,
    0xFF3F4DAF, 0xFF414FB3, 0xFF3F4EB0, 0xFF404EB2, 0xFF3E4BAC, 0xFF404EB1, 0xFF323D8F, 0xFF333D92, 0xFF303A8C, 0xFF323B91, 0xFF2F3989, 0xFF323B91,
    0xFF323D90, 0xFF3B4899, 0xFF3B4898, 0xFF3C489C, 0xFF4D5FAC, 0xFFA0CCFE, 0xFF9ECBFC, 0xFF95C0E8, 0xFF7899B9, 0xFF111114, 0xFF131418, 0xFF121214,
    0xFF121112, 0xFF131316, 0xFF161419, 0xFF151419, 0xFF081318, 0xFF001116, 0xFF81201D, 0xFFBA2620, 0xFF941613, 0xFF98120E, 0xFF3B1013, 0xFF001018,
    0xFF161618, 0xFF1C1718, 0xFF6D2E15, 0xFFED4E0F, 0xFFDD490F, 0xFFE04B0F, 0xFFDF4A0F, 0xFFD5450F, 0xFFE64A0E, 0xFF9A3711, 0xFF181617, 0xFF131518,
    0xFF061218, 0xFF111419, 0xFF23181A, 0xFF331517, 0xFF98120F, 0xFFA9130E, 0xFFA3130E, 0xFFA3130E, 0xFF9D120E, 0xFFB21711, 0xFFAD1510, 0xFFA9130E,
    0xFFA6130E, 0xFFA7130E, 0xFFA3130F, 0xFF9D130F, 0xFF9F1411, 0xFF261217, 0xFF020D0E, 0xFF202A50, 0xFF4454BD, 0xFF3D4BAB, 0xFF3F4EB2, 0xFF3E4CAD,
    0xFF404FB4, 0xFF3845A1, 0xFF303A8D, 0xFF323C91, 0xFF303A8E, 0xFF2E3888, 0xFF30398C, 0xFF2F398A, 0xFF323C91, 0xFF313A8E, 0xFF303A8C, 0xFF313B8F,
    0xFF313B8F, 0xFF313B8F, 0xFF30398D, 0xFF303A8E, 0xFF30398C, 0xFF303A8D, 0xFF2F3889, 0xFF323B8F, 0xFF4150B4, 0xFF3F4EAF, 0xFF414FB3, 0xFF404EB1,
    0xFF424FB6, 0xFF404DB1, 0xFF404DB3, 0xFF404DB3, 0xFF404DB3, 0xFF414EB6, 0xFF3F4DB0, 0xFF414FB3, 0xFF3E4CAC, 0xFF414FB5, 0xFF3D4BAB, 0xFF3F4DB0,
    0xFF3D4AAA, 0xFF414FB4, 0xFF364198, 0xFF333D92, 0xFF303A8B, 0xFF303A8E, 0xFF2E388A, 0xFF303A90, 0xFF323C8F, 0xFF42519D, 0xFF43529D, 0xFF4959A6,
    0xFF4454A0, 0xFF313F8E, 0xFF37469C, 0xFF344290, 0xFF3A469A, 0xFF253063, 0xFF000E10, 0xFF0D131A, 0xFF8A221F, 0xFF9E221E, 0xFFC3261F, 0xFFDF2A21,
    0xFFCB231B, 0xFFCD221A, 0xFF8B1411, 0xFF781311, 0xFF411214, 0xFF001018, 0xFF191618, 0xFF271C16, 0xFF241C16, 0xFF221B17, 0xFF211B17, 0xFF211B17,
    0xFF1F1916, 0xFF171617, 0xFF001118, 0xFF301416, 0xFF871411, 0xFF7E1210, 0xFF831210, 0xFF781311, 0xFF261215, 0xFF201316, 0xFF211316, 0xFF181317,
    0xFF2C1215, 0xFFA41410, 0xFFA9130E, 0xFFA8140F, 0xFFA6140F, 0xFFA9140F, 0xFF951310, 0xFF261318, 0xFF170E0D, 0xFF303875, 0xFF38469D, 0xFF37459A,
    0xFF4150B6, 0xFF3D4CAB, 0xFF4150B5, 0xFF3A47A4, 0xFF323C92, 0xFF313B8F, 0xFF30398D, 0xFF30398C, 0xFF313B8F, 0xFF2F3A8B, 0xFF313B8E, 0xFF2F398A,
    0xFF2F398A, 0xFF30398B, 0xFF30398B, 0xFF303A8D, 0xFF303A8C, 0xFF2F398B, 0xFF30398A, 0xFF313A8C, 0xFF2F3988, 0xFF313A8E, 0xFF2F3989, 0xFF323C8F,
    0xFF424EBA, 0xFF404CB3, 0xFF434DBC, 0xFF3C4EA0, 0xFF2C5A5D, 0xFF2D5B5C, 0xFF2D5B5B, 0xFF2C5A59, 0xFF326064, 0xFF396477, 0xFF3D4FA6, 0xFF434FBA,
    0xFF3F4DB1, 0xFF414FB3, 0xFF3F4DAE, 0xFF4250B5, 0xFF3E4CAD, 0xFF4150B5, 0xFF3D4BAA, 0xFF414FB2, 0xFF37449C, 0xFF313B8E, 0xFF313B8D, 0xFF333D92,
    0xFF313B8E, 0xFF2D368A, 0xFF2D3589, 0xFF2C3487, 0xFF2B3485, 0xFF39459E, 0xFF4754C0, 0xFF2A3672, 0xFF0A1C36, 0xFF2F1F2F, 0xFFAA251E, 0xFFAD251F,
    0xFFD72A21, 0xFFE32A21, 0xFFD82820, 0xFFD62820, 0xFFD72920, 0xFFDE2C23, 0xFFBC1B15, 0xFFB7120C, 0xFF6D1311, 0xFF061218, 0xFF1D1418, 0xFF8A201F,
    0xFF91201E, 0xFF93211E, 0xFF93211E, 0xFF8E211E, 0xFFA42420, 0xFF561B1B, 0xFF021218, 0xFF481414, 0xFFB4130D, 0xFFA6130E, 0xFFAE130E, 0xFFA7130E,
    0xFF7D110F, 0xFF781311, 0xFF751311, 0xFF7E1311, 0xFF281316, 0xFF131317, 0xFF221316, 0xFF271316, 0xFF241316, 0xFF221111, 0xFF1F100E, 0xFF28356D,
    0xFF324393, 0xFF3C4BA7, 0xFF4352B9, 0xFF3D4CAC, 0xFF4150B4, 0xFF3947A1, 0xFF333E93, 0xFF303A8C, 0xFF30398D, 0xFF2F3888, 0xFF313B8D, 0xFF31388D,
    0xFF323892, 0xFF2F368A, 0xFF31388F, 0xFF31388D, 0xFF31388D, 0xFF2F3889, 0xFF30398B, 0xFF313A8E, 0xFF30398B, 0xFF30398C, 0xFF30378B, 0xFF31388F,
    0xFF30378B, 0xFF323890, 0xFF30378C, 0xFF323890, 0xFF2D5764, 0xFF2B565F, 0xFF2C5663, 0xFF2B585A, 0xFF255F3F, 0xFF265E40, 0xFF276041, 0xFF265F3E,
    0xFF286441, 0xFF2D674C, 0xFF2C5E57, 0xFF316263, 0xFF3C5699, 0xFF434FBD, 0xFF404EB1, 0xFF4150B3, 0xFF3F4CAF, 0xFF424EBA, 0xFF404CB1, 0xFF444FBC,
    0xFF3F4BAF, 0xFF3F4CB2, 0xFF3D4AAC, 0xFF3F4CAD, 0xFF3946A0, 0xFF313B8A, 0xFF323C8D, 0xFF3B48A1, 0xFF4250B2, 0xFF21274B, 0xFF0A1624, 0xFF4F1B1E,
    0xFFA61F14, 0xFFA92119, 0xFFE52A22, 0xFFDB281F, 0xFFDB2920, 0xFFD0261E, 0xFFD92921, 0xFFDE2B23, 0xFFBC1D17, 0xFFB01712, 0xFFAC1510, 0xFFB6130E,
    0xFF6C1211, 0xFF000F16, 0xFF141317, 0xFFDA2C23, 0xFFE52A20, 0xFFE32A20, 0xFFE92C22, 0xFFC41E16, 0xFFCD1B14, 0xFF611616, 0xFF001218, 0xFF4D1214,
    0xFFAC130E, 0xFFA41510, 0xFFC7231C, 0xFFCC241D, 0xFFB71812, 0xFFAC110C, 0xFFAC130E, 0xFFB4140E, 0xFF7F1210, 0xFF731211, 0xFF431214, 0xFF001217,
    0xFF0A151E, 0xFF2F3E8C, 0xFF314094, 0xFF3A44A0, 0xFF4751C2, 0xFF404BB3, 0xFF424CB8, 0xFF3E49AF, 0xFF444FBD, 0xFF3B45A7, 0xFF2E3888, 0xFF2E3885,
    0xFF303A8C, 0xFF2E3786, 0xFF333794, 0xFF273D6A, 0xFF235252, 0xFF245352, 0xFF235553, 0xFF235651, 0xFF24594F, 0xFF235451, 0xFF2F3A84, 0xFF30388C,
    0xFF2F3789, 0xFF2C3F75, 0xFF245350, 0xFF255455, 0xFF245553, 0xFF255557, 0xFF245356, 0xFF255555, 0xFF245F3E, 0xFF215C3C, 0xFF236041, 0xFF235F41,
    0xFF265F48, 0xFF255E46, 0xFF255D44, 0xFF255C43, 0xFF1F4933, 0xFF1F472F, 0xFF1E472C, 0xFF1D4528, 0xFF1F3F39, 0xFF223B47, 0xFF2B3C6D, 0xFF444CC0,
    0xFF325081, 0xFF2B5C62, 0xFF2C5960, 0xFF2E5E69, 0xFF29515A, 0xFF244047, 0xFF2C4666, 0xFF4552BF, 0xFF3F4AB0, 0xFF3C46A9, 0xFF3D47AD, 0xFF404BB4,
    0xFF4550BC, 0xFF1A1E34, 0xFF000D0B, 0xFF6E1F1E, 0xFFF22E25, 0xFFD72820, 0xFFDD2B22, 0xFFD62921, 0xFFDF2B22, 0xFFDA2921, 0xFFBE1D17, 0xFFB91B15,
    0xFFB41510, 0xFFB6120C, 0xFF691110, 0xFF371114, 0xFF3E1517, 0xFF781E1C, 0xFF851F1C, 0xFFCD2921, 0xFFD32820, 0xFFD12820, 0xFFD92A22, 0xFFAC1812,
    0xFFA8110C, 0xFF491112, 0xFF001218, 0xFF3B1316, 0xFFAB140F, 0xFFAD1812, 0xFFD92B23, 0xFFD72A22, 0xFFCA241D, 0xFFCB231D, 0xFFAF1813, 0xFFA3120D,
    0xFFA0110D, 0xFFB6130D, 0xFF681111, 0xFF031217, 0xFF10151B, 0xFF28505F, 0xFF2B5965, 0xFF26555E, 0xFF285860, 0xFF285760, 0xFF2C5B6C, 0xFF2A5865,
    0xFF2E5E6F, 0xFF2A5168, 0xFF303989, 0xFF30378B, 0xFF323691, 0xFF283E6A, 0xFF235250, 0xFF205844, 0xFF206440, 0xFF1E5B3B, 0xFF1C4A2C, 0xFF1D4C2E,
    0xFF1D4C2E, 0xFF1F4F34, 0xFF235650, 0xFF21534D, 0xFF21544C, 0xFF225949, 0xFF1F603D, 0xFF1F5C3B, 0xFF1D4C2E, 0xFF1D4D2F, 0xFF1C492C, 0xFF1D4A2C,
    0xFF276349, 0xFF235A42, 0xFF214B34, 0xFF224C34, 0xFF214C33, 0xFF204931, 0xFF255E42, 0xFF276145, 0xFF1C3D26, 0xFF1F3F26, 0xFF1D3C25, 0xFF1E3D26,
    0xFF1B3921, 0xFF1A3919, 0xFF214737, 0xFF325F6F, 0xFF265447, 0xFF1F4D29, 0xFF204C2D, 0xFF214F2F, 0xFF1F4729, 0xFF1C3D1C, 0xFF1F3F2B, 0xFF2C455C,
    0xFF2A4259, 0xFF2D5566, 0xFF305D6C, 0xFF2E5A66, 0xFF31606D, 0xFF172228, 0xFF000E14, 0xFF651917, 0xFFCC1F15, 0xFFB61C15, 0xFFBF1E17, 0xFFB91C16,
    0xFFBF1E18, 0xFFBB1D17, 0xFFB1150E, 0xFFB4140D, 0xFF691311, 0xFF4F1514, 0xFF2A1416, 0xFF001218, 0xFF2E181A, 0xFFE72C23, 0xFFDE281F, 0xFFD92921,
    0xFFD22720, 0xFFD4281F, 0xFFDC2A22, 0xFFAF1914, 0xFFAA120D, 0xFF4D1213, 0xFF011319, 0xFF151116, 0xFF260C10, 0xFF621110, 0xFFC71D14, 0xFFBA1A13,
    0xFFD3281F, 0xFFDF2C24, 0xFFB21913, 0xFFA4120D, 0xFF9C130E, 0xFFA6130D, 0xFF651211, 0xFF061418, 0xFF101919, 0xFF1C5A37, 0xFF1E623C, 0xFF1C502F,
    0xFF1D4C2A, 0xFF1C4C2A, 0xFF1E4F2B, 0xFF1E502E, 0xFF1F542F, 0xFF1E5133, 0xFF265757, 0xFF265257, 0xFF27545C, 0xFF215748, 0xFF21663F, 0xFF20593C,
    0xFF1E4830, 0xFF1D442C, 0xFF1E3E26, 0xFF1F3F27, 0xFF1E3E25, 0xFF1F4128, 0xFF1E4A2C, 0xFF1E492B, 0xFF1E482A, 0xFF1F4A2D, 0xFF1F462D, 0xFF1E442B,
    0xFF1C3B24, 0xFF1F3F26, 0xFF1D3C24, 0xFF1E3D26, 0xFF164535, 0xFF144031, 0xFF133324, 0xFF143525, 0xFF133324, 0xFF133324, 0xFF153D2F, 0xFF174233,
    0xFF123326, 0xFF153728, 0xFF133526, 0xFF143627, 0xFF123427, 0xFF143428, 0xFF153D2C, 0xFF15452D, 0xFF133A29, 0xFF153426, 0xFF123124, 0xFF143426,
    0xFF123225, 0xFF153629, 0xFF123324, 0xFF0E301A, 0xFF10321D, 0xFF14452D, 0xFF154930, 0xFF13422C, 0xFF154831, 0xFF112E26, 0xFF081E1E, 0xFF290C15,
    0xFF350913, 0xFF790F10, 0xFFBA150D, 0xFFA9140D, 0xFFB2140D, 0xFFAA140D, 0xFF500C11, 0xFF320B14, 0xFF080B17, 0xFF000B18, 0xFF0A1319, 0xFF081618,
    0xFF391B1B, 0xFFD62A22, 0xFFCC261F, 0xFFD92A22, 0xFFD62921, 0xFFCF271F, 0xFFDE2B22, 0xFFAC1813, 0xFFA6120D, 0xFF4F1414, 0xFF031216, 0xFF262F29,
    0xFF324F40, 0xFF37342F, 0xFF410610, 0xFF4B0911, 0xFFB01914, 0xFFC11B13, 0xFFAE140D, 0xFFB3150E, 0xFFAC140D, 0xFFB7140D, 0xFF701211, 0xFF000A17,
    0xFF060E18, 0xFF123E32, 0xFF134536, 0xFF13382A, 0xFF163627, 0xFF143526, 0xFF143426, 0xFF123124, 0xFF143426, 0xFF133627, 0xFF13452F, 0xFF13442D,
    0xFF14442D, 0xFF13412F, 0xFF144334, 0xFF133D2E, 0xFF123224, 0xFF133425, 0xFF133626, 0xFF143727, 0xFF133526, 0xFF133526, 0xFF113023, 0xFF133426,
    0xFF123225, 0xFF143526, 0xFF123324, 0xFF143526, 0xFF123325, 0xFF143727, 0xFF133526, 0xFF143627, 0xFF536A22, 0xFF506923, 0xFF4F6A26, 0xFF4F6926,
    0xFF506A25, 0xFF506A25, 0xFF4D6423, 0xFF4F6723, 0xFF4E6825, 0xFF4E6A25, 0xFF4F6925, 0xFF526B25, 0xFF506A25, 0xFF4F6A25, 0xFF4E6724, 0xFF4F6724,
    0xFF4C6423, 0xFF506A26, 0xFF4F6924, 0xFF506B25, 0xFF516C25, 0xFF506A25, 0xFF4E6725, 0xFF4F6827, 0xFF506A28, 0xFF4B6324, 0xFF4D6424, 0xFF4C6223,
    0xFF4E6423, 0xFF4E6926, 0xFF486126, 0xFF2F3F1D, 0xFF26421D, 0xFF562A19, 0xFF750911, 0xFF680C11, 0xFF6E0B11, 0xFF640A11, 0xFF31361B, 0xFF2C431D,
    0xFF323D1C, 0xFF3A421E, 0xFF1B211B, 0xFF000816, 0xFF42191B, 0xFFF33226, 0xFFDB2920, 0xFFC01F19, 0xFFBC1F18, 0xFFD1281F, 0xFFD72B22, 0xFFB11913,
    0xFFAF110C, 0xFF4E0F12, 0xFF000013, 0xFF303A29, 0xFF829949, 0xFF647938, 0xFF32491E, 0xFF32451F, 0xFF561413, 0xFF5F0810, 0xFF590C12, 0xFF620D12,
    0xFF4E0D12, 0xFF470A12, 0xFF321616, 0xFF303E1D, 0xFF3B461D, 0xFF475B20, 0xFF4C6322, 0xFF4F6824, 0xFF516C26, 0xFF516B25, 0xFF516B26, 0xFF4D6725,
    0xFF4D6825, 0xFF4A6524, 0xFF4C6323, 0xFF4E6624, 0xFF4D6424, 0xFF4C6523, 0xFF4D6522, 0xFF4C6523, 0xFF4B6624, 0xFF4D6825, 0xFF4E6824, 0xFF4E6825,
    0xFF4F6824, 0xFF4F6925, 0xFF516B25, 0xFF506A25, 0xFF4F6925, 0xFF4E6925, 0xFF4D6725, 0xFF4B6625, 0xFF4A6424, 0xFF496425, 0xFF476224, 0xFF486325,
    0xFFA7BB24, 0xFFA3B623, 0xFFA5B823, 0xFFA5B723, 0xFFA0B623, 0xFFA0B623, 0xFFA1B724, 0xFF9FB623, 0xFFA4B722, 0xFFA7B921, 0xFFA2B622, 0xFFA0B623,
    0xFFA1B422, 0xFFA5B823, 0xFFA1B522, 0xFFA5B823, 0xFFA0B422, 0xFF9FB623, 0xFFA1B522, 0xFFA7BA22, 0xFFA4B621, 0xFFA5B822, 0xFFA0B221, 0xFFA6B822,
    0xFFA2B422, 0xFFA4B823, 0xFFA3B623, 0xFFA3B522, 0xFFA4B823, 0xFFA0B221, 0xFFA0B322, 0xFF9DAE22, 0xFFAEBF24, 0xFF6A7D22, 0xFF23361D, 0xFF2E411E,
    0xFF2F441F, 0xFF34491E, 0xFF90A325, 0xFFA7B723, 0xFF9FB022, 0xFFAABE25, 0xFF556021, 0xFF26301B, 0xFF31261C, 0xFF55141E, 0xFF611518, 0xFFA9120C,
    0xFFB0130E, 0xFFDB2920, 0xFFEC2F24, 0xFF951E19, 0xFF650F11, 0xFF4D2A18, 0xFF303C1C, 0xFF5B681E, 0xFFA1B41F, 0xFF9DAE1E, 0xFFA5B622, 0xFFA5B825,
    0xFF40521F, 0xFF1B2D1C, 0xFF23361D, 0xFF21341D, 0xFF23371D, 0xFF1A2F1C, 0xFF3E501F, 0xFFA7BA24, 0xFFA1B422, 0xFFA4B723, 0xFFA4B623, 0xFFA2B522,
    0xFFA3B722, 0xFF9FB321, 0xFFA3B822, 0xFFA2B522, 0xFFA7BA22, 0xFFA1B321, 0xFFA6B923, 0xFFA4B622, 0xFFA7B923, 0xFFA5B722, 0xFFA8BB23, 0xFFA4B722,
    0xFFA6B822, 0xFFA6B822, 0xFFA6B822, 0xFFA6B922, 0xFFA2B722, 0xFFA1B622, 0xFFA1B622, 0xFFA3B823, 0xFFA3B722, 0xFFA3B822, 0xFFA4B522, 0xFFA8B922,
    0xFFA4B521, 0xFFA8BA23, 0xFFA2B321, 0xFFA5B722, 0xFF9FB223, 0xFF9BAE22, 0xFF9DB123, 0xFF98AB22, 0xFFB3B822, 0xFFB4B721, 0xFFB3B721, 0xFFB3B721,
    0xFF95AA24, 0xFF8CA625, 0xFFA6B022, 0xFFB8BA21, 0xFFA7B222, 0xFF9DB123, 0xFF9DAF22, 0xFF9BAF23, 0xFFA6B122, 0xFFBABB22, 0xFF9BAA23, 0xFF94AC26,
    0xFF93A925, 0xFF97AD25, 0xFF98AC24, 0xFF97AE24, 0xFF95AB23, 0xFF99AE22, 0xFF99AD22, 0xFF97AA22, 0xFF98AC22, 0xFF97AA22, 0xFF99AD22, 0xFF97AA21,
    0xFF99AC21, 0xFF97A921, 0xFFA2B523, 0xFF9FB123, 0xFFA4B623, 0xFFA3B523, 0xFF9DB022, 0xFF99AC22, 0xFF9BAE21, 0xFF9AAE22, 0xFF9BAD21, 0xFFAABE24,
    0xFF687821, 0xFF1C3319, 0xFF2C3019, 0xFF6B1313, 0xFF711412, 0xFF8B1E1C, 0xFF9A211F, 0xFF471D1C, 0xFF000817, 0xFF576822, 0xFFAFC324, 0xFF9CAF21,
    0xFF9DB022, 0xFF9AAC22, 0xFF99AC21, 0xFF9AAC21, 0xFFA4B622, 0xFFABBE23, 0xFFA7B922, 0xFFACBE23, 0xFFA8B922, 0xFFACBE23, 0xFFA6B922, 0xFFA3B722,
    0xFFA1B521, 0xFFA3B622, 0xFFA1B522, 0xFFA2AE21, 0xFFB2B621, 0xFFAFB421, 0xFFAFB421, 0xFF9FAF23, 0xFF9CB123, 0xFF9AAD22, 0xFF9CB023, 0xFF98AC22,
    0xFF98AF23, 0xFF97AD22, 0xFF9AB022, 0xFF96AC22, 0xFF97AE23, 0xFF97AC22, 0xFF9BAF22, 0xFF9EAF22, 0xFFB3B722, 0xFFB2B621, 0xFFB3B721, 0xFFB4B721,
    0xFFACB221, 0xFFADB422, 0xFF9CAF23, 0xFF98AF23, 0xFF98AE22, 0xFF99B023, 0xFF98AC21, 0xFF9DB123, 0xFF95AC26, 0xFF91A826, 0xFF90A926, 0xFF8DA425,
    0xFFBFB824, 0xFFC5BB23, 0xFFC3BA22, 0xFFC5BA23, 0xFF799428, 0xFF608C2C, 0xFFA2A926, 0xFFC8BB24, 0xFF9FA924, 0xFF89A727, 0xFF86A126, 0xFF88A528,
    0xFF9EAA26, 0xFFCABD25, 0xFF919E27, 0xFF789A2F, 0xFF79982C, 0xFF7C9C2D, 0xFF88A32B, 0xFFAFB723, 0xFFB0B521, 0xFF9EAF21, 0xFF9AAF22, 0xFF9FB222,
    0xFFA1B522, 0xFF9EB222, 0xFFA1B523, 0xFF9CB022, 0xFFA1B623, 0xFF9DB122, 0xFFA2B823, 0xFF9DB022, 0xFF9BAE22, 0xFF97AA21, 0xFF9AAD22, 0xFF99AC21,
    0xFF9CAF22, 0xFF9CAF22, 0xFF9AAC21, 0xFF9DB122, 0xFF9BAD21, 0xFFAFC023, 0xFF7C8925, 0xFF000D19, 0xFF031418, 0xFF011A1A, 0xFF00201C, 0xFF0A1B19,
    0xFF060A16, 0xFF404B1E, 0xFFA4B722, 0xFF96A720, 0xFF9AAC21, 0xFF9CAF21, 0xFF9DB020, 0xFFA4B823, 0xFF879621, 0xFF839121, 0xFF7F8C20, 0xFF808D20,
    0xFF7E8A1F, 0xFF7F8D20, 0xFF7F8D20, 0xFF808D20, 0xFF808E20, 0xFF818F21, 0xFF7C8E21, 0xFFB4AE21, 0xFFE3C71F, 0xFFD3C01F, 0xFFD8C220, 0xFFAAB223,
    0xFF9FB324, 0xFF9DAF22, 0xFF9FB324, 0xFFA0AE22, 0xFFB1B822, 0xFFABB321, 0xFFACB621, 0xFFAAB221, 0xFFB1B720, 0xFFAFB521, 0xFF9BAE22, 0xFFAAB422,
    0xFFDAC521, 0xFFD7C421, 0xFFC7B921, 0xFFC5B923, 0xFFD9C01E, 0xFFE6C71D, 0xFFBBB51F, 0xFFB0B822, 0xFFAEB320, 0xFFB2B721, 0xFF9FAE22, 0xFF9EB224,
    0xFF759830, 0xFF70932D, 0xFF71952E, 0xFF71962F, 0xFF6D932E, 0xFF6A912D, 0xFF68912E, 0xFF648E2D, 0xFF688F2C, 0xFF6A912D, 0xFF839C2B, 0xFF91A42B,
    0xFF8B9F2A, 0xFF91A32B, 0xFF8B9E29, 0xFF91A32B, 0xFF7B962B, 0xFF6A922F, 0xFF6C8F2C, 0xFF749731, 0xFF6E912D, 0xFF6F9430, 0xFF7B992D, 0xFFBEB821,
    0xFFC2B821, 0xFF9BAC24, 0xFF92A925, 0xFF829322, 0xFF849522, 0xFF808E20, 0xFF829120, 0xFF808D1F, 0xFF839121, 0xFF7E8B20, 0xFF7E8D20, 0xFF839421,
    0xFFA3B823, 0xFFA1B521, 0xFFA1B522, 0xFF9FB322, 0xFF9CAF22, 0xFF9AAE22, 0xFF98AB21, 0xFF9EB222, 0xFF98AA21, 0xFFA4B721, 0xFF7C8A23, 0xFF0A0F19,
    0xFF0E1116, 0xFF13462A, 0xFF146436, 0xFF113624, 0xFF040714, 0xFF2D381C, 0xFFA2B423, 0xFF9AAB20, 0xFF9FB220, 0xFF9BAD22, 0xFF869420, 0xFF889624,
    0xFF202F1E, 0xFF0A191B, 0xFF0F1F1C, 0xFF0E201D, 0xFF0E1F1C, 0xFF0F201C, 0xFF0D1D1C, 0xFF0A1A1B, 0xFF0A1B1B, 0xFF0B1419, 0xFF060D18, 0xFF7E8D23,
    0xFFACBB23, 0xFF9AAC23, 0xFF9EB224, 0xFF9CAF23, 0xFFA2B523, 0xFF9EAF22, 0xFF9DB324, 0xFFB1B421, 0xFFDDC61F, 0xFFD7C01E, 0xFFE2C71D, 0xFFD3BE1E,
    0xFFC2B820, 0xFFB7B422, 0xFF89A527, 0xFF82A127, 0xFF7A9D26, 0xFF7DA027, 0xFF62902B, 0xFF51862D, 0xFF9CA625, 0xFFC3B821, 0xFFB4B020, 0xFFBDB621,
    0xFFC2B61F, 0xFFCCBF1F, 0xFFA3AE21, 0xFF9DB123, 0xFF769A30, 0xFF73962E, 0xFF71952E, 0xFF6F932D, 0xFF72962E, 0xFF78992E, 0xFF849D2C, 0xFF81992A,
    0xFF7C992B, 0xFF83A22D, 0xFFC7BE25, 0xFFDBC822, 0xFFD5C422, 0xFFD8C723, 0xFFD3C323, 0xFFDAC825, 0xFFA0AA28, 0xFF648C2B, 0xFF70932A, 0xFF77992C,
    0xFF729329, 0xFF7B9C2C, 0xFF81A02A, 0xFF85A227, 0xFF86A329, 0xFF7C9D2E, 0xFF6C8B2E, 0xFF121B1A, 0xFF0B1217, 0xFF11231D, 0xFF11271E, 0xFF12271E,
    0xFF12261E, 0xFF12261E, 0xFF0B1F1D, 0xFF22331E, 0xFF7A8922, 0xFF7F8D21, 0xFF808F22, 0xFF7E8D21, 0xFF98AC23, 0xFFA1B522, 0xFF9BAE22, 0xFF9EB222,
    0xFF99AB21, 0xFFA4B821, 0xFF7D8B23, 0xFF080F18, 0xFF0C1016, 0xFF114929, 0xFF166D36, 0xFF113521, 0xFF040614, 0xFF2B351D, 0xFFA6B823, 0xFF97A721,
    0xFF91A122, 0xFF7A8823, 0xFF14231D, 0xFF0F1C1A, 0xFF276B32, 0xFF34963E, 0xFF308A3A, 0xFF33933D, 0xFF308C3A, 0xFF2F8B3C, 0xFF297F39, 0xFF11532E,
    0xFF114D2D, 0xFF0B1618, 0xFF030916, 0xFF738523, 0xFFA5B922, 0xFF9BAD22, 0xFF9FB222, 0xFF98AA22, 0xFF9DB024, 0xFF9BAE24, 0xFF9DB125, 0xFF99AC24,
    0xFF98AF27, 0xFFA7AF24, 0xFFD4C121, 0xFFB7B223, 0xFF5B8A2B, 0xFF5C8D2D, 0xFF528A2D, 0xFF4A862C, 0xFF44822C, 0xFF43812C, 0xFF407F2B, 0xFF41812C,
    0xFF3F7F2C, 0xFF41812C, 0xFF42812B, 0xFF45842D, 0xFF619029, 0xFF82A427, 0xFF82A225, 0xFF8BA726, 0xFF769930, 0xFF71942D, 0xFF70942D, 0xFF71942D,
    0xFF6F942E, 0xFF819B2C, 0xFFCFC025, 0xFFD7C224, 0xFFA2AB25, 0xFF88A526, 0xFF88A325, 0xFF8FA925, 0xFF90A822, 0xFF97AE23, 0xFF82A027, 0xFF73992C,
    0xFF7C9B29, 0xFF819D29, 0xFF88A125, 0xFFA2B323, 0xFF96AA23, 0xFF94AC25, 0xFF85A025, 0xFF6A8D2A, 0xFF6E902B, 0xFF71952D, 0xFF65842C, 0xFF111A19,
    0xFF090C14, 0xFF256630, 0xFF34993F, 0xFF2D8739, 0xFF318F3D, 0xFF308C3A, 0xFF36983E, 0xFF276931, 0xFF081218, 0xFF0E1F1D, 0xFF0E1F1C, 0xFF0B171B,
    0xFF708224, 0xFF8FA122, 0xFF8C9F21, 0xFF9DB122, 0xFF96A921, 0xFFA3B721, 0xFF7C8C23, 0xFF080F18, 0xFF0B0F15, 0xFF266A31, 0xFF36A041, 0xFF1D4927,
    0xFF030313, 0xFF29321D, 0xFF9EAF25, 0xFF617122, 0xFF0C171A, 0xFF13201A, 0xFF2B7B36, 0xFF31903C, 0xFF318F3B, 0xFF34973E, 0xFF308F3C, 0xFF32943E,
    0xFF2B883C, 0xFF126135, 0xFF13522F, 0xFF0C1417, 0xFF0C1518, 0xFF19231B, 0xFF17211A, 0xFF758A26, 0xFF9EB324, 0xFF95A923, 0xFF9BB023, 0xFF829D29,
    0xFF73952D, 0xFF72932B, 0xFF75972E, 0xFF71932D, 0xFF70942E, 0xFF6B8F2C, 0xFF71942D, 0xFF6F922C, 0xFF6C922C, 0xFF6A902C, 0xFF59892B, 0xFF5A8D2D,
    0xFF48852B, 0xFF46842C, 0xFF45812A, 0xFF48842B, 0xFF47822A, 0xFF46822A, 0xFF407F2A, 0xFF43832C, 0xFF3E7D2A, 0xFF40812D, 0xFF3F7E2B, 0xFF42812D,
    0xFF71962F, 0xFF6C912C, 0xFF6D922C, 0xFF6C902C, 0xFF6F922C, 0xFF70932D, 0xFF75962D, 0xFF77972D, 0xFF6E912B, 0xFF6C912D, 0xFF6C8F2B, 0xFF73952C,
    0xFF8AA426, 0xFF99AF25, 0xFF719428, 0xFF5B882C, 0xFFABAE28, 0xFFDBC726, 0xFFCABC24, 0xFFDEC924, 0xFFA6A925, 0xFF648C2B, 0xFF6E902B, 0xFF6E912C,
    0xFF6D902C, 0xFF6F932B, 0xFF63832B, 0xFF121C1A, 0xFF0A0D15, 0xFF20562B, 0xFF379D40, 0xFF1D6C34, 0xFF105A31, 0xFF227737, 0xFF369A3F, 0xFF318F3B,
    0xFF308A3A, 0xFF318B3A, 0xFF308D3A, 0xFF31863A, 0xFF16251B, 0xFF060A15, 0xFF495920, 0xFFA1B624, 0xFF92A421, 0xFF9BB022, 0xFF768724, 0xFF081018,
    0xFF0B0E15, 0xFF286C31, 0xFF38A442, 0xFF1C4A28, 0xFF080914, 0xFF0E1819, 0xFF151A18, 0xFF162D1E, 0xFF2C8339, 0xFF2D8338, 0xFF32913C, 0xFF34963E,
    0xFF308F3C, 0xFF34963E, 0xFF257D39, 0xFF105B32, 0xFF135D32, 0xFF115E34, 0xFF114B2D, 0xFF0D1116, 0xFF0B1117, 0xFF5F792A, 0xFF75962D, 0xFF71912C,
    0xFF72942B, 0xFF70912B, 0xFF72952D, 0xFF6E912C, 0xFF6F942E, 0xFF6B8F2C, 0xFF6E932E, 0xFF6B8F2B, 0xFF6E922D, 0xFF6B8F2B, 0xFF6C912C, 0xFF698E2B,
    0xFF6B902C, 0xFF6C912C, 0xFF6D922D, 0xFF6C932C, 0xFF468029, 0xFF3A7D2B, 0xFF9EA522, 0xFFD1BB1D, 0xFFC8B61C, 0xFFC3B61E, 0xFF508429, 0xFF41822C,
    0xFF43802A, 0xFF43842E, 0xFF3F7E2A, 0xFF41812D, 0xFF508B2F, 0xFF508A2E, 0xFF508B2E, 0xFF4C872C, 0xFF67902C, 0xFF74952E, 0xFF70932D, 0xFF70932D,
    0xFF6B8E2A, 0xFF70932C, 0xFF6D902B, 0xFF70932E, 0xFF6F922C, 0xFF74962D, 0xFF6D902B, 0xFF70922D, 0xFF75942C, 0xFF79982D, 0xFF75942B, 0xFF7E9B2E,
    0xFF74932C, 0xFF6D912C, 0xFF6C8F2A, 0xFF6F922C, 0xFF6E912C, 0xFF70932C, 0xFF67872C, 0xFF111B1A, 0xFF020413, 0xFF1F522A, 0xFF3AA342, 0xFF2F8E3B,
    0xFF2F8C3C, 0xFF217537, 0xFF125E32, 0xFF186934, 0xFF35983F, 0xFF36993E, 0xFF33943C, 0xFF33933D, 0xFF2B7C36, 0xFF2D7E37, 0xFF234624, 0xFF1D2217,
    0xFF3B4C21, 0xFF7B9D2D, 0xFF5D7728, 0xFF0B1318, 0xFF0A0E15, 0xFF276B31, 0xFF38A342, 0xFF1D4B29, 0xFF090A14, 0xFF0C1418, 0xFF050513, 0xFF0E251C,
    0xFF35963E, 0xFF379B3F, 0xFF33913C, 0xFF36993F, 0xFF227737, 0xFF156434, 0xFF156032, 0xFF105F34, 0xFF10512F, 0xFF0E211B, 0xFF0C1C1B, 0xFF060C16,
    0xFF050B15, 0xFF607C2A, 0xFF75992D, 0xFF6E912B, 0xFF6E922C, 0xFF6B8E2B, 0xFF70942E, 0xFF698D2B, 0xFF6C922E, 0xFF688B2A, 0xFF6D912D, 0xFF6A8D2B,
    0xFF6B902D, 0xFF658B2B, 0xFF698E2A, 0xFF698E2A, 0xFF6B902C, 0xFF688D2B, 0xFF7C9B28, 0xFF7F9E27, 0xFFB5AE20, 0xFFC8B61D, 0xFFD5B91B, 0xFFE3C119,
    0xFFDCBC19, 0xFFE1C11A, 0xFF7C9727, 0xFF628E2D, 0xFF4A8129, 0xFF3E802B, 0xFF3D7B29, 0xFF41812B, 0xFF41842E, 0xFF3F7F2C, 0xFF3F802D, 0xFF3F812C,
    0xFF4B842C, 0xFF4F862D, 0xFF4E852B, 0xFF51872C, 0xFF4E842B, 0xFF4F872C, 0xFF5F8A2B, 0xFF79972F, 0xFF57862B, 0xFF46812C, 0xFF4C842B, 0xFF50872D,
    0xFF5A872A, 0xFF6F922D, 0xFF698D2A, 0xFF6F932E, 0xFF6D902C, 0xFF6E922D, 0xFF6C8F2B, 0xFF6E922C, 0xFF6C902B, 0xFF6E912C, 0xFF6B8D2B, 0xFF516C26,
    0xFF4F6925, 0xFF274423, 0xFF193E25, 0xFF26642F, 0xFF35993E, 0xFF2C8539, 0xFF267F39, 0xFF277F39, 0xFF1C6E36, 0xFF186934, 0xFF2D893B, 0xFF35963E,
    0xFF33933C, 0xFF37A041, 0xFF194225, 0xFF000114, 0xFF2A3C20, 0xFF799D2F, 0xFF5B752A, 0xFF0A1217, 0xFF0C1317, 0xFF2A7535, 0xFF36A142, 0xFF1A4726,
    0xFF080713, 0xFF0F201B, 0xFF276A31, 0xFF2A7A35, 0xFF1E7034, 0xFF1E6F35, 0xFF1B6E35, 0xFF1B7137, 0xFF136234, 0xFF136336, 0xFF103924, 0xFF0F2C20,
    0xFF0D261E, 0xFF010313, 0xFF161F1A, 0xFF526D27, 0xFF4E6824, 0xFF698A2B, 0xFF6F922C, 0xFF6D902B, 0xFF6F932C, 0xFF6D912B, 0xFF6D932E, 0xFFB0AA22,
    0xFFD3BB1C, 0xFFC7B21C, 0xFFC5B31C, 0xFFC3B01C, 0xFFC7B31C, 0xFF9D9F21, 0xFF5F882C, 0xFF668C2C, 0xFF6C912D, 0xFF668E2D, 0xFF588C2A, 0xFF598D2A,
    0xFF719428, 0xFF809927, 0xFF839828, 0xFF829929, 0xFF7F9527, 0xFF879C29, 0xFF74922A, 0xFF6F922C, 0xFF658C2B, 0xFF628D2C, 0xFF5F882A, 0xFF638D2C,
    0xFF42832D, 0xFF41822D, 0xFF41812C, 0xFF3F7F2C, 0xFF397C2B, 0xFF3A7E2C, 0xFF397C2B, 0xFF3B7F2C, 0xFF397C2B, 0xFF3A7F2D, 0xFF407E2B, 0xFF4C852D,
    0xFF3E7C2A, 0xFF3D802D, 0xFF3E7E2B, 0xFF3E802C, 0xFF47822B, 0xFF578A2D, 0xFF51852B, 0xFF52872C, 0xFF56852A, 0xFF71922C, 0xFF70912B, 0xFF71922B,
    0xFF6F902B, 0xFF6D8F2B, 0xFF6B8D2A, 0xFF70932B, 0xFF7AA02E, 0xFF28391E, 0xFF000013, 0xFF20502A, 0xFF3CA843, 0xFF36963C, 0xFF399A3D, 0xFF36953C,
    0xFF2A8339, 0xFF277E39, 0xFF1C6C35, 0xFF1B6A34, 0xFF2C8439, 0xFF3BA241, 0xFF1E4425, 0xFF000010, 0xFF2F3D1E, 0xFF82AA31, 0xFF627F2B, 0xFF070814,
    0xFF090914, 0xFF2C7836, 0xFF37A242, 0xFF1C4927, 0xFF080613, 0xFF0F261D, 0xFF257E3A, 0xFF257C38, 0xFF136033, 0xFF105932, 0xFF0D3022, 0xFF0E2B20,
    0xFF0C2E23, 0xFF072420, 0xFF061319, 0xFF010012, 0xFF171E19, 0xFF465F24, 0xFF496323, 0xFF749A2D, 0xFF72972B, 0xFF72942C, 0xFF72932C, 0xFF6E912B,
    0xFF6D922C, 0xFF6A8E2A, 0xFF6A912D, 0xFF8B9E29, 0xFF9BA527, 0xFFBDAD1E, 0xFFE9C217, 0xFFDDBA17, 0xFFE7C217, 0xFFC6B11A, 0xFF8DA525, 0xFF8AA226,
    0xFF698D2B, 0xFF5C882A, 0xFF3D7F2B, 0xFF3E7E2C, 0xFF3B7D2C, 0xFF3C7B2B, 0xFF5C872C, 0xFF668F2E, 0xFF53872C, 0xFF4C852D, 0xFF49812B, 0xFF4C842B,
    0xFF638B2B, 0xFF73942D, 0xFF6B8D2A, 0xFF71932D, 0xFF41842E, 0xFF3E7F2C, 0xFF3F812D, 0xFF43802B, 0xFF51852B, 0xFF53862B, 0xFF53852B, 0xFF53872C,
    0xFF57882B, 0xFF5F8D2B, 0xFF5C8A29, 0xFF5E8C2A, 0xFF49832A, 0xFF40822D, 0xFF3D7E2C, 0xFF3B7F2D, 0xFF387B2C, 0xFF397E2D, 0xFF3A7D2C, 0xFF3B802D,
    0xFF3D7B29, 0xFF598A2C, 0xFF56862B, 0xFF58892C, 0xFF59882B, 0xFF6C912C, 0xFF6B8E2A, 0xFF6B8E2B, 0xFF6C8F2B, 0xFF4F6B26, 0xFF445D25, 0xFF284C26,
    0xFF1A4A29, 0xFF1F552B, 0xFF277F39, 0xFF267A37, 0xFF287C38, 0xFF287D39, 0xFF135B31, 0xFF0D5330, 0xFF186333, 0xFF227738, 0xFF20612F, 0xFF21592C,
    0xFF264725, 0xFF415322, 0xFF3A5125, 0xFF1E4C28, 0xFF1F532A, 0xFF2B7F38, 0xFF33963F, 0xFF1B4A28, 0xFF090813, 0xFF0E291F, 0xFF126235, 0xFF0E472A,
    0xFF092B21, 0xFF092E23, 0xFF071017, 0xFF020112, 0xFF27351E, 0xFF3C4D20, 0xFF384B20, 0xFF3C5323, 0xFF4E6A26, 0xFF799E2E, 0xFF71942B, 0xFF6F902B,
    0xFF678D2B, 0xFF55872C, 0xFF57892C, 0xFF608A2B, 0xFF71932C, 0xFF6B8E2A, 0xFF71942D, 0xFF6A8E2C, 0xFF67922F, 0xFF7E9428, 0xFFAAA923, 0xFFA5A623,
    0xFFABAB23, 0xFF929E23, 0xFF6E9927, 0xFF6C9627, 0xFF4E842A, 0xFF4A832B, 0xFF3F812C, 0xFF3F802C, 0xFF3E7F2C, 0xFF3E802C, 0xFF4D852C, 0xFF51882D,
    0xFF43842D, 0xFF3D7E2C, 0xFF397A2A, 0xFF3A7E2C, 0xFF45812B, 0xFF50872D, 0xFF4C832A, 0xFF52892D, 0xFF4D862D, 0xFF4C832B, 0xFF51882D, 0xFF59892C,
    0xFF688D2C, 0xFF668B2A, 0xFF729428, 0xFF6E9127, 0xFF799628, 0xFF819D2A, 0xFF7A9628, 0xFF819B2A, 0xFF55872A, 0xFF3C7F2D, 0xFF4B832A, 0xFF598C28,
    0xFF548727, 0xFF568B2A, 0xFF4E832A, 0xFF52872D, 0xFF47822B, 0xFF41822C, 0xFF44822B, 0xFF45852D, 0xFF427F2A, 0xFF688F2B, 0xFF6E902A, 0xFF6C8F2A,
    0xFF6D8F2A, 0xFF6F932A, 0xFF779F2E, 0xFF465F23, 0xFF28321B, 0xFF1E331F, 0xFF062E25, 0xFF0A402A, 0xFF116136, 0xFF115D34, 0xFF146336, 0xFF146235,
    0xFF125E34, 0xFF0E5932, 0xFF196934, 0xFF27873D, 0xFF174728, 0xFF010012, 0xFF0B191A, 0xFF35943E, 0xFF37A041, 0xFF1D6E35, 0xFF1A6C36, 0xFF123D25,
    0xFF0A0B14, 0xFF0C201C, 0xFF0A3325, 0xFF102B21, 0xFF2C371D, 0xFF2F3D1D, 0xFF334520, 0xFF364B22, 0xFF5F7C29, 0xFF7BA22D, 0xFF71962A, 0xFF789E2E,
    0xFF6C932B, 0xFF58862B, 0xFF538229, 0xFF58882B, 0xFF54872C, 0xFF3D7F2B, 0xFF3A7D2B, 0xFF4A822B, 0xFF5B8B2D, 0xFF54852A, 0xFF59892C, 0xFF5F8729,
    0xFF76972E, 0xFF628A2B, 0xFF4C842C, 0xFF4B832C, 0xFF51882E, 0xFF437F2B, 0xFF377D2D, 0xFF387C2D, 0xFF3C7F2D, 0xFF3A7B2B, 0xFF3E812D, 0xFF3D7E2C,
    0xFF3E7F2C, 0xFF3F812C, 0xFF4C872A, 0xFF508C2C, 0xFF42842C, 0xFF41822C, 0xFF3E7F2C, 0xFF40822D, 0xFF3C7E2C, 0xFF3C7F2D, 0xFF3A7B2B, 0xFF3D812D,
    0xFF66902B, 0xFF668F2A, 0xFF6B912B, 0xFF6F932B, 0xFF739526, 0xFF789925, 0xFF8DA721, 0xFF8FA821, 0xFF6B9327, 0xFF5A8A2A, 0xFF56872A, 0xFF56882B,
    0xFF5D8B28, 0xFF5F8E28, 0xFF749624, 0xFF8CA420, 0xFF87A01F, 0xFF8BA421, 0xFF799624, 0xFF799829, 0xFF5E8C29, 0xFF44852C, 0xFF4A852B, 0xFF4D892D,
    0xFF47842B, 0xFF57892B, 0xFF5C8B2B, 0xFF618C2B, 0xFF628E2C, 0xFF638A2A, 0xFF6C8F2B, 0xFF6D912B, 0xFF7BA430, 0xFF567227, 0xFF29311A, 0xFF284122,
    0xFF0F412A, 0xFF10402A, 0xFF0F3D29, 0xFF0E3C29, 0xFF0E3A27, 0xFF0E3926, 0xFF0E4A2C, 0xFF0F5C33, 0xFF0E3523, 0xFF0C0F15, 0xFF101E1A, 0xFF31863A,
    0xFF36963E, 0xFF186835, 0xFF0F5F35, 0xFF0F3724, 0xFF0A0C14, 0xFF131C18, 0xFF2C381C, 0xFF374D22, 0xFF6E952F, 0xFF71982C, 0xFF71972D, 0xFF729A2E,
    0xFF65902C, 0xFF638E2D, 0xFF5E892B, 0xFF5E8B2C, 0xFF4F832A, 0xFF40842C, 0xFF40842C, 0xFF3F842C, 0xFF41852C, 0xFF40812C, 0xFF40812C, 0xFF3D7F2B,
    0xFF3D812D, 0xFF3B7D2B, 0xFF397E2C, 0xFF427D2A, 0xFF628D2D, 0xFF55862B, 0xFF3C7E2A, 0xFF3D7F2C, 0xFF3E812C, 0xFF3D7E2B, 0xFF41822C, 0xFF40812C,
    0xFF42842C, 0xFF41822B, 0xFF3F822B, 0xFF3F812B, 0xFF3E7F2C, 0xFF3F802C, 0xFF4A7C2D, 0xFF4A7C2F, 0xFF37732D, 0xFF35742E, 0xFF3C7D2B, 0xFF40822D,
    0xFF40822B, 0xFF42842C, 0xFF40812A, 0xFF43862C, 0xFF497F2D, 0xFF497D2C, 0xFF507F2B, 0xFF527F2B, 0xFF6A8C25, 0xFF709025, 0xFF6E8E25, 0xFF6D8D26,
    0xFF417D29, 0xFF397F2B, 0xFF3C7E2B, 0xFF397E2B, 0xFF6C9325, 0xFF8CA424, 0xFF829C22, 0xFF88A222, 0xFF809A20, 0xFF84A021, 0xFF839D20, 0xFF8EA621,
    0xFF6F9324, 0xFF53882B, 0xFF4C8329, 0xFF3E7F2B, 0xFF3E7F2B, 0xFF3E802B, 0xFF3E802B, 0xFF40812C, 0xFF40822C, 0xFF4B832B, 0xFF5F8F2D, 0xFF588629,
    0xFF608D2C, 0xFF608D2B, 0xFF6A992E, 0xFF59822B, 0xFF182819, 0xFF17251A, 0xFF19281B, 0xFF1A2B1B, 0xFF182B1C, 0xFF19291A, 0xFF143A23, 0xFF0F472C,
    0xFF0E2F22, 0xFF0B0F16, 0xFF0F1C1A, 0xFF328639, 0xFF38993F, 0xFF194E2C, 0xFF0E3A26, 0xFF0D251E, 0xFF030514, 0xFF1C291B, 0xFF759C2F, 0xFF70962B,
    0xFF6E922B, 0xFF6D912B, 0xFF6C912B, 0xFF688F2B, 0xFF468229, 0xFF45872D, 0xFF3F7E2A, 0xFF40832C, 0xFF346E29, 0xFF336729, 0xFF346929, 0xFF316529,
    0xFF316629, 0xFF3E7E2C, 0xFF40822C, 0xFF3E7E2B, 0xFF40822C, 0xFF3F802B, 0xFF42842D, 0xFF3E7F2B, 0xFF3E812C, 0xFF3D7E2A, 0xFF40812C, 0xFF3E7E2B,
    0xFF40822C, 0xFF3E7F2B, 0xFF40822C, 0xFF3D7E2B, 0xFF35742C, 0xFF35742D, 0xFF3A7A2D, 0xFF38772C, 0xFF3F802C, 0xFF3C7E2D, 0xFF225E31, 0xFF1D5732,
    0xFF1D5432, 0xFF1B5333, 0xFF3A7B2D, 0xFF43862C, 0xFF33712C, 0xFF32712F, 0xFF35732E, 0xFF39792E, 0xFF1D5535, 0xFF1C5334, 0xFF1C5434, 0xFF1B5334,
    0xFF195134, 0xFF174C31, 0xFF184E32, 0xFF154B31, 0xFF306C2D, 0xFF3D7E2E, 0xFF3E7E2C, 0xFF40822B, 0xFF4F862B, 0xFF658E2D, 0xFF688F29, 0xFF769926,
    0xFF7B9923, 0xFF85A223, 0xFF759323, 0xFF678A27, 0xFF648928, 0xFF60872E, 0xFF50802B, 0xFF3E802B, 0xFF42812B, 0xFF41812B, 0xFF41822C, 0xFF41812B,
    0xFF42832C, 0xFF38742A, 0xFF36722C, 0xFF36722B, 0xFF38752C, 0xFF3A772A, 0xFF43842C, 0xFF42832B, 0xFF44882D, 0xFF44872D, 0xFF43862C, 0xFF44872D,
    0xFF43852C, 0xFF468F2F, 0xFF2F5E26, 0xFF15241A, 0xFF13211A, 0xFF0B1117, 0xFF101D1A, 0xFF33883A, 0xFF399940, 0xFF162B1F, 0xFF080713, 0xFF16201A,
    0xFF1E2D1D, 0xFF304420, 0xFF6F942D, 0xFF668C2C, 0xFF57812E, 0xFF59832E, 0xFF59832E, 0xFF59832E, 0xFF3D772B, 0xFF3C7A2D, 0xFF39742B, 0xFF3E7D2F,
    0xFF2D602B, 0xFF183A27, 0xFF1B3F26, 0xFF204826, 0xFF204926, 0xFF3C792C, 0xFF43832C, 0xFF3F7E2B, 0xFF41832D, 0xFF3A792B, 0xFF3C7C2D, 0xFF3A792C,
    0xFF3C7C2E, 0xFF3B7B2C, 0xFF43862C, 0xFF41812B, 0xFF41822C, 0xFF3F7F2B, 0xFF41822C, 0xFF3E7E2C, 0xFF245D30, 0xFF1F5731, 0xFF1B5334, 0xFF205932,
    0xFF3F802C, 0xFF40802C, 0xFF3F7F2B, 0xFF41832D, 0xFF235B2F, 0xFF1A5033, 0xFF2E692E, 0xFF3E7D2D, 0xFF225C32, 0xFF194F34, 0xFF1B5032, 0xFF1C5334,
    0xFF1F5735, 0xFF1E5433, 0xFF1F5534, 0xFF1E5433, 0xFF1E5433, 0xFF1D5233, 0xFF1E5333, 0xFF1E5333, 0xFF255E31, 0xFF256032, 0xFF306D2D, 0xFF42832B,
    0xFF41802B, 0xFF40812B, 0xFF39772B, 0xFF38792D, 0xFF51802B, 0xFF688C2A, 0xFF49762D, 0xFF164F33, 0xFF1A5132, 0xFF1A5234, 0xFF1D5530, 0xFF40812C,
    0xFF41832C, 0xFF40822B, 0xFF41822B, 0xFF3F7F2B, 0xFF43852C, 0xFF2A5F2A, 0xFF204F2C, 0xFF204C2A, 0xFF1A4028, 0xFF204A28, 0xFF407D2C, 0xFF3E7B2B,
    0xFF3D7B2B, 0xFF3E7D2B, 0xFF43842C, 0xFF44852C, 0xFF40802B, 0xFF41822C, 0xFF40812B, 0xFF478F2F, 0xFF2D5725, 0xFF070A15, 0xFF0F1B19, 0xFF348839,
    0xFF399B3F, 0xFF173020, 0xFF030715, 0xFF3A4F22, 0xFF759D2F, 0xFF62882B, 0xFF618A2D, 0xFF55802E, 0xFF174C31, 0xFF184E33, 0xFF1A5033, 0xFF1A4E32,
    0xFF1A4F33, 0xFF1B5033, 0xFF194C31, 0xFF194D32, 0xFF194A2F, 0xFF1D4E2F, 0xFF225129, 0xFF44832C, 0xFF43832B, 0xFF42822B, 0xFF42842C, 0xFF40802B,
    0xFF41832C, 0xFF225A30, 0xFF1C5234, 0xFF1C5131, 0xFF1D5233, 0xFF22572F, 0xFF3A762B, 0xFF3D7A2A, 0xFF42832C, 0xFF40812B, 0xFF41832C, 0xFF3E7E2A,
    0xFF42832C, 0xFF3A792C, 0xFF1F5832, 0xFF215B32, 0xFF3E7E2D, 0xFF42832B, 0xFF3A792C, 0xFF3A792E, 0xFF205631, 0xFF1C5334, 0xFF1A4F31, 0xFF1B5133,
    0xFF1D5433, 0xFF1E5634, 0xFF1D5333, 0xFF1E5634, 0xFF1D5334, 0xFF1C5132, 0xFF1E5434, 0xFF1D5333, 0xFF1D5232, 0xFF1E5432, 0xFF1F5634, 0xFF1D5232,
    0xFF3A762C, 0xFF42832B, 0xFF3F7E2B, 0xFF42832C, 0xFF3E7C2A, 0xFF40812C, 0xFF255E30, 0xFF1D5434, 0xFF1C5332, 0xFF1B5334, 0xFF1A5132, 0xFF1E5634,
    0xFF1D5333, 0xFF1D5333, 0xFF1D5330, 0xFF3C7C2D, 0xFF3E7F2B, 0xFF3C7C2B, 0xFF3E7E2B, 0xFF40802B, 0xFF42832C, 0xFF40812B, 0xFF44872C, 0xFF316729,
    0xFF1B442A, 0xFF1C4327, 0xFF1C4226, 0xFF1D4227, 0xFF1C4126, 0xFF1D4325, 0xFF39722A, 0xFF3D7A2A, 0xFF3F7F2B, 0xFF41822C, 0xFF3E7C2A, 0xFF44892D,
    0xFF2B5123, 0xFF080B16, 0xFF0F1C1A, 0xFF2E7C37, 0xFF348E3D, 0xFF152D1E, 0xFF040615, 0xFF374C21, 0xFF769E2D, 0xFF47722C, 0xFF174C32, 0xFF1E5231,
    0xFF1A4D31, 0xFF1A4D31, 0xFF1A4F32, 0xFF1A5033, 0xFF1B5033, 0xFF1B5133, 0xFF1C5232, 0xFF1D5433, 0xFF20552F, 0xFF3F7D2C, 0xFF417E2B, 0xFF43812B,
    0xFF43812B, 0xFF407E2C, 0xFF3E7C2B, 0xFF3F7E2A, 0xFF41832C, 0xFF245C30, 0xFF1C5434, 0xFF1B462B, 0xFF1D4428, 0xFF1C4227, 0xFF1A3E27, 0xFF265226,
    0xFF41822C, 0xFF3D7A2A, 0xFF40802C, 0xFF3E7D2A, 0xFF40812C, 0xFF3F802B, 0xFF3F802C, 0xFF40812C, 0xFF40802C, 0xFF43842D, 0xFF235B30, 0xFF1C5534,
    0xFF1D5633, 0xFF1D5534, 0xFF1D5232, 0xFF1D5233, 0xFF1C5232, 0xFF1D5534, 0xFF1C5232, 0xFF1E5635, 0xFF1E5634, 0xFF1D5132, 0xFF1D5131, 0xFF1C5133,
    0xFF316B2C, 0xFF407F2B, 0xFF3D7B2C, 0xFF3E7D2C, 0xFF41812B, 0xFF43832C, 0xFF407F2A, 0xFF3F802C, 0xFF245E2F, 0xFF205933, 0xFF1C5131, 0xFF1C5334,
    0xFF1D5232, 0xFF1E5735, 0xFF1C492C, 0xFF1B4329, 0xFF1B492E, 0xFF1C5334, 0xFF1A4F31, 0xFF1D5331, 0xFF1D5230, 0xFF1E5532, 0xFF1D5331, 0xFF36732C,
    0xFF41832C, 0xFF3E7F2B, 0xFF40812C, 0xFF3C792A, 0xFF3D7D2C, 0xFF336B29, 0xFF193D25, 0xFF193D26, 0xFF1A3E26, 0xFF1A3D26, 0xFF1B3F26, 0xFF1A3D25,
    0xFF326929, 0xFF40812C, 0xFF3D7B2A, 0xFF42862C, 0xFF2A5323, 0xFF080C15, 0xFF0F1E1B, 0xFF1B5232, 0xFF1C5835, 0xFF10241E, 0xFF060915, 0xFF3F5B25,
    0xFF6F9A2F, 0xFF39682E, 0xFF164C33, 0xFF1A4C31, 0xFF194D32, 0xFF184A30, 0xFF194C31, 0xFF1A4E31, 0xFF1B5032, 0xFF164831, 0xFF2A5F2C, 0xFF44832D,
    0xFF417E2C, 0xFF47842B, 0xFF46832C, 0xFF44802B, 0xFF407B2B, 0xFF214A27, 0xFF1C4227, 0xFF366F2B, 0xFF45872D, 0xFF3C7A2B, 0xFF3D7D2D, 0xFF204B26,
    0xFF1B4128, 0xFF1B4126, 0xFF1D4328, 0xFF1B4027, 0xFF204828, 0xFF1D4325, 0xFF1F4727, 0xFF214B27, 0xFF3E7D2C, 0xFF40812B, 0xFF41812C, 0xFF35742E,
    0xFF1E5731, 0xFF225A31, 0xFF1D5332, 0xFF1D5434, 0xFF1B4F31, 0xFF1D5535, 0xFF1B482D, 0xFF1B3E25, 0xFF1C4D2F, 0xFF1E5635, 0xFF1D5232, 0xFF1F5735,
    0xFF1E5535, 0xFF1D5333, 0xFF1E5333, 0xFF1D5435, 0xFF21522E, 0xFF24512B, 0xFF234E28, 0xFF224C28, 0xFF37702A, 0xFF488B2C, 0xFF28602D, 0xFF205832,
    0xFF1D5332, 0xFF1E5736, 0xFF1C4A2D, 0xFF1D4329, 0xFF1B4228, 0xFF1C4429, 0xFF1B4127, 0xFF1C4027, 0xFF1B4027, 0xFF1C442A, 0xFF1B4128, 0xFF1B4329,
    0xFF1B442A, 0xFF1A4E32, 0xFF194C32, 0xFF1D5131, 0xFF215933, 0xFF1F5430, 0xFF1E5432, 0xFF2E682E, 0xFF478A2C, 0xFF407E2A, 0xFF3A762A, 0xFF356F29,
    0xFF1C4026, 0xFF193D26, 0xFF1B3F26, 0xFF1B4027, 0xFF1C4226, 0xFF1C4226, 0xFF285826, 0xFF458D2F, 0xFF2D5724, 0xFF090D16, 0xFF0D1818, 0xFF1A4B30,
    0xFF1F5936, 0xFF10241E, 0xFF0B1016, 0xFF1B3E28, 0xFF235733, 0xFF1C4E30, 0xFF1B5133, 0xFF1A4E32, 0xFF194D32, 0xFF194C31, 0xFF194D32, 0xFF184B32,
    0xFF2F692E, 0xFF3C792D, 0xFF3D792A, 0xFF4B8C2C, 0xFF39712A, 0xFF1F4627, 0xFF214927, 0xFF204727, 0xFF204828, 0xFF1B4127, 0xFF1B4027, 0xFF1F4627,
    0xFF244F29, 0xFF224B26, 0xFF244F28, 0xFF1F4628, 0xFF1C4328, 0xFF1B4127, 0xFF1D4328, 0xFF1C4228, 0xFF1C4229, 0xFF1A3F27, 0xFF1B4028, 0xFF1C4228,
    0xFF224E29, 0xFF214E2A, 0xFF215A33, 0xFF1E5533, 0xFF1B5233, 0xFF1C5334, 0xFF1D5534, 0xFF1E5735, 0xFF1B462B, 0xFF1D452A, 0xFF1C4329, 0xFF1C4127,
    0xFF1C4229, 0xFF1D452A, 0xFF1D442A, 0xFF1D452A, 0xFF1C5032, 0xFF1D5133, 0xFF1D5233, 0xFF1D4F31, 0xFF1A412A, 0xFF1C442B, 0xFF1B4028, 0xFF1A3D27,
    0xFF234E28, 0xFF2D612C, 0xFF1D5130, 0xFF1C5334, 0xFF1C4F31, 0xFF1E5534, 0xFF1B452A, 0xFF1C3F26, 0xFF1A3E26, 0xFF1C4027, 0xFF1B3F27, 0xFF1C4128,
    0xFF1B3F27, 0xFF1C4027, 0xFF1B4027, 0xFF1B3F26, 0xFF1B3F26, 0xFF1C462C, 0xFF1A432A, 0xFF19422A, 0xFF1A472E, 0xFF1A4B31, 0xFF194E34, 0xFF1F522F,
    0xFF275B2C, 0xFF31672A, 0xFF46872C, 0xFF3F7C2A, 0xFF366D2A, 0xFF31642A, 0xFF1A3D24, 0xFF1D4228, 0xFF1B3F27, 0xFF1A3E27, 0xFF1B3F25, 0xFF234623,
    0xFF19301E, 0xFF0C1318, 0xFF0E1C1B, 0xFF1A4C31, 0xFF1D5535, 0xFF10251F, 0xFF0C1016, 0xFF133727, 0xFF174B32, 0xFF184A31, 0xFF1A4F33, 0xFF1A4F33,
    0xFF1B4F33, 0xFF194C31, 0xFF316C30, 0xFF38742F, 0xFF407E2C, 0xFF47892C, 0xFF316428, 0xFF2B5A2A, 0xFF255028, 0xFF193D27, 0xFF1A3E26, 0xFF1B3F27,
    0xFF1A3D26, 0xFF1A3E26, 0xFF1C4127, 0xFF1A3D26, 0xFF1A3E28, 0xFF193D26, 0xFF1A3E27, 0xFF1A3F27, 0xFF1C4128, 0xFF1B3F27, 0xFF1C4128, 0xFF1B4027,
    0xFF1D4328, 0xFF1B4027, 0xFF1C4228, 0xFF1B4127, 0xFF1C4129, 0xFF1A3E27, 0xFF1B4E31, 0xFF1C5233, 0xFF1D5233, 0xFF1E5434, 0xFF1C4A2D, 0xFF1D492C,
    0xFF1C4228, 0xFF1D4228, 0xFF1B4027, 0xFF1D4228, 0xFF1B3F27, 0xFF1C4028, 0xFF1B3E26, 0xFF1C4027,
];

fn batch_check(data: &[(ColorSchema, u64)], img: &Image, surface_size: Size, opt: &mut RenderOptions) {
    let mut s = SurfaceTester::new(surface_size.width, surface_size.height);
    for (cs, h) in data {
        s.clear(Character::default());
        opt.color_schema = *cs;
        s.draw_image(0, 0, img, opt);
        //s.print(true);
        assert_eq!(s.compute_hash(), *h);
    }
}

#[test]
fn check_size() {
    let img = Image::from_str(ALL_COLORS).unwrap();
    assert_eq!(img.width(), 16);
    assert_eq!(img.height(), 3);
    let v: [(CharacterSet, Scale, u32, u32); 10] = [
        (CharacterSet::SmallBlocks, Scale::NoScale, 16, 2),
        (CharacterSet::LargeBlocks, Scale::NoScale, 32, 3),
        (CharacterSet::DitheredShades, Scale::NoScale, 32, 3),
        (CharacterSet::AsciiArt, Scale::NoScale, 32, 3),
        (CharacterSet::Braille, Scale::NoScale, 8, 1),
        (CharacterSet::SmallBlocks, Scale::Scale50, 8, 1),
        (CharacterSet::LargeBlocks, Scale::Scale50, 16, 2),
        (CharacterSet::DitheredShades, Scale::Scale50, 16, 2),
        (CharacterSet::AsciiArt, Scale::Scale50, 16, 2),
        (CharacterSet::Braille, Scale::Scale50, 4, 1),
    ];
    for (cs, s, w, h) in v {
        assert_eq!(
            img.render_size(&RenderOptionsBuilder::new().character_set(cs).scale(s).build()),
            Size::new(w, h)
        );
    }
}
#[test]
fn check_image_with_invalid_size() {
    assert!(Image::new(0, 0).is_none());
    assert!(Image::new(100, 0).is_none());
    assert!(Image::new(0xFFFF, 0xFFFF).is_none());
    assert!(Image::from_str("0000").is_err());
    assert!(Image::from_str("||").is_err());
}

#[test]
fn check_image_from_buffer_invalid_size() {
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(0, 0), true).is_none());
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(0, 2), true).is_none());
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(2, 0), true).is_none());
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(0xFFFFFFFF, 1), true).is_none());
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(1, 0xFFFFFFFF), true).is_none());
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(0xFFFFFFFF, 0xFFFFFFFF), true).is_none());

    // buf size is 3, the actual size is 2x2 = 4
    assert!(Image::from_buffer(&[0, 1, 2], Size::new(2, 2), true).is_none());
}

#[test]
fn check_image_pixel() {
    let mut img = Image::from_str(HEART).unwrap();
    assert!(img.pixel(100, 100).is_none());
    assert!(img.pixel(200, 200).is_none());
    assert!(img.pixel(img.width(), img.height()).is_none());

    img.set_pixel(4, 4, Pixel::new(1, 2, 3, 4));
    let p = img.pixel(4, 4).unwrap();
    assert_eq!(p, Pixel::new(1, 2, 3, 4));
}

#[test]
fn check_pixel_blendalpha() {
    let p = Pixel::with_color(Color::Transparent);
    assert_eq!(p.blend_alpha(), (0, 0, 0));
    let p = Pixel::new(128, 128, 128, 128);
    assert_eq!(p.blend_alpha(), (64, 64, 64));
}

#[test]
fn check_size_of_image() {
    let i = Image::from_str(HEART).unwrap();
    assert_eq!(i.size(), Size::new(14, 10));
}

#[test]
fn check_clear() {
    let mut i = Image::new(5, 5).unwrap();
    i.clear(Pixel::new(1, 2, 3, 4));
    for x in 0..5 {
        for y in 0..5 {
            assert_eq!(i.pixel(x, y), Some(Pixel::new(1, 2, 3, 4)));
        }
    }
}

#[test]
fn check_draw_smallblocks() {
    let mut s = SurfaceTester::new(40, 10);
    let i = Image::from_str(HEART).unwrap();
    s.draw_image(
        1,
        1,
        &i,
        &RenderOptionsBuilder::new()
            .character_set(CharacterSet::SmallBlocks)
            .color_schema(ColorSchema::Color16)
            .build(),
    );
    //s.print();
    assert_eq!(s.compute_hash(), 0x144DB3832E565465);
}

#[test]
fn check_draw_smallblocks_all_colors() {
    let mut s = SurfaceTester::new(40, 10);
    let i = Image::from_str(ALL_COLORS).unwrap();
    s.draw_image(
        1,
        1,
        &i,
        &RenderOptionsBuilder::new()
            .character_set(CharacterSet::SmallBlocks)
            .color_schema(ColorSchema::Color16)
            .build(),
    );
    //s.print();
    assert_eq!(s.compute_hash(), 0x6E59DA499DC1E9E6);
}

#[test]
fn check_draw_smallblocks_heart_bw() {
    let mut s = SurfaceTester::new(120, 10);
    let i = Image::from_str(HEART).unwrap();
    for t in 0..=4 {
        s.draw_image(
            t * 25,
            1,
            &i,
            &RenderOptionsBuilder::new()
                .character_set(CharacterSet::SmallBlocks)
                .color_schema(ColorSchema::BlackAndWhite)
                .luminance_threshold(0.01f64 * (t * t * t) as f64)
                .build(),
        );
    }
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x88A31682A013D881);
}

#[test]
fn check_draw_smallblocks_scale() {
    let mut s = SurfaceTester::new(40, 10);
    let i = Image::from_str(HEART_RED).unwrap();
    let ro = RenderOptionsBuilder::new()
        .color_schema(ColorSchema::Color16)
        .character_set(CharacterSet::SmallBlocks)
        .build();
    s.draw_image(1, 1, &i, &ro);
    let ro = RenderOptionsBuilder::new()
        .color_schema(ColorSchema::Color16)
        .character_set(CharacterSet::SmallBlocks)
        .scale(Scale::Scale50)
        .build();
    s.draw_image(20, 1, &i, &ro);
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x8F4360C971EF1A0D);
}

#[test]
fn check_draw_smallblocks_batch_heart() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0xF47F1E17F4DE6715),
        (ColorSchema::BlackAndWhite, 0x7DC019CA803483B5),
        (ColorSchema::GrayScale4, 0xBC3A4E19B076D3F5),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0x7992E0349A4E8C2D),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x6E79249F07B082E1),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::SmallBlocks).build();
    batch_check(v, &Image::from_str(HEART).unwrap(), Size::new(40, 10), &mut ro);
}

#[test]
fn check_draw_smallblocks_auto() {
    let mut s = SurfaceTester::new(40, 10);
    let i = Image::from_str(HEART).unwrap();
    s.draw_image(1, 1, &i, &RenderOptionsBuilder::new().character_set(CharacterSet::SmallBlocks).build());
    //s.print();
    #[cfg(not(feature = "TRUE_COLORS"))]
    assert_eq!(s.compute_hash(), 0x144DB3832E565465);
    #[cfg(feature = "TRUE_COLORS")]
    assert_eq!(s.compute_hash(), 6359112620195361997);
}

#[test]
fn check_draw_smallblocks_batch_flower() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x2FD9DE03367B1BB9),
        (ColorSchema::BlackAndWhite, 0x2B5C21A49521C66F),
        (ColorSchema::GrayScale4, 0x5D6DB94C1D78F440),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0xEB4014BA9EA355D5),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x62E4A9AB3E1A2125),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::SmallBlocks).build();
    batch_check(
        v,
        &Image::from_buffer(&FLOWER, Size::new(100, 50), true).unwrap(),
        Size::new(100, 25),
        &mut ro,
    );
}

#[test]
fn check_draw_largeblocks_batch_flower() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x56F53EA18F979565),
        (ColorSchema::BlackAndWhite, 0x6337977B69C86C25),
        (ColorSchema::GrayScale4, 0x18369392815B6CA5),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0xEAF44E98BE3C9DDF),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x75620856DE746435),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::LargeBlocks).build();
    batch_check(
        v,
        &Image::from_buffer(&FLOWER, Size::new(100, 50), true).unwrap(),
        Size::new(200, 50),
        &mut ro,
    );
}

#[test]
fn check_draw_braille_flower() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x61AF40B086384EB8),
        (ColorSchema::BlackAndWhite, 0x9459C5DB69F88D41),
        (ColorSchema::GrayScale4, 0x349171F7825E25C9),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0x30E5BB83F3CA9688),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x76A97D897998330B),
    ];
    let mut ro = RenderOptionsBuilder::new()
        .luminance_threshold(0.2)
        .character_set(CharacterSet::Braille)
        .build();
    batch_check(
        v,
        &Image::from_buffer(&FLOWER, Size::new(100, 50), true).unwrap(),
        Size::new(50, 13),
        &mut ro,
    );
}

#[test]
fn check_draw_asciiart_batch_heart() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0xBD2927AE262DEB25),
        (ColorSchema::BlackAndWhite, 0x157CF3A88CB1A625),
        (ColorSchema::GrayScale4, 0x5D15615946FCD9A5),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0xCD30829FC775849D),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x18992C9343BDF9E5),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::AsciiArt).build();
    batch_check(v, &Image::from_str(HEART).unwrap(), Size::new(30, 10), &mut ro);
}

#[test]
fn check_draw_ascii_art_flower() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x703BEAAD3E6E865),
        (ColorSchema::BlackAndWhite, 0xF468067E891B8F25),
        (ColorSchema::GrayScale4, 0x4426FBD759A8C825),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0x2932BD99134D48CB),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x9204C86005FA5D69),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::AsciiArt).build();
    batch_check(
        v,
        &Image::from_buffer(&FLOWER, Size::new(100, 50), true).unwrap(),
        Size::new(200, 50),
        &mut ro,
    );
}

#[test]
fn check_draw_dithered_batch_heart() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x4565BB4998A0A8AD),
        (ColorSchema::BlackAndWhite, 0x99529F859EE20F6D),
        (ColorSchema::GrayScale4, 0xDA45DB0AA992938D),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0xA3624C685B635C0D),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x880C9971C5DC72DD),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::DitheredShades).build();
    batch_check(v, &Image::from_str(HEART).unwrap(), Size::new(30, 10), &mut ro);
}

#[test]
fn check_draw_dithered_batch_flower() {
    let v: &[(ColorSchema, u64)] = &[
        (ColorSchema::Color16, 0x906B1B884BE67279),
        (ColorSchema::BlackAndWhite, 0x84E620A0E0723911),
        (ColorSchema::GrayScale4, 0x1518CF7B771DC2E1),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::TrueColors, 0xEAF44E98BE3C9DDF),
        #[cfg(feature = "TRUE_COLORS")]
        (ColorSchema::GrayScaleTrueColors, 0x75620856DE746435),
    ];
    let mut ro = RenderOptionsBuilder::new().character_set(CharacterSet::DitheredShades).build();
    batch_check(
        v,
        &Image::from_buffer(&FLOWER, Size::new(100, 50), true).unwrap(),
        Size::new(200, 50),
        &mut ro,
    );
}

#[test]
fn check_bit_tile_paint_small() {
    let tile: BitTile<256> = BitTile::from_str(HEART).unwrap();
    let mut s = SurfaceTester::new(40, 12);
    s.draw_tile(0, 0, &tile, Color::White, Color::DarkBlue, BitTileRenderMethod::SmallBlocks);
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x9D50B71B825AF4C5);
}

#[test]
fn check_bit_tile_paint_large() {
    let tile: BitTile<256> = BitTile::from_str(HEART).unwrap();
    let mut s = SurfaceTester::new(40, 12);
    s.draw_tile(0, 0, &tile, Color::White, Color::DarkBlue, BitTileRenderMethod::LargeBlocks);
    //s.print(false);
    assert_eq!(s.compute_hash(), 0xDCFFA3AAFD6E6EAD);
}

#[test]
fn check_bit_tile_paint_braille() {
    let tile: BitTile<256> = BitTile::from_str(HEART).unwrap();
    let mut s = SurfaceTester::new(40, 12);
    s.draw_tile(0, 0, &tile, Color::White, Color::DarkBlue, BitTileRenderMethod::Braille);
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x5364DD2B429681B1);
}

#[test]
fn check_bit_tile_set() {
    let mut tile = BitTileU32::new(5, 5).unwrap();
    for i in 0..5 {
        tile.set(i, i, true);
        tile.set(4 - i, i, true);
    }
    let mut s = SurfaceTester::new(40, 12);
    s.draw_tile(0, 0, &tile, Color::White, Color::DarkBlue, BitTileRenderMethod::LargeBlocks);
    // s.print(false);
    assert_eq!(s.compute_hash(), 0xF7443D5FDD82F011);
}

#[test]
fn check_bit_tile_to_method() {
    let mut tile = BitTileU64::new(8, 8).unwrap();
    for i in 0..8 {
        tile.set(i, i, true);
        tile.set(7 - i, i, true);
    }
    assert_eq!(tile.to_u64(), 9314046665258451585u64);
    tile.clear(false);
    assert_eq!(tile.to_u64(), 0);
    tile.clear(true);
    assert_eq!(tile.to_u64(), 0xFFFFFFFF_FFFFFFFF);
    tile.reset(0x1234567);
    assert_eq!(tile.to_u64(), 0x1234567);
}

#[test]
fn check_bit_tile_from_method() {
    let tile = BitTileU64::from_u64(8, 8, 9314046665258451585u64).unwrap();
    let mut s = SurfaceTester::new(40, 12);
    s.draw_tile(0, 0, &tile, Color::White, Color::DarkBlue, BitTileRenderMethod::LargeBlocks);
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x85513BE2FB0C4B65);
}

#[test]
fn check_bit_tile_api() {
    let tile = BitTileU64::new(4, 6).unwrap();
    assert_eq!(tile.width(), 4);
    assert_eq!(tile.height(), 6);
    assert_eq!(tile.size(), Size::new(4, 6));
}

#[test]
fn check_bit_tile_errors() {
    assert!(BitTileU32::new(10, 10).is_none());
    assert!(BitTileU32::new(10, 0).is_none());
    assert!(BitTileU32::new(0, 10).is_none());
    assert!(BitTileU32::new(0, 0).is_none());
    assert!(BitTileU32::from_u32(100, 100, 0).is_none());
    assert!(BitTileU32::from_u32(100, 0, 0).is_none());
    assert!(BitTileU32::from_u32(0, 100, 0).is_none());
    assert!(BitTileU32::from_u32(0, 0, 0).is_none());
    assert!(BitTileU16::from_str("|xxxx| |xxxx| |xxxx| |xxxx|").is_ok());
    assert_eq!(
        BitTileU16::from_str("|xxxx| |xxxx| |xxxx| |xxxx| |xxxx|"),
        Err(StringFormatError::ImageDoesNotFitInAllocatedSpace)
    );
    assert_eq!(BitTileU16::from_str("|xxxx| |xxxxxxxx|"), Err(StringFormatError::MultipleWidths));
    assert_eq!(BitTileU16::from_str("|| ||"), Err(StringFormatError::ZeroWidth));
    assert_eq!(BitTileU16::from_str(""), Err(StringFormatError::ZeroHeight));
    assert_eq!(BitTileU16::from_str("|xxx"), Err(StringFormatError::MissingCorespondingMarker));
}

#[test]
fn check_bit_tile_reverse_bits() {
    let mut tile = BitTileU16::new(4, 4).unwrap();
    tile.clear(true);
    for x in 0..4 {
        for y in 0..4 {
            if tile.get(x, y).unwrap_or(false) {
                tile.set(x, y, false);
            }
        }
    }
    assert_eq!(tile.to_u16(), 0);
}

#[test]
fn check_bit_tile_to_string_format() {
    let tile = BitTileU128::from_str("|  aa  | |abc   | |  a  a|").unwrap();
    assert_eq!(tile.to_string_format(), "|..XX..|\n|XXX...|\n|..X..X|\n");
}


#[test]
fn check_glyph_basic_api() {
    let mut g = Glyph::new(5, 4);
    assert_eq!(g.size(), Size::new(5, 4));
    assert_eq!(g.chars.len(), 20);
    g.fill('x');
    for ch in &g.chars {
        assert_eq!(*ch, 'x');
    }
    g.clear();
    g.set_char(0, 0, 'A');
    g.set_char(1, 1, 'B');
    g.set_char(2, 2, 'C');
    g.set_char(3, 3, 'D');
    for y in 0..4 {
        for x in 0..5 {
            let res = g.char(x, y);
            match (x, y) {
                (0, 0) => assert_eq!(res, Some('A')),
                (1, 1) => assert_eq!(res, Some('B')),
                (2, 2) => assert_eq!(res, Some('C')),
                (3, 3) => assert_eq!(res, Some('D')),
                _ => assert_eq!(res, Some(0 as char)),
            }
        }
    }
    // check positions
    for (index, ch) in g.chars.iter().enumerate() {
        match index {
            0 => assert_eq!(*ch, 'A'),
            6 => assert_eq!(*ch, 'B'),
            12 => assert_eq!(*ch, 'C'),
            18 => assert_eq!(*ch, 'D'),
            _ => assert_eq!(*ch, 0 as char),
        }
    }
    g.clear_char(2, 2);
    assert_eq!(g.char(2, 2), Some(0 as char));
    assert_eq!(g.char(5,4), None);
    assert_eq!(g.char(4,4), None);
    assert_eq!(g.char(5,3), None);
    assert_eq!(g.char(100,100), None);
}

#[test]
fn check_glyph_resize() {
    let mut g = Glyph::new(5, 4);
    assert_eq!(g.size(), Size::new(5, 4));
    assert_eq!(g.chars.len(), 20);
    g.fill('x');
    g.resize(3, 3);
    assert_eq!(g.size(), Size::new(3, 3));
    assert_eq!(g.chars.len(), 9);
    for ch in &g.chars {
        assert_eq!(*ch, 0 as char);
    }
    g.resize_with(2, 3, 'x');
    assert_eq!(g.size(), Size::new(2, 3));
    assert_eq!(g.chars.len(), 6);
    for ch in &g.chars {
        assert_eq!(*ch, 'x');
    }
    g.resize(0, 4);
    assert_eq!(g.size(), Size::new(0, 0));
    assert!(g.chars.is_empty());

    let mut g = Glyph::new(0,0);
    assert_eq!(g.size(), Size::new(0, 0));
    assert!(g.chars.is_empty());
    g.resize_with(2, 3, 'x');
    assert_eq!(g.size(), Size::new(2, 3));
    assert_eq!(g.chars.len(), 6);
    for ch in &g.chars {
        assert_eq!(*ch, 'x');
    }
}


#[test]
fn check_glyph_write_str() {
    let mut s = SurfaceTester::new(50, 10);
    let g = Glyph::with_str(4, 3, "+==+\n|..|\n+--+");
    s.draw_glyph(1, 1, &g, charattr!("white, darkblue"));
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x84082B81B39B9889);
}

#[test]
fn check_glyph_write_str_outside() {
    let mut s = SurfaceTester::new(50, 10);
    let mut g = Glyph::new(4,2);
    g.fill('.');
    g.write_str(2, 1, "Hello\nWorld");
    g.write_str(5, 2, "Test");
    s.draw_glyph(1, 1, &g, charattr!("white, darkblue"));
    //s.print(false);
    assert_eq!(s.compute_hash(), 0x1C056FE51ECE1BB0);
    // we should se
    // ....
    // ..He
}