-
Notifications
You must be signed in to change notification settings - Fork 289
/
hkdf_sha384_test.json
1209 lines (1209 loc) · 119 KB
/
hkdf_sha384_test.json
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
{
"algorithm" : "HKDF-SHA-384",
"generatorVersion" : "0.8rc17",
"numberOfTests" : 102,
"header" : [
"Test vector of type HkdfTest are intended for the verification of HKDF."
],
"notes" : {
"EmptySalt" : "An empty salt is a valid input for HKDF. It is equivalent to a salt with n zero bytes, where n is the size of the underlying hash function.",
"SizeTooLarge" : "The output size of HKDF is limited to 255*size of the hash digest"
},
"schema" : "hkdf_test_schema.json",
"testGroups" : [
{
"type" : "HkdfTest",
"keySize" : 128,
"tests" : [
{
"tcId" : 1,
"comment" : "",
"ikm" : "60ab7f45b0ad534683b3a6c020d4f775",
"salt" : "",
"info" : "",
"size" : 20,
"okm" : "3f8b0e4a7b2bff01a26a18f1e07c0218897a324e",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 2,
"comment" : "",
"ikm" : "e3db76e02278cbd2adbcb4555803da11",
"salt" : "",
"info" : "",
"size" : 42,
"okm" : "54d872ee6079718738b96cad7573bdd667aef80a43344ccdd2488eb2e1d3c33b9e291faf89609af32365",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 3,
"comment" : "",
"ikm" : "d4dcb92a769f57c8bab8a420ee0aa351",
"salt" : "",
"info" : "",
"size" : 64,
"okm" : "8998abf032b4fbb29e431f0bf1544e19590ef4fc99e013db8d6ce0dc085660dd3f2432b5f9cdcc44cb6ce0053e7eb43c0375ac7efba148ece8688e637a5759f6",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 4,
"comment" : "",
"ikm" : "2d43e54bf0c94c9cbff4300f4aa69ab8",
"salt" : "",
"info" : "d674da3bb47d5c7e38b501e5251d9348af601c44",
"size" : 20,
"okm" : "658e6132e5279439568a617274fc788dccc2bacf",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 5,
"comment" : "",
"ikm" : "4055536896c406d5fe14a6cd6b999bff",
"salt" : "",
"info" : "2094768a8816f7df070d6e08b7ad93755dc9024b",
"size" : 42,
"okm" : "14a650a903d54e0de9962f5462deb135071cd1e3051ecacd65d378b6181b41e1e1ab3b5d2143b710c728",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 6,
"comment" : "",
"ikm" : "5b01b2da3166f217cdd68de8af60078f",
"salt" : "",
"info" : "6884cfa7ffe8f27bf4ebc6e46a7e01488c79243a",
"size" : 64,
"okm" : "7bf6c7c72fa9bf184f9a2e13077a0e1afb9d976a5574fb7ec819d8bafb9b10f962e6fa8bc6a844ee0b609eee34aaaa025065a7e3a7fe4678a005640f7dc286c2",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 7,
"comment" : "",
"ikm" : "467403c2ec02a235bf730ff37e8d8ff3",
"salt" : "41f0f173d307d40436c25856cf559f96",
"info" : "",
"size" : 20,
"okm" : "55169d60bedd7ab2399d830b1da06f69f94e4b0c",
"result" : "valid",
"flags" : []
},
{
"tcId" : 8,
"comment" : "",
"ikm" : "3352f942aa93071da6d39cc5ed8dc460",
"salt" : "57a0db708b25a51afc4271803aa35204",
"info" : "",
"size" : 42,
"okm" : "260a775477eb6b32fbeb4e6825464a47ac8484a92296a3a3d51b0821b346deadf57f9c82e589ee369fe6",
"result" : "valid",
"flags" : []
},
{
"tcId" : 9,
"comment" : "",
"ikm" : "08867e76311126089356623ba5381e73",
"salt" : "0c164c443edcdfaedb1ab150f047951f",
"info" : "",
"size" : 64,
"okm" : "59debea3637c46394e2fb2790ebf8760de4986f36a6b142305bb62d1466dd56fa201c96814a2e5846acdf141733ccc54df9e6ccbaebf84c4f40e21201e180b12",
"result" : "valid",
"flags" : []
},
{
"tcId" : 10,
"comment" : "",
"ikm" : "c55c41d69d2424a520414e3662aa7303",
"salt" : "fea9bfc92b74337e43a201a2dc199e27",
"info" : "3fdf20538063b76901d61bbf9b72b0c18749e00e",
"size" : 20,
"okm" : "25ffbc81bc7b1c2dc1cf98020f55d256a31ce89f",
"result" : "valid",
"flags" : []
},
{
"tcId" : 11,
"comment" : "",
"ikm" : "5d3db20e8238a90b62a600fa57fdb318",
"salt" : "1d6f3b38a1e607b5e6bcd4af1800a9d3",
"info" : "2bc5f39032b6fc87da69ba8711ce735b169646fd",
"size" : 42,
"okm" : "6724e716f6a953aab112b61e29d921fec0f8e806841d5ccd3aa567574b502904d04ae707d244187fec52",
"result" : "valid",
"flags" : []
},
{
"tcId" : 12,
"comment" : "",
"ikm" : "8677dc79233ef3480777c4c601ef4f0b",
"salt" : "ad88db718244e2cb60e35f874d7ad81f",
"info" : "a38f634d947819a9bfa792174b42baa20c9fce15",
"size" : 64,
"okm" : "758546362a070c0f13cbfbf1756e8f29b7819fb903c7ed4f97a56be3c8f81e8c37aef5c0f8e5d2b17eb1aa02ec04c33f546cb2f3d193e930a9f89ec9ce3a82b5",
"result" : "valid",
"flags" : []
},
{
"tcId" : 13,
"comment" : "",
"ikm" : "0f602703d37943e0253bed3da331aff4",
"salt" : "ebdc8510499f69b2e188daab77cd819cccb95f276f46e6b2be11cbe72700",
"info" : "",
"size" : 20,
"okm" : "25b54be713ec3eabde9f8d25745672d1e6386c07",
"result" : "valid",
"flags" : []
},
{
"tcId" : 14,
"comment" : "",
"ikm" : "9fe65737574c5c7aa67646adf8230ba8",
"salt" : "73a34648c152443586236abcb46a090ce55ef6c7f282ffce6342d694650a",
"info" : "",
"size" : 42,
"okm" : "24e3486d28a6574270b32541651cccbb93f0418905e628ec1274263681b943114f742b9b81db0f86385d",
"result" : "valid",
"flags" : []
},
{
"tcId" : 15,
"comment" : "",
"ikm" : "e8f2b1c3e6a6c3d5ee0a20dd47aafa78",
"salt" : "3f5e162de91e0782cd189f3b7778cdc2ce6bfe9d3fe841cd3c70475d7b3c",
"info" : "",
"size" : 64,
"okm" : "167928954f92eed2e1c82496e57cf091d9c96aa6d4c01ea0b4275f9f17ceed820d90287cea90ac8297f892c219885243a67429829bfc86ca8eabda4295236252",
"result" : "valid",
"flags" : []
},
{
"tcId" : 16,
"comment" : "",
"ikm" : "a679521cdb56aafc5a4b76db0431a4dd",
"salt" : "123033b1ddaead83a4b9cfef8a660bd8e00fde01e67c35656c6d7607d456",
"info" : "44ec41ab4f4e64f4a36e5e30c9f0dc1d77ae4974",
"size" : 20,
"okm" : "72f15cece4bc7704a841eb5047f04756f86ec549",
"result" : "valid",
"flags" : []
},
{
"tcId" : 17,
"comment" : "",
"ikm" : "49bf155ca102026f2a217ea1bc9843ac",
"salt" : "76776e3b4d75f8f43dce4bded71f3b1ae6bcb012d9c0d59f78248b9427b8",
"info" : "851bda4faa8f7add2a3cbf0acf9c2786f8f955b2",
"size" : 42,
"okm" : "f693a3253389435899adac72d3ff59c240c65bf282f373cea7a9ee00864d5b4f39b2000f7eb49af16fda",
"result" : "valid",
"flags" : []
},
{
"tcId" : 18,
"comment" : "",
"ikm" : "6cf725e939e8824d4392233eeac75d30",
"salt" : "1e72f24b05a91a0093f34306ffced79e7003055b0833c6d0f27a4f33a1bd",
"info" : "495425d9727fee2e2b7e78899868c1c3e7735e1d",
"size" : 64,
"okm" : "e13a7490f842b6e5be206e6d5ce69b2a8e2cba5525715283f22b021d2fbc2aec59d0144088581058f0fb2f551c6d62bfbd8a15d2706e23e10f3bf7277fff337f",
"result" : "valid",
"flags" : []
},
{
"tcId" : 19,
"comment" : "",
"ikm" : "a319ff7b5ba9b14ac72b681cecf0f742",
"salt" : "d7e3bc6daed343ce77ef793e15a8246e4bfcbaf83d2ac956d0661d1df7262b2e7311623dfe4152caddbfda8fa8ed7a82656ec00b72c5adf7c9d388e5b3bc8d24",
"info" : "",
"size" : 42,
"okm" : "83b3d9f22cb5765c16dcca24e6ce6875b180ec9253bb3950666c52e3711f3b9200d2a995aa548bc6bba2",
"result" : "valid",
"flags" : []
},
{
"tcId" : 20,
"comment" : "",
"ikm" : "34bae5a158c1678aa76a744417a70d7a",
"salt" : "1532075f363e061133780ac959bf653c7687d181b9431215d6f62dd2f1ec3019d61c50fa82c70ae25e624c849a276b0c57d7c02a4d753fe84a1a6621e9a5ef01",
"info" : "87ec30aa53acfc3d09ccc1d57d654fdbce403cd4",
"size" : 42,
"okm" : "9413c6e1b27f829fb82252b5ac5e14a54503e5f433fc8182a6b556bd7b8e04ac34b0d6006950d5917132",
"result" : "valid",
"flags" : []
},
{
"tcId" : 21,
"comment" : "maximal output size",
"ikm" : "b8a3fec3c020e028a2a9512ad3acb688",
"salt" : "324ea1f30b8dc6e13694326da568c57345b6383444fe6bc425fabdf92653fbc1f5158e43bddc5526ca2ee0caeb301977",
"info" : "006a7b5529648b31",
"size" : 12240,
"okm" : "d21bf9e7a8685d4c052b391b472767d436a0335ce2315a9e44d5b183da2f06fb0ac31733fe0cb0c1b47f1652d16b4ca84a5c05e4fc9432a840426d146cdf17924c62d3e1901cd3f5cbb0aaa55d46e0d3d23fd86f82a2bcf3181a548cef4d848960ec65518ae2230474d6177a29381e6537eedc2b2728db2573ee182afc5d72cd65ba04ed613f245f3ac401de5e4b30018040b8b1f253eb57a2128c2c0e99ab68dab4583f5a1ee7d0a1d16e9f00afb5f63a1e98268f8c66db5d49ddff7528dfe71f792a93623e355d0860d65344eee9eba04e739627874829c2cc469f27d467822a72a5dafbea14fea2aca2c521aa17985c07a8457b18a1965ce824bc886525c439bf48c36e957e567edd26ee015c01e01cf3ae463f8efdf12dd0d102d95310da2849b8b0bb0849e8b1b41c515708299c7fb645c8f5c86e165e14ccdd9f3ac4766e8ca74eec97f7632a75543d4a93818fcd2b3201feddc19eafe19ed596b76aa3a8492edc52e990549f91967aad94536e8234afb862a60c92267e029bf90e07315db87e56ce4fe7a857edd4869c44b4f410f62b7ddcd31bdad3c1d6016edff774ea7e17c1cb3b39ba918ef0d961725ebe407b6c89b06a9f012d8fa55abb1b84e277991d8b2089a7e228d326eb0c24632e4e35289a14cf7fa1f036de44ee56c0444bbe7d84873597fd82dd6b717488ba3086d57c76783e88cb0992944c66f8b87132eb9908c5dfcf30600feca06ac52d28af218bc5df00fdf4b8fe3fc3947e3ee24a68d8f7c96517337df46283adbad468daaefd334ee2b101692651cf5c8c1c60c2b204a111707afa2ff0520727ac222807629e65f8425c925eddd4a301ad247499f6640f9ae9818644cc94ce4b088e37ce728c48e42f82201b9b27c7b0e918c09b3dcf6484d6794ba27f10374f618c4ec49791a3918977a13099e53bb8fe4fdee599016e7fc91f849692ba97e722c90fa6b4fe54e2bdf4699857fafef364fda90767692818a40cd83cfa42e5c12b56f7d83c4a8653434ec7e5e9a13cb46019bdd215c106425ad51418a6258014a62a449287edbd879063d8db019de0980d0ee30c9463c50860c7a2c390974c09c74e634b0543212e99f6db9bc104e14fb7eb52c4d98c5df24808c59baeaa01bcec03dd110d0ca6529e437e2994dadd8a48af91734b638acfe6c8d216b5d1ee48143a0b24c51f4e24ab2687be88233d10bb974906d46ac8e08dee1191fe7455075c167a743290c261362051c28fc441737d92de5ebc763cb52bd905cd3cf115dfd3ee89f0051e31159965e285887fee7fbc529ece2d350985d13bd16abe379ac5f9a89a99b768d4f0353e2d52bc8636c1dcb05bed53e958937de69636e34d5f46ca5371bb0f38e2fd718a6bec6784076efefeb08c3184bc92e18a9fb7042910d1305b560b9c59223db160e2959f061cb0c9a0acb11f479d4e77c6d98d5ca73149bd19875daaf06341b86227a93e09765877c0d7d0e74337f9cce38d59f0c4c9fa202d1c48e9c398064d5f9fe802f634b094f47dc44cd041086b728ef57103162df6d62208c3b60f750a4bcc2ab461424fc88107cfd545518aab77b42fccbebc7bf3da92e4a8c2a1eeca8d7052ce8c94ba6393f66be9b758cacf37b7c87ae41e48f9d2016fcac2305d6e15256d4bf7d19d6129582eaf7237af07463aceb51edd7c56bbaae7a54af6678256bbd5ad3bbb328d0506e451855281c5b380f63c1bce87b370132570ca98e4e330c1ad12831771ecfeb6773eaa44880bc5dc633452160ac8388b9eddbd02fbad325e0dbd66cf20298cba81f3263a402c5e6d5d57d4ee5fe391de78d2103067fd889d870a36e7df6441e466262b759d3e2c051f7c850e8484b6fb837239e8d11570d095a76241817fbd518ac44bf1bdeea004f8496a252726de49f36b0dc69c0a5d01daf2723140922ddec55519d49391f9a34b7c1a5e00d094c0ba8af27bd3b2ae1de2d6ae15b23e49bf65483104ac62172c8f2e9ca109c59649d0318e5c38cdd659779c598c23620151783d521f7ca021cb910f195e36d55bd963c25167cdb3bffe3642bde8e184eff7905affe418f80379393cd7ca78586764a80be777dc9d9cbe0840a4219c83459745f9cae786d26c1edc74f5fad27113fb84e8854c76e1fb02b1998253d365cb7aa682104765ea1f020b0aef0d3cd2378c037e5d64ab2dafd8a23beb5ac5fae3341be1c6a9c6053a3d857a2d74d56a7bafe341bd5bf7779bd7bbd1991a949850fc25ef0f2e012772ea0d2cb7e9292fe2658c6424ce786d7b7aaafe415adaf9ed7ac5e5ac8e24218bf9e629dc93d22d398a7872b9a0477ae98df9fb22e042d475f96d349029dbe108632d4d3b56dd89f352dfc703e2f25fba97da49a079133f1e0c0c729bf80b02edad76bb036a9ce1c841e5202d59cf63149cb3b81a68df64589fba8b1dc7f4fdab3cc8c4b5ac9712d7c9c41a6d5e0efebc2a9ad6310d30087395dd74b61aef03cb4facfd59d5d50d8c04c5e79518823f9824a94e0ec06b7157e48916d551bb5a6831ec44cae0cc8dabba3ae1b6c03391f3b5ce45861902a8e777fea9a5729cd16eefff724636284dea34605f53d98010fd888f469475a6a98b20c8ad8fc07466276e461b9821ea55cf3c42e208fc56c610f70368ff331e3dfdffbecc26e489f70b0a3e995fbdeec6b8fc87e19d3ac6f9036dddab7e8ffc38f58446f75fcb2cc4f7e90a721533de151a61c67346dcc63e15fe1a4ef1a98d1cbb25cd7b24703045fdfcffbb1249ebd3c1e52399d6c24838d7bd5b668807a4310b447c167cd3d3c13697f35225bb284339149bdd4618656b2a09712a812b2586c3492bc07a4c2f8fbe39861cf8d36dad815edc9cdc97dc2fe4b24b0fb3c2513e3504bcdb1dacf2692c98a6f90ff77fc5348d4acc44ee4524506bc176257b434e8584a483c4c734cefbb7457b4761e1dd2dafa10eba4a031e1f0f644e210e5bcfb7a72e2e14577c972a78b1a275f338145e2b7d80851013b784811a91c19c71bbb9df88ccc2c1380699f0d88d203800574a0830632e4401880c547c6bab52d2235638a7222662e166307779d2528c3dc5436508e25544d1025ac3dfb627781e8fc7bfa67738b63a86bdd9f1f089f30a71cb7a79dda35340ac1a2dec129cab38dbde6cd5dcf9d2da3a88f9c2cf65b4a1aba02ca213ba596af1a2f323a47ab6a07f0e3057c6d635b2f5ed1bc2f4f6ece8eac348202cf1c6d9f9c8738044ca5166e371dac0f305fbf1b5ef2536cedda250a4f209ab01c714882244b3c1ab3c0a0e5c07d6b928dbc52c9b23362266ab8a25e2ade5e06c3d645dd557630fabe57733c7543f7453e002da4eb1844899740d95ebe604dbb03e883d9f668b4974282ed491ba183c5d8cb2867788f24eed7d67f4b6c235262cf71d52763fb7688d3d84d92424b0b23468908e95ae82de41a2615cb009aa7e5f18c889125f1167d60aa24c3fd9e2e087c6b99d29733abd06c81e5a728faa0a945a2ac8029d58d7782f03aea0e185dbcca12e0564fd163427ebc2bf46bc71fa3564bc9556546ca2cf1e8ac1720d8955caadd08a6530c98d7df7ac14b07f7959d0edc4ac31e6d58d793be3c6ceb370868cb1ee8b57b74860576398fa5c7bc8d23e673745e7ecb1754dc2c873d6ea61057adb9b91dc4ca1ae1fa69a93e8caebd8a647915a75db4935e040e609e3cbd1e382a433b7a990488094dc53a91104c9c28fac9c74568e5a9e4d37df0a44f750fba7dd45b17c142057f16361ac750fbccd56fe43ccc548c9c97ed9a190e14be1bc2a039a671175ae625bd4a0a7a9f6ff27d75a022a5a0e5bea17eb6976631117ad44beeff05360580b8aa87d8a6c65b7f4b51d53c20d9ccf9008eee95cddc90032325598f0c671810edc80c9de9a74cb32de95b940507773347a17fea02f85cd2461e2e76e0f58315a7393489b9d26440283d89ac0d4f8e853e35790aaabf8dc26981bccb4b85c36393db621c26c99d1ccb072c8f250924fd0411136c5e2f9e79ccf450e785de248b75427dc6f858975b0d3f11feb0f8745ef8e2873424d34f09d04bf01edc974865fb2223b9cf72aa4aa35a5b2c9c91f55f2e545ac403e66435c25fdcd6aff3466bc9b947bd1c811c65de058a92dd3d3668f2ea7c8fdfbc54188d8328e445676a3d115252022b2e828ffedad08c2b96b10b5ca3057083fcc313e3a6d1fffac12987b8d518cdb8b0447f6f23d5266d95e03d36a806dedcc5466ca408580d5c3872d7f6c96bc63fe3c0ffacdbac126ecfaa9426483bee96596d0ff88f8fac8b9c67de4d023b3f0b146d8ee27cad9ae019d8982c85e361cfb7495dfbcff0486448251e34a31f22c0beece7f01f8b81448d267397bfe55b4b384d6604606015a744ae36c92d593a1cf33d3b5562d98093313f3a2ebc7b8b7baaaa0535476b7399ef34521f06d459861985e81e2f1bee5b3544c09e5528bfd472e01383975dabd907be7e9628ba660a776a9ed3a815ffb1df09753e8dc45a0225ba98e197508e0a22560cc0d76fc1692749a16c91dbed55e385593331f3bef1666de4c2b8f29f5df2673ac331a337da8fc020d76f4e4b0933ed6df06b5199715416d6ce46b760205b7583973bdf3967fa546c9e367d6e60f4c9f8dd79fc73a0967a58deb4b779f9b5695a91db67fc2c0e55e7d74eff97bcc322a00c5a5c0fb9564d2c128f5ee3b3378416894ff25b8445e52d21bd35f1759171cb4e6e426c71bab9a6cda6049d8eea904a0c95ebacc98dbf5a5e98d835b6e216e6fc062e600ba74c321620f63e76995637fb506daaf7b7e0514563b536edbc11a35515a75c58cb7f56f3f5ca0e7dfa3ec715089bf6e5f26ad74c10e72ba5f603f3ee51c7bc9645f4194877d4f4645c8226b1d974fab69e62aa3527ad2fbd101eb6b752a739a191d431a87d5c739b7d7f7804430f41820cde5e5a717ed84d80ad154f816657561d58f379e4a2e7761cdb505b5da6f1008143cac623d11859b186c291a0b39267da29f64d5f5c3e0e5cf0f3dca3b78372593aecff71541dbe2d3f89d0febe753f9571684bf8c1b82826715d40cc0da84fc2cbeb3f46c1e53f522fe5f682479503bfa423a2fe10396a9330be5c484e21d60a26aa3f70b210d3ca96226972b7b03fcddfde1499fa81be22e82d851e609834ff9be6407e0bae00909f952798a559809bbe47ea0e4e626de0445b79758726a09e38e757c5645379223141ac21de8ee298542670f329d77ab498f73adfd2d269dcee504d8dd046f7b496fea449e2b265874af3419d43b58df44d9be3e414775c715d65a1d4107bafad16bc315610a36b5775b7fdba09511ce68d1fac79592e740535a27b47a24f07b98bc2548df11610860c5918173f04cf28890e9c038846ea4baaac30b22c552d5545c7dab8f4a034367352336e58409ed2907df1a2fdcb0c56994477c2c9075ce3b1876abda5da66b3768eb7eba609f83376aa5175e3d23a49e8a4327ca3687e401b9fc2f00fb41a13059dd57f9053d438fb66050c4022f9a2d740ca1be13830047d47e9d15184669640ae993fdcd2242977f479b80169ccc802baede5fb86fba380d3d6313bf2034f71f9bd7616c02225ae23b2a83158e31de5726b79564f16abde403a915c0e8d9110319dd91e8c32ba5546ae522ba3204b70d59731d9971157807b024306cbb720563671b282b6e89f82cf91d5686978de9af12e523beb1f2947a384dfe1a6b18989a0cf1c42803c8238eab525ed3a25dad792908db3478d14cb26abbf324d589eaf96204c837b32a4c4e6f9240103ffaa14c1edd6b7ee221ca2dc52dc553cd4eea179ca9a7c4481f17a3f4a9633d29987056afe59b8f51b8665837c62c72c0a3b5a4c5c597327414485c39f298b190da1d9effc1e103b0194f5dc634c6e12c7a22866ae23e64a86bca3629544be79f5b4e89592a69c46d92566c7939385870e3337174dde45ddbda3691ccd6573edb897a15d2d17f2599c523355137de6b987cc35df65d0bba0e06e64bd3059ff94e723ab11bb4f015d72b42e1762226f163b881bf82dcbfa1604fe33107c978181d850bbaec70b44d64fb27baaf7cddd33b1ebb0872115a4fbfaeb6ca5299a02aa07ebbb28574c430d02cedf0396b8e181ff3631a1fe938b0ef175ac9e7dd399b663ec6c6c9520e4a63c80584d8b845087f5419d8c815b1ad78e402a4db542b900c71a16ada2cff190d6fb38815c59238e96e6cde1dda63a89ba907db338e0db29d6151722e9120126d70c6d348b8d3b99084fd8b2bc068258d43a34dba7f639807eaf2176ca7eda0c0e2b4e168c1df200734b592416304e7fefe17f051640464164d643e7b66dce05264a24354651cb803c012af3aa6b61c7c2c5690979b1e1b5e05fc64cb6dbd4c95df382f7d5550e12d7bb9242ddc025f2af03a44f7974dcf5da038f23ad826e9177b23f6163b827a98f0cb065395235e7d3141f94e83e46e8fe71c9e2c43c77837c8616150250485db8a41f7dae069fba1e453cca231ac71454bcace3477af40485ff2f24474115a6029163ab3b7186af02de5c3361c3f26741b1d86334823120178f6d453057cd7b7df09c908ab114c0fda4767bcbc43d1262cb94f07c396ff51858ea2a55ee02873cf9fe2c456f8afb5a64671c05c020177891ba65fd8a3857359de1fb4fdd80d2f7bca6e369f8dca930bd1c977a141728afb66abbad60bbd3b5a08f32901354067f5442de768972a8ac3330f3b4324c16c1a5f4b321c68467404cfe642418620df5078d8525919eff62163c388ad4c2666bcd06330ce5737d438b59fe84f4089fcf35dcdb17ad93d3d40e32493a57ef97a6c0d45604623ecc80714b561e515c0169ccf488ece2672af491446a5d9ec8cd443d6bf95258d2bbbe220be1b56f1179231aca39ae84f5ed34ead9511a2e9af44bac69f4bf42b241696d4cdd5f260d28c22d26ebb580265c5046c81bc386c0bf698ca1d412e7cadcc247dc1c774877f5b9ff8193128934fbcdee8e0932e6658dcd30d07391f82f4d89a17e2b622a8b87997e1848490e26efbc6e79b9e1c40a414d9f84e22a0dec7e21321245c76e64921e3030a1076c9a87596d5aa97caa5c9c68b3280427668348985c7b7759db6fba4c1ce21ebc6b6889fd7d925215d56758131c515b544c56e75f95b90d15dda7f309b7740aa7989cf1a9e3ce217e0ca6e27f502731bb7821a3fdfa73f915ee49e0757a897972d58475e4b12ac735cd9e6b28b81a76d2ab0ff179fc1755a7d96cef5e8a68ac9256d8d8f17d9182daf1540d7af15aab8b1517f7b8656fd3e6708b99dca9a1fd598efeaaa60ebeab6adb5a76a0ab6cbb7dedbe3f0862ffb028ba4e942372344cfe84da9fdec4ec75fb290240828c4c31a1fac0d178f0dd2245f29d346c3a841f863130920bc97dc05c510020852f3c01bd783a8c6db64228b973b20d72c45bc5482517cff230f1a9bf1d8d0979f62049bbd5e8a3e1bc54f6a1c148289b2a66685ddfd0406bbab589abfd183c4299ed66283beb96556ff200497804dbabf9b6702a87692b4b5bb58e01d16ce069b6c3512332b394db1c91db0882a571ee41e458bc960e7535668e334152c9d46e9c155ad09617c348c3874e5db311601f25d5e1682cf69689c15c13dc5c8d836ff6e30b0b804e4810e280252f4bee9470964159f2b271c275c9615b341d20f292107a481955b0b986365c3d7f05de29a8955cccc5d42113c21fe60e2a4a51be45784fc304e8da0091398205a9afdad9b62361d6f8c42b16a7990d5fb50ebb90cd1e1052f62a966a9e8be73593b50be8398c5b3e8f7ced3af398d537bce72ab1d7b10b4f0aa77383560a79f4faf2f29992c1e2afda295d15a65e30e6f968d00d60e5f1dab5a847060e55ad9b64f0203b21bdb506319ad379302c24673a727acc17b59ba12f20c3ba472c0a5628d0b05213116e2dfbaf9e98628fac973046f60f930b7eaf0790ff010914c19e93f07b74ac3f7a6b6c3cf92adb49443194f9167f7dd553768841b34d461f7b854a40926b016d8a0123a1fae741e07662e125d42fdcfd765c52d518049ff16393422e6080b9fc69117e5f17f3764917eba5fff3f078727048f3e5bff1d9eefe8ebe2fb6db7c54cdc9b7678fd0d6551aee06b584dc4047beaa72c198bd96ae9eb9b151f29747af88b75399b21570ba6cf983637e6dd2b1d42d39d07108464ee22d81d640aa4cdbdbee7919de51d8f82710e32dc722a04a8ea96aa32a7a19c7048c1d76d2ae63ea288b1120d139bfd2e51f634c82f6f10a5bf18b02725bfed7a2913896b5f108fcebd949d04647467e9837256d9918c2185905e078a14d2945ae64d57eb7ebf9746f80ef939c3b1a307c6af627b91db34d59234d3b62279fec874720624278a51fa6d22886456135bc98b683eccbabcaacab2f013fcc884c554ddfc6f91950215c4f1f750cac338ef3e420a82c1ba15ef420798053483ced448b730e386f0788e1a3a747f8365385bd0e02cd42f1cb48a61ffeb2b2e6e3ad75363a118a27dcb86cf27400be97bc7d10bccdc03f6e19227ffd0e3881bd7c3126d682596abc15bcebe77854ce2844219b17f604aa2b4cc19971e8dc163ac654126bc39966d35737ae75a4852ea1c29183a3700e7cf609ca864285a8b92de0f32ae7c33b5ca11aaea05e10f87d892c5571e89dfe54091639bd87636245f06cfaf87fa3a7d6d657ab3aa89f5fa6b54eedec92186b2026954045a07822997051bf232e39dc1a36a50cbade8fe4dc6ceaaa29008c13fcd7ef96cafc7554b60d479132b2810ffa583aafd6c7e188293c4c35008d895fba6634eb20c92bc1fc2a93f7034694e6bae8d291c59caad61a723719298ae5d99fbb0485837a284f070fd293f74307fafbcd5b9b3a49c96d9b7dace812d6fc7a94aa381346e879601fc292e850d5a732bcec383ec59a1034a573793ee07b9c30e29c3f3cf0efb40693b8ee6df08cad92be3bc4666093daae5484fc02df28f3601861a2aa9ea96e68bbda698fbb032485a55c4baa03893813804f09a4d3e639f2d84c553f2e917b3d47f658820702a6cda2e06070d29c71640c677fd76c429f98ef0b65aed0d5c82d334a3e22b5e2d49a31518d61833ed8fcef352146e7a1ca1c9eac1d786487e357a108ba102415f9d87ef8b00d1fdadccaf3328d9376600ab0e4ee2400aced47774ef5374e62ceb9f19670e144e4590e80d33e0f5863be0e5c515656c7f0880bf57ad0b986affe07a1f66cc9b1763ae7646a8f28f6c804b6c8c260f5fa02af05cffc3a631377f0e4abe659e55655f691fd9572ad832f6485c06bc025d5300dca8aebf5ac0094e582c5ba28389d76fe6387f933db6d04b5da56b739824bd507a072f32b5e10be0516718d1c9031dc83aef222abe60c6ced982b4256a36beaa9d15e11fd3f3f600e28c2625ba2b7a9290fbe89a41465b075aa5f00b1bbcbbfdced6dbfc41e30d511b02c9711510087652b4c6637c44ebaabdd0d5527e5017dc4a339479c9be804bb5b606ea3e701e88bf02cb6c2b3e8c6f7e4bf730c8cc36748d38b96300ad92136c9ab8632c54da6d7307afc226eef8b3b9c849235347fdd953a194a90cc730edd043d44f4387858fb88daaf9a0b4f73abc949895ad4af054a8d31b69a2a98090940c24cf008fe675befaa7641a79c440e666905a055e4ede90f923d8bf16e2c451bbe8970e4c3c54ba5b1c3ddf66e8ee0cb3ea1d417cf82a72d244ccad0288c9231809302494235e905876cf8ae1f874b61d78c26b9e1645f68a0478767d049dee312f6ca578ef5630cf4bcb55967c960077503927f3562dab3e37bee4c96d18b66f969f04d592457d055302ac96fd47abd3582a5117fd62b09a1a8c74c379961fe68c9e1792a2097d29c1d837161edeee01a4b76158b0939af676edd2bcfd18bced7ebd0ea8464be04edfd2590004004b0b24af9c1c028fc2b7e756408854ad3d4f89f8d1d27f90db5844c1622b007c47882f316ddca82c7429c870b2455aebd0519bacda287f843419cd74bb07a40cc08d1fc812039254411266245f3b16dca3d88d305d7ffeaae1b45b1bf622945e3ce4e90ec153b9ef84741db9782f1b4518233ac86e10d5f212ae7dd3cbbb952336401a1831621aa7aaaf1f053efdf3938e73ec95d084cca4c2a266e7a1db5e58851fc291db9d0e7bc4447319feceb83767a5c226010db7c1068e8831d90c0051689a7d7a9dbf687d1f1ae43f62a33d3076784cb5d800c2e3e9007d9a50c1d218efc59bb6d5e61c12112b90f72deb9348e874f3292135d7ea9dd6061a6023cf8d9d8c3abc3a8f29a50f2a2be9ee11de0a910bd3763f0b90946ed1fa5a6494fc65f155bc0a1349f0c3626359746e020f8d3bd83ad591f6ad00921a13909d6df288f4174bdd2bd231d2c5352fa232687c5262432732b2837fc37874ba8ec887f17e41a0eff1b56a03d6d4cce12cd60b426a0ce2ca0a3af667874b2c43dab58e65f83c0afe85e36a754cf460fd66689746ecf640d5af440403d2339898647dd36e733b550f41882b6aebf31d886091d1f3a7044ac84014ffc793f34f6633e419599c792042282f37cade01ea1b307cff1f7ddfc340703166c24a63587324859d7190d540352bd31ecd34a2213978980a490c456dc55adda4f3c920aeaf16611ef0516180d05ccfb6c05a8df20792591a12df86a3450c0bcf0ee7ca2a861c9eab2de259e77391f4cbc3125e67d41553644b2a1a8268647237255bb08e884852fb050365574a5fd78999e23a6b0457b7007c0f31d1919680ba10e803bb52e8af42c4dd85638c87d5ea436be1c8102876cf7c38aef78864ad5ab556b7648806caf6fda6dc247f26754862b29fd0d8c89b5c70476132737eb9d6bbf044fb0eec96a961d4f9975d866a84df0a08cde0e9525b179b4b4f18ea67d035fcaa946e807bb22ae18c159241534ed15da394ed5f73b1d74c51db40283048dd8c0f8c5c807cc7c13129f10d957b698470c05caaf280b37f605ff4d855726869251fd4952cb35d6a873309a7166548cc3aac9008589a6d258d8b4b31835dc26504455bcaa25fc580f27b213d8af43897d59e89cca09472f57720146f4d0748040c2f21764b9b3faa75e5ff78d3eebba844feefe0ad9bc0493599bdf1de61b3d71446e6acaf3327dcf61635e51694d3713732804b43989a43d293f133ac21ead51d1f2b92b76b3c61f8de0aa8dd660effc9cb1bbab80f9d1915025cbf3f70198f979a5a1e15db18ec2b78da238cdab78dad028fd5aac7ac043acda7828234d93bf512e09deea886b6c9459962705f8cac432ca315c3b9449c68deb4b0e71b4d393b891bbf92c6ba9dcec3fece0dd91512f49af9806c6c05f950bf2af2842a85fe153153dd658719a2e1b1a2e989448fb0c9b456d81f4ca770140fe9e37e1ccbe61893c1886ba8805f08c9417c8a3998b5adaf96a37d71b953aeae5717258b9f11fbc891d2bec8ead8d355656a0d0fb783cdc1353af35d8cfce2ecc36124809a77cb6fdba75d0f1ab2c9f82de83e1d166a70edfb86129d9b4e362db8d4dfd6b37c6c85e0399bddc8d30ef6b24e1f0a49871511aa210027fb6dd37b979d3a79cd386d0aa3629a25df9e77c33f4eb822ea3daf6c29be1c2d88d3ae3be2321c8fea439c0da77cee72cce86673477cced34d4fd93aee2d2dde285eeac032a81d4df620603a141fdd1d62ee11d2a82e70c4134ce2a80071cd39cfca105bc669319fc85aae441754ef7a3ea83ccd1ccf3fc6c22b998107d1c747ad5dae0d304649f2bd9e21e3064be40ec7b570fe564fb71d95f9ddc94ca45b8768a0b96414dace446411a07fa0100835aa70b21526a1d6f59c167ae22e7e181a14cff96e1073f652cea4ff504180c74320633527430719178a4f75e65ae9464d7dff690bbed239e00e7d166c5b7f8b6f12d510c7d8e619976b359c3cf71b6ecca2984dbd080e631af5c0e5b4c5641aba47eeb4f3b0d942eff17da0f59ef22a12bf3c09f3c24b462743e396a0bdc21b728bb1a73c6d0038bdeb6c078efe49262c597c50cae204d7ee129f7189ec333b2099d5b8c30a5e651402dfcdd65aac3a30ce35e905b8480a45f3f339b81eecc19ed0b36f40fea6490f47ee1a3386678164e1f299abf45dbadd518f38c758bf4366f8e6a5774ce0ae4c4501f11b06fd72eb8ccc25e5bff4809ffbc78faf3b0055394348513fcc2053207008244ed0461660105fcdb9540cd7a026cd3485c5a06ed7907309c1666f9391eac01bf63d0c6d4818cfa4782e5350f14f0b61dfc566d2d6ae766ba4832a974e7524c351bdcf5279fc49f385894f64c56dafcea13762d9c1763515fe16207ce1873a183ecb0a7e557a2807289a868cc4194efa2b46e0cdfa8668eaf99e583888030891f9991f47cbd11e6594ddcaa87f1d8caf858fedb73269b5dc5749aaa794cd37241100ae2c6ab74f5e5d091cca278b3e2f16109d0fde76230e5b3c91c6b63dbf736fb2af20429af3975d589ccbf41515d492560e92c4f72ca6655c3faa78ea5f49487d2812c72b455b8be1c1b881d243e1bce03a6b171cbdba96e795eb0164cbdf40538e98efcde2843a8b1b12e66daccc68e2b4c169a7198090dcc60934783bab955259332dc3b2fd9f2ee83ab234184c22554325e0fb07c52cd3d1737f12911947312c46ee47ace07e8183dede9d52d1e4d9b8447ecc3f21d8ae22c4065d4a12ec8b0c317324595f5dcf17b14642d0e8b18c1a821723a9970281a593fd865fb6b9fe3c93e58767d3a60a55972e505cbfdafcd957752d2015af86b956972691ae027725c9bc6bd5ad63e8b41ccc5c6c0bce89441e1ecd86b20c73780b4e453a10cd3928c354bdb96fce9f09bfc0c0e34298604a0f2ab0e87d5ec6d3e20ca312695da3b65f8218f161a05fb224437c94c8a936b2f73f27f112df39ec596ec8248e228d379acedb3664a1a96825db7c770c43cf3fd1d8abff9fd68977a72d2cb6c3792c88588913e106a77749fbc9f8f5f0e3178475caf5b228327a7c1620c3b4e3a9e41f66456e40f484343dd3e14ce084e82a06d285379094d7d820b02673e16c79dc1a5e56c04d69a33b328a944d94e33c8009d7071d3dce25b74b1c7b7ff60cee8807c9dc1b8e854c79087e9ac00ec8216e01f1ecccab81432563d71e604af79bbb24761c6fbebb1b5420764624e0d6b08d7127661873b756cfbd99cdeb494228d03a619cda283e430da5cf2ea8854e3bb42b5af8dc957901e2442c89d189c7d0739eaa4c79aac9cc829bc70320c896d626b5cd2f862bae1294f3e2c83270e61c12d1db6064c4be559bbb03bca33d3129437a5f0f0696b9d36cd29b4f98561e4cf0e765258b324c50066db05ec4ed01caf9f6fec58dbd5818fad71b2ddf59c70506a2245e3a3a2753152d94b3b79a90ce2af0f6819bd9ccda102b73b81419c2a317c59d2baa3a963214050d15aa8fa85ea825a8e9852bbd3711ce45b495079b610c18789e0123c6d07178387bcd88fff0ac62437c5dbddcba1ea4af9ad0983f57381c438ff89700eede5047951aae1cd545597ef2f59b82ee173d1e06dbfd55f93b944ad68aafaab9eacbe1ee366e2e650881647d375abf478ea48cdb196c86fe5d9afd3511845d644f5f3c3ae76d21b34b6f376f9e0f145e91044d78ec47a944df31f6683836f5e7eb6ffc458a6438a30fdd070c90d70b45feb320a00012ee6a5a4c00f2f39c16e05ec35367b1e120c243627a3ea42fea333fd54c5e5b487b81a52ab2f0b7c593fe1cb8aadb8b2d29be1aedaee0567356b44aa4ec3ae5440869c7a9fb6e9c31476fd4cebf1c1c59cccdba7d2ca0ba3df636522ee983169d521cc9ae0074dec1083d54df92bec7aed5c97190dbc1067b0950f052335767eb7fb1ff54ce78d6ab20af3ae08cd83f10e22f603fdb6c216ca88c01b6315f6f4c20b400de3363ecd78991171a2b6ecf5fc2d66f5519f53407e6a6e28cdd2789c5ea21f4ebf46ff6fe93b7f30f7dc38b3a9b52ad0cea17eddfa88d534a5a6589ddf5fd5826f0ef3294f6d40cfcfc790ff25ef282a0885caf25c818f3721ca7463c8b7e2ab00fe3b37379bd9b242962702738b97809e45f373bf98e8962eca221d35406dccc0efb041d165ae9ec16044c8929c66c8e6aedeea0164cb61b6cbed9f46aea04de581d12e9c33329f0d70e5ef3ff2c75c6152a65ebff7308a64a8bd8b4e3aeb7795070e9b1dc19522647a48ac70a7166df2aaeb3b11811a8817593ace2db23076bde79a99400ca25240bf180472d406f171545c461f69f6d550dc1e7afb183dab9975f0e4527c9271aa330579a796010bf80138c2721d05a997e4d49f099a19e781c8b78fb8e6a85b004dd0f8a745e39342b19937a20cde7ba721c1634e89b715ad63572e94542e7ea4cbf0396d2f289460d4ce0357b25a01dfb44098da0fee41b85411b4097eb860f4ac9b3713a4164b2abb1b264ddf347cd84d7941d5f221c84d93310c1e3a1c86c7c64cc4c00d45922bccaa9bd4f86af2b40e3610664ae6be78f6cdae5edaa59893cd91d1b0a33038ba2b102c330785914140426c2992baf110404f2848e275fe11c40b6aa98aba6a5a79777adeaaa783f1e60f95bf2c12652ebaf676b7725fcee87fef63c46c886ee6db1cce0e084edb9ee01d6aca1287d77738737e7c42481260410d0ba8cc71f22440f9f309d893aacbe26f23210bbfb5d3957df2ba2abc471d43c9794fc6ef7df55d32e167e94008ba64ab3cff49b974f0a04d6513e687cb363acb536a280a905933c5e0e0253b1d5cee4812c7df42abbc6aaf17ec4ba0e0c408fb040a28895970d4a605cc87136480807260f82628073e62b21b6cb43d475cdff3dfa278bed482d294c1e82f9d99d4da8698d7223ad0a19b18024ff4aa1027bb29a3b35eacec61175c97e99aec01676479d04e2e3ea09bc0a8c2c3d08e6c5bd0459c4c7c64be06ee2eea9f17c93416fb1e13b6eb27c070bc043a05ce02ac9469d101d20044ec5502a6f650550db40bb4f1c3dd7d238091efc8f8df5f64da3e0df42ad021388d79b79772c06a61c262ead76e95c51d720abb7ddb069662a37b1348430c001e1ba0c7c0336ecc363acc425834efbf31695f66526b09e559c209b4266ad344a3392f1c7a086e08ef4d790c261549ec19b736feb243c97704e1a4c7edc3d50e95d531795ca20a65f2c6cf73c497e93de0e0849df72e25ff882159aa1cc1e2c764acd79d900b7f627bae2d6929eb726bb94c3de42bf0ce7cf086ff47b33ba63ab71c0f4a24e07708381f263c481ca25098c6e977e9aea3a99277b5c127ea056006a4478f73e6660aa5ba6890fc9c517e261611c74f7ef2c9addc7ccedb13731f36792b55cbe3497acad6c84139d62f525789ef648208804cb5300b74bce2fe6c35b16f4146d92ddb6ba4f499425f8d9bcab94e340154492d0c1590820a19bad95761c28903a308e84a0530a99ec5a12262a5f2c6c3c43555cadade946c59c0ef5db8cd2ccd388661f3b3634aee15c5ba323f7b6ba592180d2e68897d24408f4c102c4746c88369865e3798c7bcc2c26af47e0dc404b61ff62e63b655e42c8268618469519a3de8267597de938fa149166764230c3f442b484fced4e73a09988863b9f10d23c59402b7822d972ad2f576be45143897fa08bdc86ff05975ba047aceabb4d8430151af315146fceba98517e10710ee5dffee550cee6c1f9c7261b546997e994518fdda25f9e6c9d00bcab9017f7c8b043e750d3fc8ddee31984a40803164260f809d93c2a9ed6e19273bbe6984157d1c0ffd9df3c38eb64462d1bc220daf2d82a31b523befbf3c0f84803e092ef314eb8420668056f445193471a45a0650ad0ff4b2847735d00b48f4130314393d6263792e907457ff80ff7f16ff1e4716a31479b1575b693c685d0487e18fdeb52320a57d75fd1b39bd9c3a23e537a51406ab438627a32f1e47a7ea4bccc432e6dfdbb86da1c44c639680b5389120bf218fb9aa11e8b07e6828ddbdd96a672a5d429807ef1706c9996d8d3f7d4e3760424d6da0e678da0892d352e2d60c310049c1628a4c8b9f42233b0b25a4bad08f4301b985f8fdf886c3c9d83def2fb58c0d443d3a64a75c06f93e7db5ab0744883195c29bd6830745940600a7644ab87717526adac7cb69f463a66bed88df2d7872b2e964ff059f7a67c1fa61eb50eed5f37495880fa7023b36b2b1befe55ab9fe072b1acadf6ebab7fbdb51c3052d4d56170af68292793573397cf1a0d721a30ade786fcb61ee10dde6b9f340c7ac85b57ee6c01b50dc983110ece4641a8e49b9c7a02e13b9fedb550bbf9bc250cf9c9f5d03cb6dcd7ca1d0859e1722fed1e38a521d05fc1dc18d42de7cd7f5ffa17faec8f8bc2993e8393635dfec2b6669a82979367a57734ce805d9d927621517abc53601618c7b5343442e75b0084d76d62e2ebe04c7f3f8bd28e39b8ea3a2b6d7c2021a026a7e1058b4531bc34b4852004eeae6b5a55f212ec3552bc7b779fd14d03b9343a754d7d425c92b0beb6f65161e377b8f86dcfa7738c543a16812b57c0aa8b36d6f62c25737c828f217175c3bfa6c707837c32ca51533459155e368c3da99c2b31c063d17ca57b251726ba177e26d3ccb75891f0b0b6fcf3839efe99cbc6691f8dff63a988b13c08d1ce3a7bc4cac8d0a52e9331543321b76ceda20df0a7bed490a4048d8a9811a476ac8d0eae6151e7705d76484dd6606bd6f3186b248a6bc56f98a06641bd5a82cb2de1c8eb87eb0839acaaa22cacba4b2d47f6facd5c43e45eb73b7778af40f465c66d88b3185b067e838f115bed756956b683cd3f82917107130a0dcb0629520cffae7d3edcdd5d8a739447b6e819f4864c1a71f378a9343f266162adae57f7b27c5cb17606ce89af722fcaf1f828ebe4bf4c01bd9478309f639b95c513e63e51d1d9a207f8ec8eb3b39f3fdb6dbb8178dfdbe136ebc514ae551435b385240f7d080e01d0b7ff4480f5736efc24468f8a0f044fe6f84e4e8954d29ff5153a130b479e1f45ab50b9554df7736ae46f8f405d3ae75ca6416bba8932850bf057f6fd862154148b45e3ba00dd900b1de69879ae428e1b350d513405c18eddc0f9f4980406482e49828f39ee8c1f7f96920a466fd6bfb0e2d36290bcd3d7f52cd6633b9c89593acd9d2e8a43b982b29faf6251644039785e0a66df01e67da68f8d2764eacea4f3abe5e1ebb42e0db1ab787d028356fe739f966023eb90130afc63e1e947ef1bcc2a70d7e600c9ce109dd6af55eea8b",
"result" : "valid",
"flags" : []
},
{
"tcId" : 22,
"comment" : "invalid output size",
"ikm" : "39053d8bdfa97044ceb676ae54563de2",
"salt" : "85522968a566b7ba10cb8e7a6f10159977e4a572408ace1b65c481ccfdf09532483cf308bba0557c9a72c849780e044c",
"info" : "cae8a93087e97de1",
"size" : 12241,
"okm" : "",
"result" : "invalid",
"flags" : [
"SizeTooLarge"
]
},
{
"tcId" : 23,
"comment" : "output collision for different salts",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "6f93965b7399bdcaef06c151056ba14b7392a1521af1145e0c1d05e34b6f19f3",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 24,
"comment" : "output collision for different salts",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "6f93965b7399bdcaef06c151056ba14b7392a1521af1145e0c1d05e34b6f19f3",
"result" : "valid",
"flags" : []
},
{
"tcId" : 25,
"comment" : "a salt longer than the block size of the hash is equivalent to the hash of the salt",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "329f445e7de8a156cf26a0208dbb028d9de6ef76b8de67ca634f4a5a732138a1bd436a7b345d7a0314c7ed0a00b0d34ecad2cb8bd141e2ecc1c77e237094d55154",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "94190f4f21f412c1d9358264a9dbb5035f94f39f5a503c0f54189b1dff1df637",
"result" : "valid",
"flags" : []
},
{
"tcId" : 26,
"comment" : "a salt longer than the block size of the hash is equivalent to the hash of the salt",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "8900e95c7464dd4ad187a480befdbac713cf5e049c4aa4918f11e9caa0e07503cbda48921f5779a685dd220e484d6927",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "998ee6c2df90e53c32281303b2860c214d0325928898603e3dab40ae85cd6e66",
"result" : "valid",
"flags" : []
},
{
"tcId" : 27,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb0536",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 28,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb05360000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 29,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb053600000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 30,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb0536000000000000000000000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 31,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb05360000000000000000000000000000000000000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 32,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb053600000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
},
{
"tcId" : 33,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "5943c65bc33bf05a205b04be8ae0ab2e",
"salt" : "e69dcaad55fb0536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "be082f301a03f87787a80fbea88941214d50c42b",
"size" : 32,
"okm" : "ef1423258f12fb40c01f773b9af50226f691abfc82def30ddc09d6b45e9beb03",
"result" : "valid",
"flags" : []
}
]
},
{
"type" : "HkdfTest",
"keySize" : 160,
"tests" : [
{
"tcId" : 34,
"comment" : "",
"ikm" : "e2865d6bbc1abf6a815067edc4ee7aa33c290d5a",
"salt" : "",
"info" : "",
"size" : 20,
"okm" : "e0f2f690fd50db3731b19ba8d6a7bbaeb5e9f7fb",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 35,
"comment" : "",
"ikm" : "8c177ab5f40e9c57203883562f01f174070ccd97",
"salt" : "",
"info" : "",
"size" : 42,
"okm" : "f94067eaf6df97baacb1b5a519c259b7e9b9322d6da9f71e976611cdc6e7007eadb1d6180ec1ade0bb7b",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 36,
"comment" : "",
"ikm" : "e842a4fc1a147cf2f87de9bd5a42fce6457496f7",
"salt" : "",
"info" : "",
"size" : 64,
"okm" : "380c941a86c66affb4694bebec2858c5c1927a6b920f84a6a952a30ba215bc41948c72e90a8017eaa2033d149fb955a2a222c5101eda58c3d7667cd7764f4795",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 37,
"comment" : "",
"ikm" : "5b870ee1bb97ee83f67fa7335b4a0f9dadc80d12",
"salt" : "",
"info" : "0a0dfb2a6e051441678788bdec04cc1b63ebe1f4",
"size" : 20,
"okm" : "99d9e9b5e7c324f8fff6cd2a2152dc2411457f78",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 38,
"comment" : "",
"ikm" : "58ea7ab33acff514ec08f41e59c17a3c66c1ceef",
"salt" : "",
"info" : "1cf9e25bd70c5546ea7a79eaf5d90cacf754c4f0",
"size" : 42,
"okm" : "2e1036f7359a52ad08f987e8be907e12f36f0a3fe576e1e27365a33439b4ce23a10f6ce329428cc7f471",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 39,
"comment" : "",
"ikm" : "e8d20934b9d320458f4854e2442e2f0fa092f461",
"salt" : "",
"info" : "4425999958aa3cc629300c25ab15be8cea7a4277",
"size" : 64,
"okm" : "d1e7a09a0f77ae7dd5cdb8e568aa53fd4ba63688623079fc8df2a53c9a44275cc61b09091f5997d0c819f89803fb6c990dd6a599f00ff68ab379e7afb29a5b4a",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 40,
"comment" : "",
"ikm" : "dc9e488c684dbf0ac8ff1eefaa0666d413d258f0",
"salt" : "9afa7df500d7a17af1f44422d25a62bf",
"info" : "",
"size" : 20,
"okm" : "ded7f0b68046268ef0e81b03aa74ee58ea72b670",
"result" : "valid",
"flags" : []
},
{
"tcId" : 41,
"comment" : "",
"ikm" : "34b85c341a04cbade472b3f7dee4de4d1954bf70",
"salt" : "b066b42acea664350a8448f8e064225f",
"info" : "",
"size" : 42,
"okm" : "50f2b92a23e76b1cd51071d9416f4ae497a967068616d55aba15ac025ea56e21a4c63adf9c6b2696d9e9",
"result" : "valid",
"flags" : []
},
{
"tcId" : 42,
"comment" : "",
"ikm" : "44cc641e09f7d5642f7b6007ca5a1c0813319666",
"salt" : "69c0dde6c8e5bd40553a5981fad6ad87",
"info" : "",
"size" : 64,
"okm" : "b1ac58c93111b1e81191f88eb408ab179881f3bb1c171903aa335cfc541ece2f8ea7eeac2df7f86a7c2d867e06a9173538fcd3e38bcb99128d76887e8ffaf17d",
"result" : "valid",
"flags" : []
},
{
"tcId" : 43,
"comment" : "",
"ikm" : "88a8880cc2b73e73b3b6ca1d4902caf2128732c3",
"salt" : "0579f690ed32e57a26701a9f6877f243",
"info" : "6dc723df3d26f704067afb2fb6d95a66516d089c",
"size" : 20,
"okm" : "43c3e04295d525a0dc49591dc27e4f75699421ac",
"result" : "valid",
"flags" : []
},
{
"tcId" : 44,
"comment" : "",
"ikm" : "8408668b9d671121b8c7d31113f045c0d7c020fe",
"salt" : "679b30e6930a8ea3f076e317b9595d5e",
"info" : "b4451b0f1a217db703582881e86d8044d5f2e092",
"size" : 42,
"okm" : "22ee54eb05ea001854069664ad1ebac22323b0b79b6def905942757d1f038a63e74bcc61b00119d3635b",
"result" : "valid",
"flags" : []
},
{
"tcId" : 45,
"comment" : "",
"ikm" : "e6715cc4ee13c4d999d8f8f500243c321f70b0be",
"salt" : "ecfaca2ea3301a992b4de081d9d3a4cc",
"info" : "ef17c9227a5ca654fbdb35dd00dd6dc77b6321de",
"size" : 64,
"okm" : "9d1ca84928eaf8cde23028ae306389313265b4380cf85459602d86eae08d32fcad2d6ea589eddaf95545adf856f0fc46902d7ea0656cecedb1cbf2191ac66a54",
"result" : "valid",
"flags" : []
},
{
"tcId" : 46,
"comment" : "",
"ikm" : "9a6b88f3f68f5a8e79903b51dcd733abaece1a41",
"salt" : "0226df3d66ee3abb275eb39c8ec3d3e12e9b87b67f85c552accc4279ec17",
"info" : "",
"size" : 20,
"okm" : "e15666ec2261badaf8364f4cfff8d21f240bbccc",
"result" : "valid",
"flags" : []
},
{
"tcId" : 47,
"comment" : "",
"ikm" : "0b9eaec88b2940a4754e83272cbf47fb6f86aaa1",
"salt" : "c1616497d49246400ba68242b635c67515d2528ee1c3b71b318b631f9bef",
"info" : "",
"size" : 42,
"okm" : "86aab917d334ee079d50ea3e20ab243f06e2e29d2475591e88e048f0d3204cb8a8443671724ad11e5e20",
"result" : "valid",
"flags" : []
},
{
"tcId" : 48,
"comment" : "",
"ikm" : "c4717276e7c7f794c4ee333b2f7a2ab244be9e8c",
"salt" : "af4c63e5b554063e83e37bf730ffa401c696088ccc4f133a8695ffcbf2a9",
"info" : "",
"size" : 64,
"okm" : "00153d105154d1086f950d7829be7e0d75db97441c88b7f31431f04884dd81b8f4ace2f5be6846f0da1853a1db2f89be090d3453488a12cc052f3234d36c4eb5",
"result" : "valid",
"flags" : []
},
{
"tcId" : 49,
"comment" : "",
"ikm" : "5e43a900ee0d432c5fe6fc81db8d5f81a54e39df",
"salt" : "8cc815009350b0b6a924ed93e73c8f8c57a1105726663b72741b67209c1f",
"info" : "32460280e60910b10abee2e9f80a3dab48acbc59",
"size" : 20,
"okm" : "883561d252df369074fcdafe0cad379653fe4aaf",
"result" : "valid",
"flags" : []
},
{
"tcId" : 50,
"comment" : "",
"ikm" : "070c170fca600aa2b23618150ab9044bff7d4dcf",
"salt" : "f32a1cddb32693860eeb39a5d190f5667a303d5403712cdcebb575c6563b",
"info" : "c1b0971fefa0a23cf4b7185879475ebd8d83b9bc",
"size" : 42,
"okm" : "ddc00ec19f76258aad541e0359465fcdb6a036fb4582e7d283b8ffda0b73a8b1b4988550b67a9182c227",
"result" : "valid",
"flags" : []
},
{
"tcId" : 51,
"comment" : "",
"ikm" : "87a23208df5e66488d23f7aaa066e87bdced8e2b",
"salt" : "0488ffa08062f1fe83e9c3934f5688a2e17827f898aa5daa2d595f09b245",
"info" : "e4d66fa23a6020820013d94d1f8e84a58cba2a82",
"size" : 64,
"okm" : "fbe18cc5a99e747477fbd7ec3c7f9d65eedc9538cee9a1aa81b0b3b1f199f5f892122734fba185919a64638eabe2c6932fd96270116f55a411a555f5c60d5ceb",
"result" : "valid",
"flags" : []
},
{
"tcId" : 52,
"comment" : "",
"ikm" : "214746af12a669b726364027e9a1cfa40c18f8e0",
"salt" : "f65ab21816c5eaa5c9ce77d58608ab67176d2255438096f4b45779d15c2afda12718ec557bfe161e7fab89ebad4fa634cf73f2d12c884c4583e64d2b59b9d8b9",
"info" : "",
"size" : 42,
"okm" : "281c2cce7550a0b02b170cea4985ee34666552d219b982389f1082746d4524cf3a8edf13fde8f5d2cecd",
"result" : "valid",
"flags" : []
},
{
"tcId" : 53,
"comment" : "",
"ikm" : "d509c509f91d78c33b9d661e6df1992b2b6ae429",
"salt" : "95ff4b20ade46bada320316dad7e2b4286e93dfa2a72c6366c5ddfe8ce2ff344729ea56416d5b53074c6d6c4eb4e4873980e5e4a4991d6b1497aef822e16e209",
"info" : "bea4f60eff1a0c6ab664ff3db2f774347920a482",
"size" : 42,
"okm" : "6a800418892df0663b4469108eea9f01ab66dbc7888da7ae95b05c68f61a5dd27b7a7c1857f2fb6c1a99",
"result" : "valid",
"flags" : []
},
{
"tcId" : 54,
"comment" : "maximal output size",
"ikm" : "e099aecd5c8f0fe1c5dedf647c5687220faaa64c",
"salt" : "a8febd4ecfa01739cedb1136c9a7fa10362e8f7ee6556fe0e2dad1740e1ed44f5c95b6ac57aeaf509af0732c0b0390d4",
"info" : "0e02ec03576474c1",
"size" : 12240,
"okm" : "43fe9568d5423d93c5f59789319610e996e82ed97aabeb896d88e92614faf45df0fadc3cf496368a07f562eb8036495556edaf95b06d89f1c095da8c18003a20ca5fbb28891596680b3d9e5518f012142a1ff5bb52f4dccbac7d1db2fcfe308d8fd6444d187833ab9dc603305260604d9acc4bf8bfc5ff82d2e4f3bb25a4ad92c30b9236953e096af57eb7f4ac5aefd447f244478b1576ab7f95354f8d2000d986c607e3d1ebc900bf80b4d6cc013ae122a0876191f287f5b5dec28fde54e66858b9169ebb45529ea1c5004fef0aa85a5cf22117039798a30f2f26fe8623c8536751531f6435cc77e0ac841b884f586509e80e4ca98e3260eb60701aaad62a1a4814f4fba950d1690090f0190cf0927cffd0d3ef1b45a846ab9aa1073036c177eaf86d9f4ef8b5ab0fbecd76ee5a293c5f7843a2028a468a952b0109d720d50afd649306685f26ea407d7464e505905f2383460f6b8113923af6916f43259d83bf833cfed074e6a81a997c1a7f8f2f6eec413e3a3768308bd4292dae0d3452619291ab7f3275333edcd39ad2a390149505b6b02d7bcafb91a1185ade1834613396c63eb00e8126a14332205d7c59f39fe1aebf49a46f94bdcc56e1ae834ba06cab4e9a85bea8f4635b3bf6b332946ae3983dd9ef30773471f6c9d5a604efe2d32f4f40f28b9a609db8e6a3049e6bc961b6aa685d7a789a45cf17826305535afb67116447e8a5ca78813bb0e0978ac1a904e2d1d248c714b81fc1642421b43c6992b82cb457703df3ba7767bffca96143886d7157bb3c7a2362636a5f988e1349d57a10d6eff1303c8e3ccedf9350ef65844a173385cf4e12b3c023d99787a7c1a4b74eff2d8da06b6ae69cf71328fc613e68d408e7eaf3b9672525ee72c593e1131a72e3837daad27177a8480d6c0dbe3c61e6b971922ca3f60019e52d648c5981b1da133c1866e9a0fb953383f47441627bab17df6479a9c33547f8fb8c21e555730289d75b48d779b63f4555501220707df4b550a87f356455c516b3e519acb4cd3aff720c60181aa553f0a1a7ba5b2798f988f876e789ebaa32da2ca24b06449cebec9b739ff82ce9d0af6b20271492b53f8cfd00583bc6535f6a778f0a9fc1388b12323e631976ec6c7d69c5a0af7b65f9e2a1553b2104d83de01e98cb80a857e7e7339be2433ed24afbb7b1a663ca8b9b8b0bd21e63089b8ccf49c9669d0dbf6fd2973a0f2a5925e29574e99902d8bfb49193b929edb920d5772f8aae2334ec8efed4287162cf6a14dde23d325222e82f760cc8da3e2453c970c9ca819abcb73e6697a0627090453b8c6c471134125e96416c318f06ddee0824159a7f7be8beb817ff49bd29f2d4d333f7a69cff82ae84076aea16d9cc1bed38b7c2d598428fd0529fdc8082848527d81267511ef9bd420f54540e39c8d648983eb08b2710c7c6456dca567b936d4d55fd0e468a44d0bc469dcd386de6d063a4487e9a17dfe680a4c6c9bc0543152074e9405758fd8036ba74c4f9bbcd3d9518a853f55494960777d60f0bcedadacac8af588fdfa5b68416fd2a7a3c2337bf2c114b2ed39e4b23e461106011b5ca3f13b1d78d2531bf21fec33cfb9f4eb1ef7cca539ce1204cae29239c85e81caebe4c5a01cfe664b5433f95ff1835835068ba7ee15cb3fb7d69187a70e01492454a1b7b00bf270d53fb8deda6f3daab1b996ea3d6ffa3f4bb6cf3dab0d044528183265bc644fce34f8bd1d98cb093447a257bc1ca474f2d3181011310b0c912da67a640b8a7b06b499f8d1d77fed129b47e2685055b1dbe0e831c5e104d11f92a005e2ad67e34c47cf462f867d1d2336c0694d148fb4526ddac66b9f6153c5ea91ccdbff4d2589f53191fc49a595bfada361efd20e9190a5e172e1086df63f6eeb719723cae815b2e2ff76da9c8d359c604f79fb4134bbee3382cb4a2e7ee318f25ddf0097b0e42dcfc49ebdf3467602f7d02040f18b6ed7cbd0d78bc2421795a4072880787db163dd09fc5dabcc35dc557dc68bbaa6176c10772aa7007c0b838dccb22b18750c00a5a1a1a27fac1c4e2b1b6f3923ae004d3d03555224cc54349d2fc9377fb8ce42fc2e246d9c2f2634301018f96bdff0a1d671c0377405e83ffbfa57de8aefcc5de062eb18d0ff922b3a999d0854cec38b276cabe98776c93cc41b5fd345201e1901507fa1e0c1770061263f0559d02a36d0af81f25b9682b38cad3ffe11b5991b1e6967939497424e8320168bd24209d71b0426f1c8d6e86f0377abe4a97e6ac72c9f18ed1929b07c85dd869585e30a30483df52f28545a5068577bd37286bc4b6ee40707b88ffae61344ed7f5723f07fd772d70141ab0a4bc06e3e87e4289176cd65bcd634a2a62075bd759e90c524808909aff506908e659bc1e3b3714f21a9b5c0c28f4232c96a9abe26181b4b27c2409e648a47b3164a8a1c8914835de3cf7eeb630474506ec12585c2d8eb27d692c2b61202a646d4793499ec9217ecd4361b0eaa6514e5483f16be529e2a300f940c94837fc2c68a6a5a71999b6dadbeff5f277a601984cfb74f3659c9c6fd661fecb7a39fdadeb1be5c68ed53eada42deb182445d8def28143147bfba24d65d43978277bdc6137947d6a0ee20ef78603b22919589292fc44e7bfbadda845c626cab6cff4fb4dc6a616da9905f73e16a1b923ab545caa3b11a8edecd9b6ca2812bdc8c49126588ed67aae8066fdbdb190a76c84b9bb49b6d689353ff3dac753dcadd7591c4708ee130f547a731f6880d3e2906154151a71b558d2b6d94801dc7a569c1b030123cee2afbcf121c3868424ab76b0870171cbfa00c15a746f8560e9faa7a35d91b42394ead450eba96735a0c676958fe48ffd9732b21236ea54c9d8c666615866179467b01d3c4e86ede658a3d611fb51340608622429359c7e2eff5480e5d00e948f7dee5da8ddf5a40720d85449142d5440366618dccbeef36a8f47410c344fb9731f86a2ffb4e3706f337c2abe86fd5b0311178b40c4d083d940fda9262bfcf1712a8b30bfb226791a57e0b9138e16cb850182d395433129b96b921b10faf1059c081db4896ae24045c28f9b4b12e7997d52523e3e0cf1e519521ae529146da05bc271fe8f2efaddb82dce5166ddefc86dc790b75ba9ab9458a7e32afb9b4510f9cb419ffd2f92ca479d8e497b87681d895e6536890b9a01d2af13f2a6767b428878812f7a179fe25dc27a45316d9274f49c5510ab2495ddb946d7080aeec72ea81f9b391953d748dcc4c74d5eee53d4dc69269e8f4ceca3d4dbf416840a3b02bee2b4cab18b8e5e88ee4cab4942927ac63eba64f1fb59e23397aa43a0c0f99c2b27ad51a968d61f1c9784e7122d5e63771fd68f9e030f9c26b314c037abf125366b6f199d92212017feefe878f534b32e5f5b18fdfa2edccc85488e5ea4220e8cbe34a15a4b34f1d48291777944e7cfeaefe6d3c3cdc19d216cace0383ccaf7a6fc30c267f01a915e7d8d4dddc53f2c41daf293eb7100b1c9258214669d1de4ba149c37c3a70bc2f4a7cf15d74c81c3bc5f9976677014e4e08e1a23b25790e8b15631044323a26180db21c97a53cba0d5c5a8793df6ad413da4891b9ba403bc1c798fc3bd88435b7170a2e065ae2055ef274d893a0b4ef962c9d92734032d218055ae5be5632f1d3234bb0c4fb4dd8eb2e6bce4fcea9488bc6d59259d99f273a9d76f8fd017b50d43d2d59c7752a26a94ea7e530551bcc09113becd2cfa052ca28e8ef8dbd535a9f859293b64d29a08a01e9b4ad2e4f92c69eb444fe79474a42855bae22d8a38fed765a13df2cc703d59564d55a52d6d3832f1ccdb7ea398934d67fbd4a5584b85b9d3fe2f1c06d76e1ac39a51e994e6217b98d608def8d2c3466bfdb13237ab93987a706ba8090e49a3acaa52fd78d2871f19fec9bb719f7423c566bd34f27f621fa65275457585de575d2af76136698e7f110869c0f71365765d650d3f5dfa7d871be76e761da0e533b0cc1c4acfff0e2ac5bf66c80752520eeab83b43da7e73b1e0c576406de8f2797a5003cdb66eb3a0222de073050ef2afb8fe4b18cba0654bfb8e03b48b78450c80c043df5175859320f5fca3950f226bbc5fc9a1bb25debd1aea9778ac6629840bd584f1d7f5ef9c711ae9f15830fa694660a0d8a890a5f93866ea78476bb0f1de1208eea7bf231dc0274dc496112de0138751dee67f8265dd2efca486a02aaf676e289f7cd994a534c0a062ffbbe1bf1d5aa9bd2b2ca1b864b1ab545bb3468acdb9e4394a499300b0579e475e70f157897f08dfff7fb069e0d72b361e0e5abc4486053ede6b92eadbc784335ffc54e5bc702b0fcd464fe947f29b2ffb4433369bbcb639bc82d3594666c672a57a596359eeb3bde01667d0f43869ff3d818ff715f402be0ed56517934a650f98eba6b15d002249170ed0409fd1fdb3bd241f1a160e1a06dc411e05c55a0d4fefa3b7b5fcca49882f6a83d4d69a23885be5fec6edc77c082456cfa013285979c1b1e157ed37c3c1d4f6bbae36c0f12e1cf82e18cdbf602a7640730f6f53759118aec87cc1ace66298e7fbc671da9d204568c44a0040fb6735b2ba7f1bb6d2fdbda38d04b1ae3ef796cafb1ec98505a3e552361d2950042922f0d649a68953c993bd7ee9cd7ddf2decd0b48213b3db80b640b5b6eb30d2ad36c189ad89d1556db9d016adca7ca00c42471c3f282113c0400cc2ab4016a629d7bf141395584b30c1d70ac53a425894402ab34445948d809c26390e1308ea54f412270f9a9bf24550243d3fd27ab142d0c309ab1511aa417899a123a8a0e2bbaba9758e959667d3572c60113461b6ae43c536d13762748e7ebd30e39ccf5717828038ac3697c7d9af55ed9b82befd8ff67392cd6365419fc7c8c89edead81580ac50108f17ae6b3924221e4ddee45d873de3f024c24838f4723dac9ebd14deec8380682b3a62bae71b44d0d34226502e869cd41fcd41b922e54369ea5cd3c95254d690001caaddae3fe16cf2f44b583c5b8194a2e3a3e09429f8fe6f5f28eba06cb242946ee4dc28f32b7025a05b395ad5072db27eed26ca703bc29325d1bf001d21b26b1cc744e7d87aaf07669333acd066ebf0f27c05631ab204622fc77a06741d5395e42d7ba83d7d59b386aeffc2d93170920adc3066303e1e87c75058a7fa3656505dd4d0fa29d970d5f5220d8618c50e704b03ec5e544ee8b91c028d4cbcc8fe1a52e1c15abbbb7ca810ce45053606b5d6ce21e8d8caa7d496bee2e40d36565def4ee5ff9ef0442ffb16a16998c1c43096dac816976df6e39940cb9097bdc469a567552c485b0e5df1c40ebbe41a90c6df1f6be3754c3946f9e797b8be869fbb195aa3748592298caf24cf0deff33d61ab2bb0b805373df982aedb81a621c58bc664b79bf1d87b298cdc5e5066743339c1f3efe110ed24cfd6655e1d9a3fb243aa4d26dcbbfd7665fe5a090de4be79019786f561a8292fb4434441a68e17edf77c464dff50b7cc5ad4799d43ebb51a23dea7b760d626d041c8bbb96aa6b20e66260c0fcde1e78cc59a5a9ffbc5b409a974c42abf165ba591b4299c3e86ef331c4f71131bedf1a913eeff92da531971698c8884a3f33b43622a9077d118a77645558202ccb437a347051ceda13f2d44f63c24da270bc350f80cbf4ed02a16ca9b5eb75f7e8511a64d16eabaedb6c5a7854cee19b54dd7e37ae423a84889f8f926b5ce07337c023b56cdd09a9f219419630cae32decca6c26e52ca35a90c2e258330982b9896f6664c435ad9319b895e92f310292f3b7e575ec624a65f9258ea6465d5d074d730bfe7d6b19a8d7071a133778cad36b890117f9e75e2c3e755d82756e2f664851f32bb3d48c67a2db19f29a307bdf9b05dce5250a4cb79e48536584b0334cd0f60c256c1d5f0439a0c2f0b44fd1a901a34603cd4692e63439e3374a778f6d7b6186f5f48d7900d6d227bed0b5ea16e0f6b9962adf944b31ab6a4ab5a6f41fa7be2fb605ec181db786f88ac981ba03333f287544e77bcc2f1ff6156099e09acc0a7530a0d7f5e8b45ef6eabd288d26ccc6abe9649f49d4045bf4e6f5e6fdbb735773f58b8e23a108c8229802b20d1252aed2f049e04a83be36406386919770004858fd1133fa4d8721e5caad10ddac2236adcbef269092f2734a0c84be8c55ed3cd42c1920b44832858aded480cb8aaf5104849d67026fd583cffe083b2761baa445f37fcc8205078574e9a746b31a732ff50cc4872d7e0265892a4d7c51dd509099d3682f961689a936e2354e0c4c49e57883b7f8fbb4901e9a8d426d4d85cf7e6280523b372309cde7628f993a19055175f3d959ac2e162aac22b0d4063caae9e6db1e63a866e59554f7dcf887388cdee8eca6608972dcd587a652bb3f75186c44fa32d1cefc4bf593b5c3fb728a898b315f3483285283012738c2e9555ef6dc22309898cab2c6dc75b54f3c1410948cf6c37b6127d89ff0cfdd6b2e512d7a8b150f32c15db6a1443a73907e3c0fdcaeb1df2162823f88dc6c526054686dd57dff1c032f695761397a85181c8817c1bad81ec38230d731d285a0e116eed03b1b03621835cc9143f2a9eae442a7d70e818f701e0e885a794f2afbbb35c5c7210f5f28e356d684bcea9e53a2088052aae19b36870a115855a7df1db48a55a0d3f94929afd81b7dc3973c4749904919a520d7aa664957990ef92a82116a51d5452043d051c29ad36a1c4712c56b92048ec4995c0510abad4f84022eb00037d52ac9133cd1c1e78db7bc57776342f53790a8eb22869eb0868804b753179198c463661faecda241f6c05fdd5236fb802689c35e45087de051f134bc2349ff3ff9f1ad3c33779e607e04478b59ff4b74e4d11cd99235259ef185e7d9bd262c935204c55485b4407b58b21cde59e43d5ad6b9760be9e2cafc676164f99fa909c7b50b3b97367d824529f074c7ae0ec258245be73f4e1395a8bfcb0fbe2f10c90d5b912c6c211d2a9d33d7c0fb31a6251e8b5c48158b81e4ae5fac00dc898eeac6b6b636660a1087f87db043d0ee0ff9a4667c14e18d886db31a5c10b2b17cfc6d97673ed5f7d72b9aab8b0d8ad5fa66ebf32422431dd8783024c986942d380ec48e3e0e0c5faa94355e2093df1fdb027e8ca52d2b997dfc77f005c2cfc331c401a0b00a013b4c8b3584adac06c28549491914366128d6d2f59f42f9e6905bc58a9253df7b95bee53d40264d9c16ff36d880d1f6e477ec09a958ad90ee89464cbb46e7efaff67426abccac3e05c6ff5e6c6f278164d26e623abe8f9d376e9285a80406cce1fc4de26fa8af5311137fcbeda51ef1767a2ebc76755da10818e9a2bbbb2ccccdf5f72de6d4fc7327a9e388e722eb213b85a9be3bbcfe119137e9c8abdeb72bd8c4448b68314b754603ecc846eeaa85f979e6737e325b0501586cba6ca9c2bac24421570eaf9ee6c897689e8130306df9a10436b50d017464419d535c382becbb4da5071cffedd10c902ce0a7a9e181cb0dc775924c66a516c5effb438cc754c9ffa186598153616ce8858fe534126800f1ff9df6116d1dff074736bacec45420494fd0455929c2a33cd7db8cf063e46772b70eb996bacbb7aaab75eeae21944041ec35a4c8564dc1280d6af8b8e598f8f5bf5a422007c3145b31b8ff3d374b49f4f63e219534f26bcf88b6eb10cdf0bf824e4b115997424dafd2e3f967a51a21e7bfcec437b07a212f355cf1dcb337f01bb029342605e3ce90e6fbdd41fb56f516646f4fc9bbebb650057c7f62610aba4ba2a03d572e08ac97769804c0dbce322e008a207f155d93a1bd949aeacd92a6fedd76b1c11c75099ed3bbec327570534134d5e316253fce81720e735af68ce89e8b1671ebe2aaa932d5568c530d7fc9aad77a09e0ebb3c7c72e5feedac49e653e6754b33aee3d8306e4943ae95d398c0ce227e87cd4ddf973346bc733e2b4d7906dab53639f138acf5bfb700d299cbb124c2f77fda5b44a832f2f6740f32c3fba0becacc4c579e3ffaa086d4c1415119691fb855347183f46f64718c6c5f45b167e6639506675fa0c22cecb539f2926b793dd730a788d87aca9abe31eb210b5abf00133238bb1222ff31efc5917f065130f6991b59a3ac4f82924438ed576665a096a5adada8b3e3842be65b1ec1e636af0859fe9ac1bcf3def535a2ad650c428c514139085a6189716a0bf7c3c8f7fa20858d81985213faeb96ea1e4a9ed39a629d2537850fb56052ba7aeebe7fb5f355e4fd17e6d452c94f67ce4bf6b2fd4e91a8a1089f689ad2c1088bfd38d9dc71750cc5836c5cc4630d48f2d9b237d3d6700af559c5f144a207c625fac2db4dcdf03a157603daf1c1cb5f76afe0fcfee609c1ec602f20ffab7fdb9a6f18e9df3cc75e9879c029ae69677b9e4f1bb3555c2f0bbbd8a398ab3004609707fc6a3d062d4b8c4476b433bf273f2d1a8a5193981ec52e4b8361811f0d7d9bbbb4ff86fc04a1d6c7b3cf4753405f12c0e0e53c6d410aaeedbb6f8a1604370d354be1ee0929a90e36fb4e3e5bc8f8491c7f1b563fbdb66296bcdef1d67129ffce4d1083b527710865730370282244537ec059962e4e48286830c89feef9d20e382b1de2cd0875bcd66f6a18b0a27b261b4aec64864648971e299b019e3a8f6b65a2725af4caf7219a38182e3c058d775871032a4ea80795b330e4445a3099e067ebc01461cd439f77f9635517e55cc274304d4a0c222299773d6b2a24c02b8271954b797c370fb3760d3f493f886cb3f4f7851c35ae22e6d531cd339daece8984188cc85848b4ffdb624506e1560fece36f9e2ee27746ef5f1212822f8aa917ff17504457d054fb934e4fe21772636d71f9e255680a9da2c5a937d16a477e1637562bd1dadf402cb91f4744dcf16733bcbad47e09592f15e8c1fc5f0a71ba9d7c9e9bba0d4f807ecf913986ecc88c4c3571e5bff8ad314585b38d265a1379d1f785c30866b2ff5fb42ed869070785f3fd5215631fb83c9cd909a996dc7e957e1b253138edad231c1e8da892733afe567e6e0923572d57ee6dcb13d50a5b09e32d45319dbae84d93b7e2987cec9cf4da686d823b09432f9cf09adedda9918fd1aedbcf06b0c6753d4dfd27797044e93cac49d04a3af016b2b1c553e843af640274a2a06840728c8f0c26dfe8dbf06d1c1866dd290eb45e1f97ee617054499b461e054883b1ce866facf11e001027ea9342941eb47c3203c6a40457a4da350fa2f454d0b2000a081f86ae7f2fc5aafaf1a17f22bbea02bf3822dad0723384d4a08442aac709ee43873eaa1d2044e98e952667c2ecf14c754d642b2810b902a8ce8784a54f37fa3f4cca6853fc49ddf08510d6f54b803a48b4e0dfbecd70af80e74cef54d21341476b5d3bc8be46f2c4222c24524c781ec698dbaf4f2fdee02f0a183bfe82c1b743b148b17824654e38220a187c74cd4dae0c45056a446950ac7886ee71d397c2b46b07ebb07979e6c644a7c6bf1f6f94597a3b8bfd5285a9faf94fbe7e13cad9802e9667c031455ecc4e4f33cfb67b9a7e2bb6cc099316e9ad7dd7bf1027d2de68c91024863193a70a6cf900ad60e1da8c639af32a0542735deeb11294169d0bb10c4811daf7d2715f89a9fbb4904f823545747f291b977e2b4c2f825953d39b392408166ba8f58e8978543c420cc33f3c3b99cf28c9aab2a891f44ac28a6577dac4b2abbb71634b9f1f098836163355f95c9a614a913405f2fa811593434644eccbce541dc59a2b2cf76f021d82fe5d511a3b6d2ee80b66f1c1d5aaf57589ce3d340afcbbd09f687921725663e4bae152d14c6a0d5ac944c4194e94b0ed6042aa1c0084cb95111d162904ac9bb8ec2bd65b62ecdcceda8bb937fcf9e2f76c2e282cdce8b8ddeac3dab93a8f08c22ced1ca8c230e0ed34f488a20545db5e40f50b931380710a1390d24381a74e6c872548587f0d36c99d0bec08d8ef60f653e64a3aea222ca5de85d750e7cdd6a92df38cbd3f0127e971cb477528dd9639594210dd69825d4b1d6ccb16f3c6945e7a27953c634f3be93ed6a5d5adc62f58de6a34404ab0f154708cc98e031c621784bb76daf022cf6c77f64b080409022dee0b0beb40135f8f8c094798ee83bdaa0f414f3254906c3e244340fc5f940f322fb02d4d1d9c7423dbf1f0ed2d009644ce689eee320e2926f8ca4c360180449705151be7e2c41b1db926c8878b32a46c3ab42e96f12a717f2df77f61a5790865a18ef45199b0b5b21033061e532a17f16a7efb8884340762eec930a02808b9488e080c0c7f86f70e6d245eec1bfde72751918336104947935b37368db7f81958e6856184a0f1be47d6c5ce5aa15980fd226e1dd05cf0c0db76ed9dce2f1f2801fbcc7a2f4ad23ea273740c17573834b9e92ab2368e57360acdbb6fd97887e2600d71db902c3feb4318caa4ca35ec2d02e7b3fbe3378e9ac98286961b877e2e6f0322b61d2e43989cd846085de89635e207b900e369f455b1519ad035f4d66e4a761e1f8438697f3e6743143931e53d1e0d3f5a4b96f6d0762d26728a067d433350b6506775f9e20669e9bac120a02390f2032dce2600aa4e20fa2a7d9513fdbb4c105a9f6a3cea5dfaa19cf7da2edc5959fd5b7d4bf8d7792e0f5d123598e6ef45bb205a1421899f95c6ccb888f371b5cb2c0eb4eab7241ea0d8c0521a4eba74bf6dbda1a4b7aecf64309fe785063958ae7db568fe89523a3c54c378e565b9861f4d853cfa19e2999c6b3418cfbcabad15121fa27f515717d27f197f46d60cb14985f288d279660636c02006a0721b819b0177566843430be4527d27a18b79c677df6f6a3013975e53865bac04acecc5c24c4e90c7179796d1de28bbfaa0542f05b669c2493d04713e18333f6ab5cfd2a3a3c3801a7313887200a757ae3c87ab7f4c1c79d5202ddf56cd0ef7b35a71618e761824274696aeec8b12b21f17d17c4a0cd03848896ff4cf846dded27512cc17eb66d59a7307ccf46a6a4b9ee707a096977c2787d86c4664375292d163e598d2efee1257ec6e5d557cda9ff687216a398482baecdc1fe402244a135df0b0874919794849e9da7c5a6863d5cf83fa6c998cb00c3e70462854eaf80774785f6fb55cb1215a04776532ae403db7409a536e931fa15f479e0f7492301c6219557b54882bc634a857d2f2b1601cf4d345b326ced91b40e6e500030d2cdba5901719ed395381e13ebbac90e80f66c4e7520247f07ca941846a90238735a4a7ca21909d858eb2af54f5f52128339cf5fb2af060f02d4668d81c98f8e14501b9edf0dd766cda58da7b6947499249f6c4f3eb38a56457dcb70c5680e29992d36d8a0045a9c942136a9eaf134af71434c5b9c0d6a2820a365605f7578c48796f7e4de9600d2eea8d43d37714461b4412b306c8712e517226d6a190ee73ce529a3b284f69b6eac34dd03a68548fbc3dd7258a26fe2ddbba69bdcf654bac8b140a1b2c3ee788c539d3da52addb21b1f3e5af8fd594ee1d140746da32f5e8c64f9a9643fce278be2cbb1d1702b033a58319eb061c7034f5ce6e967cc9de6451b33a5b0f95f2c11417bebf02cbcf3913628a09b54c47d60e3dc15445c1d430c9e76819948e88c476d3fc8bd3afa506edb216773bc2cc2e9f87b410fe6fa9d3d323d185fcfc1c40943c1dab531bd0e8939c80a75470b012fcb4afe6d83a32b85c95cbc746c47168da969f67c4b2c348da9e3c6da46882188d28143dc6f68d2f0c106cecbe327091368f597549e027c9431899510bbcddc682fd41777b8a497ac627835c7dc97fa1ce161d849fa05cccb644b0bda99be6ef27a0a08ee6a3b0e61bd1ba0ecaca0f39acdd09948cb09fbf9fa686c535bb0a7227923522192ce2c8611f45aa2850745ea6572d167ab450ece7c982226b01a0359ca4518792e26deec16211ce5138868bce7c4cfa6129ce071efb7f6ccb0e99b848ad3a586c2ad77c5e21d4007c56787dcf56ca8f910e395434092e80273be4081241f02649db8e1a6a5757e4d213714089aaf044a2ed0b181a4c79d48d529eb0edb79dd87a2c9366da1b3e0960860516ceaaf0889c2c2160a5818a13d682c8b81ee3318c5a33ca0359a2d4b69f60595ac0b19e2795e0ac5e6235b7b7fa849d1c01682c01ee0c84bbe5f336f07c671db9b239204fbaa6874723b780196360f9a4b8b7d6d7a4bb8d91b5e620e901cf4d23a2111cec6b4e2882637886fe026ae2470f0a86a6422057ffbd152a9490b572d48dc4c93c9d052ef1c86d5704b4b04709e4a7a59bdb2486b3f2d0b84d31e44cae3d51e9efa35d97c8070678c76376bc4a9b6e40884a9ca5203c69e18ccd0140605c5551151e5ca037deab9a5cd8514f5515363228c30cac1591ea6fb5fcc7957a7ab3ad157aedf0348008cd8add6474f5e4d65a305cba5c01c2f5003af45a018c0cc24f07683e907013cd09dfcf82068adbd68521319a2c6661f495ee3c164334358af499fbd225502219882d7c7ca82220e83fd9496cca4f18a129b53d490254475e0332fb949fd8141eeebbc3841fd3478c4af60e205ca43ba378e42abce20fdaf7dc4a9491ee8d3fd74ec5f6e7e9b2e6467a452336bbda0d8fde7ce783d973a9e1343411746f7288975ab20749d7f75ba34ed496e597675a99de38db3a58eec2b31e1ac9ed1fe8512b33a453d98bb1bca29b5784264a18d4a51700685c69706800eee7a27c17e8536812aa0b5ba16ef8622ba0d42334311e054166ef6fa843c09ca92402510849375c209f2e7afbef5938cc7a4cb194b488d2e42b650f559200d0f1d2f087a3d26cfc4c9d13ce0d83cc2ff35b3655b25b2fb8064235ca4364495e0fd017eed4f854b8929326e8c68b985b1c330ee05fd63b063f58871f48e25218798be5700b7313967572db57125cea82d3e4a366f559ec556ee116b19144965574f03d3596bc56431fb051a882f4d61d4b9eda13b96c48310609f1bf7502723a0b4574ad3f6427138151fc59e1cbdd8bcde532d41459b42f04a0f99623f9aa8eb33ec591dcdc88b026753515411bc8ad4ad75530cff0e4da879203c715fae5ff628546dd5cb6c365afaaf01fe0373ab5f4e373a8b6d0634ff5db6f7da3fcae6334bd7887021e687a8187be9bfb64b4c2d4bcb0907cbf38272945e26ffbe37457efa4799ebbf271df4bf49b70254094f14065efd2136d75c19485f32cdb523dd68f04b2e17fb0b63b10b38eb4d219ea38b7e95178a6c54b15ef70c4f8acbc17f487ee9a4331ab92625b544f74c80ef92903a524824ec3029489a93f9321f8160a80b551d764329d55ffd16b4b2c3be632c9733dae71d16d8d46bf1222b33b293e9b218d3e6c1d55c331966bdaa2ab822c1cb1843e83f9cc06df7a207986430a9fde3fced65ef1591541480d45acaeaacba1ccfa40680a8c736d8a949ac30c10f9776fc584c7a161e51c5f20a523559d1ba2d96834fbb688ae0a1cf5a64a95e25e7eece6dd512196115d8d0e01dcbaa9f7c6f23ecddec8354464408857a61d11b349a550dc9cdd52e536bbb8fe21f9bac950146c54f8fa1bdc855aacaad455a9d86db792c502712b32855820b468701c22108976758f1a4b5a7aaf09934e81687e02c1bcdbe99dfc6f6a3af065c817af159fc337bce1078881f72518cff30d22b2029cb01c8fbe012d370eb443d3116e700b09dd9affd7db12dbc7931c63a44cd95c29289bc4ecaf9de37c1b8b70300daabd4fc9e0c3718610f63cec51217150544449cd45387612462e04b2f200149424f5fd9584dbb6b32a1397c68d89b3e4700d61fd489359faf812dbb21e4e63de0c810dbadf84c9a90d18aeb5d104b689e901815eb49ed249f921e7d3218cda3d717c9fa39e07b40d399ba6b74eb030d5abb7736d70eb2262e0dc048402a7aecb30ce6a077a09b50c3a475fcac29b3c171b1cb8e01dd3b8d4378aaeaa9efa431de7c2fdb097b92c8cb7942d204a4f3ffa6832d97e784d2e5225a149d012bd9932397647663de738d3fd805d7e735b36f375c1a26be760e96198bcaa0a22a50c16d2975bf00228ba35f6d76734a182e0efcfbce1b174270a5094560a61d1376b39d8b8f41a9bd57e1665248c13dbb0e39e4ec776c7914d62045821482da7b9f8da5f7fe87e94ff93f62c1dfb84ed8b38d6555d3129248d5520da73abfa37468d6c39b795271e4e7fa24249fb8ece5235386c7a0d9b149e6fe6b296cdb9017e0724f3b34da6315624717b13dd43e7a80831c9edfd7e58aeb136de554eda1ea13f17a6943dc7f946535f8ffe95329d3923d45caae98c7dbac64dc5d0d1c62176ffc42e2dd184f781a7eea698b9731d5ae3357783a838918d562c5436d353ac241b38fe6e6c045981ff216e9e4f8769992ab3d27d462944e2167b0a27b84d083fe5bc04db1730780004d03f9862a5b27b9719623d6006dabb7201cb763f20d29f16f8f80f2506bbdc2448483fe9e515af8fa4e5c199a232429d4882e64f07e90ad939066c60e23c2a9bdf2b875a490b2556b1b4966feac8cbc212d1d4ab24094401b90b733578d8be20e03b9aed8b67b14ec5744af7d0fe6cbe490e689969c79c813344a07d26c23b18589b040688107a936bd30b1ce7dd6af62a7d33a8bd287dbdbf34e754dbfacff62d05fe8526b53e0ebd8b41eb442d4416dbaa621ed9bbb97709f08c85da603d39d6ea42e6465e1e4f8ffe03bfd0865b6bf13755a61b3f8e3937d917102497c77b9b21a3d67b7d393f27753369f6b488eba203b80c7ecc723aaba839c3957805429bca5b159daa39739fbbe7e32bb785ccc1fff186f85d842e2f22a7a9af3ef93739b0de86cd56d82e89b2fe82489d80553dc4a9e55f28af51e041a13eac68020c17093394dfafb75a79aad21d9034cd3845167b0fc5178b4c8015d7328525a90b64f310ba6668cd5f76c25cda4ed34a4a16158b2cea8317337214a7a2fc9959b54814abe77729faca87ba2db39934480e5e988b2709544564092f57d95a5f8dd0695e1e06e695e371737674e6bdc18acd6595a970aed7bd236bbd313bd857cd96148200d81e04c9e7f5419d4be68f3b41dc8ba8392614eb3170bb5a42bbd01a842f72f3be740d77fe0c5ea41b84a5065bbf97fb429d9a4e33d0d5f8a76954f46ab9d1e15422b29ab283161e4a608292531bff1e15e4b2a77d0ba49ef863f5ac8886dcd5938c3ecc8c1060d05ed917c03fbb316d975e64c5d869d82038f9cdfe960e8b2d90809527b75872c205b49a4f9322784a0f788affd5ffa6877820e96125f8d865c7137a04a4d75add2075c3d739193d53c2e018ed2f37a428e76f68941eed83c1dadd95e05ed9b9d768ca9ff6fa041651c2927e7a445b7c1d3766b82d864d3ad56bb2cc8dd35513f1f6aff6de7e9fd62736ad7d742267be35bbd91b0f06e0d2bc395f4d6199421e83ce840a31caa3d62a2f9f94071fdfa4320d46f3612646177c9cec0d1cd5def90e01d1b82a27a22d0b1dca7c383b9aae588ae7b363b864a91871d737252e973f4362f425a8e422889994f4cf047e61652e94dd71e2b39a04664758aac55d17a6f3f26abe24b6fe9ad5e678591adc1ede8cc67a1aff4ecb1463b727b54749ef6c7c7a4c17440172be36e9639098d561d72d4dbc6f2705646911d603605a342ec1984a5cb09930da7ded78f96bf44bfa7223f6ff2cf7c262ff2603160b07c0b8933e2ddc82a0bf91788fbcbe11552550ee00b70ea47f4f569f1013461e047a57ffe3a222dbc5ecd28c95125c3e09b8c6d360043ef40382cca645b93c1d0a2496d7b8ad3bae37985494637a4001d6b61aa7d5cde2ee7af14249b9ab4655ce5b76a529969d7f5ea6e5d0045585e28ec6b91781598aec0e386b3cab3640a69f4cf710b700d3a4a39906b481a91b804072cec90c616d3ad6d7bc365591b6a4e85baa1c2ac6d923518440293f2eeec4c7ad523e30686f24cde1ee619d86e15f4dbbcdc294a315ea7b0652020c10c2189b28028993af3873dee52ef4c8cf7ce4c97457d775ee0ccecd339b83196a7da32fa91fe00db77a242f728f2cb25b91a03a7933acf525a79c63cf88968f78ec078810a5a60718222fde90c09938f2b0b19ce269b3f5123e61418a7f86586af4260060208b5e0a2ece6f01e955ed827da6ff33f93570a6fbd79082abffdb6f45192d7c2e3d4cc8ac868d284de6843b403bec58bb3ee3570fcb6932ca3d5e0aacf4b1c7ea785e59d4ed10a43e08da8e402861ac9bd1e1a110051ed5282ab2016a84da4e76ed457ee1de45423f56f41281174bc897736888852a5f4a01b4b796eb6fecdaf8584ce1d982ad633a51cedaebf602ef3298ea9b63002a21fb3dee97d89ced945572e37c1184a1813895b23e506a8c974db7e7c6f5fe3fa8dc22816a982cca48d052c0a7d8ec4cd37acb86a9578518e9065c61860f3804fcfc385e0a7bcd772267b8cf366046a61f66c19aeb501cb138793b0de11cdeda36846c6b76a5c2d7b0d4b2f7a7241b2f5bf48d1cfcf0a65b468ef307e55f60d0289be6f66a5c36fa4fed684ddeb97b0d85ac1bb7335c145c35c070b80518441251dafd98a796d1cbc464e038d53aeadba1447a7d00f6baba73b7d6084eff55eb4875c8e16b80c1260a1c45a888801277a4ba4b725a4d5b7d715e133bb38f5ff98efbf07a248ff384badcdcc78bbfb085234f59a415f754deaddd0080d08e1366baa15cd0ae6a4dbd258069a7d328c76522624c78a624c166b486470c1ac977c0763386f307dcbf8f06e2c2f4cf4cde9ba620dda2ec703ab7041e3e376e9107056098709d7fce847352836e65d1af6ca5c1d879e24522b391760fd36643b9f7bdcd1e4028f6401e09187e387eda8817a1e230820f943b8b612628efae93022c28b4f35fd7e64156c77f47804cbde126edd4e3bff900b809220df97f9fcf61ec77e21936d990c8d14f5309807f7d3feb28479cabd370145b8b2d04cf6e29a16333343577e4299dc3f58183813a5e45b6dfc806fcb765c57684401cfec6c8df3e669931913953847e733c6b61d858b42f65594f165cade5384265664f808d5596a67b4fae95cd3c564906357d64da843a3993f344d4b27bd79156a1666c60ae9e1bc07c278d9e176e9fd8613592f1c99f4dd73f32cf2787a1a065a1ace9c3ad2bfe0fbc82f98274ac5bc561f426b5979309ba3fcb68ebecfb58f6b059eb9694236e635915bc0d8315ceac966b633f2fd810c42424c5ac887fda243f94ea535e70596015c4e2664a58bc7479f0c3d038fa8be0b62",
"result" : "valid",
"flags" : []
},
{
"tcId" : 55,
"comment" : "invalid output size",
"ikm" : "487df211f042c4a8e2e50a4929d4bc302e3584b0",
"salt" : "e01bc4ca3df96a1d158434ec7519550d485ec22d45f827c5f1f9c20036591089a8b6dbec705fd80266fac62a66c9681c",
"info" : "943c7f0cbda70cf2",
"size" : 12241,
"okm" : "",
"result" : "invalid",
"flags" : [
"SizeTooLarge"
]
},
{
"tcId" : 56,
"comment" : "output collision for different salts",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "ee8362786c0c8f19b159b49c0ec33438929d4575a7a319a99386392ac07bef44",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 57,
"comment" : "output collision for different salts",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "ee8362786c0c8f19b159b49c0ec33438929d4575a7a319a99386392ac07bef44",
"result" : "valid",
"flags" : []
},
{
"tcId" : 58,
"comment" : "a salt longer than the block size of the hash is equivalent to the hash of the salt",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "1a08959149f4b073bcd902c9bc4ed0324c21c95590773afc77037d610b9584806aeeeda8b5d588d0cd79e7c12211b8e394067516ce12946d61111a52042b539353",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "7e060421904a880f28703cea5defae446809d4cd0b971272ba2cb78d8fd7eadf",
"result" : "valid",
"flags" : []
},
{
"tcId" : 59,
"comment" : "a salt longer than the block size of the hash is equivalent to the hash of the salt",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "466f383c878a617f0828bf2f86dac9f67b40e6375bbbbbd5615e7e99783bd265fcb5ef946f062250c0186cbe711d930b",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "86bcde8ec5a2b4cb9993fc0981d3e216f49789936b43d67de83ba9f51fcdf0f1",
"result" : "valid",
"flags" : []
},
{
"tcId" : 60,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f4",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 61,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f40000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 62,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f400000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 63,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f4000000000000000000000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 64,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f40000000000000000000000000000000000000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 65,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f400000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 66,
"comment" : "a salt shorter than the block size is padded with zeros.",
"ikm" : "624a5b59c2be55cbe29ea90c0020a7e8c60f2501",
"salt" : "af856d5eed5c77f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"info" : "5447e595250d02165aae3e61fa90313e25509a7b",
"size" : 32,
"okm" : "60a49c2dd255be03e3accc8a66cea4cbc919f957dcba8225be0cd707685df52e",
"result" : "valid",
"flags" : []
}
]
},
{
"type" : "HkdfTest",
"keySize" : 256,
"tests" : [
{
"tcId" : 67,
"comment" : "",
"ikm" : "b18e35e63cc4fe4117bf2754ec3f9ebb5346dbb0bf6d4e5f2422418771816fc4",
"salt" : "",
"info" : "",
"size" : 20,
"okm" : "9e2d67ac4c0efa0b734570d7299b8e8d2fbbc5b5",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 68,
"comment" : "",
"ikm" : "236c2ba20c72242820f63d3e9c20633162c1cb048a45dea13861e8a138b9640d",
"salt" : "",
"info" : "",
"size" : 42,
"okm" : "a7d98a30ba3320706cf345f0ab09d4cac7d212c8337bef01419b054c10d336009e5636916570452d4b8e",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 69,
"comment" : "",
"ikm" : "f2cba42dd82acb5d2d569406815a3769b7becb13fa48537fa7d7d5e121081d39",
"salt" : "",
"info" : "",
"size" : 64,
"okm" : "558c7cd96388bd7f225afd1580a41083c465aea527cfb4e33a0408565708239eeb6797ba0e9f80f9655fa3bf2c7172252775ccb16170c0c31830c648617ad586",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 70,
"comment" : "",
"ikm" : "73d97f2ffde01b447a5b8573190a8eb4f87f7ac04482836143f780ad876bfffe",
"salt" : "",
"info" : "74d2301c5aca2441372cf6077bd8806dab3e8721",
"size" : 20,
"okm" : "dbff53109babfe9694885c6bc0c577ce8f5201ef",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 71,
"comment" : "",
"ikm" : "6948521434707e96fa943e44988d1ad409ec57e6594867e8193e9d727238916d",
"salt" : "",
"info" : "9eaddd1e7edb6b84c96fb5ac7e0d673a8f5084f2",
"size" : 42,
"okm" : "bd6dcd55a59713754ba4a26c55b6084014db2c3ac568eda3be9ebc55e67a2aee4d3cf2d19ce945555d42",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 72,
"comment" : "",
"ikm" : "b72b3854923b8a0048497a86bddef962552c8f6b2c72b2b2006a1820fea5c6a9",
"salt" : "",
"info" : "113b708f7522ec3b362999db18699bf7871e3b8f",
"size" : 64,
"okm" : "743e992e2d0ebbf94c6b901955270f1cbb472fee9ae645e128a941e62623c3e0f484369e77bba1f6ae485fd23b6ed2bba64ca25a19d56715875f3d092caa5698",
"result" : "valid",
"flags" : [
"EmptySalt"
]
},
{
"tcId" : 73,
"comment" : "",
"ikm" : "44d774def90685c0e9a685fa50fd434c807d1a57896fa42f91778821fe232057",
"salt" : "0d7d3b47bf8484c8adab7f9c27c9584f",
"info" : "",
"size" : 20,
"okm" : "f17c54ecdb9769ab1f2c7e5ae6ac720277cac48d",
"result" : "valid",
"flags" : []
},
{
"tcId" : 74,
"comment" : "",
"ikm" : "098ecd86354496a701ffcac8d589a1217231da3b80ccce4ef85762d7f3a2c211",
"salt" : "5232e5e4e2dd6133d46ebe5a8a51a0bc",
"info" : "",
"size" : 42,
"okm" : "5d0568ae988ca4c225eed0b789b488b8b8eb421aaf0aa8056c69031c004ace076dc2d2292e06b0df6095",
"result" : "valid",
"flags" : []
},
{
"tcId" : 75,
"comment" : "",
"ikm" : "917ad396520e454a571ac39a9f6bc845a8920954fba1ac400cb2988cd8847ba0",
"salt" : "962d86949506450eaca929286ce5d9e7",
"info" : "",
"size" : 64,
"okm" : "dc65cdffb023a4323bb82c444815cbbea1aad5c5fbdea4db2df982432f5a6b4124719f9fd6a47492170041c60a7a075df39e9310ed0394271a53e87f772d8591",
"result" : "valid",
"flags" : []
},
{
"tcId" : 76,
"comment" : "",
"ikm" : "1cbff2202268edf1985bc91466b80133644988c5e81368cf0995274204fb0aa3",
"salt" : "2bde6e33534731f52d39add940ff46f6",
"info" : "3e4f9c8d3d607c2ed43caa9e87e6ecbc307c6048",
"size" : 20,
"okm" : "8fd42650adad1b8cff79d8a6c690e62779ecdb48",
"result" : "valid",
"flags" : []
},
{
"tcId" : 77,
"comment" : "",
"ikm" : "d00d6b4fe088077ffbc64127d6bdb9707a0f9061c0b873c334c3be0adaa7c2bd",
"salt" : "1647a044472179d454b8d2108e4a2aa8",
"info" : "4266351bad419173279c901aea148e8b1d99e50f",
"size" : 42,
"okm" : "61a29469106dd22597f742303af8683bcb81fae85b45d38792b019f201194372895897fd7c63f95d616e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 78,
"comment" : "",
"ikm" : "9a27c19b607adc8f152faeaeb1282002d3a2166894b7fe5d65829ecdcfaf73b9",
"salt" : "70d83929a6376a6eab859f0d6225f131",
"info" : "36356cdc28187c11cbb9046f9ce7502ab4d2ea46",
"size" : 64,
"okm" : "6f4c33adde661d92083b96c90e9f030cb372304ee1fa8adaba2f22f45c47aec925e944034737e47845d577e4f2559b9d00cbdd07a3bb9b4fffe701385a0e6e53",
"result" : "valid",
"flags" : []
},
{
"tcId" : 79,
"comment" : "",
"ikm" : "f5d1c855d3448e212d76d3927ec797dc439cb182f427064288452988ab79c83f",
"salt" : "87ef5da5400db731d658972ea82b76848004e70d3b22cec76c8be06283c4",
"info" : "",
"size" : 20,
"okm" : "2d45645198322629380b4051ec1a219d2cbb49cd",
"result" : "valid",
"flags" : []
},
{
"tcId" : 80,
"comment" : "",
"ikm" : "3f19b7095a6b3d313b59c3ba2c3a78d8b24f30c9ed4f8be9eb92f8eeaabd2c3c",
"salt" : "8f1f6c8e4f68830319ae859b4b1fa71f1d69552b0c3e53cbbad26293651e",
"info" : "",
"size" : 42,
"okm" : "5eaa1b59bd65ef1a25f255f2b8bf54757c2cac123ccd8ff64e7d0a094c2a8656cd4eb2c4b98b16a0779c",
"result" : "valid",
"flags" : []
},
{
"tcId" : 81,
"comment" : "",
"ikm" : "b1d396c69f14994dc8add0f6e0cde4455677ba9ee95ff84a142295f9177ee629",
"salt" : "7f693304bff77534b8246d832749387ecc0e8daeae11d77d022ca9e362d1",
"info" : "",
"size" : 64,
"okm" : "938ce3bda3308425f80da0093b4f8ccb7afdd75c4b484d8c92e9aad3613a5d0c268539e5bb115b658121ceecadcc367f866c505972665fc4ad0d0664576f6b22",
"result" : "valid",
"flags" : []
},
{
"tcId" : 82,
"comment" : "",
"ikm" : "003d1901a10c062ec44e0f2a94c544b7f53b33f1ea4679fa6e023c2d0a907fcd",
"salt" : "ed86cb8c8ba1c989f9a60a4a82c38be98c70e6218576b292c93fcc18192e",
"info" : "d5d3ef5beb9840d15efe9c778aefe38f1bf7bae3",
"size" : 20,
"okm" : "a9e331f535da580a86a3b4e0cdd5a7dabbae2de9",
"result" : "valid",
"flags" : []
},
{
"tcId" : 83,
"comment" : "",
"ikm" : "02e0647a4b7ccfc0d3ee7ddfe24ce69c02f51cbaa836b96cbc5a9c2885c45599",
"salt" : "f0862f61f2377ca34b76476ae21e331b114c7712aef501a1bf00f7e9cb79",
"info" : "4e9e27d971e76fda614fde15031f6664b97d4786",
"size" : 42,
"okm" : "3b17b93969f5e7567f7b955dc1e6bb20a04543724764cae47de80272505d25383687f4ecebe7797c4e9e",
"result" : "valid",
"flags" : []
},
{
"tcId" : 84,
"comment" : "",
"ikm" : "92bfb7e31e839f109e6622b2c2c4f41ce84c9907172681920e7d90e80e2339bf",
"salt" : "ce869619607f71fde53ef55e18d01d20002e3f91a8b7584190fc6667b8d2",
"info" : "ff36776fc755722ff371f21cfb37a168a2731e99",
"size" : 64,
"okm" : "a4b00d604d54e6d1374499c6588e199a9add616403acce0532eaecab0752b1d49a7beafc47220783577eeba89c5f79ffc21a7cf3a061457e6bc54031037f92f9",
"result" : "valid",
"flags" : []
},
{
"tcId" : 85,
"comment" : "",