Check-in [41034edd37]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:update curl to version 7.68.0
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 41034edd3721ff994b808ea03edfa91110558e52
User & Date: chw 2020-01-14 05:53:32.758
Context
2020-01-15
19:33
more gamecontroller mappings and fix in linux evdev support check-in: a8cd20c93d user: chw tags: trunk
2020-01-14
05:55
merge with trunk check-in: 72a509704e user: chw tags: wtf-8-experiment
05:53
update curl to version 7.68.0 check-in: 41034edd37 user: chw tags: trunk
2020-01-13
16:27
add selected tcl upstream changes check-in: 944800d6ea user: chw tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to jni/curl/CHANGES.
1
2
3
4
5
6
7
8




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































9
10
11
12
13
14
15
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog





































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Version 7.67.0 (5 Nov 2019)

Daniel Stenberg (5 Nov 2019)
- RELEASE-NOTES: synced
  
  The 7.67.0 release









>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.68.0 (8 Jan 2020)

Daniel Stenberg (8 Jan 2020)
- RELEASE-NOTES: 7.68.0

- THANKS: updated with names from the 7.68.0 release

- RELEASE-PROCEDURE: add four future release dates
  
  and remove four past release dates
  
  [skip ci]

Marcel Raad (6 Jan 2020)
- TrackMemory tests: always remove CR before LF
  
  It was removed for output containing ' =' via `s/ =.*//`. With classic
  MinGW, this made lines with `free()` end with CRLF, but lines with e.g.
  `malloc()` end with only LF. The tests expect LF only.
  
  Closes https://github.com/curl/curl/pull/4788

Daniel Stenberg (6 Jan 2020)
- multi.h: move INITIAL_MAX_CONCURRENT_STREAMS from public header
  
  ... to the private multihhandle.h. It is not for public use and it
  wasn't prefixed correctly anyway!
  
  Closes #4790

- file: fix copyright year range
  
  Follow-up to 1b71bc532bd

- curl -w: handle a blank input file correctly
  
  Previously it would end up with an uninitialized memory buffer that
  would lead to a crash or junk getting output.
  
  Added test 1271 to verify.
  
  Reported-by: Brian Carpenter
  Closes #4786

- file: on Windows, refuse paths that start with \\
  
  ... as that might cause an unexpected SMB connection to a given host
  name.
  
  Reported-by: Fernando Muñoz
  CVE-2019-15601
  Bug: https://curl.haxx.se/docs/CVE-2019-15601.html

Jay Satiro (6 Jan 2020)
- CURLOPT_READFUNCTION.3: fix fopen params in example

- CURLOPT_READFUNCTION.3: fix variable name in example
  
  Reported-by: Paul Joyce
  
  Fixes https://github.com/curl/curl/issues/4787

Daniel Stenberg (5 Jan 2020)
- curl:getparameter return error for --http3 if libcurl doesn't support
  
  Closes #4785

- docs: mention CURL_MAX_INPUT_LENGTH restrictions
  
  ... for curl_easy_setopt() and curl_url_set().
  
  [skip ci]
  
  Closes #4783

- curl: properly free mimepost data
  
  ... as it could otherwise leak memory when a transfer failed.
  
  Added test 1293 to verify.
  
  Reported-by: Brian Carpenter
  Fixes #4781
  Closes #4782

- curl: cleanup multi handle on failure
  
  ... to fix memory leak in error path.
  
  Fixes #4772
  Closes #4780
  Reported-by: Brian Carpenter

Marcel Raad (3 Jan 2020)
- lib: fix compiler warnings with `CURL_DISABLE_VERBOSE_STRINGS`
  
  Closes https://github.com/curl/curl/pull/4775

Daniel Stenberg (3 Jan 2020)
- COPYING: it's 2020!
  
  [skip ci]

Jay Satiro (3 Jan 2020)
- [Marc Aldorasi brought this change]

  tests: Fix bounce requests with truncated writes
  
  Prior to this change the swsbounce check in service_connection could
  fail because prevtestno and prevpartno were not set, which would cause
  the wrong response data to be sent to some tests and cause them to fail.
  
  Ref: https://github.com/curl/curl/pull/4717#issuecomment-570240785

Marcel Raad (31 Dec 2019)
- tool: make a few char pointers point to const char instead
  
  These are read-only.
  
  Closes https://github.com/curl/curl/pull/4771

Jay Satiro (31 Dec 2019)
- tests: Change NTLM tests to require SSL
  
  Prior to this change tests that required NTLM feature did not require
  SSL feature.
  
  There are pending changes to cmake builds that will allow enabling NTLM
  in non-SSL builds in Windows. In that case the NTLM auth strings created
  are different from what is expected by the NTLM tests and they fail:
  
  "The issue with NTLM is that previous non-SSL builds would not enable
  NTLM and so the NTLM tests would be skipped."
  
  Assisted-by: marc-groundctl@users.noreply.github.com
  
  Ref: https://github.com/curl/curl/pull/4717#issuecomment-566218729
  
  Closes https://github.com/curl/curl/pull/4768

- [Michael Forney brought this change]

  bearssl: Improve I/O handling
  
  Factor out common I/O loop as bearssl_run_until, which reads/writes TLS
  records until the desired engine state is reached. This is now used for
  the handshake, read, write, and close.
  
  Match OpenSSL SSL_write behavior, and don't return the number of bytes
  written until the corresponding records have been completely flushed
  across the socket. This involves keeping track of the length of data
  buffered into the TLS engine, and assumes that when CURLE_AGAIN is
  returned, the write function will be called again with the same data
  and length arguments. This is the same requirement of SSL_write.
  
  Handle TLS close notify as EOF when reading by returning 0.
  
  Closes https://github.com/curl/curl/pull/4748

- travis: Fix error detection
  
  - Stop using inline shell scripts for before_script and script sections.
  
  Prior to this change Travis could ignore errors from commands in inline
  scripts. I don't understand how or why it happens. This is a workaround.
  
  Assisted-by: Simon Warta
  
  Ref: https://github.com/travis-ci/travis-ci/issues/1066
  
  Fixes https://github.com/curl/curl/issues/3730
  Closes https://github.com/curl/curl/pull/3755

- tool_operate: fix mem leak when failed config parse
  
  Found by fuzzing the config file.
  
  Reported-by: Geeknik Labs
  
  Fixes https://github.com/curl/curl/issues/4767

- [Xiang Xiao brought this change]

  lib: remove erroneous +x file permission on some c files
  
  Modified by commit eb9a604 accidentally.
  
  Closes https://github.com/curl/curl/pull/4756

- [Xiang Xiao brought this change]

  lib: fix warnings found when porting to NuttX
  
  - Undefine DEBUGASSERT in curl_setup_once.h in case it was already
    defined as a system macro.
  
  - Don't compile write32_le in curl_endian unless
    CURL_SIZEOF_CURL_OFF_T > 4, since it's only used by Curl_write64_le.
  
  - Include <arpa/inet.h> in socketpair.c.
  
  Closes https://github.com/curl/curl/pull/4756

- os400: Add missing CURLE error constants
  
  Bug: https://github.com/curl/curl/pull/4754#issuecomment-569126922
  Reported-by: Emil Engler

- CURLOPT_HEADERFUNCTION.3: Document that size is always 1
  
  For compatibility with `fwrite`, the `CURLOPT_HEADERFUNCTION` callback
  is passed two `size_t` parameters which, when multiplied, designate the
  number of bytes of data passed in. In practice, CURL always sets the
  first parameter (`size`) to 1.
  
  This practice is also enshrined in documentation and cannot be changed
  in future. The documentation states that the default callback is
  `fwrite`, which means `fwrite` must be a suitable function for this
  purpose. However, the documentation also states that the callback must
  return the number of *bytes* it successfully handled, whereas ISO C
  `fwrite` returns the number of items (each of size `size`) which it
  wrote. The only way these numbers can be equal is if `size` is 1.
  
  Since `size` is 1 and can never be changed in future anyway, document
  that fact explicitly and let users rely on it.
  
  Reported-by: Frank Gevaerts
  Commit-message-by: Christopher Head
  
  Ref: https://github.com/curl/curl/pull/2787
  
  Fixes https://github.com/curl/curl/issues/4758

- examples/postinmemory.c: Call curl_global_cleanup always
  
  Prior to this change curl_global_cleanup was not called if
  curl_easy_init failed.
  
  Reported-by: kouzhudong@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/4751

Daniel Stenberg (21 Dec 2019)
- url2file.c: fix copyright year
  
  Follow-up to 525787269599b5

- [Rickard Hallerbäck brought this change]

  examples/url2file.c: corrected a comment
  
  The comment was confusing and suggested that setting CURLOPT_NOPROGRESS
  to 0L would both enable and disable debug output at the same time, like
  a Schrödinger's cat of CURLOPTs.
  
  Closes #4745

- HISTORY: OSS-Fuzz started fuzzing libcurl in 2017

- RELEASE-NOTES: synced

Jay Satiro (20 Dec 2019)
- ngtcp2: Support the latest update key callback type
  
  - Remove our cb_update_key in favor of ngtcp2's new
    ngtcp2_crypto_update_key_cb which does the same thing.
  
  Several days ago the ngtcp2_update_key callback function prototype was
  changed in ngtcp2/ngtcp2@42ce09c. Though it would be possible to
  fix up our cb_update_key for that change they also added
  ngtcp2_crypto_update_key_cb which does the same thing so we'll use that
  instead.
  
  Ref: https://github.com/ngtcp2/ngtcp2/commit/42ce09c
  
  Closes https://github.com/curl/curl/pull/4735

Daniel Stenberg (19 Dec 2019)
- sws: search for "Testno:" header uncondtionally if no testno
  
  Even if the initial request line wasn't found. With the fix to 1455, the
  test number is now detected correctly.
  
  (Problem found when running tests in random order.)
  
  Closes #4744

- tests: set LC_ALL in more tests
  
  Follow-up to 23208e330ac0c21
  
  Closes #4743

- test165: set LC_ALL=en_US.UTF-8 too
  
  On my current Debian Unstable with libidn2 2.2.0, I get an error if
  LC_ALL is set to blank. Then curl errors out with:
  
  curl: (3) Failed to convert www.åäö.se to ACE; could not convert string to UTF-8
  
  Closes #4738

- curl.h: add two defines for the "pre ISO C" case
  
  Without this fix, this caused a compilation failure on AIX with IBM xlc
  13.1.3 compiler.
  
  Reported-by: Ram Krushna Mishra
  Fixes #4739
  Closes #4740

- create_conn: prefer multiplexing to using new connections
  
  ... as it would previously prefer new connections rather than
  multiplexing in most conditions! The (now removed) code was a leftover
  from the Pipelining code that was translated wrongly into a
  multiplex-only world.
  
  Reported-by: Kunal Ekawde
  Bug: https://curl.haxx.se/mail/lib-2019-12/0060.html
  Closes #4732

- test1456: remove the use of a fixed local port
  
  Fixup the test to instead not compare the port number. It sometimes
  caused problems like this:
  
  "curl: (45) bind failed with errno 98: Address already in use"
  
  Closes #4733

Jay Satiro (18 Dec 2019)
- CURLOPT_QUOTE.3: fix typos
  
  Prior to this change the EXAMPLE in the QUOTE/PREQUOTE/POSTQUOTE man
  pages would not compile because a variable name was incorrect.
  
  Reported-by: Bylon2@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/4736

- [Gisle Vanem brought this change]

  strerror: Fix compiler warning "empty expression"
  
  - Remove the final semi-colon in the SEC2TXT() macro definition.
  
  Before:  #define SEC2TXT(sec) case sec: txt = #sec; break;
  
  After:   #define SEC2TXT(sec) case sec: txt = #sec; break
  
  Prior to this change SEC2TXT(foo); would generate break;; which caused
  the empty expression warning.
  
  Ref: https://github.com/curl/curl/commit/5b22e1a#r36458547

Daniel Stenberg (18 Dec 2019)
- curl/parseconfig: use curl_free() to free memory allocated by libcurl
  
  Reported-by: bxac on github
  Fixes #4730
  Closes #4731

- curl/parseconfig: fix mem-leak
  
  When looping, first trying '.curlrc' and then '_curlrc', the function
  would not free the first string.
  
  Closes #4731

- CURLOPT_URL.3: "curl supports SMB version 1 (only)"
  
  [skip ci]

- test1270: a basic -w redirect_url test
  
  Closes #4728

- HISTORY: the SMB(S) support landed in 2014

- define: remove HAVE_ENGINE_LOAD_BUILTIN_ENGINES, not used anymore
  
  It is covered by USE_OPENSSL_ENGINE now.
  
  Reported-by: Gisle Vanem
  Bug: https://github.com/curl/curl/commit/87b9337c8f76c21c57b204e88b68c6ecf3bd1ac0#commitcomment-36447951
  
  Closes #4725

- lib: remove ASSIGNWITHINCONDITION exceptions, use our code style
  
  ... even for macros
  
  Reviewed-by: Daniel Gustafsson
  Reviewed-by: Jay Satiro
  Reported-by: Jay Satiro
  Fixes #4683
  Closes #4722

- tests: make sure checksrc runs on header files too

- Revert "checksrc: fix regexp for ASSIGNWITHINCONDITION"
  
  This reverts commit ba82673dac3e8d00a76aa5e3779a0cb80e7442af.
  
  Bug: #4683

- KNOWN_BUGS: TLS session cache doesn't work with TFO
  
  [skip ci]
  Closes #4301

- KNOWN_BUGS: Connection information when using TCP Fast Open
  
  Also point to #4296 for more details
  Closes #4296

- KNOWN_BUGS: LDAP on Windows doesn't work
  
  Closes #4261

- docs: TLS SRP doesn't work with TLS 1.3
  
  Reported-by: sayrer on github
  Closes #4262
  [skip ci]

Dan Fandrich (16 Dec 2019)
- cirrus: Switch to the FreeBSD 12.1 point release & enable more tests.
  
  A few tests are now passing on FreeBSD, so no longer skip them.
  [skip ci]

Daniel Stenberg (16 Dec 2019)
- azure: the macos cmake doesn't need to install cmake
  
   Error: cmake 3.15.5 is already installed
   To upgrade to 3.16.1, run `brew upgrade cmake`.
  
  Closes #4723

Jay Satiro (15 Dec 2019)
- winbuild: Document CURL_STATICLIB requirement for static libcurl
  
  A static libcurl (ie winbuild mode=static) requires that the user define
  CURL_STATICLIB when using it in their application. This is already
  covered in the FAQ and INSTALL.md, but is a pretty important point so
  now it's noted in the BUILD.WINDOWS.txt as well.
  
  Assisted-by: Michael Vittiglio
  
  Closes https://github.com/curl/curl/pull/4721

Daniel Stenberg (15 Dec 2019)
- [Santino Keupp brought this change]

  libssh2: add support for ECDSA and ed25519 knownhost keys
  
  ... if a new enough libssh2 version is present.
  
  Source: https://curl.haxx.se/mail/archive-2019-12/0023.html
  Co-Authored-by: Daniel Stenberg
  Closes #4714

- lib1591: free memory properly on OOM, in the trailers callback
  
  Detected by torture tests.
  
  Closes #4720

- runtests: --repeat=[num] to repeat tests
  
  Closes #4715

- RELEASE-NOTES: synced

- azure: add a torture test on mac
  
  Uses --shallow=25 to keep it small enough to get through in time.
  
  Closes #4712

- multi: free sockhash on OOM
  
  This would otherwise leak memory in the error path.
  
  Detected by torture test 1540.
  
  Closes #4713

Marcel Raad (13 Dec 2019)
- tests: use DoH feature for DoH tests
  
  Previously, http/2 was used instead.
  
  Assisted-by: Jay Satiro
  Closes https://github.com/curl/curl/pull/4692

- hostip: suppress compiler warning
  
  With `--disable-doh --disable-threaded-resolver`, the `dns` parameter
  is not used.
  
  Closes https://github.com/curl/curl/pull/4692

- tests: fix build with `CURL_DISABLE_DOH`
  
  Closes https://github.com/curl/curl/pull/4692

Daniel Stenberg (13 Dec 2019)
- azure: add a torture test
  
  Skipping all FTP tests for speed reasons.
  
  Closes #4697

- azure: make the default build use --enable-debug --enable-werror

- ntlm_wb: fix double-free in OOM
  
  Detected by torture testing test 1310
  
  Closes #4710

Dan Fandrich (13 Dec 2019)
- cirrus: Drop the FreeBSD 10.4 build
  
  Upstream support for 10.4 ended a year ago, and it looks like the image
  is now gone, too.
  [skip ci]

Daniel Stenberg (13 Dec 2019)
- unit1620: fix bad free in OOM
  
  Closes #4709

- unit1609: fix mem-leak in OOM
  
  Closes #4709

- unit1607: fix mem-leak in OOM
  
  Closes #4709

- lib1559: fix mem-leak in OOM
  
  Closes #4709

- lib1557: fix mem-leak in OOM
  
  Closes #4709

- altsvc: make the save function ignore NULL filenames
  
  It might happen in OOM situations. Detected bv torture tests.
  
  Closes #4707

- curl: fix memory leak in OOM in etags logic
  
  Detected by torture tests
  
  Closes #4706

- doh: make it behave when built without proxy support
  
  Reported-by: Marcel Raad
  Bug: https://github.com/curl/curl/pull/4692#issuecomment-564115734
  
  Closes #4704

- curl: improved cleanup in upload error path
  
  Memory leak found by torture test 58
  
  Closes #4705

- mailmap: fix Andrew Ishchuk

- travis: make torture use --shallow=40
  
  As a first step to enable it to run over a more diverse set of tests in
  a reasonable time.

- runtests: introduce --shallow to reduce huge torture tests
  
  When set, shallow mode limits runtests -t to make no more than NUM fails
  per test case. If more are found, it will randomly discard entries until
  the number is right. The random seed can also be set.
  
  This is particularly useful when running MANY tests as then most torture
  failures will already fail the same functions over and over and make the
  total operation painfully tedious.
  
  Closes #4699

- conncache: CONNECT_ONLY connections assumed always in-use
  
  This makes them never to be considered "the oldest" to be discarded when
  reaching the connection cache limit. The reasoning here is that
  CONNECT_ONLY is primarily used in combination with using the
  connection's socket post connect and since that is used outside of
  curl's knowledge we must assume that it is in use until explicitly
  closed.
  
  Reported-by: Pavel Pavlov
  Reported-by: Pavel Löbl
  Fixes #4426
  Fixes #4369
  Closes #4696

- [Gisle Vanem brought this change]

  vtls: make BearSSL possible to set with CURL_SSL_BACKEND
  
  Ref: https://github.com/curl/curl/commit/9b879160df01e7ddbb4770904391d3b74114302b#commitcomment-36355622
  
  Closes #4698

- RELEASE-NOTES: synced

- travis: remove "coverage", make it "torture"
  
  The coveralls service and test coverage numbers are just too unreliable.
  Removed badge from README.md as well.
  
  Fixes #4694
  Closes #4695

- azure: add libssh2 and cmake macos builds
  
  Removed the macos libssh2 build from travis
  
  Closes #4686

- curl: use errorf() better
  
  Change series of error outputs to use errorf().
  
  Only errors that are due to mistakes in command line option usage should
  use helpf(), other types of errors in the tool should rather use
  errorf().
  
  Closes #4691

Jay Satiro (9 Dec 2019)
- [Marc Hoersken brought this change]

  tests: make it possible to set executable extensions
  
  This enables the use of Windows Subsystem for Linux (WSL) to run the
  testsuite against Windows binaries while using Linux servers.
  
  This commit introduces the following environment variables:
  - CURL_TEST_EXE_EXT: set the executable extension for all components
  - CURL_TEST_EXE_EXT_TOOL: set it for the curl tool only
  - CURL_TEST_EXE_EXT_SSH: set it for the SSH tools only
  
  Later testcurl.pl could be adjusted to make use of those variables.
  - CURL_TEST_EXE_EXT_SRV: set it for the test servers only
  
  (This is one of several commits to support use of WSL for the tests.)
  
  Closes https://github.com/curl/curl/pull/3899

- [Marc Hoersken brought this change]

  tests: fix permissions of ssh keys in WSL
  
  Keys created on Windows Subsystem for Linux (WSL) require it for some
  reason.
  
  (This is one of several commits to support use of WSL for the tests.)
  
  Ref: https://github.com/curl/curl/pull/3899

- [Marc Hoersken brought this change]

  tests: use \r\n for log messages in WSL
  
  Bash in Windows Subsystem for Linux (WSL) requires it for some reason.
  
  (This is one of several commits to support use of WSL for the tests.)
  
  Ref: https://github.com/curl/curl/pull/3899

- [Andrew Ishchuk brought this change]

  winbuild: Define CARES_STATICLIB when WITH_CARES=static
  
  When libcurl is built with MODE=static, c-ares is forced into static
  linkage too. That doesn't happen when MODE=dll so linker would break
  over undefined symbols.
  
  closes https://github.com/curl/curl/pull/4688

Daniel Stenberg (9 Dec 2019)
- conn: always set bits.close with connclose()
  
  Closes #4690

- cirrus: enable clang sanitizers on freebsd 13

- conncache: fix multi-thread use of shared connection cache
  
  It could accidentally let the connection get used by more than one
  thread, leading to double-free and more.
  
  Reported-by: Christopher Reid
  Fixes #4544
  Closes #4557

- azure: add a vanilla macos build
  
  Closes #4685

- curl: make the etag load logic work without fseek
  
  The fseek()s were unnecessary and caused Coverity warning CID 1456554
  
  Closes #4681

- mailmap: Mohammad Hasbini

- [Mohammad Hasbini brought this change]

  docs: fix some typos
  
  Closes #4680

- RELEASE-NOTES: synced

Jay Satiro (5 Dec 2019)
- lib: fix some loose ends for recently added CURLSSLOPT_NO_PARTIALCHAIN
  
  Add support for CURLSSLOPT_NO_PARTIALCHAIN in CURLOPT_PROXY_SSL_OPTIONS
  and OS400 package spec.
  
  Also I added the option to the NameValue list in the tool even though it
  isn't exposed as a command-line option (...yet?). (NameValue stringizes
  the option name for the curl cmd -> libcurl source generator)
  
  Follow-up to 564d88a which added CURLSSLOPT_NO_PARTIALCHAIN.
  
  Ref: https://github.com/curl/curl/pull/4655

- setopt: Fix ALPN / NPN user option when built without HTTP2
  
  - Stop treating lack of HTTP2 as an unknown option error result for
    CURLOPT_SSL_ENABLE_ALPN and CURLOPT_SSL_ENABLE_NPN.
  
  Prior to this change it was impossible to disable ALPN / NPN if libcurl
  was built without HTTP2. Setting either option would result in
  CURLE_UNKNOWN_OPTION and the respective internal option would not be
  set. That was incorrect since ALPN and NPN are used independent of
  HTTP2.
  
  Reported-by: Shailesh Kapse
  
  Fixes https://github.com/curl/curl/issues/4668
  Closes https://github.com/curl/curl/pull/4672

Daniel Stenberg (5 Dec 2019)
- etag: allow both --etag-compare and --etag-save in same cmdline
  
  Fixes #4669
  Closes #4678

Marcel Raad (5 Dec 2019)
- curl_setup: fix `CURLRES_IPV6` condition
  
  Move the definition of `CURLRES_IPV6` to before undefining
  `HAVE_GETADDRINFO`. Regression from commit 67a08dca27a which caused
  some tests to fail and others to be skipped with c-ares.
  
  Fixes https://github.com/curl/curl/issues/4673
  Closes https://github.com/curl/curl/pull/4677

Daniel Stenberg (5 Dec 2019)
- test342: make it return a 304 as the tag matches

Peter Wu (4 Dec 2019)
- CMake: add support for building with the NSS vtls backend
  
  Options are cross-checked with configure.ac and acinclude.m4.
  Tested on Arch Linux, untested on other platforms like Windows or macOS.
  
  Closes #4663
  Reviewed-by: Kamil Dudka

Daniel Stenberg (4 Dec 2019)
- azure: add more builds
  
  ... removed two from travis (that now runs on azure instead)
  
  Closes #4671

- CURLOPT_VERBOSE.3: see also ERRORBUFFER

- hostip4.c: bump copyright year range

Marcel Raad (3 Dec 2019)
- configure: enable IPv6 support without `getaddrinfo`
  
  This makes it possible to recognize and connect to literal IPv6
  addresses when `getaddrinfo` is not available, which is already the
  case for the CMake build. This affects e.g. classic MinGW because it
  still targets Windows 2000 by default, where `getaddrinfo` is not
  available, but general IPv6 support is.
  
  Instead of checking for `getaddrinfo`, check for `sockaddr_in6` as the
  CMake build does.
  
  Closes https://github.com/curl/curl/pull/4662

- curl_setup: disable IPv6 resolver without `getaddrinfo`
  
  Also, use `CURLRES_IPV6` only for actual DNS resolution, not for IPv6
  address support. This makes it possible to connect to IPv6 literals by
  setting `ENABLE_IPV6` even without `getaddrinfo` support. It also fixes
  the CMake build when using the synchronous resolver without
  `getaddrinfo` support.
  
  Closes https://github.com/curl/curl/pull/4662

Daniel Stenberg (3 Dec 2019)
- github action/azure pipeline: run 'make test-nonflaky' for tests
  
  To match travis and give more info on failures.

- openssl: CURLSSLOPT_NO_PARTIALCHAIN can disable partial cert chains
  
  Closes #4655

- openssl: set X509_V_FLAG_PARTIAL_CHAIN
  
  Have intermediate certificates in the trust store be treated as
  trust-anchors, in the same way as self-signed root CA certificates
  are. This allows users to verify servers using the intermediate cert
  only, instead of needing the whole chain.
  
  Other TLS backends already accept partial chains.
  
  Reported-by: Jeffrey Walton
  Bug: https://curl.haxx.se/mail/lib-2019-11/0094.html

- curl: show better error message when no homedir is found
  
  Reported-by: Vlastimil Ovčáčík
  Fixes #4644
  Closes #4665

- OPENSOCKETFUNCTION.3: correct the purpose description
  
  Reported-by: Jeff Mears
  Bug: https://curl.haxx.se/mail/lib-2019-12/0007.html
  
  Closes #4667

- [Peter Wu brought this change]

  travis: do not use OVERRIDE_CC or OVERRIDE_CXX if empty
  
  Fixes the macOS builds where OVERRIDE_CC and OVERRIDE_CXX are not set.
  
  Reported-by: Jay Satiro
  Fixes #4659
  Closes #4661
  Closes #4664

- azure-pipelines: fix the test script

- Azure Pipelines: initial CI setup
  
  [skip ci]

- docs: add "added: 7.68.0" to the --etag-* docs

- copyright: fix the year ranges for two files
  
  Follow-up to 9c1806ae

Jay Satiro (1 Dec 2019)
- build: Disable Visual Studio warning "conditional expression is constant"
  
  - Disable warning C4127 "conditional expression is constant" globally
    in curl_setup.h for when building with Microsoft's compiler.
  
  This mainly affects building with the Visual Studio project files found
  in the projects dir.
  
  Prior to this change the cmake and winbuild build systems already
  disabled 4127 globally for when building with Microsoft's compiler.
  Also, 4127 was already disabled for all build systems in the limited
  circumstance of the WHILE_FALSE macro which disabled the warning
  specifically for while(0). This commit removes the WHILE_FALSE macro and
  all other cruft in favor of disabling globally in curl_setup.
  
  Background:
  
  We have various macros that cause 0 or 1 to be evaluated, which would
  cause warning C4127 in Visual Studio. For example this causes it:
  
      #define Curl_resolver_asynch() 1
  
  Full behavior is not clearly defined and inconsistent across versions.
  However it is documented that since VS 2015 Update 3 Microsoft has
  addressed this somewhat but not entirely, not warning on while(true) for
  example.
  
  Prior to this change some C4127 warnings occurred when I built with
  Visual Studio using the generated projects in the projects dir.
  
  Closes https://github.com/curl/curl/pull/4658

- openssl: retrieve reported LibreSSL version at runtime
  
  - Retrieve LibreSSL runtime version when supported (>= 2.7.1).
  
  For earlier versions we continue to use the compile-time version.
  
  Ref: https://man.openbsd.org/OPENSSL_VERSION_NUMBER.3
  
  Closes https://github.com/curl/curl/pull/2425

- strerror: Add Curl_winapi_strerror for Win API specific errors
  
  - In all code call Curl_winapi_strerror instead of Curl_strerror when
    the error code is known to be from Windows GetLastError.
  
  Curl_strerror prefers CRT error codes (errno) over Windows API error
  codes (GetLastError) when the two overlap. When we know the error code
  is from GetLastError it is more accurate to prefer the Windows API error
  messages.
  
  Reported-by: Richard Alcock
  
  Fixes https://github.com/curl/curl/issues/4550
  Closes https://github.com/curl/curl/pull/4581

Daniel Stenberg (2 Dec 2019)
- global_init: undo the "intialized" bump in case of failure
  
  ... so that failures in the global init function don't count as a
  working init and it can then be called again.
  
  Reported-by: Paul Groke
  Fixes #4636
  Closes #4653

- parsedate: offer a getdate_capped() alternative
  
  ... and use internally. This function will return TIME_T_MAX instead of
  failure if the parsed data is found to be larger than what can be
  represented. TIME_T_MAX being the largest value curl can represent.
  
  Reviewed-by: Daniel Gustafsson
  Reported-by: JanB on github
  Fixes #4152
  Closes #4651

- docs: add more references to curl_multi_poll
  
  Fixes #4643
  Closes #4652

- sha256: bump the copyright year range
  
  Follow-up from 66e21520f

Daniel Gustafsson (28 Nov 2019)
- curl_setup_once: consistently use WHILE_FALSE in macros
  
  The WHILE_FALSE construction is used to avoid compiler warnings in
  macro constructions. This fixes a few instances where it was not
  used in order to keep the code consistent.
  
  Closes #4649
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (28 Nov 2019)
- [Steve Holme brought this change]

  http_ntlm: Remove duplicate NSS initialisation
  
  Given that this is performed by the NTLM code there is no need to
  perform the initialisation in the HTTP layer. This also keeps the
  initialisation the same as the SASL based protocols and also fixes a
  possible compilation issue if both NSS and SSPI were to be used as
  multiple SSL backends.
  
  Reviewed-by: Kamil Dudka
  Closes #3935

Daniel Gustafsson (28 Nov 2019)
- checksrc: fix regexp for ASSIGNWITHINCONDITION
  
  The regexp looking for assignments within conditions was too greedy
  and matched a too long string in the case of multiple conditionals
  on the same line. This is basically only a problem in single line
  macros, and the code which exemplified this was essentially:
  
    do { if((x) != NULL) { x = NULL; } } while(0)
  
  ..where the final parenthesis of while(0) matched the regexp, and
  the legal assignment in the block triggered the warning. Fix by
  making the regexp less greedy by matching for the tell-tale signs
  of the if statement ending.
  
  Also remove the one occurrence where the warning was disabled due
  to a construction like the above, where the warning didn't apply
  when fixed.
  
  Closes #4647
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (28 Nov 2019)
- RELEASE-NOTES: synced

- [Maros Priputen brought this change]

  curl: two new command line options for etags
  
  --etag-compare and --etag-save
  
  Suggested-by: Paul Hoffman
  Fixes #4277
  Closes #4543

Daniel Gustafsson (28 Nov 2019)
- docs: fix typos

Daniel Stenberg (28 Nov 2019)
- mailmap: Niall O'Reilly's name

- [Niall O'Reilly brought this change]

  doh: use dedicated probe slots
  
  ... to easier allow additional DNS transactions.
  
  Closes #4629

- travis: build ngtcp2 with --enable-lib-only
  
  ... makes it skip the examples and other stuff we don't neeed.
  
  Closes #4646

- [David Benjamin brought this change]

  ngtcp2: fix thread-safety bug in error-handling
  
  ERR_error_string(NULL) should never be called. It places the error in a
  global buffer, which is not thread-safe. Use ERR_error_string_n with a
  local buffer instead.
  
  Closes #4645

- travis: export the CC/CXX variables when set
  
  Suggested-by: Peter Wu
  Fixes #4637
  Closes #4640

Marcel Raad (26 Nov 2019)
- dist: add error-codes.pl
  
  Follow-up to commit 74f441c6d31.
  This should fix test 1175 when run via the daily source tarballs.
  
  Closes https://github.com/curl/curl/pull/4638

Daniel Stenberg (26 Nov 2019)
- [John Schroeder brought this change]

  curl: fix --upload-file . hangs if delay in STDIN
  
  Attempt to unpause a busy read in the CURLOPT_XFERINFOFUNCTION.
  
  When uploading from stdin in non-blocking mode, a delay in reading
  the stream (EAGAIN) causes curl to pause sending data
  (CURL_READFUNC_PAUSE).  Prior to this change, a busy read was
  detected and unpaused only in the CURLOPT_WRITEFUNCTION handler.
  This change performs the same busy read handling in a
  CURLOPT_XFERINFOFUNCTION handler.
  
  Fixes #2051
  Closes #4599
  Reported-by: bdry on github

- [John Schroeder brought this change]

  XFERINFOFUNCTION: support CURL_PROGRESSFUNC_CONTINUE
  
  (also for PROGRESSFUNCTION)
  
  By returning this value from the callback, the internal progress
  function call is still called afterward.
  
  Closes #4599

- [Michael Forney brought this change]

  TLS: add BearSSL vtls implementation
  
  Closes #4597

- curl_multi_wakeup.3: add example and AVAILABILITY
  
  Reviewed-by: Gergely Nagy
  Closes #4635

- [Gergely Nagy brought this change]

  multi: add curl_multi_wakeup()
  
  This commit adds curl_multi_wakeup() which was previously in the TODO
  list under the curl_multi_unblock name.
  
  On some platforms and with some configurations this feature might not be
  available or can fail, in these cases a new error code
  (CURLM_WAKEUP_FAILURE) is returned from curl_multi_wakeup().
  
  Fixes #4418
  Closes #4608

Jay Satiro (24 Nov 2019)
- [Xiaoyin Liu brought this change]

  schannel: fix --tls-max for when min is --tlsv1 or default
  
  Prior to this change schannel ignored --tls-max (CURL_SSLVERSION_MAX_
  macros) when --tlsv1 (CURL_SSLVERSION_TLSv1) or default TLS
  (CURL_SSLVERSION_DEFAULT), using a max of TLS 1.2 always.
  
  Closes https://github.com/curl/curl/pull/4633

- checksrc.bat: Add a check for vquic and vssh directories
  
  Ref: https://github.com/curl/curl/pull/4607

- projects: Fix Visual Studio projects SSH builds
  
  - Generate VQUIC and VSSH filenames in Visual Studio project files.
  
  Prior to this change generated Visual Studio project configurations that
  enabled SSH did not build properly. Broken since SSH files were moved to
  lib/vssh 3 months ago in 5b2d703.
  
  Fixes https://github.com/curl/curl/issues/4492
  Fixes https://github.com/curl/curl/issues/4630
  Closes https://github.com/curl/curl/pull/4607

Daniel Stenberg (23 Nov 2019)
- RELEASE-NOTES: synced

Jay Satiro (22 Nov 2019)
- openssl: Revert to less sensitivity for SYSCALL errors
  
  - Disable the extra sensitivity except in debug builds (--enable-debug).
  
  - Improve SYSCALL error message logic in ossl_send and ossl_recv so that
    "No error" / "Success" socket error text isn't shown on SYSCALL error.
  
  Prior to this change 0ab38f5 (precedes 7.67.0) increased the sensitivity
  of OpenSSL's SSL_ERROR_SYSCALL error so that abrupt server closures were
  also considered errors. For example, a server that does not send a known
  protocol termination point (eg HTTP content length or chunked encoding)
  _and_ does not send a TLS termination point (close_notify alert) would
  cause an error if it closed the connection.
  
  To be clear that behavior made it into release build 7.67.0
  unintentionally. Several users have reported it as an issue.
  
  Ultimately the idea is a good one, since it can help prevent against a
  truncation attack. Other SSL backends may already behave similarly (such
  as Windows native OS SSL Schannel). However much more of our user base
  is using OpenSSL and there is a mass of legacy users in that space, so I
  think that behavior should be partially reverted and then rolled out
  slowly.
  
  This commit changes the behavior so that the increased sensitivity is
  disabled in all curl builds except curl debug builds (DEBUGBUILD). If
  after a period of time there are no major issues then it can be enabled
  in dev and release builds with the newest OpenSSL (1.1.1+), since users
  using the newest OpenSSL are the least likely to have legacy problems.
  
  Bug: https://github.com/curl/curl/issues/4409#issuecomment-555955794
  Reported-by: Bjoern Franke
  
  Fixes https://github.com/curl/curl/issues/4624
  Closes https://github.com/curl/curl/pull/4623

- [Daniel Stenberg brought this change]

  openssl: improve error message for SYSCALL during connect
  
  Reported-by: Paulo Roberto Tomasi
  Bug: https://curl.haxx.se/mail/archive-2019-11/0005.html
  
  Closes https://github.com/curl/curl/pull/4593

Daniel Stenberg (22 Nov 2019)
- test1175: verify symbols-in-versions and libcurl-errors.3 in sync
  
  Closes #4628

- include: make CURLE_HTTP3 use a new error code
  
  To avoid potential issues with error code reuse.
  
  Reported-by: Christoph M. Becker
  Assisted-by: Dan Fandrich
  Fixes #4601
  Closes #4627

- bump: next release will be 7.68.0

- curl: add --parallel-immediate
  
  Starting with this change when doing parallel transfers, without this
  option set, curl will prefer to create new transfers multiplexed on an
  existing connection rather than creating a brand new one.
  
  --parallel-immediate can be set to tell curl to prefer to use new
  connections rather than to wait and try to multiplex.
  
  libcurl-wise, this means that curl will set CURLOPT_PIPEWAIT by default
  on parallel transfers.
  
  Suggested-by: Tom van der Woerdt
  Closes #4500

Daniel Gustafsson (20 Nov 2019)
- [Victor Magierski brought this change]

  docs: fix typos
  
  Change 'experiemental' to 'experimental'.
  
  Closes #4618
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Jay Satiro (18 Nov 2019)
- projects: Fix Visual Studio wolfSSL configurations
  
  - s/USE_CYASSL/USE_WOLFSSL/
  
  - Remove old compatibility macros.
  
  Follow-up to 1c6c59a from several months ago when CyaSSL named symbols
  were renamed to wolfSSL. The wolfSSL library was formerly named CyaSSL
  and we kept using their old name for compatibility reasons, until
  earlier this year.

Daniel Stenberg (18 Nov 2019)
- RELEASE-NOTES: synced

- [Javier Blazquez brought this change]

  ngtcp2: use overflow buffer for extra HTTP/3 data
  
  Fixes #4525
  Closes #4603

- altsvc: bump to h3-24
  
  ... as both ngtcp2 and quiche now support that in their master branches
  
  Closes #4604

- ngtcp2: free used resources on disconnect
  
  Fixes #4614
  Closes #4615

- ngtcp2: handle key updates as ngtcp2 master branch tells us
  
  Reviewed-by: Tatsuhiro Tsujikawa
  
  Fixes #4612
  Closes #4613

Jay Satiro (17 Nov 2019)
- [Gergely Nagy brought this change]

  multi: Fix curl_multi_poll wait when extra_fds && !extra_nfds
  
  Prior to this change:
  
  The check if an extra wait is necessary was based not on the
  number of extra fds but on the pointer.
  
  If a non-null pointer was given in extra_fds, but extra_nfds
  was zero, then the wait was skipped even though poll was not
  called.
  
  Closes https://github.com/curl/curl/pull/4610

- lib: Move lib/ssh.h -> lib/vssh/ssh.h
  
  Follow-up to 5b2d703 which moved ssh source files to vssh.
  
  Closes https://github.com/curl/curl/pull/4609

Daniel Stenberg (16 Nov 2019)
- [Andreas Falkenhahn brought this change]

  INSTALL.md: provide Android build instructions
  
  Closes #4606

- [Niall O'Reilly brought this change]

  doh: improced both encoding and decoding
  
  Improved estimation of expected_len and updated related comments;
  increased strictness of QNAME-encoding, adding error detection for empty
  labels and names longer than the overall limit; avoided treating DNAME
  as unexpected;
  
  updated unit test 1655 with more thorough set of proofs and tests
  
  Closes #4598

- ngtcp2: increase QUIC window size when data is consumed
  
  Assisted-by: Javier Blazquez
  Ref #4525 (partial fix)
  Closes #4600

- [Melissa Mears brought this change]

  config-win32: cpu-machine-OS for Windows on ARM
  
  Define the OS macro properly for Windows on ARM builds.  Also, we might
  as well add the GCC-style IA-64 macro.
  
  Closes #4590

- examples: add multi-poll.c
  
  Show how curl_multi_poll() makes it even easier to use the multi
  interface.
  
  Closes #4596

- multi_poll: avoid busy-loop when called without easy handles attached
  
  Fixes #4594
  Closes #4595
  Reported-by: 3dyd on github

- curl: fix -T globbing
  
  Regression from e59371a4936f8 (7.67.0)
  
  Added test 490, 491 and 492 to verify the functionality.
  
  Reported-by: Kamil Dudka
  Reported-by: Anderson Sasaki
  
  Fixes #4588
  Closes #4591

- HISTORY: added cmake, HTTP/3 and parallel downloads with curl

- quiche: reject headers in the wrong order
  
  Pseudo header MUST come before regular headers or cause an error.
  
  Reported-by: Cynthia Coan
  Fixes #4571
  Closes #4584

- openssl: prevent recursive function calls from ctx callbacks
  
  Follow the pattern of many other callbacks.
  
  Ref: #4546
  Closes #4585

- CURL-DISABLE: initial docs for the CURL_DISABLE_* defines
  
  The disable-scan script used in test 1165 is extended to also verify
  that the docs cover all used defines and all defines offered by
  configure.
  
  Reported-by: SLDiggie on github
  Fixes #4545
  Closes #4587

- remove_handle: clear expire timers after multi_done()
  
  Since 59041f0, a new timer might be set in multi_done() so the clearing
  of the timers need to happen afterwards!
  
  Reported-by: Max Kellermann
  Fixes #4575
  Closes #4583

Marcel Raad (10 Nov 2019)
- test1558: use double slash after file:
  
  Classic MinGW / MSYS 1 doesn't support `MSYS2_ARG_CONV_EXCL`, so this
  test unnecessarily failed when using `file:/` instead of `file:///`.
  
  Closes https://github.com/curl/curl/pull/4554

Daniel Stenberg (10 Nov 2019)
- pause: avoid updating socket if done was already called
  
  ... avoids unnecesary recursive risk when the transfer is already done.
  
  Reported-by: Richard Bowker
  Fixes #4563
  Closes #4574

Jay Satiro (9 Nov 2019)
- strerror: Fix an error looking up some Windows error strings
  
  - Use FORMAT_MESSAGE_IGNORE_INSERTS to ignore format specifiers in
    Windows error strings.
  
  Since we are not in control of the error code we don't know what
  information may be needed by the error string's format specifiers.
  
  Prior to this change Windows API error strings which contain specifiers
  (think specifiers like similar to printf specifiers) would not be shown.
  The FormatMessage Windows API call which turns a Windows error code into
  a string could fail and set error ERROR_INVALID_PARAMETER if that error
  string contained a format specifier. FormatMessage expects a va_list for
  the specifiers, unless inserts are ignored in which case no substitution
  is attempted.
  
  Ref: https://devblogs.microsoft.com/oldnewthing/20071128-00/?p=24353

- [r-a-sattarov brought this change]

  system.h: fix for MCST lcc compiler
  
  Fixed build by MCST lcc compiler on MCST Elbrus 2000 architecture and do
  some code cleanup.
  
  e2k (Elbrus 2000) - this is VLIW/EPIC architecture, like Intel Itanium
  architecture.
  
  Ref: https://en.wikipedia.org/wiki/Elbrus_2000
  
  Closes https://github.com/curl/curl/pull/4576

Daniel Stenberg (8 Nov 2019)
- TODO: curl_multi_unblock
  
  Closes #4418

- TODO: Run web-platform-tests url tests
  
  Closes #4477

- TODO: 1.4 alt-svc sharing
  
  Closes #4476

- test1560: require IPv6 for IPv6 aware URL parsing
  
  The URL parser function can't reject a bad IPv6 address properly when
  curl was built without IPv6 support.
  
  Reported-by: Marcel Raad
  Fixes #4556
  Closes #4572

- checksrc: repair the copyrightyear check
  
  - Consider a modified file to be committed this year.
  
  - Make the travis CHECKSRC also do COPYRIGHTYEAR scan in examples and
    includes
  
  - Ignore 0 parents when getting latest commit date of file.
  
  since in the CI we're dealing with a truncated repo of last 50 commits,
  the file's most recent commit may not be available. when this happens
  git log and rev-list show the initial commit (ie first commit not to be
  truncated) but that's incorrect so ignore it.
  
  Ref: https://github.com/curl/curl/pull/4547
  
  Closes https://github.com/curl/curl/pull/4549
  
  Co-authored-by: Jay Satiro

- copyrights: fix copyright year range
  
  .. because checksrc's copyright year check stopped working.
  
  Ref: https://github.com/curl/curl/pull/4547
  
  Closes https://github.com/curl/curl/pull/4549

- RELEASE-NOTES: synced

- curlver: bump to 7.67.1

- mailmap: fixup Massimiliano Fantuzzi

- scripts/contributors: make committers get included too
  
  in addition to authors

Jay Satiro (8 Nov 2019)
- [Massimiliano Fantuzzi brought this change]

  configure: fix typo in help text
  
  Closes https://github.com/curl/curl/pull/4570

Daniel Stenberg (7 Nov 2019)
- [Christian Schmitz brought this change]

  ntlm: USE_WIN32_CRYPTO check removed to get USE_NTLM2SESSION set
  
  Closes #3704

Jay Satiro (6 Nov 2019)
- [Wyatt O'Day brought this change]

  build: fix for CURL_DISABLE_DOH
  
  Fixes https://github.com/curl/curl/issues/4565
  Closes https://github.com/curl/curl/pull/4566

- [Leonardo Taccari brought this change]

  configure: avoid unportable `==' test(1) operator
  
  Closes https://github.com/curl/curl/pull/4567

Version 7.67.0 (5 Nov 2019)

Daniel Stenberg (5 Nov 2019)
- RELEASE-NOTES: synced
  
  The 7.67.0 release

602
603
604
605
606
607
608
609
610
611
612
613
614
615
616

  docs: add note on failed handles not being counted by curl_multi_perform
  
  Closes #4446

- CURLMOPT_MAX_CONCURRENT_STREAMS.3: fix SEE ALSO typo

- [Niall brought this change]

  ESNI: initial build/setup
  
  Closes #4011

- RELEASE-NOTES: synced








|







2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156

  docs: add note on failed handles not being counted by curl_multi_perform
  
  Closes #4446

- CURLMOPT_MAX_CONCURRENT_STREAMS.3: fix SEE ALSO typo

- [Niall O'Reilly brought this change]

  ESNI: initial build/setup
  
  Closes #4011

- RELEASE-NOTES: synced

5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
  
  smtp.c:1221:29: warning: adding 'int' to a string does not append to the
  string [-Wstring-plus-int]
        eob = strdup(SMTP_EOB + 2);
              ~~~~~~~~~~~~~~~~^~~~
  
  Closes https://github.com/curl/curl/pull/3729

Marcel Raad (4 Apr 2019)
- VS projects: use Unicode for VC10+
  
  All Windows APIs have been natively UTF-16 since Windows 2000 and the
  non-Unicode variants are just wrappers around them. Only Windows 9x
  doesn't understand Unicode without the UnicoWS DLL. As later Visual
  Studio versions cannot target Windows 9x anyway, using the ANSI API
  doesn't really have any benefit there.
  
  This avoids issues like KNOWN_BUGS 6.5.
  
  Ref: https://github.com/curl/curl/issues/2120
  Closes https://github.com/curl/curl/pull/3720

Daniel Gustafsson (3 Apr 2019)
- RELEASE-NOTES: synced
  
  Bump the version in progress to 7.64.2, if we merge any "change"
  before the cut-off date we can update the version.

- [Tim Rühsen brought this change]

  documentation: Fix several typos
  
  Closes #3724
  Reviewed-by: Jakub Zakrzewski
  Reviewed-by: Daniel Gustafsson

Jay Satiro (2 Apr 2019)
- [Mert Yazıcıoğlu brought this change]

  vauth/oauth2: Fix OAUTHBEARER token generation
  
  OAUTHBEARER tokens were incorrectly generated in a format similar to
  XOAUTH2 tokens. These changes make OAUTHBEARER tokens conform to the
  RFC7628.
  
  Fixes: #2487
  Reported-by: Paolo Mossino
  
  Closes https://github.com/curl/curl/pull/3377

Marcel Raad (2 Apr 2019)
- tool_cb_wrt: fix bad-function-cast warning
  
  Commit f5bc578f4cdfdc6c708211dfc2962a0e9d79352d reintroduced the
  warning fixed in commit 2f5f31bb57d68b54e03bffcd9648aece1fe564f8.
  Extend fhnd's scope and reuse that variable instead of calling
  _get_osfhandle a second time to fix the warning again.
  
  Closes https://github.com/curl/curl/pull/3718

- VC15 project: remove MinimalRebuild
  
  Already done in commit d5cfefd0ea8e331b884186bff484210fad36e345 for the
  library project, but I forgot the tool project template. Now also
  removed for that.

Dan Fandrich (1 Apr 2019)
- cirrus: Customize the disabled tests per FreeBSD version
  
  Try to run as many test cases as possible on each OS version.
  12.0 passes 13 more tests than the older versions, so we might as well
  run them.

Daniel Stenberg (1 Apr 2019)
- tool_help: include <strings.h> for strcasecmp
  
  Reported-by: Wyatt O'Day
  Fixes #3715
  Closes #3716

Daniel Gustafsson (31 Mar 2019)
- scripts: fix typos

Dan Fandrich (28 Mar 2019)
- travis: allow builds on branches named "ci"
  
  This allows a way to test changes other than through PRs.

Daniel Stenberg (27 Mar 2019)
- [Brad Spencer brought this change]

  resolve: apply Happy Eyeballs philosophy to parallel c-ares queries
  
  Closes #3699

- multi: improved HTTP_1_1_REQUIRED handling
  
  Make sure to downgrade to 1.1 even when we get this HTTP/2 stream error
  on first flight.
  
  Reported-by: niner on github
  Fixes #3696
  Closes #3707

- [Leonardo Taccari brought this change]

  configure: avoid unportable `==' test(1) operator
  
  Closes #3709

Version 7.64.1 (27 Mar 2019)

Daniel Stenberg (27 Mar 2019)
- RELEASE: 7.64.1

- Revert "ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set"
  
  This reverts commit 9130ead9fcabdb6b8fbdb37c0b38be2d326adb00.
  
  Fixes #3708

- [Christian Schmitz brought this change]

  ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set
  
  Closes #3704

Jay Satiro (26 Mar 2019)
- tool_cb_wrt: fix writing to Windows null device NUL
  
  - Improve console detection.
  
  Prior to this change WriteConsole could be called to write to a handle
  that may not be a console, which would cause an error. This issue is
  limited to character devices that are not also consoles such as the null
  device NUL.
  
  Bug: https://github.com/curl/curl/issues/3175#issuecomment-439068724
  Reported-by: Gisle Vanem

- CURLMOPT_PIPELINING.3: fix typo

Daniel Stenberg (25 Mar 2019)
- TODO: config file parsing
  
  Closes #3698

Jay Satiro (24 Mar 2019)
- os400: Disable Alt-Svc by default since it's experimental
  
  Follow-up to 520f0b4 which added Alt-Svc support and enabled it by
  default for OS400. Since the feature is experimental, it should be
  disabled by default.
  
  Ref: https://github.com/curl/curl/commit/520f0b4#commitcomment-32792332
  Ref: https://curl.haxx.se/mail/lib-2019-02/0008.html
  
  Closes https://github.com/curl/curl/pull/3688

Dan Fandrich (24 Mar 2019)
- tests: Fixed XML validation errors in some test files.

- tests: Fix some incorrect precheck error messages.
  
  [ci skip]

Daniel Stenberg (22 Mar 2019)
- curl_url.3: this is not experimental anymore

- travis: bump the used wolfSSL version to 4.0.0
  
  Test 311 is now fine, leaving only 313 (CRL) disabled.
  
  Test 313 details can be found here:
  https://github.com/wolfSSL/wolfssl/issues/1546
  
  Closes #3697

Daniel Gustafsson (22 Mar 2019)
- lib: Fix typos in comments

David Woodhouse (20 Mar 2019)
- openssl: if cert type is ENG and no key specified, key is ENG too
  
  Fixes #3692
  Closes #3692

Daniel Stenberg (20 Mar 2019)
- sectransp: tvOS 11 is required for ALPN support
  
  Reported-by: nianxuejie on github
  Assisted-by: Nick Zitzmann
  Assisted-by: Jay Satiro
  Fixes #3689
  Closes #3690

- test1541: threaded connection sharing
  
  The threaded-shared-conn.c example turned into test case. Only works if
  pthread was detected.
  
  An attempt to detect future regressions such as e3a53e3efb942a5
  
  Closes #3687

Patrick Monnerat (17 Mar 2019)
- os400: alt-svc support.
  
  Although experimental, enable it in the platform config file.
  Upgrade ILE/RPG binding.

Daniel Stenberg (17 Mar 2019)
- conncache: use conn->data to know if a transfer owns it
  
  - make sure an already "owned" connection isn't returned unless
    multiplexed.
  
  - clear ->data when returning the connection to the cache again
  
  Regression since 7.62.0 (probably in commit 1b76c38904f0)
  
  Bug: https://curl.haxx.se/mail/lib-2019-03/0064.html
  
  Closes #3686

- RELEASE-NOTES: synced

- [Chris Young brought this change]

  configure: add --with-amissl
  
  AmiSSL is an Amiga native library which provides a wrapper over OpenSSL.
  It also requires all programs using it to use bsdsocket.library
  directly, rather than accessing socket functions through clib, which
  libcurl was not necessarily doing previously. Configure will now check
  for the headers and ensure they are included if found.
  
  Closes #3677

- [Chris Young brought this change]

  vtls: rename some of the SSL functions
  
  ... in the SSL structure as AmiSSL is using macros for the socket API
  functions.

- [Chris Young brought this change]

  tool_getpass: termios.h is present on AmigaOS 3, but no tcgetattr/tcsetattr

- [Chris Young brought this change]

  tool_operate: build on AmigaOS

- makefile: make checksrc and hugefile commands "silent"
  
  ... to match the style already used for compiling, linking
  etc. Acknowledges 'make V=1' to enable verbose.
  
  Closes #3681

- curl.1: --user and --proxy-user are hidden from ps output
  
  Suggested-by: Eric Curtin
  Improved-by: Dan Fandrich
  Ref: #3680
  
  Closes #3683

- curl.1: mark the argument to --cookie as <data|filename>
  
  From a discussion in #3676
  
  Suggested-by: Tim Rühsen
  
  Closes #3682

Dan Fandrich (14 Mar 2019)
- fuzzer: Only clone the latest fuzzer code, for speed.

Daniel Stenberg (14 Mar 2019)
- [Dominik Hölzl brought this change]

  Negotiate: fix for HTTP POST with Negotiate
  
  * Adjusted unit tests 2056, 2057
  * do not generally close connections with CURLAUTH_NEGOTIATE after every request
  * moved negotiatedata from UrlState to connectdata
  * Added stream rewind logic for CURLAUTH_NEGOTIATE
  * introduced negotiatedata::GSS_AUTHDONE and negotiatedata::GSS_AUTHSUCC
  * Consider authproblem state for CURLAUTH_NEGOTIATE
  * Consider reuse_forbid for CURLAUTH_NEGOTIATE
  * moved and adjusted negotiate authentication state handling from
    output_auth_headers into Curl_output_negotiate
  * Curl_output_negotiate: ensure auth done is always set
  * Curl_output_negotiate: Set auth done also if result code is
    GSS_S_CONTINUE_NEEDED/SEC_I_CONTINUE_NEEDED as this result code may
    also indicate the last challenge request (only works with disabled
    Expect: 100-continue and CURLOPT_KEEP_SENDING_ON_ERROR -> 1)
  * Consider "Persistent-Auth" header, detect if not present;
    Reset/Cleanup negotiate after authentication if no persistent
    authentication
  * apply changes introduced with #2546 for negotiate rewind logic
  
  Fixes #1261
  Closes #1975

- [Marc Schlatter brought this change]

  http: send payload when (proxy) authentication is done
  
  The check that prevents payload from sending in case of authentication
  doesn't check properly if the authentication is done or not.
  
  They're cases where the proxy respond "200 OK" before sending
  authentication challenge. This change takes care of that.
  
  Fixes #2431
  Closes #3669

- file: fix "Checking if unsigned variable 'readcount' is less than zero."
  
  Pointed out by codacy
  
  Closes #3672

- memdebug: log pointer before freeing its data
  
  Coverity warned for two potentional "Use after free" cases. Both are false
  positives because the memory wasn't used, it was only the actual pointer
  value that was logged.
  
  The fix still changes the order of execution to avoid the warnings.
  
  Coverity CID 1443033 and 1443034
  
  Closes #3671

- RELEASE-NOTES: synced

Marcel Raad (12 Mar 2019)
- travis: actually use updated compiler versions
  
  For the Linux builds, GCC 8 and 7 and clang 7 were installed, but the
  new GCC versions were only used for the coverage build and for building
  nghttp2, while the new clang version was not used at all.
  
  BoringSSL needs to use the default GCC as it respects CC, but not CXX,
  so it would otherwise pass gcc 8 options to g++ 4.8 and fail.
  
  Also remove GCC 7, it's not needed anymore.
  
  Ref: https://docs.travis-ci.com/user/languages/c/#c11c11-and-beyond-and-toolchain-versioning
  
  Closes https://github.com/curl/curl/pull/3670

- travis: update clang to version 7
  
  Closes https://github.com/curl/curl/pull/3670

Jay Satiro (11 Mar 2019)
- [Andre Guibert de Bruet brought this change]

  examples/externalsocket: add missing close socket calls
  
  .. and for Windows also call WSACleanup since we call WSAStartup.
  
  The example is to demonstrate handling the socket independently of
  libcurl. In this case libcurl is not responsible for creating, opening
  or closing the socket, it is handled by the application (our example).
  
  Fixes https://github.com/curl/curl/pull/3663

Daniel Stenberg (11 Mar 2019)
- multi: removed unused code for request retries
  
  This code was once used for the non multi-interface using code path, but
  ever since easy_perform was turned into a wrapper around the multi
  interface, this code path never runs.
  
  Closes #3666

Jay Satiro (11 Mar 2019)
- doh: inherit some SSL options from user's easy handle
  
  - Inherit SSL options for the doh handle but not SSL client certs,
    SSL ALPN/NPN, SSL engine, SSL version, SSL issuer cert,
    SSL pinned public key, SSL ciphers, SSL id cache setting,
    SSL kerberos or SSL gss-api settings.
  
  - Fix inheritance of verbose setting.
  
  - Inherit NOSIGNAL.
  
  There is no way for the user to set options for the doh (DNS-over-HTTPS)
  handles and instead we inherit some options from the user's easy handle.
  
  My thinking for the SSL options not inherited is they are most likely
  not intended by the user for the DOH transfer. I did inherit insecure
  because I think that should still be in control of the user.
  
  Prior to this change doh did not work for me because CAINFO was not
  inherited. Also verbose was set always which AFAICT was a bug (#3660).
  
  Fixes https://github.com/curl/curl/issues/3660
  Closes https://github.com/curl/curl/pull/3661

Daniel Stenberg (9 Mar 2019)
- test331: verify set-cookie for dotless host name
  
  Reproduced bug #3649
  Closes #3659

- Revert "cookies: extend domain checks to non psl builds"
  
  This reverts commit 3773de378d48b06c09931e44dca4d274d0bfdce0.
  
  Regression shipped in 7.64.0
  Fixes #3649

- memdebug: make debug-specific functions use curl_dbg_ prefix
  
  To not "collide" or use up the regular curl_ name space. Also makes them
  easier to detect in helper scripts.
  
  Closes #3656

- cmdline-opts/proxytunnel.d: the option tunnnels all protocols
  
  Clarify the language and simplify.
  
  Reported-by: Daniel Lublin
  Closes #3658

- KNOWN_BUGS: Client cert (MTLS) issues with Schannel
  
  Closes #3145

- ROADMAP: updated to some more current things to work on

- tests: fix multiple may be used uninitialized warnings

- RELEASE-NOTES: synced

- source: fix two 'nread' may be used uninitialized warnings
  
  Both seem to be false positives but we don't like warnings.
  
  Closes #3646

- gopher: remove check for path == NULL
  
  Since it can't be NULL and it makes Coverity believe we lack proper NULL
  checks. Verified by test 659, landed in commit 15401fa886b.
  
  Pointed out by Coverity CID 1442746.
  
  Assisted-by: Dan Fandrich
  Fixes #3617
  Closes #3642

- examples: only include <curl/curl.h>
  
  That's the only public curl header we should encourage use of.
  
  Reviewed-by: Marcel Raad
  Closes #3645

- ssh: loop the state machine if not done and not blocking
  
  If the state machine isn't complete, didn't fail and it didn't return
  due to blocking it can just as well loop again.
  
  This addresses the problem with SFTP directory listings where we would
  otherwise return back to the parent and as the multi state machine
  doesn't have any code for using CURLM_CALL_MULTI_PERFORM for as long the
  doing phase isn't complete, it would return out when in reality there
  was more data to deal with.
  
  Fixes #3506
  Closes #3644

Jay Satiro (5 Mar 2019)
- multi: support verbose conncache closure handle
  
  - Change closure handle to receive verbose setting from the easy handle
    most recently added via curl_multi_add_handle.
  
  The closure handle is a special easy handle used for closing cached
  connections. It receives limited settings from the easy handle most
  recently added to the multi handle. Prior to this change that did not
  include verbose which was a problem because on connection shutdown
  verbose mode was not acknowledged.
  
  Ref: https://github.com/curl/curl/pull/3598
  
  Co-authored-by: Daniel Stenberg
  
  Closes https://github.com/curl/curl/pull/3618

Daniel Stenberg (4 Mar 2019)
- CURLU: fix NULL dereference when used over proxy
  
  Test 659 verifies
  
  Also fixed the test 658 name
  
  Closes #3641

- altsvc_out: check the return code from Curl_gmtime
  
  Pointed out by Coverity, CID 1442956.
  
  Closes #3640

- docs/ALTSVC.md: docs describing the approach
  
  Closes #3498

- alt-svc: add a travis build

- alt-svc: add test 355 and 356 to verify with command line curl

- alt-svc: the curl command line bits

- alt-svc: the libcurl bits

- travis: add build using gnutls
  
  Closes #3637

- RELEASE-NOTES: synced

- [Simon Legner brought this change]

  scripts/completion.pl: also generate fish completion file
  
  This is the renamed script formerly known as zsh.pl
  
  Closes #3545

- gnutls: remove call to deprecated gnutls_compression_get_name
  
  It has been deprecated by GnuTLS since a year ago and now causes build
  warnings.
  
  Ref: https://gitlab.com/gnutls/gnutls/commit/b0041897d2846737f5fb0f
  Docs: https://www.gnutls.org/manual/html_node/Compatibility-API.html
  
  Closes #3636

Jay Satiro (2 Mar 2019)
- system_win32: move win32_init here from easy.c
  
  .. since system_win32 is a more appropriate location for the functions
  and to extern the globals.
  
  Ref: https://github.com/curl/curl/commit/ca597ad#r32446578
  Reported-by: Gisle Vanem
  
  Closes https://github.com/curl/curl/pull/3625

Daniel Stenberg (1 Mar 2019)
- curl_easy_duphandle.3: clarify that a duped handle has no shares
  
  Reported-by: Sara Golemon
  
  Fixes #3592
  Closes #3634

- 10-at-a-time.c: fix too long line

- [Arnaud Rebillout brought this change]

  examples: various fixes in ephiperfifo.c
  
  The main change here is the timer value that was wrong, it was given in
  usecs (ms * 1000), while the itimerspec struct wants nsecs (ms * 1000 *
  1000). This resulted in the callback being invoked WAY TOO OFTEN.
  
  As a quick check you can run this command before and after applying this
  commit:
  
      # shell 1
      ./ephiperfifo 2>&1 | tee ephiperfifo.log
      # shell 2
      echo http://hacking.elboulangero.com > hiper.fifo
  
  Then just compare the size of the logs files.
  
  Closes #3633
  Fixes #3632
  Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>

- urldata: simplify bytecounters
  
  - no need to have them protocol specific
  
  - no need to set pointers to them with the Curl_setup_transfer() call
  
  - make Curl_setup_transfer() operate on a transfer pointer, not
    connection
  
  - switch some counters from long to the more proper curl_off_t type
  
  Closes #3627

- examples/10-at-a-time.c: improve readability and simplify
  
   - use better variable names to explain their purposes
   - convert logic to curl_multi_wait()

- threaded-resolver: shutdown the resolver thread without error message
  
  When a transfer is done, the resolver thread will be brought down. That
  could accidentally generate an error message in the error buffer even
  though this is not an error situationand the transfer would still return
  OK.  An application that still reads the error buffer could find a
  "Could not resolve host: [host name]" message there and get confused.
  
  Reported-by: Michael Schmid
  Fixes #3629
  Closes #3630

- [Ԝеѕ brought this change]

  docs: update max-redirs.d phrasing
  
  clarify redir - "in absurdum" doesn't seem to make sense in this context
  
  Closes #3631

- ssh: fix Condition '!status' is always true
  
  in the same sftp_done function in both SSH backends. Simplify them
  somewhat.
  
  Pointed out by Codacy.
  
  Closes #3628

- test578: make it read data from the correct test

- Curl_easy: remove req.maxfd - never used!
  
  Introduced in 8b6314ccfb, but not used anymore in current code. Unclear
  since when.
  
  Closes #3626

- http: set state.infilesize when sending formposts
  
  Without it set, we would unwillingly triger the "HTTP error before end
  of send, stop sending" condition even if the entire POST body had been
  sent (since it wouldn't know the expected size) which would
  unnecessarily log that message and close the connection when it didn't
  have to.
  
  Reported-by: Matt McClure
  Bug: https://curl.haxx.se/mail/archive-2019-02/0023.html
  Closes #3624

- INSTALL: refer to the current TLS library names and configure options

- FAQ: minor updates and spelling fixes

- GOVERNANCE.md: minor spelling fixes

- Secure Transport: no more "darwinssl"
  
  Everyone calls it Secure Transport, now we do too.
  
  Reviewed-by: Nick Zitzmann
  
  Closes #3619

Marcel Raad (27 Feb 2019)
- AppVeyor: add classic MinGW build
  
  But use the MSYS2 shell rather than the default MSYS shell because of
  POSIX path conversion issues. Classic MinGW is only available on the
  Visual Studio 2015 image.
  
  Closes https://github.com/curl/curl/pull/3623

- AppVeyor: add MinGW-w64 build
  
  Add a MinGW-w64 build using CMake's MSYS Makefiles generator.
  Use the Visual Studio 2015 image as it has GCC 8, while the
  Visual Studio 2017 image only has GCC 7.2.
  
  Closes https://github.com/curl/curl/pull/3623

Daniel Stenberg (27 Feb 2019)
- cookies: only save the cookie file if the engine is enabled
  
  Follow-up to 8eddb8f4259.
  
  If the cookieinfo pointer is NULL there really is nothing to save.
  
  Without this fix, we got a problem when a handle was using shared object
  with cookies and is told to "FLUSH" it to file (which worked) and then
  the share object was removed and when the easy handle was closed just
  afterwards it has no cookieinfo and no cookies so it decided to save an
  empty jar (overwriting the file just flushed).
  
  Test 1905 now verifies that this works.
  
  Assisted-by: Michael Wallner
  Assisted-by: Marcel Raad
  
  Closes #3621

- [DaVieS brought this change]

  cacertinmem.c: use multiple certificates for loading CA-chain
  
  Closes #3421

- urldata: convert bools to bitfields and move to end
  
  This allows the compiler to pack and align the structs better in
  memory. For a rather feature-complete build on x86_64 Linux, gcc 8.1.2
  makes the Curl_easy struct 4.9% smaller. From 6312 bytes to 6000.
  
  Removed an unused struct field.
  
  No functionality changes.
  
  Closes #3610

- [Don J Olmstead brought this change]

  curl.h: use __has_declspec_attribute for shared builds
  
  Closes #3616

- curl: display --version features sorted alphabetically
  
  Closes #3611

- runtests: detect "schannel" as an alias for "winssl"
  
  Follow-up to 180501cb02
  
  Reported-by: Marcel Raad
  Fixes #3609
  Closes #3620

Marcel Raad (26 Feb 2019)
- AppVeyor: update to Visual Studio 2017
  
  Switch all Visual Studio 2015 builds to Visual Studio 2017. It's not a
  moving target anymore as the last update, Update 9, has been released.
  
  Closes https://github.com/curl/curl/pull/3606

- AppVeyor: switch VS 2015 builds to VS 2017 image
  
  The Visual Studio 2017 image has Visual Studio 2015 and 2017 installed.
  
  Closes https://github.com/curl/curl/pull/3606

- AppVeyor: explicitly select worker image
  
  Currently, we're using the default Visual Studio 2015 image for
  everything.
  
  Closes https://github.com/curl/curl/pull/3606

Daniel Stenberg (26 Feb 2019)
- strerror: make the strerror function use local buffers
  
  Instead of using a fixed 256 byte buffer in the connectdata struct.
  
  In my build, this reduces the size of the connectdata struct by 11.8%,
  from 2160 to 1904 bytes with no functionality or performance loss.
  
  This also fixes a bug in schannel's Curl_verify_certificate where it
  called Curl_sspi_strerror when it should have called Curl_strerror for
  string from GetLastError. the only effect would have been no text or the
  wrong text being shown for the error.
  
  Co-authored-by: Jay Satiro
  
  Closes #3612

- [Michael Wallner brought this change]

  cookies: fix NULL dereference if flushing cookies with no CookieInfo set
  
  Regression brought by a52e46f3900fb0 (shipped in 7.63.0)
  
  Closes #3613

Marcel Raad (26 Feb 2019)
- AppVeyor: re-enable test 500
  
  It's passing now.
  
  Closes https://github.com/curl/curl/pull/3615

- AppVeyor: remove redundant builds
  
  Remove the Visual Studio 2012 and 2013 builds as they add little value.
  
  Ref: https://github.com/curl/curl/pull/3606
  Closes https://github.com/curl/curl/pull/3614

Daniel Stenberg (25 Feb 2019)
- RELEASE-NOTES: synced

- [Bernd Mueller brought this change]

  OpenSSL: add support for TLS ASYNC state
  
  Closes #3591

Jay Satiro (25 Feb 2019)
- [Michael Felt brought this change]

  acinclude: add additional libraries to check for LDAP support
  
  - Add an additional check for LDAP that also checks for OpenSSL since
    on AIX those libraries may be required to link LDAP properly.
  
  Fixes https://github.com/curl/curl/issues/3595
  Closes https://github.com/curl/curl/pull/3596

- [Giorgos Oikonomou brought this change]

  schannel: support CALG_ECDH_EPHEM algorithm
  
  Add support for Ephemeral elliptic curve Diffie-Hellman key exchange
  algorithm option when selecting ciphers. This became available on the
  Win10 SDK.
  
  Closes https://github.com/curl/curl/pull/3608

Daniel Stenberg (24 Feb 2019)
- multi: call multi_done on connect timeouts
  
  Failing to do so would make the CURLINFO_TOTAL_TIME timeout to not get
  updated correctly and could end up getting reported to the application
  completely wrong (way too small).
  
  Reported-by: accountantM on github
  Fixes #3602
  Closes #3605

- examples: remove recursive calls to curl_multi_socket_action
  
  From within the timer callbacks. Recursive is problematic for several
  reasons. They should still work, but this way the examples and the
  documentation becomes simpler. I don't think we need to encourage
  recursive calls.
  
  Discussed in #3537
  Closes #3601

Marcel Raad (23 Feb 2019)
- configure: remove CURL_CHECK_FUNC_FDOPEN call
  
  The macro itself has been removed in commit
  11974ac859c5d82def59e837e0db56fef7f6794e.
  
  Closes https://github.com/curl/curl/pull/3604

Daniel Stenberg (23 Feb 2019)
- wolfssl: stop custom-adding curves
  
  since wolfSSL PR https://github.com/wolfSSL/wolfssl/pull/717 (shipped in
  wolfSSL 3.10.2 and later) it sends these curves by default already.
  
  Pointed-out-by: David Garske
  
  Closes #3599

- configure: remove the unused fdopen macro
  
  and the two remaining #ifdefs for it
  
  Closes #3600

Jay Satiro (22 Feb 2019)
- url: change conn shutdown order to unlink data as last step
  
  - Split off connection shutdown procedure from Curl_disconnect into new
    function conn_shutdown.
  
  - Change the shutdown procedure to close the sockets before
    disassociating the transfer.
  
  Prior to this change the sockets were closed after disassociating the
  transfer so SOCKETFUNCTION wasn't called since the transfer was already
  disassociated. That likely came about from recent work started in
  Jan 2019 (#3442) to separate transfers from connections.
  
  Bug: https://curl.haxx.se/mail/lib-2019-02/0101.html
  Reported-by: Pavel Löbl
  
  Closes https://github.com/curl/curl/issues/3597
  Closes https://github.com/curl/curl/pull/3598

Marcel Raad (22 Feb 2019)
- Fix strict-prototypes GCC warning
  
  As seen in the MinGW autobuilds. Caused by commit
  f26bc29cfec0be84c67cf74065cf8e5e78fd68b7.

Dan Fandrich (21 Feb 2019)
- tests: Fixed XML validation errors in some test files.

Daniel Stenberg (20 Feb 2019)
- TODO: Allow SAN names in HTTP/2 server push
  
  Suggested-by: Nicolas Grekas

- RELEASE-NOTES: synced

- curl: remove MANUAL from -M output
  
  ... and remove it from the dist tarball. It has served its time, it
  barely gets updated anymore and "everything curl" is now convering all
  this document once tried to include, and does it more and better.
  
  In the compressed scenario, this removes ~15K data from the binary,
  which is 25% of the -M output.
  
  It remains in the git repo for now for as long as the web site builds a
  page using that as source. It renders poorly on the site (especially for
  mobile users) so its not even good there.
  
  Closes #3587

- http2: verify :athority in push promise requests
  
  RFC 7540 says we should verify that the push is for an "authoritative"
  server. We make sure of this by only allowing push with an :athority
  header that matches the host that was asked for in the URL.
  
  Fixes #3577
  Reported-by: Nicolas Grekas
  Bug: https://curl.haxx.se/mail/lib-2019-02/0057.html
  Closes #3581

- singlesocket: fix the 'sincebefore' placement
  
  The variable wasn't properly reset within the loop and thus could remain
  set for sockets that hadn't been set before and miss notifying the app.
  
  This is a follow-up to 4c35574 (shipped in curl 7.64.0)
  
  Reported-by: buzo-ffm on github
  Detected-by: Jan Alexander Steffens
  Fixes #3585
  Closes #3589

- connection: never reuse CONNECT_ONLY conections
  
  and make CONNECT_ONLY conections never reuse any existing ones either.
  
  Reported-by: Pavel Löbl
  Bug: https://curl.haxx.se/mail/lib-2019-02/0064.html
  Closes #3586

Patrick Monnerat (19 Feb 2019)
- cli tool: fix mime post with --disable-libcurl-option configure option
  
  Reported-by: Marcel Raad
  Fixes #3576
  Closes #3583

Daniel Stenberg (19 Feb 2019)
- x509asn1: cleanup and unify code layout
  
  - rename 'n' to buflen in functions, and use size_t for them. Don't pass
    in negative buffer lengths.
  
  - move most function comments to above the function starts like we use
    to
  
  - remove several unnecessary typecasts (especially of NULL)
  
  Reviewed-by: Patrick Monnerat
  Closes #3582

- curl_multi_remove_handle.3: use at any time, just not from within callbacks
  
  [ci skip]

- http: make adding a blank header thread-safe
  
  Previously the function would edit the provided header in-place when a
  semicolon is used to signify an empty header. This made it impossible to
  use the same set of custom headers in multiple threads simultaneously.
  
  This approach now makes a local copy when it needs to edit the string.
  
  Reported-by: d912e3 on github
  Fixes #3578
  Closes #3579

- unit1651: survive curl_easy_init() fails

- [Frank Gevaerts brought this change]

  rand: Fix a mismatch between comments in source and header.
  
  Reported-by: Björn Stenberg <bjorn@haxx.se>
  Closes #3584

Patrick Monnerat (18 Feb 2019)
- x509asn1: replace single char with an array
  
  Although safe in this context, using a single char as an array may
  cause invalid accesses to adjacent memory locations.
  
  Detected by Coverity.

Daniel Stenberg (18 Feb 2019)
- examples/http2-serverpush: add some sensible error checks
  
  To avoid NULL pointer dereferences etc in the case of problems.
  
  Closes #3580

Jay Satiro (18 Feb 2019)
- easy: fix win32 init to work without CURL_GLOBAL_WIN32
  
  - Change the behavior of win32_init so that the required initialization
    procedures are not affected by CURL_GLOBAL_WIN32 flag.
  
  libcurl via curl_global_init supports initializing for win32 with an
  optional flag CURL_GLOBAL_WIN32, which if omitted was meant to stop
  Winsock initialization. It did so internally by skipping win32_init()
  when that flag was set. Since then win32_init() has been expanded to
  include required initialization routines that are separate from
  Winsock and therefore must be called in all cases. This commit fixes
  it so that CURL_GLOBAL_WIN32 only controls the optional win32
  initialization (which is Winsock initialization, according to our doc).
  
  The only users affected by this change are those that don't pass
  CURL_GLOBAL_WIN32 to curl_global_init. For them this commit removes the
  risk of a potential crash.
  
  Ref: https://github.com/curl/curl/pull/3573
  
  Fixes https://github.com/curl/curl/issues/3313
  Closes https://github.com/curl/curl/pull/3575

Daniel Gustafsson (17 Feb 2019)
- cookie: Add support for cookie prefixes
  
  The draft-ietf-httpbis-rfc6265bis-02 draft, specify a set of prefixes
  and how they should affect cookie initialization, which has been
  adopted by the major browsers. This adds support for the two prefixes
  defined, __Host- and __Secure, and updates the testcase with the
  supplied examples from the draft.
  
  Closes #3554
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- mbedtls: release sessionid resources on error
  
  If mbedtls_ssl_get_session() fails, it may still have allocated
  memory that needs to be freed to avoid leaking. Call the library
  API function to release session resources on this errorpath as
  well as on Curl_ssl_addsessionid() errors.
  
  Closes: #3574
  Reported-by: Michał Antoniak <M.Antoniak@posnet.com>
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Patrick Monnerat (16 Feb 2019)
- cli tool: refactor encoding conversion sequence for switch case fallthrough.

- version.c: silent scan-build even when librtmp is not enabled

Daniel Stenberg (15 Feb 2019)
- RELEASE-NOTES: synced

- Curl_now: figure out windows version in win32_init
  
  ... and avoid use of static variables that aren't thread safe.
  
  Fixes regression from e9ababd4f5a (present in the 7.64.0 release)
  
  Reported-by: Paul Groke
  Fixes #3572
  Closes #3573

Marcel Raad (15 Feb 2019)
- unit1307: just fail without FTP support
  
  I missed to check this in with commit
  71786c0505926aaf7e9b2477b2fb7ee16a915ec6, which only disabled the test.
  This fixes the actual linker error.
  
  Closes https://github.com/curl/curl/pull/3568

Daniel Stenberg (15 Feb 2019)
- travis: enable valgrind for the iconv tests too
  
  Closes #3571

- travis: add scan-build
  
  Closes #3564

- examples/sftpuploadresume: Value stored to 'result' is never read
  
  Detected by scan-build

- examples/http2-upload: cleaned up
  
  Fix scan-build warnings, no globals, no silly handle scan. Also remove
  handles from the multi before cleaning up.

- examples/http2-download: cleaned up
  
  To avoid scan-build warnings and global variables.

- examples/postinmemory: Potential leak of memory pointed to by 'chunk.memory'
  
  Detected by scan-build

- examples/httpcustomheader: Value stored to 'res' is never read
  
  Detected by scan-build

- examples: remove superfluous null-pointer checks
  
  in ftpget, ftpsget and sftpget, so that scan-build stops warning for
  potential NULL pointer dereference below!
  
  Detected by scan-build

- strip_trailing_dot: make sure NULL is never used for strlen
  
  scan-build warning: Null pointer passed as an argument to a 'nonnull'
  parameter

- [Jay Satiro brought this change]

  connection_check: restore original conn->data after the check
  
  - Save the original conn->data before it's changed to the specified
    data transfer for the connection check and then restore it afterwards.
  
  This is a follow-up to 38d8e1b 2019-02-11.
  
  History:
  
  It was discovered a month ago that before checking whether to extract a
  dead connection that that connection should be associated with a "live"
  transfer for the check (ie original conn->data ignored and set to the
  passed in data). A fix was landed in 54b201b which did that and also
  cleared conn->data after the check. The original conn->data was not
  restored, so presumably it was thought that a valid conn->data was no
  longer needed.
  
  Several days later it was discovered that a valid conn->data was needed
  after the check and follow-up fix was landed in bbae24c which partially
  reverted the original fix and attempted to limit the scope of when
  conn->data was changed to only when pruning dead connections. In that
  case conn->data was not cleared and the original conn->data not
  restored.
  
  A month later it was discovered that the original fix was somewhat
  correct; a "live" transfer is needed for the check in all cases
  because original conn->data could be null which could cause a bad deref
  at arbitrary points in the check. A fix was landed in 38d8e1b which
  expanded the scope to all cases. conn->data was not cleared and the
  original conn->data not restored.
  
  A day later it was discovered that not restoring the original conn->data
  may lead to busy loops in applications that use the event interface, and
  given this observation it's a pretty safe assumption that there is some
  code path that still needs the original conn->data. This commit is the
  follow-up fix for that, it restores the original conn->data after the
  connection check.
  
  Assisted-by: tholin@users.noreply.github.com
  Reported-by: tholin@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/3542
  Closes #3559

- memdebug: bring back curl_mark_sclose
  
  Used by debug builds with NSS.
  
  Reverted from 05b100aee247bb

Patrick Monnerat (14 Feb 2019)
- transfer.c: do not compute length of undefined hex buffer.
  
  On non-ascii platforms, the chunked hex header was measured for char code
  conversion length, even for chunked trailers that do not have an hex header.
  In addition, the efective length is already known: use it.
  Since the hex length can be zero, only convert if needed.
  
  Reported by valgrind.

Daniel Stenberg (14 Feb 2019)
- KNOWN_BUGS: Cannot compile against a static build of OpenLDAP
  
  Closes #2367

Patrick Monnerat (14 Feb 2019)
- x509asn1: "Dereference of null pointer"
  
  Detected by scan-build (false positive).

Daniel Stenberg (14 Feb 2019)
- configure: show features as well in the final summary
  
  Closes #3569

- KNOWN_BUGS: curl compiled on OSX 10.13 failed to run on OSX 10.10
  
  Closes #2905

- KNOWN_BUGS: Deflate error after all content was received
  
  Closes #2719

- gssapi: fix deprecated header warnings
  
  Heimdal includes on FreeBSD spewed out lots of them. Less so now.
  
  Closes #3566

- TODO: Upgrade to websockets
  
  Closes #3523

- TODO: cmake test suite improvements
  
  Closes #3109

Patrick Monnerat (13 Feb 2019)
- curl: "Dereference of null pointer"
  
  Rephrase to satisfy scan-build.

Marcel Raad (13 Feb 2019)
- unit1307: require FTP support
  
  This test doesn't link without FTP support after
  fc7ab4835b5fd09d0a6f57000633bb6bb6edfda1, which made Curl_fnmatch
  unavailable without FTP support.
  
  Closes https://github.com/curl/curl/pull/3565

Daniel Stenberg (13 Feb 2019)
- TODO: TFO support on Windows
  
  Nobody works on this now.
  
  Closes #3378

- multi: Dereference of null pointer
  
  Mostly a false positive, but this makes the code easier to read anyway.
  
  Detected by scan-build.
  
  Closes #3563

- urlglob: Argument with 'nonnull' attribute passed null
  
  Detected by scan-build.

Jay Satiro (12 Feb 2019)
- schannel: restore some debug output but only for debug builds
  
  Follow-up to 84c10dc from earlier today which wrapped a lot of the noisy
  debug output in DEBUGF but omitted a few lines.
  
  Ref: https://github.com/curl/curl/commit/84c10dc#r32292900

- examples/crawler: Fix the Accept-Encoding setting
  
  - Pass an empty string to CURLOPT_ACCEPT_ENCODING to use the default
    supported encodings.
  
  Prior to this change the specific encodings of gzip and deflate were set
  but there's no guarantee they'd be supported by the user's libcurl.

Daniel Stenberg (12 Feb 2019)
- mime: put the boundary buffer into the curl_mime struct
  
  ... instead of allocating it separately and point to it. It is
  fixed-size and always used for each part.
  
  Closes #3561

- schannel: be quiet
  
  Convert numerous infof() calls into debug-build only messages since they
  are annoyingly verbose for regular applications. Removed a few.
  
  Bug: https://curl.haxx.se/mail/lib-2019-02/0027.html
  Reported-by: Volker Schmid
  Closes #3552

- [Romain Geissler brought this change]

  Curl_resolv: fix a gcc -Werror=maybe-uninitialized warning
  
  Closes #3562

- http2: multi_connchanged() moved from multi.c, only used for h2
  
  Closes #3557

- curl: "Function call argument is an uninitialized value"
  
  Follow-up to cac0e4a6ad14b42471eb
  
  Detected by scan-build
  Closes #3560

- pretransfer: don't strlen() POSTFIELDS set for GET requests
  
  ... since that data won't be used in the request anyway.
  
  Fixes #3548
  Reported-by: Renaud Allard
  Close #3549

- multi: remove verbose "Expire in" ... messages
  
  Reported-by: James Brown
  Bug: https://curl.haxx.se/mail/archive-2019-02/0013.html
  Closes #3558

- mbedtls: make it build even if MBEDTLS_VERSION_C isn't set
  
  Reported-by: MAntoniak on github
  Fixes #3553
  Closes #3556

Daniel Gustafsson (12 Feb 2019)
- non-ascii.c: fix typos in comments
  
  Fix two occurrences of s/convers/converts/ spotted while reading code.

Daniel Stenberg (12 Feb 2019)
- fnmatch: disable if FTP is disabled
  
  Closes #3551

- curl_path: only enabled for SSH builds

- [Frank Gevaerts brought this change]

  tests: add stderr comparison to the test suite
  
  The code is more or less copied from the stdout comparison code, maybe
  some better reuse is possible.
  
  test 1457 is adjusted to make the output actually match (by using --silent)
  test 506 used <stderr> without actually needing it, so that <stderr> block is removed
  
  Closes #3536

Patrick Monnerat (11 Feb 2019)
- cli tool: do not use mime.h private structures.
  
  Option -F generates an intermediate representation of the mime structure
  that is used later to create the libcurl mime structure and generate
  the --libcurl statements.
  
  Reported-by: Daniel Stenberg
  Fixes #3532
  Closes #3546

Daniel Stenberg (11 Feb 2019)
- curlver: bump to 7.64.1-dev

- RELEASE-NOTES: synced
  
  and bump the version in progress to 7.64.1. If we merge any "change"
  before the cut-off date, we update again.

Daniel Gustafsson (11 Feb 2019)
- curl: follow-up to 3f16990ec84
  
  Commit 3f16990ec84cc4b followed-up a bug in b49652ac66cc0 but was
  inadvertently introducing a new bug in the ternary expression.
  
  Close #3555
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- dns: release sharelock as soon as possible
  
  There is no benefit to holding the data sharelock when freeing the
  addrinfo in case it fails, so ensure releaseing it as soon as we can
  rather than holding on to it. This also aligns the code with other
  consumers of sharelocks.
  
  Closes #3516
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (11 Feb 2019)
- curl: follow-up to b49652ac66cc0
  
  On FreeBSD, return non-zero on error otherwise zero.
  
  Reported-by: Marcel Raad

- multi: (void)-prefix when ignoring return values
  
  ... and added braces to two function calls which fixes warnings if they
  are replace by empty macros at build-time.

- curl: fix FreeBSD compiler warning in the --xattr code
  
  Closes #3550

- connection_check: set ->data to the transfer doing the check
  
  The http2 code for connection checking needs a transfer to use. Make
  sure a working one is set before handler->connection_check() is called.
  
  Reported-by: jnbr on github
  Fixes #3541
  Closes #3547

- hostip: make create_hostcache_id avoid alloc + free
  
  Closes #3544

- scripts/singleuse: script to use to track single-use functions
  
  That is functions that are declared global but are not used from outside
  of the file in which it is declared. Such functions should be made
  static or even at times be removed.
  
  It also verifies that all used curl_ prefixed functions are "blessed"
  
  Closes #3538

- cleanup: make local functions static
  
  urlapi: turn three local-only functions into statics
  
  conncache: make conncache_find_first_connection static
  
  multi: make detach_connnection static
  
  connect: make getaddressinfo static
  
  curl_ntlm_core: make hmac_md5 static
  
  http2: make two functions static
  
  http: make http_setup_conn static
  
  connect: make tcpnodelay static
  
  tests: make UNITTEST a thing to mark functions with, so they can be static for
  normal builds and non-static for unit test builds
  
  ... and mark Curl_shuffle_addr accordingly.
  
  url: make up_free static
  
  setopt: make vsetopt static
  
  curl_endian: make write32_le static
  
  rtsp: make rtsp_connisdead static
  
  warnless: remove unused functions
  
  memdebug: remove one unused function, made another static

Dan Fandrich (10 Feb 2019)
- cirrus: Added FreeBSD builds using Cirrus CI.
  
  The build logs will be at https://cirrus-ci.com/github/curl/curl
  
  Some tests are currently failing and so disabled for now. The SSH server
  isn't starting for the SSH tests due to unsupported options used in its
  config file. The DICT server also is failing on startup.

Daniel Stenberg (9 Feb 2019)
- url/idnconvert: remove scan for <= 32 ascii values
  
  The check was added back in fa939220df before the URL parser would catch
  these problems and therefore these will never trigger now.
  
  Closes #3539

- urlapi: reduce variable scope, remove unreachable 'break'
  
  Both nits pointed out by codacy.com
  
  Closes #3540

Alessandro Ghedini (7 Feb 2019)
- zsh.pl: escape ':' character
  
  ':' is interpreted as separator by zsh, so if used as part of the argument
  or option's description it needs to be escaped.
  
  The problem can be reproduced as follows:
  
   % curl --reso<TAB>
   % curl -E <TAB>
  
  Bug: https://bugs.debian.org/921452







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
7124
7125
7126
7127
7128
7129
7130





































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































  
  smtp.c:1221:29: warning: adding 'int' to a string does not append to the
  string [-Wstring-plus-int]
        eob = strdup(SMTP_EOB + 2);
              ~~~~~~~~~~~~~~~~^~~~
  
  Closes https://github.com/curl/curl/pull/3729





































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Added jni/curl/CMake/FindBearSSL.cmake.


















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
find_path(BEARSSL_INCLUDE_DIRS bearssl.h)

find_library(BEARSSL_LIBRARY bearssl)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BEARSSL DEFAULT_MSG
    BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)

mark_as_advanced(BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
Changes to jni/curl/CMakeLists.txt.
230
231
232
233
234
235
236

237
238
239
240
241
242
243

# If we are on AIX, do the _ALL_SOURCE magic
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
  set(_ALL_SOURCE 1)
endif()

# Include all the necessary files for macros

include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCSourceCompiles)







>







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

# If we are on AIX, do the _ALL_SOURCE magic
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
  set(_ALL_SOURCE 1)
endif()

# Include all the necessary files for macros
include(CMakePushCheckState)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCSourceCompiles)
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
if(WIN32)
  check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
  check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
  list(APPEND CURL_LIBS "advapi32")
endif()

# check SSL libraries
# TODO support GNUTLS, NSS, POLARSSL, CYASSL

if(APPLE)
  option(CMAKE_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF)
endif()
if(WIN32)
  option(CMAKE_USE_WINSSL "enable Windows native SSL/TLS" OFF)
  cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON
    CMAKE_USE_WINSSL OFF)
endif()
option(CMAKE_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF)



set(openssl_default ON)
if(WIN32 OR CMAKE_USE_SECTRANSP OR CMAKE_USE_WINSSL OR CMAKE_USE_MBEDTLS)
  set(openssl_default OFF)
endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default})

count_true(enabled_ssl_options_count
  CMAKE_USE_WINSSL
  CMAKE_USE_SECTRANSP
  CMAKE_USE_OPENSSL
  CMAKE_USE_MBEDTLS


)
if(enabled_ssl_options_count GREATER "1")
  set(CURL_WITH_MULTI_SSL ON)
endif()

if(CMAKE_USE_WINSSL)
  set(SSL_ENABLED ON)







|










>
>


|









>
>







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
if(WIN32)
  check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
  check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
  list(APPEND CURL_LIBS "advapi32")
endif()

# check SSL libraries
# TODO support GNUTLS, POLARSSL, CYASSL

if(APPLE)
  option(CMAKE_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF)
endif()
if(WIN32)
  option(CMAKE_USE_WINSSL "enable Windows native SSL/TLS" OFF)
  cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON
    CMAKE_USE_WINSSL OFF)
endif()
option(CMAKE_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF)
option(CMAKE_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF)
option(CMAKE_USE_NSS "Enable NSS for SSL/TLS" OFF)

set(openssl_default ON)
if(WIN32 OR CMAKE_USE_SECTRANSP OR CMAKE_USE_WINSSL OR CMAKE_USE_MBEDTLS OR CMAKE_USE_NSS)
  set(openssl_default OFF)
endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default})

count_true(enabled_ssl_options_count
  CMAKE_USE_WINSSL
  CMAKE_USE_SECTRANSP
  CMAKE_USE_OPENSSL
  CMAKE_USE_MBEDTLS
  CMAKE_USE_BEARSSL
  CMAKE_USE_NSS
)
if(enabled_ssl_options_count GREATER "1")
  set(CURL_WITH_MULTI_SSL ON)
endif()

if(CMAKE_USE_WINSSL)
  set(SSL_ENABLED ON)
374
375
376
377
378
379
380





















381
382
383
384
385
386
387
if(CMAKE_USE_MBEDTLS)
  find_package(MbedTLS REQUIRED)
  set(SSL_ENABLED ON)
  set(USE_MBEDTLS ON)
  list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES})
  include_directories(${MBEDTLS_INCLUDE_DIRS})
endif()






















option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
if(USE_NGHTTP2)
  find_package(NGHTTP2 REQUIRED)
  include_directories(${NGHTTP2_INCLUDE_DIRS})
  list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
endif()







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
if(CMAKE_USE_MBEDTLS)
  find_package(MbedTLS REQUIRED)
  set(SSL_ENABLED ON)
  set(USE_MBEDTLS ON)
  list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES})
  include_directories(${MBEDTLS_INCLUDE_DIRS})
endif()

if(CMAKE_USE_BEARSSL)
  find_package(BearSSL REQUIRED)
  set(SSL_ENABLED ON)
  set(USE_BEARSSL ON)
  list(APPEND CURL_LIBS ${BEARSSL_LIBRARY})
  include_directories(${BEARSSL_INCLUDE_DIRS})
endif()

if(CMAKE_USE_NSS)
  find_package(NSS REQUIRED)
  include_directories(${NSS_INCLUDE_DIRS})
  list(APPEND CURL_LIBS ${NSS_LIBRARIES})
  set(SSL_ENABLED ON)
  set(USE_NSS ON)
  cmake_push_check_state()
  set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
  set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
  check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
  cmake_pop_check_state()
endif()

option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
if(USE_NGHTTP2)
  find_package(NGHTTP2 REQUIRED)
  include_directories(${NGHTTP2_INCLUDE_DIRS})
  list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
endif()
662
663
664
665
666
667
668

669

670
671
672
673
674
675
676

if("${CURL_CA_PATH}" STREQUAL "")
  message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.")
elseif("${CURL_CA_PATH}" STREQUAL "none")
  unset(CURL_CA_PATH CACHE)
elseif("${CURL_CA_PATH}" STREQUAL "auto")
  unset(CURL_CA_PATH CACHE)

  set(CURL_CA_PATH_AUTODETECT TRUE)

else()
  set(CURL_CA_PATH_SET TRUE)
endif()

if(CURL_CA_BUNDLE_SET AND CURL_CA_PATH_AUTODETECT)
  # Skip autodetection of unset CA path because CA bundle is set explicitly
elseif(CURL_CA_PATH_SET AND CURL_CA_BUNDLE_AUTODETECT)







>
|
>







688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704

if("${CURL_CA_PATH}" STREQUAL "")
  message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.")
elseif("${CURL_CA_PATH}" STREQUAL "none")
  unset(CURL_CA_PATH CACHE)
elseif("${CURL_CA_PATH}" STREQUAL "auto")
  unset(CURL_CA_PATH CACHE)
  if(NOT USE_NSS)
    set(CURL_CA_PATH_AUTODETECT TRUE)
  endif()
else()
  set(CURL_CA_PATH_SET TRUE)
endif()

if(CURL_CA_BUNDLE_SET AND CURL_CA_PATH_AUTODETECT)
  # Skip autodetection of unset CA path because CA bundle is set explicitly
elseif(CURL_CA_PATH_SET AND CURL_CA_BUNDLE_AUTODETECT)
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
_add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_SECTRANSP OR USE_MBEDTLS))
  _add_if("NTLM"        1)
  # TODO missing option (autoconf: --enable-ntlm-wb)
  _add_if("NTLM_WB"     NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
endif()
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP"       USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header







|







1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
# TODO SSP1 missing for SPNEGO
_add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
_add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
                        (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_SECTRANSP OR USE_MBEDTLS OR USE_NSS))
  _add_if("NTLM"        1)
  # TODO missing option (autoconf: --enable-ntlm-wb)
  _add_if("NTLM_WB"     NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
endif()
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP"       USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
1247
1248
1249
1250
1251
1252
1253


1254
1255
1256
1257
1258
1259
1260

# Clear list and collect SSL backends
set(_items)
_add_if("WinSSL"           SSL_ENABLED AND USE_WINDOWS_SSPI)
_add_if("OpenSSL"          SSL_ENABLED AND USE_OPENSSL)
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
_add_if("mbedTLS"          SSL_ENABLED AND USE_MBEDTLS)


if(_items)
  list(SORT _items)
endif()
string(REPLACE ";" " " SSL_BACKENDS "${_items}")
message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")

# curl-config needs the following options to be set.







>
>







1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290

# Clear list and collect SSL backends
set(_items)
_add_if("WinSSL"           SSL_ENABLED AND USE_WINDOWS_SSPI)
_add_if("OpenSSL"          SSL_ENABLED AND USE_OPENSSL)
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
_add_if("mbedTLS"          SSL_ENABLED AND USE_MBEDTLS)
_add_if("BearSSL"          SSL_ENABLED AND USE_BEARSSL)
_add_if("NSS"              SSL_ENABLED AND USE_NSS)
if(_items)
  list(SORT _items)
endif()
string(REPLACE ";" " " SSL_BACKENDS "${_items}")
message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")

# curl-config needs the following options to be set.
Changes to jni/curl/COPYING.
1
2
3
4
5
6
7
8
9
10
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.

All rights reserved.

Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.


|







1
2
3
4
5
6
7
8
9
10
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1996 - 2020, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.

All rights reserved.

Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.
Changes to jni/curl/Makefile.am.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in      \
 CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake   \
 CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake       \
 CMake/Macros.cmake              \
 CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake             \
 CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake                \
 CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in         \
 CMake/curl-config.cmake.in

VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc







|
|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in      \
 CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake   \
 CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake       \
 CMake/Macros.cmake              \
 CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake             \
 CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake                \
 CMake/FindMbedTLS.cmake CMake/FindBearSSL.cmake                \
 CMake/cmake_uninstall.cmake.in CMake/curl-config.cmake.in

VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
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
 $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
 $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
	@(win32_lib_srcs='$(LIB_CFILES)'; \
	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
	win32_lib_rc='$(LIB_RCFILES)'; \
	win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
	win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \




	win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
	win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
	win32_src_srcs='$(CURL_CFILES)'; \
	win32_src_hdrs='$(CURL_HFILES)'; \
	win32_src_rc='$(CURL_RCFILES)'; \
	win32_src_x_srcs='$(CURLX_CFILES)'; \
	win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
	\
	sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
	sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
	sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \




	sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
	sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
	sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
	sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
	sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
	sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
	\
	awk_code='\
function gen_element(type, dir, file)\
{\
  sub(/vauth\//, "", file);\


  sub(/vtls\//, "", file);\
\
  spaces="    ";\
  if(dir == "lib\\vauth" || dir == "lib\\vtls")\



    tabs="				";\
  else\
    tabs="			";\
\
  if(type == "dsp") {\
    printf("# Begin Source File\r\n");\
    printf("\r\n");\







>
>
>
>












>
>
>
>











>
>



|
>
>
>







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
 $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
 $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
	@(win32_lib_srcs='$(LIB_CFILES)'; \
	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
	win32_lib_rc='$(LIB_RCFILES)'; \
	win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
	win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
	win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
	win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
	win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
	win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
	win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
	win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
	win32_src_srcs='$(CURL_CFILES)'; \
	win32_src_hdrs='$(CURL_HFILES)'; \
	win32_src_rc='$(CURL_RCFILES)'; \
	win32_src_x_srcs='$(CURLX_CFILES)'; \
	win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
	\
	sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
	sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
	sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
	sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
	sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
	sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
	sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
	sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
	sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
	sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
	\
	awk_code='\
function gen_element(type, dir, file)\
{\
  sub(/vauth\//, "", file);\
  sub(/vquic\//, "", file);\
  sub(/vssh\//, "", file);\
  sub(/vtls\//, "", file);\
\
  spaces="    ";\
  if(dir == "lib\\vauth" ||\
     dir == "lib\\vquic" ||\
     dir == "lib\\vssh"  ||\
     dir == "lib\\vtls")\
    tabs="				";\
  else\
    tabs="			";\
\
  if(type == "dsp") {\
    printf("# Begin Source File\r\n");\
    printf("\r\n");\
412
413
414
415
416
417
418
















419
420
421
422
423
424
425
    split(lib_vauth_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
    split(lib_vauth_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
















  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
    split(lib_vtls_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
    split(lib_vtls_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
    split(lib_vauth_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
    split(lib_vauth_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
    split(lib_vquic_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
    split(lib_vquic_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
    split(lib_vssh_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
    split(lib_vssh_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
    split(lib_vtls_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
    split(lib_vtls_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
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
	echo "generating '$(VC6_LIBDSP)'"; \
	awk -v proj_type=dsp \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
	\
	echo "generating '$(VC6_SRCDSP)'"; \
	awk -v proj_type=dsp \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
	\
	echo "generating '$(VC7_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC7_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \







>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>







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
	echo "generating '$(VC6_LIBDSP)'"; \
	awk -v proj_type=dsp \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
	\
	echo "generating '$(VC6_SRCDSP)'"; \
	awk -v proj_type=dsp \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
	\
	echo "generating '$(VC7_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC7_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
Changes to jni/curl/Makefile.in.
424
425
426
427
428
429
430

431
432
433
434
435
436
437
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
ACLOCAL_AMFLAGS = -I m4
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in      \
 CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake   \
 CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake       \
 CMake/Macros.cmake              \
 CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake             \
 CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake                \
 CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in         \
 CMake/curl-config.cmake.in

VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc







|
|







511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
ACLOCAL_AMFLAGS = -I m4
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in      \
 CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake   \
 CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake       \
 CMake/Macros.cmake              \
 CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake             \
 CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake                \
 CMake/FindMbedTLS.cmake CMake/FindBearSSL.cmake                \
 CMake/cmake_uninstall.cmake.in CMake/curl-config.cmake.in

VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
660
661
662
663
664
665
666
667

668
669
670
671
672
673
674
675
676

677
678
679
680
681
682
683
  vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c       \
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c


LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c

LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \







|
>




|




>







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
  vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c       \
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c          \
  vtls/bearssl.c

LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h vtls/bearssl.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c
LIB_VSSH_HFILES = vssh/ssh.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
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
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)


# libcurl has sources that provide functions named curlx_* that aren't part of
# the official API, but we re-use the code here to avoid duplication.
CURLX_CFILES = \
  ../lib/strtoofft.c \
  ../lib/nonblock.c \







|
















|







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
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h curl_base64.h curl_addrinfo.h curl_sspi.h                     \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES) $(LIB_VSSH_HFILES)


# libcurl has sources that provide functions named curlx_* that aren't part of
# the official API, but we re-use the code here to avoid duplication.
CURLX_CFILES = \
  ../lib/strtoofft.c \
  ../lib/nonblock.c \
1501
1502
1503
1504
1505
1506
1507




1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519




1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530


1531
1532
1533
1534



1535
1536
1537
1538
1539
1540
1541
 $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
 $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
	@(win32_lib_srcs='$(LIB_CFILES)'; \
	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
	win32_lib_rc='$(LIB_RCFILES)'; \
	win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
	win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \




	win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
	win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
	win32_src_srcs='$(CURL_CFILES)'; \
	win32_src_hdrs='$(CURL_HFILES)'; \
	win32_src_rc='$(CURL_RCFILES)'; \
	win32_src_x_srcs='$(CURLX_CFILES)'; \
	win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
	\
	sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
	sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
	sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \




	sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
	sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
	sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
	sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
	sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
	sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
	\
	awk_code='\
function gen_element(type, dir, file)\
{\
  sub(/vauth\//, "", file);\


  sub(/vtls\//, "", file);\
\
  spaces="    ";\
  if(dir == "lib\\vauth" || dir == "lib\\vtls")\



    tabs="				";\
  else\
    tabs="			";\
\
  if(type == "dsp") {\
    printf("# Begin Source File\r\n");\
    printf("\r\n");\







>
>
>
>












>
>
>
>











>
>



|
>
>
>







1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
 $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
 $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
	@(win32_lib_srcs='$(LIB_CFILES)'; \
	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
	win32_lib_rc='$(LIB_RCFILES)'; \
	win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
	win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
	win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
	win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
	win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
	win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
	win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
	win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
	win32_src_srcs='$(CURL_CFILES)'; \
	win32_src_hdrs='$(CURL_HFILES)'; \
	win32_src_rc='$(CURL_RCFILES)'; \
	win32_src_x_srcs='$(CURLX_CFILES)'; \
	win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
	\
	sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
	sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
	sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
	sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
	sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
	sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
	sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
	sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
	sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
	sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
	sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
	\
	awk_code='\
function gen_element(type, dir, file)\
{\
  sub(/vauth\//, "", file);\
  sub(/vquic\//, "", file);\
  sub(/vssh\//, "", file);\
  sub(/vtls\//, "", file);\
\
  spaces="    ";\
  if(dir == "lib\\vauth" ||\
     dir == "lib\\vquic" ||\
     dir == "lib\\vssh"  ||\
     dir == "lib\\vtls")\
    tabs="				";\
  else\
    tabs="			";\
\
  if(type == "dsp") {\
    printf("# Begin Source File\r\n");\
    printf("\r\n");\
1589
1590
1591
1592
1593
1594
1595
















1596
1597
1598
1599
1600
1601
1602
    split(lib_vauth_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
    split(lib_vauth_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
















  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
    split(lib_vtls_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
    split(lib_vtls_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
    split(lib_vauth_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
    split(lib_vauth_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
    split(lib_vquic_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
    split(lib_vquic_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
    split(lib_vssh_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
    split(lib_vssh_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
    split(lib_vtls_srcs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
  }\
  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
    split(lib_vtls_hdrs, arr);\
    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
1634
1635
1636
1637
1638
1639
1640




1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660




1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680




1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700




1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720




1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740




1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760




1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780




1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800




1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820




1821
1822
1823
1824
1825
1826
1827
	echo "generating '$(VC6_LIBDSP)'"; \
	awk -v proj_type=dsp \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
	\
	echo "generating '$(VC6_SRCDSP)'"; \
	awk -v proj_type=dsp \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
	\
	echo "generating '$(VC7_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC7_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \




		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \







>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>




















>
>
>
>







1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
	echo "generating '$(VC6_LIBDSP)'"; \
	awk -v proj_type=dsp \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
	\
	echo "generating '$(VC6_SRCDSP)'"; \
	awk -v proj_type=dsp \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
	\
	echo "generating '$(VC7_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC7_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC71_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj1 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC8_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_LIBVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC9_SRCVCPROJ)'"; \
	awk -v proj_type=vcproj2 \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC10_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC11_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC12_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC14_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
		-v src_hdrs="$$sorted_src_hdrs" \
		-v src_rc="$$win32_src_rc" \
		-v src_x_srcs="$$sorted_src_x_srcs" \
		-v src_x_hdrs="$$sorted_src_x_hdrs" \
		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_LIBVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v lib_srcs="$$sorted_lib_srcs" \
		-v lib_hdrs="$$sorted_lib_hdrs" \
		-v lib_rc="$$win32_lib_rc" \
		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
		"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
	\
	echo "generating '$(VC15_SRCVCXPROJ)'"; \
	awk -v proj_type=vcxproj \
		-v src_srcs="$$sorted_src_srcs" \
Changes to jni/curl/RELEASE-NOTES.
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

curl and libcurl 7.67.0

 Public curl releases:         186
 Command line options:         226
 curl_easy_setopt() options:   269
 Public functions in libcurl:  81
 Contributors:                 2056

This release includes the following changes:




 o curl: added --no-progress-meter [73]

 o setopt: CURLMOPT_MAX_CONCURRENT_STREAMS is new [55]
 o urlapi: CURLU_NO_AUTHORITY allows empty authority/host part [22]

This release includes the following bugfixes:

 o BINDINGS: five new bindings addded
 o CURLOPT_TIMEOUT.3: Clarify transfer timeout time includes queue time [78]
 o CURLOPT_TIMEOUT.3: remove the mention of "minutes" [74]
 o ESNI: initial build/setup support [71]
 o FTP: FTPFILE_NOCWD: avoid redundant CWDs [28]
 o FTP: allow "rubbish" prepended to the SIZE response [15]
 o FTP: remove trailing slash from path for LIST/MLSD [6]
 o FTP: skip CWD to entry dir when target is absolute [16]
 o FTP: url-decode path before evaluation [36]
 o HTTP3.md: move -p for mkdir, remove -j for make [46]
 o HTTP3: fix invalid use of sendto for connected UDP socket [109]
 o HTTP3: fix ngtcp2 Windows build [93]
 o HTTP3: fix prefix parameter for ngtcp2 build [40]
 o HTTP3: fix typo somehere1 > somewhere1 [108]

 o HTTP3: show an --alt-svc using example too


 o INSTALL: add missing space for configure commands [106]
 o INSTALL: add vcpkg installation instructions [35]
 o README: minor grammar fix [39]




 o altsvc: accept quoted ma and persist values [60]
 o altsvc: both backends run h3-23 now [31]
 o appveyor: Add MSVC ARM64 build [87]
 o appveyor: Use two parallel compilation on appveyor with CMake [98]
 o appveyor: add --disable-proxy autotools build [94]
 o appveyor: add 32-bit MinGW-w64 build [58]
 o appveyor: add a winbuild [14]


 o appveyor: add a winbuild that uses VS2017 [84]
 o appveyor: make winbuilds with DEBUG=no/yes and VS 2015/2017 [95]
 o appveyor: publish artifacts on appveyor [105]


 o appveyor: upgrade VS2017 to VS2019 [29]
 o asyn-thread: make use of Curl_socketpair() where available [85]
 o asyn-thread: s/AF_LOCAL/AF_UNIX for Solaris [3]
 o build: Remove unused HAVE_LIBSSL and HAVE_LIBCRYPTO defines [77]
 o checksrc: fix uninitialized variable warning [57]
 o chunked-encoding: stop hiding the CURLE_BAD_CONTENT_ENCODING error [56]
 o cirrus: Increase the git clone depth
 o cirrus: Switch the FreeBSD 11.x build to 11.3 and add a 13.0 build
 o cirrus: switch off blackhole status on the freebsd CI machines [72]

 o cleanups: 21 various PVS-Studio warnings [24]
 o configure: only say ipv6 enabled when the variable is set [110]
 o configure: remove all cyassl references [90]
 o conn-reuse: requests wanting NTLM can reuse non-NTLM connections [99]
 o connect: return CURLE_OPERATION_TIMEDOUT for errno == ETIMEDOUT [72]
 o connect: silence sign-compare warning [83]
 o cookie: avoid harmless use after free [69]
 o cookie: pass in the correct cookie amount to qsort() [27]
 o cookies: change argument type for Curl_flush_cookies [67]
 o cookies: using a share with cookies shouldn't enable the cookie engine [63]
 o copyrights: update copyright notices to 2019 [101]
 o curl: create easy handles on-demand and not ahead of time [54]
 o curl: ensure HTTP 429 triggers --retry [64]
 o curl: exit the create_transfers loop on errors [33]
 o curl: fix memory leaked by parse_metalink() [17]
 o curl: load large files with -d @ much faster [19]


 o docs/HTTP3: fix `--with-ssl` ngtcp2 configure flag [21]
 o docs: added multi-event.c example [75]
 o docs: disambiguate CURLUPART_HOST is for host name (ie no port) [62]
 o docs: note on failed handles not being counted by curl_multi_perform [70]
 o doh: allow only http and https in debug mode [48]
 o doh: avoid truncating DNS QTYPE to lower octet [23]





 o doh: clean up dangling DOH memory on easy close [9]
 o doh: fix (harmless) buffer overrun [13]
 o doh: fix undefined behaviour and open up for gcc and clang optimization [12]

 o doh: return early if there is no time left [48]
 o examples/sslbackend: fix -Wchar-subscripts warning [89]
 o examples: remove the "this exact code has not been verified"
 o git: add tests/server/disabled to .gitignore [59]

 o gnutls: make gnutls_bye() not wait for response on shutdown [104]
 o http2: expire a timeout at end of stream [88]
 o http2: prevent dup'ed handles to send dummy PRIORITY frames [68]
 o http2: relax verification of :authority in push promise requests [8]
 o http2_recv: a closed stream trumps pause state [88]
 o http: lowercase headernames for HTTP/2 and HTTP/3 [49]
 o ldap: Stop using wide char version of ldapp_err2string [1]
 o ldap: fix OOM error on missing query string [76]
 o mbedtls: add error message for cert validity starting in the future [102]
 o mime: when disabled, avoid C99 macro [7]
 o ngtcp2: adapt to API change [66]
 o ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23 [25]

 o ngtcp2: remove fprintf() calls [43]


 o openssl: close_notify on the FTP data connection doesn't mean closure [20]
 o openssl: fix compiler warning with LibreSSL [34]


 o openssl: use strerror on SSL_ERROR_SYSCALL [41]
 o os400: getpeername() and getsockname() return ebcdic AF_UNIX sockaddr [47]
 o parsedate: fix date parsing disabled builds [18]


 o quiche: don't close connection at end of stream
 o quiche: persist connection details (fixes -I with --http3) [11]
 o quiche: set 'drain' when returning without having drained the queues
 o quiche: update HTTP/3 config creation to new API [61]
 o redirect: handle redirects to absolute URLs containing spaces [52]
 o runtests: get textaware info from curl instead of perl [86]
 o schannel: reverse the order of certinfo insertions [96]
 o schannel_verify: Fix concurrent openings of CA file [103]
 o security: silence conversion warning [83]
 o setopt: handle ALTSVC set to NULL
 o setopt: make it easier to add new enum values [4]
 o setopt: store CURLOPT_RTSP_SERVER_CSEQ correctly [24]
 o smb: check for full size message before reading message details [10]
 o smbserver: fix Python 3 compatibility [82]
 o socks: Fix destination host shown on SOCKS5 error [32]

 o test1162: disable MSYS2's POSIX path conversion

 o test1591: fix spelling of http feature [97]







 o tests: add `connect to non-listen` keywords [91]

 o tests: fix narrowing conversion warnings [37]
 o tests: fix the test 3001 cert failures [100]

 o tests: makes tests succeed when using --disable-proxy [81]

 o tests: use %FILE_PWD for file:// URLs [92]
 o tests: use port 2 instead of 60000 for a safer non-listening port [72]
 o tool_operate: Fix retry sleep time shown to user when Retry-After [79]
 o travis: Add an ARM64 build
 o url: Curl_free_request_state() should also free doh handles [107]
 o url: don't set appconnect time for non-ssl/non-ssh connections [42]
 o url: fix the NULL hostname compiler warning [44]
 o url: normalize CURLINFO_EFFECTIVE_URL [80]
 o url: only reuse TLS connections with matching pinning [5]
 o urlapi: avoid index underflow for short ipv6 hostnames [26]


 o urlapi: fix URL encoding when setting a full URL [53]
 o urlapi: fix unused variable warning [57]
 o urlapi: question mark within fragment is still fragment [45]
 o urldata: use 'bool' for the bit type on MSVC compilers [30]
 o vtls: Fix comment typo about macosx-version-min compiler flag [38]
 o vtls: fix narrowing conversion warnings [50]
 o winbuild/MakefileBuild.vc: Add vssh [2]
 o winbuild/MakefileBuild.vc: Fix line endings
 o winbuild: Add manifest to curl.exe for proper OS version detection [51]
 o winbuild: add ENABLE_UNICODE option [65]

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Alessandro Ghedini, Alex Konev, Alex Samorukov, Andrei Valeriu BICA,

  Barry Pollard, Bastien Bouclet, Bernhard Walle, Bylon2 on github,
  Christophe Dervieux, Christoph M. Becker, Dagobert Michelsen, Dan Fandrich,
  Daniel Silverstone, Daniel Stenberg, Denis Chaplygin, Emil Engler,
  Francois Rivard, George Liu, Gilles Vollant, Griffin Downs, Harry Sintonen,
  Ilya Kosarev, infinnovation-dev on github, Jacob Barthelmeh, Javier Blazquez,
  Jens Finkhaeuser, Jeremy Lainé, Jeroen Ooms, Jimmy Gaussen, Joel Depooter,
  Jojojov on github, jzinn on github, Kamil Dudka, Kunal Ekawde, Lucas Pardue,
  Lucas Severo, Marcel Hernandez, Marcel Raad, Martin Gartner, Max Dymond,
  Michael Kaufmann, Michał Janiszewski, momala454 on github,
  Nathaniel J. Smith, Niall O'Reilly, nico-abram on github,
  Nikos Mavrogiannopoulos, Patrick Monnerat, Paul B. Omta, Paul Dreik,
  Peter Sumatra, Philippe Marguinaud, Piotr Komborski, Ray Satiro,
  Richard Alcock, Roland Hieber, Samuel Surtees, Sebastian Haglund,

  Spezifant on github, Stian Soiland-Reyes, SumatraPeter on github,
  Tatsuhiro Tsujikawa, Tom van der Woerdt, Trivikram Kamat,
  Valerii Zapodovnikov, Vilhelm Prytz, Yechiel Kalmenson, Zenju on github,
  (68 contributors)

        Thanks! (and sorry if I forgot to mention someone)

References to bug reports and discussions on issues:

 [1] = https://curl.haxx.se/bug/?i=4272
 [2] = https://curl.haxx.se/bug/?i=4322
 [3] = https://curl.haxx.se/bug/?i=4328
 [4] = https://curl.haxx.se/bug/?i=4321
 [5] = https://curl.haxx.se/mail/lib-2019-09/0061.html
 [6] = https://curl.haxx.se/bug/?i=4348
 [7] = https://curl.haxx.se/bug/?i=4368
 [8] = https://curl.haxx.se/bug/?i=4365
 [9] = https://curl.haxx.se/bug/?i=4366
 [10] = https://curl.haxx.se/bug/?i=4363
 [11] = https://curl.haxx.se/bug/?i=4358
 [12] = https://curl.haxx.se/bug/?i=4350
 [13] = https://curl.haxx.se/bug/?i=4352
 [14] = https://curl.haxx.se/bug/?i=4324
 [15] = https://curl.haxx.se/bug/?i=4339
 [16] = https://curl.haxx.se/bug/?i=4332
 [17] = https://curl.haxx.se/bug/?i=4326
 [18] = https://curl.haxx.se/bug/?i=4325
 [19] = https://curl.haxx.se/bug/?i=4336
 [20] = https://curl.haxx.se/bug/?i=4329
 [21] = https://curl.haxx.se/bug/?i=4338
 [22] = https://curl.haxx.se/bug/?i=4349
 [23] = https://curl.haxx.se/bug/?i=4381
 [24] = https://curl.haxx.se/bug/?i=4374
 [25] = https://curl.haxx.se/bug/?i=4392
 [26] = https://curl.haxx.se/bug/?i=4389
 [27] = https://curl.haxx.se/bug/?i=4386
 [28] = https://curl.haxx.se/bug/?i=4382
 [29] = https://curl.haxx.se/bug/?i=4383
 [30] = https://curl.haxx.se/bug/?i=4387
 [31] = https://curl.haxx.se/bug/?i=4395
 [32] = https://curl.haxx.se/bug/?i=4394
 [33] = https://curl.haxx.se/bug/?i=4393
 [34] = https://curl.haxx.se/bug/?i=4397
 [35] = https://curl.haxx.se/bug/?i=4435
 [36] = https://curl.haxx.se/bug/?i=4428
 [37] = https://curl.haxx.se/bug/?i=4415
 [38] = https://curl.haxx.se/bug/?i=4425
 [39] = https://curl.haxx.se/bug/?i=4431
 [40] = https://curl.haxx.se/bug/?i=4430
 [41] = https://curl.haxx.se/bug/?i=4411
 [42] = https://curl.haxx.se/bug/?i=3760
 [43] = https://curl.haxx.se/bug/?i=4421
 [44] = https://curl.haxx.se/bug/?i=4403
 [45] = https://curl.haxx.se/bug/?i=4412
 [46] = https://curl.haxx.se/bug/?i=4407
 [47] = https://curl.haxx.se/bug/?i=4214
 [48] = https://curl.haxx.se/bug/?i=4406
 [49] = https://curl.haxx.se/bug/?i=4400
 [50] = https://curl.haxx.se/bug/?i=4398
 [51] = https://curl.haxx.se/bug/?i=4399
 [52] = https://curl.haxx.se/bug/?i=4445
 [53] = https://curl.haxx.se/bug/?i=4447
 [54] = https://curl.haxx.se/bug/?i=4393
 [55] = https://curl.haxx.se/bug/?i=4410
 [56] = https://curl.haxx.se/bug/?i=4310
 [57] = https://curl.haxx.se/bug/?i=4444
 [58] = https://curl.haxx.se/bug/?i=4433
 [59] = https://curl.haxx.se/bug/?i=4441
 [60] = https://curl.haxx.se/bug/?i=4443
 [61] = https://curl.haxx.se/bug/?i=4437
 [62] = https://curl.haxx.se/bug/?i=4424
 [63] = https://curl.haxx.se/bug/?i=4429
 [64] = https://curl.haxx.se/bug/?i=4465
 [65] = https://curl.haxx.se/bug/?i=4308
 [66] = https://curl.haxx.se/bug/?i=4457
 [67] = https://curl.haxx.se/bug/?i=4455
 [68] = https://curl.haxx.se/bug/?i=4303
 [69] = https://curl.haxx.se/bug/?i=4454
 [70] = https://curl.haxx.se/bug/?i=4446
 [71] = https://curl.haxx.se/bug/?i=4011
 [72] = https://curl.haxx.se/bug/?i=4461
 [73] = https://curl.haxx.se/bug/?i=4422
 [74] = https://curl.haxx.se/bug/?i=4469
 [75] = https://curl.haxx.se/bug/?i=4471
 [76] = https://curl.haxx.se/bug/?i=4467
 [77] = https://curl.haxx.se/bug/?i=4460
 [78] = https://curl.haxx.se/bug/?i=4486
 [79] = https://curl.haxx.se/bug/?i=4498
 [80] = https://curl.haxx.se/bug/?i=4491
 [81] = https://curl.haxx.se/bug/?i=4488
 [82] = https://curl.haxx.se/bug/?i=4484
 [83] = https://curl.haxx.se/bug/?i=4483
 [84] = https://curl.haxx.se/bug/?i=4482
 [85] = https://curl.haxx.se/bug/?i=4466
 [86] = https://curl.haxx.se/bug/?i=4506
 [87] = https://curl.haxx.se/bug/?i=4507
 [88] = https://curl.haxx.se/bug/?i=4496
 [89] = https://curl.haxx.se/bug/?i=4503
 [90] = https://curl.haxx.se/bug/?i=4502
 [91] = https://curl.haxx.se/bug/?i=4511
 [92] = https://curl.haxx.se/bug/?i=4512
 [93] = https://curl.haxx.se/bug/?i=4531
 [94] = https://curl.haxx.se/bug/?i=4526
 [95] = https://curl.haxx.se/bug/?i=4523
 [96] = https://curl.haxx.se/bug/?i=4518
 [97] = https://curl.haxx.se/bug/?i=4520
 [98] = https://curl.haxx.se/bug/?i=4508
 [99] = https://curl.haxx.se/bug/?i=4499
 [100] = https://curl.haxx.se/bug/?i=4551
 [101] = https://curl.haxx.se/bug/?i=4547
 [102] = https://curl.haxx.se/bug/?i=4552
 [103] = https://curl.haxx.se/mail/lib-2019-10/0104.html
 [104] = https://curl.haxx.se/bug/?i=4487
 [105] = https://curl.haxx.se/bug/?i=4509
 [106] = https://curl.haxx.se/bug/?i=4539
 [107] = https://curl.haxx.se/bug/?i=4463
 [108] = https://curl.haxx.se/bug/?i=4535
 [109] = https://curl.haxx.se/bug/?i=4529
 [110] = https://curl.haxx.se/bug/?i=4555

|

|
|

|
|



>
>
>
|
>
|
<



|
|
|
|
|
<
<
<
<
<
<
|
<
|
>
|
>
>
|
|
<
>
>
>
>
|
|
|
<
<
|
|
>
>
|
<
|
>
>
|
|
|
<
|
|
|
|
|
>
|
<
|
<
<
|
<
<
<
<
<
|
|
|
|
|
>
>
|
|
|
|
|
|
>
>
>
>
>
|
|
|
>
|
<
|
|
>
|
|
|
<
<
<
<
|
<
<
|
|
>
|
>
>
|
|
>
>
|
<
|
>
>
|
|
|
|
<
|
|
<
<
|
|
|
|
|
|
>
|
>
|
>
>
>
>
>
>
>
|
>
|
|
>
|
>
|
|
|
|
<
<
<
<
<
<
>
>
|
<
<
<
<
|
|
<
<
|








|
>
|
|
|
<
|
|
|
|
|
|
|
<
|
>
|
|
|
|





|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
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
curl and libcurl 7.68.0

 Public curl releases:         188
 Command line options:         229
 curl_easy_setopt() options:   269
 Public functions in libcurl:  82
 Contributors:                 2088

This release includes the following changes:

 o TLS: add BearSSL vtls implementation [37]
 o XFERINFOFUNCTION: support CURL_PROGRESSFUNC_CONTINUE [36]
 o curl: add --etag-compare and --etag-save [31]
 o curl: add --parallel-immediate [29]
 o multi: add curl_multi_wakeup() [38]
 o openssl: CURLSSLOPT_NO_PARTIALCHAIN can disable partial cert chains [45]


This release includes the following bugfixes:

 o CVE-2019-15601: file: on Windows, refuse paths that start with \\ [106]
 o Azure Pipelines: add several builds
 o CMake: add support for building with the NSS vtls backend [43]
 o CURL-DISABLE: initial docs for the CURL_DISABLE_* defines [19]
 o CURLOPT_HEADERFUNCTION.3: Document that size is always 1 [100]






 o CURLOPT_QUOTE.3: fix typos [78]

 o CURLOPT_READFUNCTION.3: fix the example [107]
 o CURLOPT_URL.3: "curl supports SMB version 1 (only)"
 o CURLOPT_VERBOSE.3: see also ERRORBUFFER
 o HISTORY: added cmake, HTTP/3 and parallel downloads with curl
 o HISTORY: the SMB(S) support landed in 2014
 o INSTALL.md: provide Android build instructions [10]
 o KNOWN_BUGS: Connection information when using TCP Fast Open [85]

 o KNOWN_BUGS: LDAP on Windows doesn't work correctly [86]
 o KNOWN_BUGS: TLS session cache doesn't work with TFO [56]
 o OPENSOCKETFUNCTION.3: correct the purpose description [48]
 o TrackMemory tests: always remove CR before LF [111]
 o altsvc: bump to h3-24 [6]
 o altsvc: make the save function ignore NULL filenames [67]
 o build: Disable Visual Studio warning "conditional expression is constant" [49]


 o build: fix for CURL_DISABLE_DOH [2]
 o checksrc.bat: Add a check for vquic and vssh directories [40]
 o checksrc: repair the copyrightyear check [25]
 o cirrus-ci: enable clang sanitizers on freebsd 13 [60]
 o cirrus: Drop the FreeBSD 10.4 build

 o config-win32: cpu-machine-OS for Windows on ARM [13]
 o configure: avoid unportable `==' test(1) operator [1]
 o configure: enable IPv6 support without `getaddrinfo` [44]
 o configure: fix typo in help text [4]
 o conncache: CONNECT_ONLY connections assumed always in-use [71]
 o conncache: fix multi-thread use of shared connection cache [61]

 o copyrights: fix copyright year range [25]
 o create_conn: prefer multiplexing to using new connections [76]
 o curl -w: handle a blank input file correctly [105]
 o curl.h: add two missing defines for "pre ISO C" compilers [75]
 o curl/parseconfig: fix mem-leak [81]
 o curl/parseconfig: use curl_free() to free memory allocated by libcurl [80]
 o curl: cleanup multi handle on failure [103]

 o curl: fix --upload-file . hangs if delay in STDIN [35]


 o curl: fix -T globbing [16]





 o curl: improved cleanup in upload error path [69]
 o curl: make a few char pointers point to const char instead [95]
 o curl: properly free mimepost data [104]
 o curl: show better error message when no homedir is found [47]
 o curl: show error for --http3 if libcurl lacks support [108]
 o curl_setup_once: consistently use WHILE_FALSE in macros [54]
 o define: remove HAVE_ENGINE_LOAD_BUILTIN_ENGINES, not used anymore [83]
 o docs: Change 'experiemental' to 'experimental' [30]
 o docs: TLS SRP doesn't work with TLS 1.3 [87]
 o docs: fix several typos [62]
 o docs: mention CURL_MAX_INPUT_LENGTH restrictions [109]
 o doh: improved both encoding and decoding [11]
 o doh: make it behave when built without proxy support [68]
 o examples/postinmemory.c: Call curl_global_cleanup always [101]
 o examples/url2file.c: corrected erroneous comment [102]
 o examples: add multi-poll.c [14]
 o global_init: undo the "intialized" bump in case of failure [52]
 o hostip: suppress compiler warning [64]
 o http_ntlm: Remove duplicate NSS initialisation [55]
 o lib: Move lib/ssh.h -> lib/vssh/ssh.h [9]
 o lib: fix compiler warnings with `CURL_DISABLE_VERBOSE_STRINGS` [93]
 o lib: fix warnings found when porting to NuttX [99]
 o lib: remove ASSIGNWITHINCONDITION exceptions, use our code style [84]

 o lib: remove erroneous +x file permission on some c files [99]
 o libssh2: add support for ECDSA and ed25519 knownhost keys [89]
 o multi.h: remove INITIAL_MAX_CONCURRENT_STREAMS from public header [110]
 o multi: free sockhash on OOM [63]
 o multi_poll: avoid busy-loop when called without easy handles attached [15]
 o ngtcp2: Support the latest update key callback type [92]




 o ngtcp2: fix thread-safety bug in error-handling [33]


 o ngtcp2: free used resources on disconnect [7]
 o ngtcp2: handle key updates as ngtcp2 master branch tells us [8]
 o ngtcp2: increase QUIC window size when data is consumed [12]
 o ngtcp2: use overflow buffer for extra HTTP/3 data [5]
 o ntlm: USE_WIN32_CRYPTO check removed to get USE_NTLM2SESSION set [3]
 o ntlm_wb: fix double-free in OOM [65]
 o openssl: Revert to less sensitivity for SYSCALL errors [26]
 o openssl: improve error message for SYSCALL during connect [27]
 o openssl: prevent recursive function calls from ctx callbacks [18]
 o openssl: retrieve reported LibreSSL version at runtime [50]
 o openssl: set X509_V_FLAG_PARTIAL_CHAIN by default [46]

 o parsedate: offer a getdate_capped() alternative [53]
 o pause: avoid updating socket if done was already called [22]
 o projects: Fix Visual Studio projects SSH builds [41]
 o projects: Fix Visual Studio wolfSSL configurations
 o quiche: reject HTTP/3 headers in the wrong order [17]
 o remove_handle: clear expire timers after multi_done() [20]
 o runtests: --repeat=[num] to repeat tests [91]

 o runtests: introduce --shallow to reduce huge torture tests [70]
 o schannel: fix --tls-max for when min is --tlsv1 or default [39]


 o setopt: Fix ALPN / NPN user option when built without HTTP2 [42]
 o strerror: Add Curl_winapi_strerror for Win API specific errors [51]
 o strerror: Fix an error looking up some Windows error strings
 o strerror: Fix compiler warning "empty expression" [79]
 o system.h: fix for MCST lcc compiler [23]
 o test/sws: search for "Testno:" header unconditionally if no testno [73]
 o test1175: verify symbols-in-versions and libcurl-errors.3 in sync [28]
 o test1270: a basic -w redirect_url test [82]
 o test1456: remove the use of a fixed local port number [77]
 o test1558: use double slash after file: [21]
 o test1560: require IPv6 for IPv6 aware URL parsing [24]
 o tests/lib1557: fix mem-leak in OOM [66]
 o tests/lib1559: fix mem-leak in OOM [66]
 o tests/lib1591: free memory properly on OOM, in the trailers callback [90]
 o tests/unit1607: fix mem-leak in OOM [66]
 o tests/unit1609: fix mem-leak in OOM [66]
 o tests/unit1620: fix bad free in OOM [66]
 o tests: Change NTLM tests to require SSL [96]
 o tests: Fix bounce requests with truncated writes [94]
 o tests: fix build with `CURL_DISABLE_DOH` [64]
 o tests: fix permissions of ssh keys in WSL [58]
 o tests: make it possible to set executable extensions [58]
 o tests: make sure checksrc runs on header files too
 o tests: set LC_ALL=en_US.UTF-8 instead of blank in several tests [74]
 o tests: use DoH feature for DoH tests [64]
 o tests: use \r\n for log messages in WSL [58]
 o tool_operate: fix mem leak when failed config parse [98]
 o travis: Fix error detection [97]






 o travis: abandon coveralls, it is not reliable [57]
 o travis: build ngtcp2 with --enable-lib-only [32]
 o travis: export the CC/CXX variables when set [34]




 o vtls: make BearSSL possible to set with CURL_SSL_BACKEND [72]
 o winbuild: Define CARES_STATICLIB when WITH_CARES=static [59]


 o winbuild: Document CURL_STATICLIB requirement for static libcurl [88]

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

  3dyd on github, Anderson Sasaki, Andreas Falkenhahn, Andrew Ishchuk,
  bdry on github, Bjoern Franke, Brian Carpenter, bxac on github,
  Bylon2 on github, Christian Schmitz, Christopher Head, Christopher Reid,
  Christoph M. Becker, Cynthia Coan, Dan Fandrich, Daniel Gustafsson,
  Daniel Stenberg, David Benjamin, Emil Engler, Fernando Muñoz, Frank Gevaerts,

  Geeknik Labs, Gergely Nagy, Gisle Vanem, JanB on github, Javier Blazquez,
  Jeff Mears, Jeffrey Walton, John Schroeder, Kamil Dudka,
  kouzhudong on github, Kunal Ekawde, Leonardo Taccari, Marc Aldorasi,
  Marcel Raad, marc-groundctl on github, Marc Hörsken, Maros Priputen,
  Massimiliano Fantuzzi, Max Kellermann, Melissa Mears, Michael Forney,
  Michael Vittiglio, Mohammad Hasbini, Niall O'Reilly, Paul Groke,
  Paul Hoffman, Paul Joyce, Paulo Roberto Tomasi, Pavel Löbl, Pavel Pavlov,

  Peter Wu, Ram Krushna Mishra, Ray Satiro, Richard Alcock, Richard Bowker,
  Rickard Hallerbäck, Santino Keupp, sayrer on github, Shailesh Kapse,
  Simon Warta, SLDiggie on github, Steve Holme, Tatsuhiro Tsujikawa,
  Tom van der Woerdt, Victor Magierski, Vlastimil Ovčáčík, Wyatt O'Day,
  Xiang Xiao, Xiaoyin Liu,
  (70 contributors)

        Thanks! (and sorry if I forgot to mention someone)

References to bug reports and discussions on issues:

 [1] = https://curl.haxx.se/bug/?i=4567
 [2] = https://curl.haxx.se/bug/?i=4565
 [3] = https://curl.haxx.se/bug/?i=3704
 [4] = https://curl.haxx.se/bug/?i=4570
 [5] = https://curl.haxx.se/bug/?i=4525
 [6] = https://curl.haxx.se/bug/?i=4604
 [7] = https://curl.haxx.se/bug/?i=4614
 [8] = https://curl.haxx.se/bug/?i=4612
 [9] = https://curl.haxx.se/bug/?i=4609
 [10] = https://curl.haxx.se/bug/?i=4606
 [11] = https://curl.haxx.se/bug/?i=4598
 [12] = https://curl.haxx.se/bug/?i=4600
 [13] = https://curl.haxx.se/bug/?i=4590
 [14] = https://curl.haxx.se/bug/?i=4596
 [15] = https://curl.haxx.se/bug/?i=4594
 [16] = https://curl.haxx.se/bug/?i=4588
 [17] = https://curl.haxx.se/bug/?i=4571
 [18] = https://curl.haxx.se/bug/?i=4585
 [19] = https://curl.haxx.se/bug/?i=4545
 [20] = https://curl.haxx.se/bug/?i=4575
 [21] = https://curl.haxx.se/bug/?i=4554
 [22] = https://curl.haxx.se/bug/?i=4563
 [23] = https://curl.haxx.se/bug/?i=4576
 [24] = https://curl.haxx.se/bug/?i=4556
 [25] = https://curl.haxx.se/bug/?i=4549
 [26] = https://curl.haxx.se/bug/?i=4624
 [27] = https://curl.haxx.se/bug/?i=4593
 [28] = https://curl.haxx.se/bug/?i=4628
 [29] = https://curl.haxx.se/bug/?i=4500
 [30] = https://curl.haxx.se/bug/?i=4618
 [31] = https://curl.haxx.se/bug/?i=4543
 [32] = https://curl.haxx.se/bug/?i=4646
 [33] = https://curl.haxx.se/bug/?i=4645
 [34] = https://curl.haxx.se/bug/?i=4637
 [35] = https://curl.haxx.se/bug/?i=2051
 [36] = https://curl.haxx.se/bug/?i=4599
 [37] = https://curl.haxx.se/bug/?i=4597
 [38] = https://curl.haxx.se/bug/?i=4418
 [39] = https://curl.haxx.se/bug/?i=4633
 [40] = https://curl.haxx.se/bug/?i=4607
 [41] = https://curl.haxx.se/bug/?i=4492
 [42] = https://curl.haxx.se/bug/?i=4668
 [43] = https://curl.haxx.se/bug/?i=4663
 [44] = https://curl.haxx.se/bug/?i=4662
 [45] = https://curl.haxx.se/bug/?i=4665
 [46] = https://curl.haxx.se/mail/lib-2019-11/0094.html
 [47] = https://curl.haxx.se/bug/?i=4644
 [48] = https://curl.haxx.se/mail/lib-2019-12/0007.html
 [49] = https://curl.haxx.se/bug/?i=4658
 [50] = https://curl.haxx.se/bug/?i=2425
 [51] = https://curl.haxx.se/bug/?i=4550
 [52] = https://curl.haxx.se/bug/?i=4636
 [53] = https://curl.haxx.se/bug/?i=4152
 [54] = https://curl.haxx.se/bug/?i=4649
 [55] = https://curl.haxx.se/bug/?i=3935
 [56] = https://curl.haxx.se/bug/?i=4301
 [57] = https://curl.haxx.se/bug/?i=4694
 [58] = https://curl.haxx.se/bug/?i=3899
 [59] = https://curl.haxx.se/bug/?i=4688
 [60] = https://curl.haxx.se/bug/?i=4557
 [61] = https://curl.haxx.se/bug/?i=4544
 [62] = https://curl.haxx.se/bug/?i=4680
 [63] = https://curl.haxx.se/bug/?i=4713
 [64] = https://curl.haxx.se/bug/?i=4692
 [65] = https://curl.haxx.se/bug/?i=4710
 [66] = https://curl.haxx.se/bug/?i=4709
 [67] = https://curl.haxx.se/bug/?i=4707
 [68] = https://curl.haxx.se/bug/?i=4704
 [69] = https://curl.haxx.se/bug/?i=4705
 [70] = https://curl.haxx.se/bug/?i=4699
 [71] = https://curl.haxx.se/bug/?i=4369
 [72] = https://curl.haxx.se/bug/?i=4698
 [73] = https://curl.haxx.se/bug/?i=4744
 [74] = https://curl.haxx.se/bug/?i=4738
 [75] = https://curl.haxx.se/bug/?i=4739
 [76] = https://curl.haxx.se/bug/?i=4732
 [77] = https://curl.haxx.se/bug/?i=4733
 [78] = https://curl.haxx.se/bug/?i=4736
 [79] = https://github.com/curl/curl/commit/5b22e1a#r36458547
 [80] = https://curl.haxx.se/bug/?i=4730
 [81] = https://curl.haxx.se/bug/?i=4731
 [82] = https://curl.haxx.se/bug/?i=4728
 [83] = https://curl.haxx.se/bug/?i=4725
 [84] = https://curl.haxx.se/bug/?i=4683
 [85] = https://curl.haxx.se/bug/?i=4296
 [86] = https://curl.haxx.se/bug/?i=4261
 [87] = https://curl.haxx.se/bug/?i=4262
 [88] = https://curl.haxx.se/bug/?i=4721
 [89] = https://curl.haxx.se/bug/?i=4714
 [90] = https://curl.haxx.se/bug/?i=4720
 [91] = https://curl.haxx.se/bug/?i=4715
 [92] = https://curl.haxx.se/bug/?i=4735
 [93] = https://curl.haxx.se/bug/?i=4775
 [94] = https://github.com/curl/curl/pull/4717#issuecomment-570240785
 [95] = https://curl.haxx.se/bug/?i=4771
 [96] = https://curl.haxx.se/bug/?i=4768
 [97] = https://curl.haxx.se/bug/?i=3730
 [98] = https://curl.haxx.se/bug/?i=4767
 [99] = https://curl.haxx.se/bug/?i=4756
 [100] = https://curl.haxx.se/bug/?i=4758
 [101] = https://curl.haxx.se/bug/?i=4751
 [102] = https://curl.haxx.se/bug/?i=4745
 [103] = https://curl.haxx.se/bug/?i=4772
 [104] = https://curl.haxx.se/bug/?i=4781
 [105] = https://curl.haxx.se/bug/?i=4786
 [106] = https://curl.haxx.se/docs/CVE-2019-15601.html
 [107] = https://curl.haxx.se/bug/?i=4787
 [108] = https://curl.haxx.se/bug/?i=4785
 [109] = https://curl.haxx.se/bug/?i=4783
 [110] = https://curl.haxx.se/bug/?i=4790
 [111] = https://curl.haxx.se/bug/?i=4788
Changes to jni/curl/configure.
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
USE_ARES
subdirs
USE_MANUAL_FALSE
USE_MANUAL_TRUE
MANOPT
NROFF
PERL
IPV6_ENABLED
FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
USE_QUICHE
USE_NGHTTP3
USE_NGTCP2_CRYPTO_OPENSSL
USE_NGTCP2
USE_NGHTTP2







<







898
899
900
901
902
903
904

905
906
907
908
909
910
911
USE_ARES
subdirs
USE_MANUAL_FALSE
USE_MANUAL_TRUE
MANOPT
NROFF
PERL

FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
USE_QUICHE
USE_NGHTTP3
USE_NGTCP2_CRYPTO_OPENSSL
USE_NGTCP2
USE_NGHTTP2
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
USE_LIBPSL_FALSE
USE_LIBPSL_TRUE
CURL_CA_BUNDLE
CURL_WITH_MULTI_SSL
SSL_ENABLED
NSS_LIBS
USE_NSS

USE_MESALINK
USE_WOLFSSL
USE_MBEDTLS
HAVE_GNUTLS_SRP
USE_GNUTLS_NETTLE
USE_GNUTLS
HAVE_OPENSSL_SRP
RANDOM_FILE
SSL_LIBS
USE_SECTRANSP
USE_WINDOWS_SSPI
USE_SCHANNEL
DEFAULT_SSL_BACKEND
BUILD_STUB_GSS_FALSE
BUILD_STUB_GSS_TRUE

USE_OPENLDAP
HAVE_BROTLI
ZLIB_LIBS
HAVE_LIBZ_FALSE
HAVE_LIBZ_TRUE
HAVE_LIBZ
PKGCONFIG







>















>







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
USE_LIBPSL_FALSE
USE_LIBPSL_TRUE
CURL_CA_BUNDLE
CURL_WITH_MULTI_SSL
SSL_ENABLED
NSS_LIBS
USE_NSS
USE_BEARSSL
USE_MESALINK
USE_WOLFSSL
USE_MBEDTLS
HAVE_GNUTLS_SRP
USE_GNUTLS_NETTLE
USE_GNUTLS
HAVE_OPENSSL_SRP
RANDOM_FILE
SSL_LIBS
USE_SECTRANSP
USE_WINDOWS_SSPI
USE_SCHANNEL
DEFAULT_SSL_BACKEND
BUILD_STUB_GSS_FALSE
BUILD_STUB_GSS_TRUE
IPV6_ENABLED
USE_OPENLDAP
HAVE_BROTLI
ZLIB_LIBS
HAVE_LIBZ_FALSE
HAVE_LIBZ_TRUE
HAVE_LIBZ
PKGCONFIG
1175
1176
1177
1178
1179
1180
1181

1182
1183
1184
1185
1186
1187
1188
with_egd_socket
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls
with_wolfssl
with_mesalink

with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl
with_libmetalink
with_libssh2







>







1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
with_egd_socket
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls
with_wolfssl
with_mesalink
with_bearssl
with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl
with_libmetalink
with_libssh2
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
  --disable-dateparse     Disable date parsing
  --enable-netrc          Enable netrc parsing
  --disable-netrc         Disable netrc parsing
  --enable-progress-meter Enable progress-meter
  --disable-progress-meter
                          Disable progress-meter
  --enable-dnsshuffle     Enable DNS shuffling
  --disable-dnsshuffle    Disable DNS shufflinf
  --enable-alt-svc        Enable alt-svc support
  --disable-alt-svc       Disable alt-svc support

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use







|







1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
  --disable-dateparse     Disable date parsing
  --enable-netrc          Enable netrc parsing
  --disable-netrc         Disable netrc parsing
  --enable-progress-meter Enable progress-meter
  --disable-progress-meter
                          Disable progress-meter
  --enable-dnsshuffle     Enable DNS shuffling
  --disable-dnsshuffle    Disable DNS shuffling
  --enable-alt-svc        Enable alt-svc support
  --disable-alt-svc       Disable alt-svc support

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
2030
2031
2032
2033
2034
2035
2036



2037
2038
2039
2040
2041
2042
2043
  --without-mbedtls       disable mbedTLS detection
  --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
                          installation root (default: system lib default)
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection



  --with-nss=PATH         where to look for NSS, PATH points to the
                          installation root
  --without-nss           disable NSS detection
  --with-ca-bundle=FILE   Path to a file containing CA certificates (example:
                          /etc/ca-bundle.crt)
  --without-ca-bundle     Don't use a default CA bundle
  --with-ca-path=DIRECTORY







>
>
>







2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
  --without-mbedtls       disable mbedTLS detection
  --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
                          installation root (default: system lib default)
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection
  --with-bearssl=PATH     where to look for BearSSL, PATH points to the
                          installation root
  --without-bearssl       disable BearSSL detection
  --with-nss=PATH         where to look for NSS, PATH points to the
                          installation root
  --without-nss           disable NSS detection
  --with-ca-bundle=FILE   Path to a file containing CA certificates (example:
                          /etc/ca-bundle.crt)
  --without-ca-bundle     Don't use a default CA bundle
  --with-ca-path=DIRECTORY
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
PKGADD_PKG="HAXXcurl"
PKGADD_NAME="curl - a client that groks URLs"
PKGADD_VENDOR="curl.haxx.se"




    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl} )"
    curl_ssh_msg="no      (--with-libssh2)"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
    curl_gss_msg="no      (--with-gssapi)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"







|
|







5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
PKGADD_PKG="HAXXcurl"
PKGADD_NAME="curl - a client that groks URLs"
PKGADD_VENDOR="curl.haxx.se"




    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
    curl_gss_msg="no      (--with-gssapi)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
21808
21809
21810
21811
21812
21813
21814
21815
21816
21817
21818

21819
21820




21821
21822
21823
21824


21825
21826
21827
21828
21829
21830
21831
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes

else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
 /* is AF_INET6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>

#else
#include <sys/socket.h>




#endif
#include <stdlib.h> /* for exit() */
main()
{


 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}

_ACEOF







|



>


>
>
>
>




>
>







21813
21814
21815
21816
21817
21818
21819
21820
21821
21822
21823
21824
21825
21826
21827
21828
21829
21830
21831
21832
21833
21834
21835
21836
21837
21838
21839
21840
21841
21842
21843
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
  ipv6=yes

else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
 /* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif
#include <stdlib.h> /* for exit() */
main()
{
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}

_ACEOF
21841
21842
21843
21844
21845
21846
21847
21848
21849







21850
21851
21852
21853
21854
21855
21856
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

fi


# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then







  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5
$as_echo_n "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H







<

>
>
>
>
>
>
>







21853
21854
21855
21856
21857
21858
21859

21860
21861
21862
21863
21864
21865
21866
21867
21868
21869
21870
21871
21872
21873
21874
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

fi



if test "$ipv6" = yes; then
  curl_ipv6_msg="enabled"

$as_echo "#define ENABLE_IPV6 1" >>confdefs.h

  IPV6_ENABLED=1


  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5
$as_echo_n "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
24796
24797
24798
24799
24800
24801
24802


































































































































































24803
24804
24805
24806
24807
24808
24809
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi




































































































































































OPT_NSS=no


# Check whether --with-nss was given.
if test "${with_nss+set}" = set; then :
  withval=$with_nss; OPT_NSS=$withval







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







24814
24815
24816
24817
24818
24819
24820
24821
24822
24823
24824
24825
24826
24827
24828
24829
24830
24831
24832
24833
24834
24835
24836
24837
24838
24839
24840
24841
24842
24843
24844
24845
24846
24847
24848
24849
24850
24851
24852
24853
24854
24855
24856
24857
24858
24859
24860
24861
24862
24863
24864
24865
24866
24867
24868
24869
24870
24871
24872
24873
24874
24875
24876
24877
24878
24879
24880
24881
24882
24883
24884
24885
24886
24887
24888
24889
24890
24891
24892
24893
24894
24895
24896
24897
24898
24899
24900
24901
24902
24903
24904
24905
24906
24907
24908
24909
24910
24911
24912
24913
24914
24915
24916
24917
24918
24919
24920
24921
24922
24923
24924
24925
24926
24927
24928
24929
24930
24931
24932
24933
24934
24935
24936
24937
24938
24939
24940
24941
24942
24943
24944
24945
24946
24947
24948
24949
24950
24951
24952
24953
24954
24955
24956
24957
24958
24959
24960
24961
24962
24963
24964
24965
24966
24967
24968
24969
24970
24971
24972
24973
24974
24975
24976
24977
24978
24979
24980
24981
24982
24983
24984
24985
24986
24987
24988
24989
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi


OPT_BEARSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS

# Check whether --with-bearssl was given.
if test "${with_bearssl+set}" = set; then :
  withval=$with_bearssl; OPT_BEARSSL=$withval
fi


if test -z "$ssl_backends" -o "x$OPT_BEARSSL" != xno; then
  ssl_msg=

  if test X"$OPT_BEARSSL" != Xno; then

    if test "$OPT_BEARSSL" = "yes"; then
      OPT_BEARSSL=""
    fi

    if test -z "$OPT_BEARSSL" ; then

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
$as_echo_n "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
if ${ac_cv_lib_bearssl_br_ssl_client_init_full+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lbearssl -lbearssl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char br_ssl_client_init_full ();
int main (void)
{
return br_ssl_client_init_full ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
else
  ac_cv_lib_bearssl_br_ssl_client_init_full=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5
$as_echo "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes; then :


$as_echo "#define USE_BEARSSL 1" >>confdefs.h

         USE_BEARSSL=1

         BEARSSL_ENABLED=1
         USE_BEARSSL="yes"
         ssl_msg="BearSSL"
	 test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

fi

    fi

    addld=""
    addlib=""
    addcflags=""
    bearssllib=""

    if test "x$USE_BEARSSL" != "xyes"; then
            addld=-L$OPT_BEARSSL/lib$libsuff
      addcflags=-I$OPT_BEARSSL/include
      bearssllib=$OPT_BEARSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
$as_echo_n "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
if ${ac_cv_lib_bearssl_br_ssl_client_init_full+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lbearssl -lbearssl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char br_ssl_client_init_full ();
int main (void)
{
return br_ssl_client_init_full ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
else
  ac_cv_lib_bearssl_br_ssl_client_init_full=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5
$as_echo "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes; then :


$as_echo "#define USE_BEARSSL 1" >>confdefs.h

       USE_BEARSSL=1

       BEARSSL_ENABLED=1
       USE_BEARSSL="yes"
       ssl_msg="BearSSL"
       test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

else

         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags

fi

    fi

    if test "x$USE_BEARSSL" = "xyes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: detected BearSSL" >&5
$as_echo "$as_me: detected BearSSL" >&6;}
      check_for_ca_bundle=1

      LIBS="-lbearssl $LIBS"

      if test -n "$bearssllib"; then
                                        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib"
          export CURL_LIBRARY_PATH
          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $bearssllib to CURL_LIBRARY_PATH" >&5
$as_echo "$as_me: Added $bearssllib to CURL_LIBRARY_PATH" >&6;}
        fi
      fi
    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi


OPT_NSS=no


# Check whether --with-nss was given.
if test "${with_nss+set}" = set; then :
  withval=$with_nss; OPT_NSS=$withval
25233
25234
25235
25236
25237
25238
25239
25240
25241
25242
25243
25244
25245
25246
25247
25248
25249
25250
25251
25252
      fi

    fi
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$AMISSL_ENABLED" in
x)
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
$as_echo "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this." >&5
$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this." >&2;}
  ;;
x1)
  # one SSL backend is enabled

  SSL_ENABLED="1"
  { $as_echo "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
$as_echo "$as_me: built with one SSL backend" >&6;}







|



|
|







25413
25414
25415
25416
25417
25418
25419
25420
25421
25422
25423
25424
25425
25426
25427
25428
25429
25430
25431
25432
      fi

    fi
  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED" in
x)
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
$as_echo "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&5
$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this." >&2;}
  ;;
x1)
  # one SSL backend is enabled

  SSL_ENABLED="1"
  { $as_echo "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
$as_echo "$as_me: built with one SSL backend" >&6;}
41333
41334
41335
41336
41337
41338
41339
41340
41341
41342
41343
41344
41345
41346
41347
41348
41349
41350
41351
41352
41353
41354
41355
41356
41357
    conftest$ac_exeext conftest.$ac_ext
  fi

fi
done


if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then

$as_echo "#define ENABLE_IPV6 1" >>confdefs.h

    IPV6_ENABLED=1

    curl_ipv6_msg="enabled"
  fi
fi


            #
  tst_method="unknown"

  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
$as_echo_n "checking how to set a socket into non-blocking mode... " >&6; }
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then







<
<
<
<
<
<
<
<
<
<
<







41513
41514
41515
41516
41517
41518
41519











41520
41521
41522
41523
41524
41525
41526
    conftest$ac_exeext conftest.$ac_ext
  fi

fi
done














            #
  tst_method="unknown"

  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
$as_echo_n "checking how to set a socket into non-blocking mode... " >&6; }
  if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then
42520
42521
42522
42523
42524
42525
42526
42527
42528
42529
42530
42531
42532
42533
42534
42535
42536
42537
42538
42539
42540
42541
42542
42543
42544
42545
42546
42547
42548
42549
42550
if test "x$want_esni" != "xno"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ESNI support is available" >&5
$as_echo_n "checking whether ESNI support is available... " >&6; }

    ESNI_ENABLED=0
  ESNI_SUPPORT=''

      if test "x$OPENSSL_ENABLED" == "x1"; then
    for ac_func in SSL_get_esni_status
do :
  ac_fn_c_check_func "$LINENO" "SSL_get_esni_status" "ac_cv_func_SSL_get_esni_status"
if test "x$ac_cv_func_SSL_get_esni_status" = xyes; then :
  cat >>confdefs.h <<_ACEOF
#define HAVE_SSL_GET_ESNI_STATUS 1
_ACEOF
 ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1
fi
done


    fi

    if test "x$ESNI_ENABLED" == "x1"; then

$as_echo "#define USE_ESNI 1" >>confdefs.h

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ESNI_SUPPORT" >&5
$as_echo "$ESNI_SUPPORT" >&6; }
    experimental="$experimental ESNI"
  else







|















|







42689
42690
42691
42692
42693
42694
42695
42696
42697
42698
42699
42700
42701
42702
42703
42704
42705
42706
42707
42708
42709
42710
42711
42712
42713
42714
42715
42716
42717
42718
42719
if test "x$want_esni" != "xno"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ESNI support is available" >&5
$as_echo_n "checking whether ESNI support is available... " >&6; }

    ESNI_ENABLED=0
  ESNI_SUPPORT=''

      if test "x$OPENSSL_ENABLED" = "x1"; then
    for ac_func in SSL_get_esni_status
do :
  ac_fn_c_check_func "$LINENO" "SSL_get_esni_status" "ac_cv_func_SSL_get_esni_status"
if test "x$ac_cv_func_SSL_get_esni_status" = xyes; then :
  cat >>confdefs.h <<_ACEOF
#define HAVE_SSL_GET_ESNI_STATUS 1
_ACEOF
 ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1
fi
done


    fi

    if test "x$ESNI_ENABLED" = "x1"; then

$as_echo "#define USE_ESNI 1" >>confdefs.h

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ESNI_SUPPORT" >&5
$as_echo "$ESNI_SUPPORT" >&6; }
    experimental="$experimental ESNI"
  else
Changes to jni/curl/configure.ac.
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
PKGADD_VENDOR="curl.haxx.se"
AC_SUBST(PKGADD_PKG)
AC_SUBST(PKGADD_NAME)
AC_SUBST(PKGADD_VENDOR)

dnl
dnl initialize all the info variables
    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl} )"
    curl_ssh_msg="no      (--with-libssh2)"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
    curl_gss_msg="no      (--with-gssapi)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"







|
|







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
PKGADD_VENDOR="curl.haxx.se"
AC_SUBST(PKGADD_PKG)
AC_SUBST(PKGADD_NAME)
AC_SUBST(PKGADD_VENDOR)

dnl
dnl initialize all the info variables
    curl_ssl_msg="no      (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl} )"
    curl_ssh_msg="no      (--with-{libssh,libssh2})"
   curl_zlib_msg="no      (--with-zlib)"
 curl_brotli_msg="no      (--with-brotli)"
    curl_gss_msg="no      (--with-gssapi)"
curl_tls_srp_msg="no      (--enable-tls-srp)"
    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
   curl_ipv6_msg="no      (--enable-ipv6)"
curl_unix_sockets_msg="no      (--enable-unix-sockets)"
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209

1210
1211




1212
1213
1214
1215


1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231





1232
1233
1234
1235
1236
1237
1238
       ipv6=no
       ;;
  *)   AC_MSG_RESULT(yes)
       ipv6=yes
       ;;
  esac ],

  AC_TRY_RUN([ /* is AF_INET6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>

#else
#include <sys/socket.h>




#endif
#include <stdlib.h> /* for exit() */
main()
{


 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}
],
  AC_MSG_RESULT(yes)
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))

# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then





  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else







|



>


>
>
>
>




>
>














<

>
>
>
>
>







1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236

1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
       ipv6=no
       ;;
  *)   AC_MSG_RESULT(yes)
       ipv6=yes
       ;;
  esac ],

  AC_TRY_RUN([ /* are AF_INET6 and sockaddr_in6 available? */
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#if defined (__TANDEM)
# include <netinet/in6.h>
#endif
#endif
#include <stdlib.h> /* for exit() */
main()
{
 struct sockaddr_in6 s;
 (void)s;
 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
   exit(1);
 else
   exit(0);
}
],
  AC_MSG_RESULT(yes)
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))


if test "$ipv6" = yes; then
  curl_ipv6_msg="enabled"
  AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
  IPV6_ENABLED=1
  AC_SUBST(IPV6_ENABLED)

  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#include <ws2tcpip.h>
#else
2394
2395
2396
2397
2398
2399
2400




























































































2401
2402
2403
2404
2405
2406
2407
      fi
    fi

  fi dnl MesaLink not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi





























































































dnl ----------------------------------------------------
dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for NSS files & libraries.
OPT_NSS=no







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
      fi
    fi

  fi dnl MesaLink not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

dnl ----------------------------------------------------
dnl check for BearSSL
dnl ----------------------------------------------------

OPT_BEARSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(bearssl,dnl
AC_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root])
AC_HELP_STRING([--without-bearssl], [disable BearSSL detection]),
  OPT_BEARSSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_BEARSSL" != xno; then
  ssl_msg=

  if test X"$OPT_BEARSSL" != Xno; then

    if test "$OPT_BEARSSL" = "yes"; then
      OPT_BEARSSL=""
    fi

    if test -z "$OPT_BEARSSL" ; then
      dnl check for lib first without setting any new path

      AC_CHECK_LIB(bearssl, br_ssl_client_init_full,
      dnl libbearssl found, set the variable
       [
         AC_DEFINE(USE_BEARSSL, 1, [if BearSSL is enabled])
         AC_SUBST(USE_BEARSSL, [1])
         BEARSSL_ENABLED=1
         USE_BEARSSL="yes"
         ssl_msg="BearSSL"
	 test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
        ], [], -lbearssl)
    fi

    addld=""
    addlib=""
    addcflags=""
    bearssllib=""

    if test "x$USE_BEARSSL" != "xyes"; then
      dnl add the path and test again
      addld=-L$OPT_BEARSSL/lib$libsuff
      addcflags=-I$OPT_BEARSSL/include
      bearssllib=$OPT_BEARSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      AC_CHECK_LIB(bearssl, br_ssl_client_init_full,
       [
       AC_DEFINE(USE_BEARSSL, 1, [if BearSSL is enabled])
       AC_SUBST(USE_BEARSSL, [1])
       BEARSSL_ENABLED=1
       USE_BEARSSL="yes"
       ssl_msg="BearSSL"
       test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       ],
       [
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
       ], -lbearssl)
    fi

    if test "x$USE_BEARSSL" = "xyes"; then
      AC_MSG_NOTICE([detected BearSSL])
      check_for_ca_bundle=1

      LIBS="-lbearssl $LIBS"

      if test -n "$bearssllib"; then
        dnl when shared libs were found in a path that the run-time
        dnl linker doesn't search through, we need to add it to
        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
        dnl due to this
        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $bearssllib to CURL_LIBRARY_PATH])
        fi
      fi
    fi

  fi dnl BearSSL not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

dnl ----------------------------------------------------
dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for NSS files & libraries.
OPT_NSS=no
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
    fi dnl NSS found

  fi dnl NSS not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$AMISSL_ENABLED" in
x)
  AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
  AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_MSG_NOTICE([built with one SSL backend])
  ;;







|


|







2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
    fi dnl NSS found

  fi dnl NSS not disabled

  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi

case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED" in
x)
  AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
  AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl or --with-bearssl to address this.])
  ;;
x1)
  # one SSL backend is enabled
  AC_SUBST(SSL_ENABLED)
  SSL_ENABLED="1"
  AC_MSG_NOTICE([built with one SSL backend])
  ;;
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
        [Define to 1 if you have the $func function.])
    ],[
      AC_MSG_RESULT([but still no])
    ])
  fi
])

if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then
    AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
    IPV6_ENABLED=1
    AC_SUBST(IPV6_ENABLED)
    curl_ipv6_msg="enabled"
  fi
fi

CURL_CHECK_NONBLOCKING_SOCKET

dnl ************************************************************
dnl nroff tool stuff
dnl

AC_PATH_PROG( PERL, perl, ,







<
<
<
<
<
<
<
<
<







4059
4060
4061
4062
4063
4064
4065









4066
4067
4068
4069
4070
4071
4072
        [Define to 1 if you have the $func function.])
    ],[
      AC_MSG_RESULT([but still no])
    ])
  fi
])










CURL_CHECK_NONBLOCKING_SOCKET

dnl ************************************************************
dnl nroff tool stuff
dnl

AC_PATH_PROG( PERL, perl, ,
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410

dnl ************************************************************
dnl disable shuffle DNS support
dnl
AC_MSG_CHECKING([whether to support DNS shuffling])
AC_ARG_ENABLE(dnsshuffle,
AC_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling])
AC_HELP_STRING([--disable-dnsshuffle],[Disable DNS shufflinf]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;







|







4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504

dnl ************************************************************
dnl disable shuffle DNS support
dnl
AC_MSG_CHECKING([whether to support DNS shuffling])
AC_ARG_ENABLE(dnsshuffle,
AC_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling])
AC_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling])
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468

  dnl assume NOT and look for sufficient condition
  ESNI_ENABLED=0
  ESNI_SUPPORT=''

  dnl OpenSSL with a chosen ESNI function should be enough
  dnl so more exhaustive checking seems unnecessary for now
  if test "x$OPENSSL_ENABLED" == "x1"; then
    AC_CHECK_FUNCS(SSL_get_esni_status,
      ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1)

  dnl add 'elif' chain here for additional implementations
  fi

  dnl now deal with whatever we found
  if test "x$ESNI_ENABLED" == "x1"; then
    AC_DEFINE(USE_ESNI, 1, [if ESNI support is available])
    AC_MSG_RESULT($ESNI_SUPPORT)
    experimental="$experimental ESNI"
  else
    AC_MSG_ERROR([--enable-esni ignored: No ESNI support found])
  fi
fi







|








|







4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562

  dnl assume NOT and look for sufficient condition
  ESNI_ENABLED=0
  ESNI_SUPPORT=''

  dnl OpenSSL with a chosen ESNI function should be enough
  dnl so more exhaustive checking seems unnecessary for now
  if test "x$OPENSSL_ENABLED" = "x1"; then
    AC_CHECK_FUNCS(SSL_get_esni_status,
      ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1)

  dnl add 'elif' chain here for additional implementations
  fi

  dnl now deal with whatever we found
  if test "x$ESNI_ENABLED" = "x1"; then
    AC_DEFINE(USE_ESNI, 1, [if ESNI support is available])
    AC_MSG_RESULT($ESNI_SUPPORT)
    experimental="$experimental ESNI"
  else
    AC_MSG_ERROR([--enable-esni ignored: No ESNI support found])
  fi
fi
Changes to jni/curl/docs/ALTSVC.md.
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

1. The ALPN id for the source origin
2. The host name for the source origin
3. The port number for the source origin
4. The ALPN id for the destination host
5. The host name for the destination host
6. The host number for the destination host
7. The expiration date and time of this entry withing double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
8. Boolean (1 or 0) if "persist" was set for this entry
9. Integer priority value (not currently used)

# TODO

- handle multiple response headers, when one of them says `clear` (should
  override them all)







|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

1. The ALPN id for the source origin
2. The host name for the source origin
3. The port number for the source origin
4. The ALPN id for the destination host
5. The host name for the destination host
6. The host number for the destination host
7. The expiration date and time of this entry within double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
8. Boolean (1 or 0) if "persist" was set for this entry
9. Integer priority value (not currently used)

# TODO

- handle multiple response headers, when one of them says `clear` (should
  override them all)
Added jni/curl/docs/CURL-DISABLE.md.




























































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
# Code defines to disable features and protocols

## CURL_DISABLE_COOKIES

Disable support for HTTP cookies.

## CURL_DISABLE_CRYPTO_AUTH

Disable support for authentication methods using crypto.

## CURL_DISABLE_DICT

Disable the DICT protocol

## CURL_DISABLE_DOH

Disable DNS-over-HTTPS

## CURL_DISABLE_FILE

Disable the FILE protocol

## CURL_DISABLE_FTP

Disable the FTP (and FTPS) protocol

## CURL_DISABLE_GOPHER

Disable the GOPHER protocol.

## CURL_DISABLE_HTTP

Disable the HTTP(S) protocols. Note that this then also disable HTTP proxy
support.

## CURL_DISABLE_HTTP_AUTH

Disable support for all HTTP authentication methods.

## CURL_DISABLE_IMAP

Disable the IMAP(S) protocols.

## CURL_DISABLE_LDAP

Disable the LDAP(S) protocols.

## CURL_DISABLE_LDAPS

Disable the LDAPS protocol.

## CURL_DISABLE_LIBCURL_OPTION

Disable the --libcurl option from the curl tool.

## CURL_DISABLE_MIME

Disable MIME support.

## CURL_DISABLE_NETRC

Disable the netrc parser.

## CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG

Disable the auto load config support in the OpenSSL backend.

## CURL_DISABLE_PARSEDATE

Disable date parsing

## CURL_DISABLE_POP

Disable the POP(S) protocols

## CURL_DISABLE_PROGRESS_METER

Disable the built-in progress meter

## CURL_DISABLE_PROXY

Disable support for proxies

## CURL_DISABLE_RTSP

Disable the RTSP protocol.

## CURL_DISABLE_SHUFFLE_DNS

Disable the shuffle DNS feature

## CURL_DISABLE_SMB

Disable the SMB(S) protocols

## CURL_DISABLE_SMTP

Disable the SMTP(S) protocols

## CURL_DISABLE_TELNET

Disable the TELNET protocol

## CURL_DISABLE_TFTP

Disable the TFTP protocol

## CURL_DISABLE_VERBOSE_STRINGS

Disable verbose strings and error messages.
Changes to jni/curl/docs/ESNI.md.
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
    specific work in progress ([described
    here](https://github.com/sftcd/openssl/tree/master/esnistuff)) to
    implement ESNI for OpenSSL, as this is the immediate motivation
    for the proposed change.

## References

CloudFlare blog: [Encrypting SNI: Fixing One of the Core Internet Bugs][corebug]

Cloudflare blog: [Encrypt it or lose it: how encrypted SNI works][esniworks]

IETF Draft: [Encrypted Server Name Indication for TLS 1.3][tlsesni]

---








|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
    specific work in progress ([described
    here](https://github.com/sftcd/openssl/tree/master/esnistuff)) to
    implement ESNI for OpenSSL, as this is the immediate motivation
    for the proposed change.

## References

Cloudflare blog: [Encrypting SNI: Fixing One of the Core Internet Bugs][corebug]

Cloudflare blog: [Encrypt it or lose it: how encrypted SNI works][esniworks]

IETF Draft: [Encrypted Server Name Indication for TLS 1.3][tlsesni]

---

Changes to jni/curl/docs/FAQ.
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459

  Curl has been written to use a generic SSL function layer internally, and
  that SSL functionality can then be provided by one out of many different SSL
  backends.

  curl can be built to use one of the following SSL alternatives: OpenSSL,
  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
  Transport (native iOS/OS X), Schannel (native Windows) or GSKit (native IBM
  i). They all have their pros and cons, and we try to maintain a comparison
  of them here: https://curl.haxx.se/docs/ssl-compared.html

  2.3 Where can I find a copy of LIBEAY32.DLL?

  That is an OpenSSL binary built for Windows.

  Curl can be built with OpenSSL to do the SSL stuff. The LIBEAY32.DLL is then
  what curl needs on a windows machine to do https:// etc. Check out the curl







|
|
|







443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459

  Curl has been written to use a generic SSL function layer internally, and
  that SSL functionality can then be provided by one out of many different SSL
  backends.

  curl can be built to use one of the following SSL alternatives: OpenSSL,
  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
  Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM
  i), or BearSSL. They all have their pros and cons, and we try to maintain a
  comparison of them here: https://curl.haxx.se/docs/ssl-compared.html

  2.3 Where can I find a copy of LIBEAY32.DLL?

  That is an OpenSSL binary built for Windows.

  Curl can be built with OpenSSL to do the SSL stuff. The LIBEAY32.DLL is then
  what curl needs on a windows machine to do https:// etc. Check out the curl
Changes to jni/curl/docs/HISTORY.md.
213
214
215
216
217
218
219


220
221
222
223
224
225
226

 145,000 unique visitors. >100 GB downloaded.

2009
----

March: security vulnerability: libcurl Arbitrary File Access



August: security vulnerability: libcurl embedded zero in cert name

December: Added support for IMAP, POP3 and SMTP

2010
----







>
>







213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228

 145,000 unique visitors. >100 GB downloaded.

2009
----

March: security vulnerability: libcurl Arbitrary File Access

April: added CMake support

August: security vulnerability: libcurl embedded zero in cert name

December: Added support for IMAP, POP3 and SMTP

2010
----
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
2014
----

 March: first real release supporting HTTP/2

 September: Web site had 245,000 unique visitors and served 236GB data



2015
----

 June: support for multiplexing with HTTP/2

 August: support for HTTP/2 server push

 December: Public Suffix List

2016
----

 January: the curl tool defaults to HTTP/2 for HTTPS URLs

 December: curl 7.52.0 introduced support for HTTPS-proxy!

 First TLS 1.3 support

2017
----



 September: Added Multi-SSL support

 The web site serves 3100 GB/month

    Public curl releases:         169
    Command line options:         211







>
>




















>
>







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
2014
----

 March: first real release supporting HTTP/2

 September: Web site had 245,000 unique visitors and served 236GB data

 SMB and SMBS support

2015
----

 June: support for multiplexing with HTTP/2

 August: support for HTTP/2 server push

 December: Public Suffix List

2016
----

 January: the curl tool defaults to HTTP/2 for HTTPS URLs

 December: curl 7.52.0 introduced support for HTTPS-proxy!

 First TLS 1.3 support

2017
----

 July: OSS-Fuzz started fuzzing libcurl

 September: Added Multi-SSL support

 The web site serves 3100 GB/month

    Public curl releases:         169
    Command line options:         211
340
341
342
343
344
345
346







 October 31: Curl and libcurl 7.62.0

    Public curl releases:         177
    Command line options:         219
    curl_easy_setopt() options:   261
    Public functions in libcurl:  80
    Contributors:                 1808














>
>
>
>
>
>
>
346
347
348
349
350
351
352
353
354
355
356
357
358
359
 October 31: Curl and libcurl 7.62.0

    Public curl releases:         177
    Command line options:         219
    curl_easy_setopt() options:   261
    Public functions in libcurl:  80
    Contributors:                 1808

2019
----

 August: the first HTTP/3 requests with curl.

 September: 7.66.0 is released and the tool offers parallel downloads
Changes to jni/curl/docs/HTTP-COOKIES.md.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
  published and details how cookies work within HTTP. In 2016, an update which
  added support for prefixes was
  [proposed](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
  and in 2017, another update was
  [drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
  to deprecate modification of 'secure' cookies from non-secure origins. Both
  of these drafs have been incorporated into a proposal to
  [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
  RFC6265. Cookie prefixes and secure cookie modification protection has been
  implemented by curl.

## Cookies saved to disk

  Netscape once created a file format for storing cookies on disk so that they







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
  published and details how cookies work within HTTP. In 2016, an update which
  added support for prefixes was
  [proposed](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
  and in 2017, another update was
  [drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
  to deprecate modification of 'secure' cookies from non-secure origins. Both
  of these drafts have been incorporated into a proposal to
  [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
  RFC6265. Cookie prefixes and secure cookie modification protection has been
  implemented by curl.

## Cookies saved to disk

  Netscape once created a file format for storing cookies on disk so that they
Changes to jni/curl/docs/HTTP3.md.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
the wiki page describing the plan for how to support QUIC and HTTP/3 in curl
and libcurl.

[quicwg.org](https://quicwg.org/) - home of the official protocol drafts

## QUIC libraries

QUIC libraries we're experiementing with:

[ngtcp2](https://github.com/ngtcp2/ngtcp2)

[quiche](https://github.com/cloudflare/quiche)

## Experimental!








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
the wiki page describing the plan for how to support QUIC and HTTP/3 in curl
and libcurl.

[quicwg.org](https://quicwg.org/) - home of the official protocol drafts

## QUIC libraries

QUIC libraries we're experimenting with:

[ngtcp2](https://github.com/ngtcp2/ngtcp2)

[quiche](https://github.com/cloudflare/quiche)

## Experimental!

Changes to jni/curl/docs/INSTALL.md.
116
117
118
119
120
121
122

123
124
125
126
127
128
129
 - wolfSSL: `--without-ssl --with-wolfssl`
 - NSS: `--without-ssl --with-nss`
 - PolarSSL: `--without-ssl --with-polarssl`
 - mbedTLS: `--without-ssl --with-mbedtls`
 - schannel: `--without-ssl --with-schannel`
 - secure transport: `--without-ssl --with-secure-transport`
 - MesaLink: `--without-ssl --with-mesalink`


# Windows

## Building Windows DLLs and C run-time (CRT) linkage issues

 As a general rule, building a DLL with static CRT linkage is highly
 discouraged, and intermixing CRTs in the same app is something to avoid at







>







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 - wolfSSL: `--without-ssl --with-wolfssl`
 - NSS: `--without-ssl --with-nss`
 - PolarSSL: `--without-ssl --with-polarssl`
 - mbedTLS: `--without-ssl --with-mbedtls`
 - schannel: `--without-ssl --with-schannel`
 - secure transport: `--without-ssl --with-secure-transport`
 - MesaLink: `--without-ssl --with-mesalink`
 - BearSSL: `--without-ssl --with-bearssl`

# Windows

## Building Windows DLLs and C run-time (CRT) linkage issues

 As a general rule, building a DLL with static CRT linkage is highly
 discouraged, and intermixing CRTs in the same app is something to avoid at
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

## Disabling Specific Protocols in Windows builds

The configure utility, unfortunately, is not available for the Windows
environment, therefore, you cannot use the various disable-protocol options of
the configure utility on this platform.

However, you can use the following defines to disable specific
protocols:

 - `HTTP_ONLY`             disables all protocols except HTTP
 - `CURL_DISABLE_FTP`      disables FTP
 - `CURL_DISABLE_LDAP`     disables LDAP
 - `CURL_DISABLE_TELNET`   disables TELNET
 - `CURL_DISABLE_DICT`     disables DICT
 - `CURL_DISABLE_FILE`     disables FILE
 - `CURL_DISABLE_TFTP`     disables TFTP
 - `CURL_DISABLE_HTTP`     disables HTTP
 - `CURL_DISABLE_IMAP`     disables IMAP
 - `CURL_DISABLE_POP3`     disables POP3
 - `CURL_DISABLE_SMTP`     disables SMTP

If you want to set any of these defines you have the following options:

 - Modify `lib/config-win32.h`
 - Modify `lib/curl_setup.h`
 - Modify `winbuild/Makefile.vc`
 - Modify the "Preprocessor Definitions" in the libcurl project







|
<
|
<
<
<
<
<
<
<
<
<
<
<







192
193
194
195
196
197
198
199

200











201
202
203
204
205
206
207

## Disabling Specific Protocols in Windows builds

The configure utility, unfortunately, is not available for the Windows
environment, therefore, you cannot use the various disable-protocol options of
the configure utility on this platform.

You can use specific defines to disable specific protocols and features. See

[CURL-DISABLE.md](CURL-DISABLE-md) for the full list.












If you want to set any of these defines you have the following options:

 - Modify `lib/config-win32.h`
 - Modify `lib/curl_setup.h`
 - Modify `winbuild/Makefile.vc`
 - Modify the "Preprocessor Definitions" in the libcurl project
292
293
294
295
296
297
298









































299
300
301
302
303
304
305
commands in curl's directory in the shell will build the code such that it
will run on cats as old as OS X 10.6 ("Snow Leopard") (using bash):

    export MACOSX_DEPLOYMENT_TARGET="10.6"
    ./configure --with-darwinssl
    make










































# Cross compile

Download and unpack the curl package.

`cd` to the new directory. (e.g. `cd curl-7.12.3`)

Set environment variables to point to the cross-compile toolchain and call







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
commands in curl's directory in the shell will build the code such that it
will run on cats as old as OS X 10.6 ("Snow Leopard") (using bash):

    export MACOSX_DEPLOYMENT_TARGET="10.6"
    ./configure --with-darwinssl
    make

# Android

When building curl for Android it's recommended to use a Linux environment
since using curl's `configure` script is the easiest way to build curl
for Android. Before you can build curl for Android, you need to install the
Android NDK first. This can be done using the SDK Manager that is part of
Android Studio. Once you have installed the Android NDK, you need to figure out
where it has been installed and then set up some environment variables before
launching `configure`. On macOS, those variables could look like this to compile
for `aarch64` and API level 29:

    export NDK=~/Library/Android/sdk/ndk/20.1.5948944
    export HOST_TAG=darwin-x86_64
    export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
    export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
    export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
    export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang
    export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++
    export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
    export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
    export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip

When building on Linux or targeting other API levels or architectures, you need
to adjust those variables accordingly. After that you can build curl like this:

    ./configure --host aarch64-linux-android --with-pic --disable-shared

Note that this won't give you SSL/TLS support. If you need SSL/TLS, you have
to build curl against a SSL/TLS layer, e.g. OpenSSL, because it's impossible for
curl to access Android's native SSL/TLS layer. To build curl for Android using
OpenSSL, follow the OpenSSL build instructions and then install `libssl.a` and
`libcrypto.a` to `$TOOLCHAIN/sysroot/usr/lib` and copy `include/openssl` to
`$TOOLCHAIN/sysroot/usr/include`. Now you can build curl for Android using
OpenSSL like this:
    
    ./configure --host aarch64-linux-android --with-pic --disable-shared --with-ssl="$TOOLCHAIN/sysroot/usr"

Note, however, that you must target at least Android M (API level 23) or `configure`
won't be able to detect OpenSSL since `stderr` (and the like) weren't defined
before Android M.

# Cross compile

Download and unpack the curl package.

`cd` to the new directory. (e.g. `cd curl-7.12.3`)

Set environment variables to point to the cross-compile toolchain and call
Changes to jni/curl/docs/KNOWN_BUGS.
26
27
28
29
30
31
32

33
34
35
36
37
38
39
 2.2 DER in keychain
 2.3 GnuTLS backend skips really long certificate fields
 2.4 DarwinSSL won't import PKCS#12 client certificates without a password
 2.5 Client cert handling with Issuer DN differs between backends
 2.6 CURL_GLOBAL_SSL
 2.7 Client cert (MTLS) issues with Schannel
 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname


 3. Email protocols
 3.1 IMAP SEARCH ALL truncated response
 3.2 No disconnect command
 3.3 SMTP to multiple recipients
 3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses








>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 2.2 DER in keychain
 2.3 GnuTLS backend skips really long certificate fields
 2.4 DarwinSSL won't import PKCS#12 client certificates without a password
 2.5 Client cert handling with Issuer DN differs between backends
 2.6 CURL_GLOBAL_SSL
 2.7 Client cert (MTLS) issues with Schannel
 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname
 2.9 TLS session cache doesn't work with TFO

 3. Email protocols
 3.1 IMAP SEARCH ALL truncated response
 3.2 No disconnect command
 3.3 SMTP to multiple recipients
 3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses

98
99
100
101
102
103
104

105
106
107
108
109
110
111
 11.5 Connection information when using TCP Fast Open
 11.6 slow connect to localhost on Windows
 11.7 signal-based resolver timeouts

 12. LDAP and OpenLDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?


 13. TCP/IP
 13.1 --interface for ipv6 binds to unusable IP address

 14 DICT
 14.1 DICT responses show the underlying protocol








>







99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 11.5 Connection information when using TCP Fast Open
 11.6 slow connect to localhost on Windows
 11.7 signal-based resolver timeouts

 12. LDAP and OpenLDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?
 12.3 LDAP on Windows doesn't work

 13. TCP/IP
 13.1 --interface for ipv6 binds to unusable IP address

 14 DICT
 14.1 DICT responses show the underlying protocol

251
252
253
254
255
256
257




258
259
260
261
262
263
264

2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname

 This seems to be a limitation in the underlying Schannel API.

 https://github.com/curl/curl/issues/3284





3. Email protocols

3.1 IMAP SEARCH ALL truncated response

 IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
 code reveals that pingpong.c contains some truncation code, at line 408, when
 it deems the server response to be too large truncating it to 40 characters"







>
>
>
>







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270

2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname

 This seems to be a limitation in the underlying Schannel API.

 https://github.com/curl/curl/issues/3284

2.9 TLS session cache doesn't work with TFO

 See https://github.com/curl/curl/issues/4301

3. Email protocols

3.1 IMAP SEARCH ALL truncated response

 IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
 code reveals that pingpong.c contains some truncation code, at line 408, when
 it deems the server response to be too large truncating it to 40 characters"
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349

 See https://github.com/curl/curl/issues/3229

5. Build and portability issues

5.1 USE_UNIX_SOCKETS on Windows

 Due to incorrect CMake checks for the presense of the feature, it will never
 be enabled for windows in a cmake build.

 See https://github.com/curl/curl/issues/4040

5.2 curl-config --libs contains private details

 "curl-config --libs" will include details set in LDFLAGS when configure is







|







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355

 See https://github.com/curl/curl/issues/3229

5. Build and portability issues

5.1 USE_UNIX_SOCKETS on Windows

 Due to incorrect CMake checks for the presence of the feature, it will never
 be enabled for windows in a cmake build.

 See https://github.com/curl/curl/issues/4040

5.2 curl-config --libs contains private details

 "curl-config --libs" will include details set in LDFLAGS when configure is
670
671
672
673
674
675
676
677

678
679
680
681
682
683
684
 See https://github.com/curl/curl/issues/868

11.5 Connection information when using TCP Fast Open

 CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
 enabled.

 See https://github.com/curl/curl/issues/1332


11.6 slow connect to localhost on Windows

 When connecting to "localhost" on Windows, curl will resolve the name for
 both ipv4 and ipv6 and try to connect to both happy eyeballs-style. Something
 in there does however make it take 200 milliseconds to succeed - which is the
 HAPPY_EYEBALLS_TIMEOUT define exactly. Lowering that define speeds up the







|
>







676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
 See https://github.com/curl/curl/issues/868

11.5 Connection information when using TCP Fast Open

 CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
 enabled.

 See https://github.com/curl/curl/issues/1332 and
 https://github.com/curl/curl/issues/4296

11.6 slow connect to localhost on Windows

 When connecting to "localhost" on Windows, curl will resolve the name for
 both ipv4 and ipv6 and try to connect to both happy eyeballs-style. Something
 in there does however make it take 200 milliseconds to succeed - which is the
 HAPPY_EYEBALLS_TIMEOUT define exactly. Lowering that define speeds up the
724
725
726
727
728
729
730







731
732
733
734
735
736
737
 See https://github.com/curl/curl/issues/622 and
     https://curl.haxx.se/mail/lib-2016-01/0101.html

12.2 LDAP on Windows does authentication wrong?

 https://github.com/curl/curl/issues/3116








13. TCP/IP

13.1 --interface for ipv6 binds to unusable IP address

 Since IPv6 provides a lot of addresses with different scope, binding to an
 IPv6 address needs to take the proper care so that it doesn't bind to a
 locally scoped address as that is bound to fail.







>
>
>
>
>
>
>







731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
 See https://github.com/curl/curl/issues/622 and
     https://curl.haxx.se/mail/lib-2016-01/0101.html

12.2 LDAP on Windows does authentication wrong?

 https://github.com/curl/curl/issues/3116

12.3 LDAP on Windows doesn't work

 A simple curl command line getting "ldap://ldap.forumsys.com" returns an
 error that says "no memory" !

 https://github.com/curl/curl/issues/4261

13. TCP/IP

13.1 --interface for ipv6 binds to unusable IP address

 Since IPv6 provides a lot of addresses with different scope, binding to an
 IPv6 address needs to take the proper care so that it doesn't bind to a
 locally scoped address as that is bound to fail.
Changes to jni/curl/docs/LICENSE-MIXING.md.
71
72
73
74
75
76
77





78
79
80
81
82
83
84
 license as that.

## libressl

 (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
 license as that.






## c-ares

 (Used for asynchronous name resolves) Uses an MIT license that is very
 liberal and imposes no restrictions on any other library or part you may link
 with.

## zlib







>
>
>
>
>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 license as that.

## libressl

 (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
 license as that.

## BearSSL

 (May be used for SSL/TLS support) Uses an MIT license that is very liberal
 and imposes no restrictions on any other library or part you may link with.

## c-ares

 (Used for asynchronous name resolves) Uses an MIT license that is very
 liberal and imposes no restrictions on any other library or part you may link
 with.

## zlib
Changes to jni/curl/docs/Makefile.am.
48
49
50
51
52
53
54

55
56
57
58
59
60
61
 BUGS                                           \
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \

 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \







>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 BUGS                                           \
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 CURL-DISABLE.md                                \
 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
Changes to jni/curl/docs/Makefile.in.
371
372
373
374
375
376
377

378
379
380
381
382
383
384
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
478
479
480
481
482
483
484

485
486
487
488
489
490
491
 BUGS                                           \
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \

 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \







>







479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
 BUGS                                           \
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 CURL-DISABLE.md                                \
 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
Changes to jni/curl/docs/PARALLEL-TRANSFERS.md.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
The progress meter that is displayed when doing parallel transfers is
completely different than the regular one used for each single transfer.

  It shows:

 o percent download (if known, which means *all* transfers need to have a
   known size)
 o precent upload (if known, with the same caveat as for download)
 o total amount of downloaded data
 o total amount of uploaded data
 o number of transfers to perform
 o number of concurrent transfers being transferred right now
 o number of transfers queued up waiting to start
 o total time all transfers are expected to take (if sizes are known)
 o current time the transfers have spent so far







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
The progress meter that is displayed when doing parallel transfers is
completely different than the regular one used for each single transfer.

  It shows:

 o percent download (if known, which means *all* transfers need to have a
   known size)
 o percent upload (if known, with the same caveat as for download)
 o total amount of downloaded data
 o total amount of uploaded data
 o number of transfers to perform
 o number of concurrent transfers being transferred right now
 o number of transfers queued up waiting to start
 o total time all transfers are expected to take (if sizes are known)
 o current time the transfers have spent so far
Changes to jni/curl/docs/RELEASE-PROCEDURE.md.
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94




95
96
97
98

Coming dates
------------

Based on the description above, here are some planned release dates (at the
time of this writing):

- May 22, 2019
- July 17, 2019
- September 11, 2019
- November 6, 2019
- January 8, 2020 (moved)
- February 27, 2020
- April 22, 2020
- June 17, 2020





The above (and more) curl-related dates are published in
[iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
as well.







<
<
<
<




>
>
>
>




80
81
82
83
84
85
86




87
88
89
90
91
92
93
94
95
96
97
98

Coming dates
------------

Based on the description above, here are some planned release dates (at the
time of this writing):





- January 8, 2020 (moved)
- February 27, 2020
- April 22, 2020
- June 17, 2020
- August 12, 2020
- October 7, 2020
- December 2, 2020
- January 27, 2021

The above (and more) curl-related dates are published in
[iCalendar format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
as well.
Changes to jni/curl/docs/THANKS.
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
 This project has been alive for many years. Countless people have provided
 feedback that have improved curl. Here follows a list of people that have
 contributed (a-z order).

 If you have contributed but are missing here, please let us know!

"Captain Basil"
"Spoon Man"
1ocalhost on github

Aaro Koskinen
Aaron Oneal
Aaron Orenstein
Aaron Scarisbrick
Abram Pousada
AceCrow on Github
Adam Barclay









>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 This project has been alive for many years. Countless people have provided
 feedback that have improved curl. Here follows a list of people that have
 contributed (a-z order).

 If you have contributed but are missing here, please let us know!

"Captain Basil"
"Spoon Man"
1ocalhost on github
3dyd on github
Aaro Koskinen
Aaron Oneal
Aaron Orenstein
Aaron Scarisbrick
Abram Pousada
AceCrow on Github
Adam Barclay
92
93
94
95
96
97
98

99
100
101
102
103

104
105
106
107
108
109
110
Amr Shahin
Anatol Belski
Anatoli Tubman
Anders Bakken
Anders Gustafsson
Anders Havn
Anders Roxell

Anderson Toshiyuki Sasaki
Andi Jahja
Andre Guibert de Bruet
Andre Heinecke
Andreas Damm

Andreas Farber
Andreas Kostyrka
Andreas Malzahn
Andreas Ntaflos
Andreas Olsson
Andreas Rieke
Andreas Roth







>





>







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Amr Shahin
Anatol Belski
Anatoli Tubman
Anders Bakken
Anders Gustafsson
Anders Havn
Anders Roxell
Anderson Sasaki
Anderson Toshiyuki Sasaki
Andi Jahja
Andre Guibert de Bruet
Andre Heinecke
Andreas Damm
Andreas Falkenhahn
Andreas Farber
Andreas Kostyrka
Andreas Malzahn
Andreas Ntaflos
Andreas Olsson
Andreas Rieke
Andreas Roth
122
123
124
125
126
127
128

129
130
131
132
133
134
135
Andrei Virtosu
Andrej E Baranov
Andrew Benham
Andrew Biggs
Andrew Bushnell
Andrew Francis
Andrew Fuller

Andrew Krieger
Andrew Kurushin
Andrew Lambert
Andrew Moise
Andrew Robbins
Andrew Wansink
Andrew de los Reyes







>







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Andrei Virtosu
Andrej E Baranov
Andrew Benham
Andrew Biggs
Andrew Bushnell
Andrew Francis
Andrew Fuller
Andrew Ishchuk
Andrew Krieger
Andrew Kurushin
Andrew Lambert
Andrew Moise
Andrew Robbins
Andrew Wansink
Andrew de los Reyes
217
218
219
220
221
222
223

224
225
226
227
228
229
230
Bill Doyle
Bill Egert
Bill Hoffman
Bill Middlecamp
Bill Nagel
Bill Pyne
Bjarni Ingi Gislason

Bjoern Sikora
Bjorn Augustsson
Bjorn Reese
Björn Stenberg
Blaise Potard
Bob Relyea
Bob Richmond







>







221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
Bill Doyle
Bill Egert
Bill Hoffman
Bill Middlecamp
Bill Nagel
Bill Pyne
Bjarni Ingi Gislason
Bjoern Franke
Bjoern Sikora
Bjorn Augustsson
Bjorn Reese
Björn Stenberg
Blaise Potard
Bob Relyea
Bob Richmond
314
315
316
317
318
319
320

321
322
323
324
325
326
327
Christophe Demory
Christophe Dervieux
Christophe Legry
Christopher Conroy
Christopher Head
Christopher Palow
Christopher R. Palmer

Christopher Stone
Chungtsun Li
Ciprian Badescu
Claes Jakobsson
Clarence Gardner
Claudio Neves
Clemens Gruber







>







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
Christophe Demory
Christophe Dervieux
Christophe Legry
Christopher Conroy
Christopher Head
Christopher Palow
Christopher R. Palmer
Christopher Reid
Christopher Stone
Chungtsun Li
Ciprian Badescu
Claes Jakobsson
Clarence Gardner
Claudio Neves
Clemens Gruber
343
344
345
346
347
348
349

350
351
352
353
354
355
356
Craig A West
Craig Davison
Craig Markwardt
Craig de Stigter
Cris Bailiff
Cristian Rodríguez
Curt Bogmine

Cyril B
Cyrill Osterwalder
Cédric Connes
Cédric Deltheil
D. Flinkmann
Da-Yoon Chung
Dag Ekengren







>







349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
Craig A West
Craig Davison
Craig Markwardt
Craig de Stigter
Cris Bailiff
Cristian Rodríguez
Curt Bogmine
Cynthia Coan
Cyril B
Cyrill Osterwalder
Cédric Connes
Cédric Deltheil
D. Flinkmann
Da-Yoon Chung
Dag Ekengren
788
789
790
791
792
793
794

795
796
797
798
799
800
801
Jan Chren
Jan Ehrhardt
Jan Koen Annot
Jan Kunder
Jan Schaumann
Jan Schmidt
Jan Van Boghout

Janne Johansson
Jared Jennings
Jared Lundell
Jari Aalto
Jari Sundell
Jason Baietto
Jason Glasgow







>







795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
Jan Chren
Jan Ehrhardt
Jan Koen Annot
Jan Kunder
Jan Schaumann
Jan Schmidt
Jan Van Boghout
JanB on github
Janne Johansson
Jared Jennings
Jared Lundell
Jari Aalto
Jari Sundell
Jason Baietto
Jason Glasgow
822
823
824
825
826
827
828

829
830
831
832
833
834
835
Jean-Noël Rouvignac
Jean-Philippe Barrette-LaPierre
Jeff Connelly
Jeff Hodges
Jeff Johnson
Jeff King
Jeff Lawson

Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
Jeffrey Walton
Jens Finkhaeuser
Jens Rantil
Jens Schleusener







>







830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
Jean-Noël Rouvignac
Jean-Philippe Barrette-LaPierre
Jeff Connelly
Jeff Hodges
Jeff Johnson
Jeff King
Jeff Lawson
Jeff Mears
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
Jeffrey Walton
Jens Finkhaeuser
Jens Rantil
Jens Schleusener
897
898
899
900
901
902
903

904
905
906
907
908
909
910
John Lask
John Levon
John Lightsey
John Marino
John Marshall
John McGowan
John P. McCaskey

John Starks
John Suprock
John V. Chow
John Wanghui
John Weismiller
John Wilkinson
John-Mark Bell







>







906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
John Lask
John Levon
John Lightsey
John Marino
John Marshall
John McGowan
John P. McCaskey
John Schroeder
John Starks
John Suprock
John V. Chow
John Wanghui
John Weismiller
John Wilkinson
John-Mark Bell
1161
1162
1163
1164
1165
1166
1167

1168
1169
1170
1171
1172
1173
1174
Mark Wotton
Markus Duft
Markus Elfring
Markus Koetter
Markus Moeller
Markus Oberhumer
Markus Westerlind

Marquis de Muesli
Martijn Koster
Martin Ankerl
Martin C. Martin
Martin Drasar
Martin Dreher
Martin Frodl







>







1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
Mark Wotton
Markus Duft
Markus Elfring
Markus Koetter
Markus Moeller
Markus Oberhumer
Markus Westerlind
Maros Priputen
Marquis de Muesli
Martijn Koster
Martin Ankerl
Martin C. Martin
Martin Drasar
Martin Dreher
Martin Frodl
1182
1183
1184
1185
1186
1187
1188

1189
1190
1191
1192
1193
1194
1195
Martin Lemke
Martin Skinner
Martin Staael
Martin Storsjö
Martin Vejnár
Marty Kuhrt
Maruko

Massimiliano Ziccardi
Massimo Callegari
Mateusz Loskot
Mathias Axelsson
Mathieu Legare
Mats Lidell
Matt Arsenault







>







1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
Martin Lemke
Martin Skinner
Martin Staael
Martin Storsjö
Martin Vejnár
Marty Kuhrt
Maruko
Massimiliano Fantuzzi
Massimiliano Ziccardi
Massimo Callegari
Mateusz Loskot
Mathias Axelsson
Mathieu Legare
Mats Lidell
Matt Arsenault
1211
1212
1213
1214
1215
1216
1217

1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237

1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256

1257
1258
1259
1260
1261
1262
1263
Mattias Fornander
Matus Uzak
Maurice Barnum
Mauro Iorio
Mauro Rappa
Max Dymond
Max Katsev

Max Khon
Max Savenkov
Maxim Ivanov
Maxim Perenesenko
Maxim Prohorov
Maxime Larocque
Maxime Legros
Mehmet Bozkurt
Mekonikum
Melissa Mears
Mert Yazıcıoğlu
Mettgut Jamalla
Michael Anti
Michael Benedict
Michael Brehm
Michael Calmer
Michael Cronenworth
Michael Curtis
Michael Day
Michael Felt

Michael Gmelin
Michael Goffioul
Michael Jahn
Michael Jerris
Michael Kalinin
Michael Kaufmann
Michael Kilburn
Michael Kujawa
Michael König
Michael Lee
Michael Maltese
Michael Mealling
Michael Mueller
Michael Osipov
Michael Schmid
Michael Smith
Michael Stapelberg
Michael Steuer
Michael Stillwell

Michael Wallner
Michal Bonino
Michal Marek
Michal Trybus
Michal Čaplygin
Michał Antoniak
Michał Fita







>




















>



















>







1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
Mattias Fornander
Matus Uzak
Maurice Barnum
Mauro Iorio
Mauro Rappa
Max Dymond
Max Katsev
Max Kellermann
Max Khon
Max Savenkov
Maxim Ivanov
Maxim Perenesenko
Maxim Prohorov
Maxime Larocque
Maxime Legros
Mehmet Bozkurt
Mekonikum
Melissa Mears
Mert Yazıcıoğlu
Mettgut Jamalla
Michael Anti
Michael Benedict
Michael Brehm
Michael Calmer
Michael Cronenworth
Michael Curtis
Michael Day
Michael Felt
Michael Forney
Michael Gmelin
Michael Goffioul
Michael Jahn
Michael Jerris
Michael Kalinin
Michael Kaufmann
Michael Kilburn
Michael Kujawa
Michael König
Michael Lee
Michael Maltese
Michael Mealling
Michael Mueller
Michael Osipov
Michael Schmid
Michael Smith
Michael Stapelberg
Michael Steuer
Michael Stillwell
Michael Vittiglio
Michael Wallner
Michal Bonino
Michal Marek
Michal Trybus
Michal Čaplygin
Michał Antoniak
Michał Fita
1289
1290
1291
1292
1293
1294
1295

1296
1297
1298
1299
1300
1301
1302
Miloš Ljumović
Mingliang Zhu
Miroslav Franc
Miroslav Spousta
Mitz Wark
Mohamed Lrhazi
Mohammad AlSaleh

Mohun Biswas
Mostyn Bramley-Moore
Moti Avrahami
MrSorcus on github
Muz Dima
Myk Taylor
NTMan on Github







>







1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
Miloš Ljumović
Mingliang Zhu
Miroslav Franc
Miroslav Spousta
Mitz Wark
Mohamed Lrhazi
Mohammad AlSaleh
Mohammad Hasbini
Mohun Biswas
Mostyn Bramley-Moore
Moti Avrahami
MrSorcus on github
Muz Dima
Myk Taylor
NTMan on Github
1397
1398
1399
1400
1401
1402
1403

1404
1405
1406
1407
1408
1409
1410
1411
1412

1413
1414
1415
1416
1417
1418
1419
Pau Garcia i Quiles
Paul B. Omta
Paul Donohue
Paul Dreik
Paul Groke
Paul Harrington
Paul Harris

Paul Howarth
Paul Joyce
Paul Marks
Paul Marquis
Paul Moore
Paul Nolan
Paul Oliver
Paul Querna
Paul Saab

Pavel Cenek
Pavel Gushchin
Pavel Löbl
Pavel Orehov
Pavel Pavlov
Pavel Raiskup
Pavel Rochnyak







>









>







1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
Pau Garcia i Quiles
Paul B. Omta
Paul Donohue
Paul Dreik
Paul Groke
Paul Harrington
Paul Harris
Paul Hoffman
Paul Howarth
Paul Joyce
Paul Marks
Paul Marquis
Paul Moore
Paul Nolan
Paul Oliver
Paul Querna
Paul Saab
Paulo Roberto Tomasi
Pavel Cenek
Pavel Gushchin
Pavel Löbl
Pavel Orehov
Pavel Pavlov
Pavel Raiskup
Pavel Rochnyak
1500
1501
1502
1503
1504
1505
1506

1507
1508
1509
1510
1511
1512
1513
Rainer Koenig
Rainer Müller
Rajesh Naganathan
Rajkumar Mandal
Ralf S. Engelschall
Ralph Beckmann
Ralph Mitchell

Ran Mozes
Randall S. Becker
Randy Armstrong
Randy McMurchy
Raphael Gozzo
Ravi Pratap
Ray Dassen







>







1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
Rainer Koenig
Rainer Müller
Rajesh Naganathan
Rajkumar Mandal
Ralf S. Engelschall
Ralph Beckmann
Ralph Mitchell
Ram Krushna Mishra
Ran Mozes
Randall S. Becker
Randy Armstrong
Randy McMurchy
Raphael Gozzo
Ravi Pratap
Ray Dassen
1537
1538
1539
1540
1541
1542
1543

1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560

1561
1562
1563
1564
1565
1566
1567
Rich Mirch
Rich Rauenzahn
Rich Turner
Richard Adams
Richard Alcock
Richard Archer
Richard Atterer

Richard Bramante
Richard Clayton
Richard Cooper
Richard Gorton
Richard Gray
Richard Hosking
Richard Hsu
Richard Michael
Richard Moore
Richard Prescott
Richard Silverman
Richard van den Berg
Richy Kim
Rick Deist
Rick Jones
Rick Richardson
Rick Welykochy

Ricki Hirner
Ricky Leverence
Ricky-Tigg on github
Rider Linden
Rikard Falkeborn
Rob Cotrone
Rob Crittenden







>

















>







1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
Rich Mirch
Rich Rauenzahn
Rich Turner
Richard Adams
Richard Alcock
Richard Archer
Richard Atterer
Richard Bowker
Richard Bramante
Richard Clayton
Richard Cooper
Richard Gorton
Richard Gray
Richard Hosking
Richard Hsu
Richard Michael
Richard Moore
Richard Prescott
Richard Silverman
Richard van den Berg
Richy Kim
Rick Deist
Rick Jones
Rick Richardson
Rick Welykochy
Rickard Hallerbäck
Ricki Hirner
Ricky Leverence
Ricky-Tigg on github
Rider Linden
Rikard Falkeborn
Rob Cotrone
Rob Crittenden
1622
1623
1624
1625
1626
1627
1628

1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643

1644
1645
1646
1647
1648
1649
1650
Ryan Schmidt
Ryan Scott
Ryan Winograd
Ryuichi KAWAMATA
Rémy Léone
S. Moonesamy
SBKarr on github

Salah-Eddin Shaban
Salvador Dávila
Salvatore Sorrentino
Sam Deane
Sam Hurst
Sam Roth
Sam Schanken
Sampo Kellomaki
Samuel Díaz García
Samuel Listopad
Samuel Surtees
Samuel Thibault
Sander Gates
Sandor Feldi
Santhana Todatry

Saqib Ali
Sara Golemon
Saran Neti
Sascha Swiercy
Saul good
Saurav Babu
Scott Bailey







>















>







1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
Ryan Schmidt
Ryan Scott
Ryan Winograd
Ryuichi KAWAMATA
Rémy Léone
S. Moonesamy
SBKarr on github
SLDiggie on github
Salah-Eddin Shaban
Salvador Dávila
Salvatore Sorrentino
Sam Deane
Sam Hurst
Sam Roth
Sam Schanken
Sampo Kellomaki
Samuel Díaz García
Samuel Listopad
Samuel Surtees
Samuel Thibault
Sander Gates
Sandor Feldi
Santhana Todatry
Santino Keupp
Saqib Ali
Sara Golemon
Saran Neti
Sascha Swiercy
Saul good
Saurav Babu
Scott Bailey
1673
1674
1675
1676
1677
1678
1679

1680
1681
1682
1683
1684
1685
1686
Sergio Borghese
Serj Kalichev
Seshubabu Pasam
Seth Mos
Sevan Janiyan
Sh Diao
Shachaf Ben-Kiki

Shankar Jadhavar
Shao Shuchao
Sharad Gupta
Shard
Shaun Jackman
Shawn Landden
Shawn Poulson







>







1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
Sergio Borghese
Serj Kalichev
Seshubabu Pasam
Seth Mos
Sevan Janiyan
Sh Diao
Shachaf Ben-Kiki
Shailesh Kapse
Shankar Jadhavar
Shao Shuchao
Sharad Gupta
Shard
Shaun Jackman
Shawn Landden
Shawn Poulson
1879
1880
1881
1882
1883
1884
1885

1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903

1904
1905
1906
1907
1908
1909
1910
Valerii Zapodovnikov
Vasiliy Faronov
Vasily Lobaskin
Vasy Okhin
Venkat Akella
Venkataramana Mokkapati
Vicente Garcia

Victor Snezhko
Vijay Panghal
Vikram Saxena
Viktor Szakats
Vilhelm Prytz
Ville Skyttä
Vilmos Nebehaj
Vincas Razma
Vincent Bronner
Vincent Le Normand
Vincent Penquerc'h
Vincent Sanders
Vincent Torri
Vlad Grachov
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko

Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
W. Mark Kubacki
Waldek Kozba







>


















>







1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
Valerii Zapodovnikov
Vasiliy Faronov
Vasily Lobaskin
Vasy Okhin
Venkat Akella
Venkataramana Mokkapati
Vicente Garcia
Victor Magierski
Victor Snezhko
Vijay Panghal
Vikram Saxena
Viktor Szakats
Vilhelm Prytz
Ville Skyttä
Vilmos Nebehaj
Vincas Razma
Vincent Bronner
Vincent Le Normand
Vincent Penquerc'h
Vincent Sanders
Vincent Torri
Vlad Grachov
Vlad Ureche
Vladimir Grishchenko
Vladimir Kotal
Vladimir Lazarenko
Vlastimil Ovčáčík
Vojtech Janota
Vojtech Minarik
Vojtěch Král
Volker Schmid
Vsevolod Novikov
W. Mark Kubacki
Waldek Kozba
1926
1927
1928
1929
1930
1931
1932

1933

1934
1935
1936
1937
1938
1939
1940
William Ahern
Wojciech Zwiefka
Wouter Van Rooy
Wu Yongzheng
Wyatt O'Day
Xavier Bouchoux
XhstormR on github

Xiangbin Li

XmiliaH on github
Yaakov Selkowitz
Yang Tse
Yarram Sunil
Yasuharu Yamada
Yasuhiro Matsumoto
Yechiel Kalmenson







>

>







1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
William Ahern
Wojciech Zwiefka
Wouter Van Rooy
Wu Yongzheng
Wyatt O'Day
Xavier Bouchoux
XhstormR on github
Xiang Xiao
Xiangbin Li
Xiaoyin Liu
XmiliaH on github
Yaakov Selkowitz
Yang Tse
Yarram Sunil
Yasuharu Yamada
Yasuhiro Matsumoto
Yechiel Kalmenson
1967
1968
1969
1970
1971
1972
1973

1974
1975
1976

1977
1978
1979
1980
1981
1982
1983
adnn on github
afrind on github
ahodesuka on github
anshnd on github
arainchik on github
asavah on github
baumanj on github

bobmitchell1956 on github
bsammon on github
buzo-ffm on github

cbartl on github
cclauss on github
clbr on github
cmfrolick on github
codesniffer13 on github
d912e3 on github
daboul on github







>



>







1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
adnn on github
afrind on github
ahodesuka on github
anshnd on github
arainchik on github
asavah on github
baumanj on github
bdry on github
bobmitchell1956 on github
bsammon on github
buzo-ffm on github
bxac on github
cbartl on github
cclauss on github
clbr on github
cmfrolick on github
codesniffer13 on github
d912e3 on github
daboul on github
2003
2004
2005
2006
2007
2008
2009

2010
2011
2012
2013
2014
2015
2016
jnbr on github
jonrumsey on github
joshhe on github
jungle-boogie on github
jveazey on github
jzinn on github
ka7 on github

kreshano on github
l00p3r on Hackerone
lijian996 on github
lukaszgn on github
madblobfish on github
marc-groundctl on github
masbug on github







>







2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
jnbr on github
jonrumsey on github
joshhe on github
jungle-boogie on github
jveazey on github
jzinn on github
ka7 on github
kouzhudong on github
kreshano on github
l00p3r on Hackerone
lijian996 on github
lukaszgn on github
madblobfish on github
marc-groundctl on github
masbug on github
2033
2034
2035
2036
2037
2038
2039

2040
2041
2042
2043
2044
2045
2046
omau on github
osabc on github
ovidiu-benea on github
patelvivekv1993 on github
patnyb on github
pendrek at hackerone
pszemus on github

silveja1 on github
smuellerDD on github
sstruchtrup on github
steelman on github
steini2000 on github
stootill on github
swalkaus at yahoo.com







>







2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
omau on github
osabc on github
ovidiu-benea on github
patelvivekv1993 on github
patnyb on github
pendrek at hackerone
pszemus on github
sayrer on github
silveja1 on github
smuellerDD on github
sstruchtrup on github
steelman on github
steini2000 on github
stootill on github
swalkaus at yahoo.com
Changes to jni/curl/docs/TODO.
16
17
18
19
20
21
22

23
24
25
26
27
28
29

 All bugs documented in the KNOWN_BUGS document are subject for fixing!

 1. libcurl
 1.1 TFO support on Windows
 1.2 Consult %APPDATA% also for .netrc
 1.3 struct lifreq

 1.5 get rid of PATH_MAX
 1.7 Support HTTP/2 for HTTP(S) proxies
 1.8 CURLOPT_RESOLVE for any port number
 1.9 Cache negative name resolves
 1.10 auto-detect proxy
 1.11 minimize dependencies with dynamically loaded modules
 1.12 updated DNS server while running







>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

 All bugs documented in the KNOWN_BUGS document are subject for fixing!

 1. libcurl
 1.1 TFO support on Windows
 1.2 Consult %APPDATA% also for .netrc
 1.3 struct lifreq
 1.4 alt-svc sharing
 1.5 get rid of PATH_MAX
 1.7 Support HTTP/2 for HTTP(S) proxies
 1.8 CURLOPT_RESOLVE for any port number
 1.9 Cache negative name resolves
 1.10 auto-detect proxy
 1.11 minimize dependencies with dynamically loaded modules
 1.12 updated DNS server while running
153
154
155
156
157
158
159

160
161
162
163
164
165
166
 20.1 SSL tunnel
 20.2 nicer lacking perl message
 20.3 more protocols supported
 20.4 more platforms supported
 20.5 Add support for concurrent connections
 20.6 Use the RFC6265 test suite
 20.7 Support LD_PRELOAD on macOS


 21. Next SONAME bump
 21.1 http-style HEAD output for FTP
 21.2 combine error codes
 21.3 extend CURLOPT_SOCKOPTFUNCTION prototype

 22. Next major release







>







154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
 20.1 SSL tunnel
 20.2 nicer lacking perl message
 20.3 more protocols supported
 20.4 more platforms supported
 20.5 Add support for concurrent connections
 20.6 Use the RFC6265 test suite
 20.7 Support LD_PRELOAD on macOS
 20.8 Run web-platform-tests url tests

 21. Next SONAME bump
 21.1 http-style HEAD output for FTP
 21.2 combine error codes
 21.3 extend CURLOPT_SOCKOPTFUNCTION prototype

 22. Next major release
191
192
193
194
195
196
197







198
199
200
201
202
203
204

1.3 struct lifreq

 Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
 SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 To support IPv6 interface addresses for network interfaces properly.








1.5 get rid of PATH_MAX

 Having code use and rely on PATH_MAX is not nice:
 https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html

 Currently the libssh2 SSH based code uses it, but to remove PATH_MAX from
 there we need libssh2 to properly tell us when we pass in a too small buffer







>
>
>
>
>
>
>







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213

1.3 struct lifreq

 Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
 SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 To support IPv6 interface addresses for network interfaces properly.

1.4 alt-svc sharing

 The share interface could benefit from allowing the alt-svc cache to be
 possible to share between easy handles.

 See https://github.com/curl/curl/issues/4476

1.5 get rid of PATH_MAX

 Having code use and rely on PATH_MAX is not nice:
 https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html

 Currently the libssh2 SSH based code uses it, but to remove PATH_MAX from
 there we need libssh2 to properly tell us when we pass in a too small buffer
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
 To fix this, libcurl would have to detect an existing connection and "attach"
 the new transfer to the existing one.

17.2 Handle growing SFTP files

 The SFTP code in libcurl checks the file size *before* a transfer starts and
 then proceeds to transfer exactly that amount of data. If the remote file
 grows while the tranfer is in progress libcurl won't notice and will not
 adapt. The OpenSSH SFTP command line tool does and libcurl could also just
 attempt to download more to see if there is more to get...

 https://github.com/curl/curl/issues/4344

17.3 Support better than MD5 hostkey hash








|







809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
 To fix this, libcurl would have to detect an existing connection and "attach"
 the new transfer to the existing one.

17.2 Handle growing SFTP files

 The SFTP code in libcurl checks the file size *before* a transfer starts and
 then proceeds to transfer exactly that amount of data. If the remote file
 grows while the transfer is in progress libcurl won't notice and will not
 adapt. The OpenSSH SFTP command line tool does and libcurl could also just
 attempt to download more to see if there is more to get...

 https://github.com/curl/curl/issues/4344

17.3 Support better than MD5 hostkey hash

1041
1042
1043
1044
1045
1046
1047









1048
1049
1050
1051
1052
1053
1054

20.7 Support LD_PRELOAD on macOS

 LD_RELOAD doesn't work on macOS, but there are tests which require it to run
 properly. Look into making the preload support in runtests.pl portable such
 that it uses DYLD_INSERT_LIBRARIES on macOS.










21. Next SONAME bump

21.1 http-style HEAD output for FTP

 #undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
 from being output in NOBODY requests over FTP








>
>
>
>
>
>
>
>
>







1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072

20.7 Support LD_PRELOAD on macOS

 LD_RELOAD doesn't work on macOS, but there are tests which require it to run
 properly. Look into making the preload support in runtests.pl portable such
 that it uses DYLD_INSERT_LIBRARIES on macOS.

20.8 Run web-platform-tests url tests

 Run web-platform-tests url tests and compare results with browsers on wpt.fyi

 It would help us find issues to fix and help us document where our parser
 differs from the WHATWG URL spec parsers.

 See https://github.com/curl/curl/issues/4477

21. Next SONAME bump

21.1 http-style HEAD output for FTP

 #undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
 from being output in NOBODY requests over FTP

Changes to jni/curl/docs/cmdline-opts/Makefile.in.
283
284
285
286
287
288
289

290
291
292
293
294
295
296
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
401
402
403
404
405
406
407


408
409
410
411
412
413
414
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\
  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\


  expect100-timeout.d				\
  fail-early.d					\
  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\







>
>







402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\
  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\
  etag-save.d                   \
  etag-compare.d                \
  expect100-timeout.d				\
  fail-early.d					\
  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\
466
467
468
469
470
471
472


473
474
475
476
477
478
479
480
481
482
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \


  parallel.d                                    \
  pass.d                			\
  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\







>
>


<







469
470
471
472
473
474
475
476
477
478
479

480
481
482
483
484
485
486
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  parallel-immediate.d                          \
  parallel-max.d                                \
  parallel.d                                    \
  pass.d                			\

  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\
Changes to jni/curl/docs/cmdline-opts/Makefile.inc.
34
35
36
37
38
39
40


41
42
43
44
45
46
47
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\
  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\


  expect100-timeout.d				\
  fail-early.d					\
  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\







>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  dns-ipv4-addr.d				\
  dns-ipv6-addr.d				\
  dns-servers.d					\
  doh-url.d					\
  dump-header.d					\
  egd-file.d					\
  engine.d					\
  etag-save.d                   \
  etag-compare.d                \
  expect100-timeout.d				\
  fail-early.d					\
  fail.d					\
  false-start.d					\
  form-string.d					\
  form.d					\
  ftp-account.d					\
99
100
101
102
103
104
105


106
107
108
109
110
111
112
113
114
115
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \


  parallel.d                                    \
  pass.d                			\
  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\







>
>


<







101
102
103
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  parallel-immediate.d                          \
  parallel-max.d                                \
  parallel.d                                    \
  pass.d                			\

  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
  progress-bar.d				\
Changes to jni/curl/docs/cmdline-opts/alt-svc.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Long: alt-svc
Arg: <file name>
Protocols: HTTPS
Help: Enable alt-svc with this cache file
Added: 7.64.1
---
WARNING: this option is experiemental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
Long: alt-svc
Arg: <file name>
Protocols: HTTPS
Help: Enable alt-svc with this cache file
Added: 7.64.1
---
WARNING: this option is experimental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.
Added jni/curl/docs/cmdline-opts/etag-compare.d.




































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: etag-compare
Arg: <file>
Help: Pass an ETag from a file as a custom header
Protocols: HTTP
Added: 7.68.0
---
This option makes a conditional HTTP request for the specific
ETag read from the given file by sending a custom If-None-Match
header using the extracted ETag.

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option --etag-save to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

\fCOMPARISON\fP: There are 2 types of comparison or ETags, Weak and Strong.
This option expects, and uses a strong comparison.
Added jni/curl/docs/cmdline-opts/etag-save.d.
































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Long: etag-save
Arg: <file>
Help: Parse ETag from a request and save it to a file
Protocols: HTTP
Added: 7.68.0
---
This option saves an HTTP ETag to the specified file. Etag is
usually part of headers returned by a request. When server sends an
ETag, it must be enveloped by a double quote. This option extracts the
ETag without the double quotes and saves it into the <file>.

A server can send a week ETag which is prefixed by "W/". This identifier
is not considered, and only relevant ETag between quotation marks is parsed.

It an ETag wasn't send by the server or it cannot be parsed, and empty
file is created.
Changes to jni/curl/docs/cmdline-opts/http3.d.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: http3
Tags: Versions
Protocols: HTTP
Added: 7.66.0
Mutexed: http1.1 http1.0 http2 http2-prior-knowledge
Requires: HTTP/3
Help: Use HTTP v3
See-also: http1.1 http2
---

WARNING: this option is experiemental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Long: http3
Tags: Versions
Protocols: HTTP
Added: 7.66.0
Mutexed: http1.1 http1.0 http2 http2-prior-knowledge
Requires: HTTP/3
Help: Use HTTP v3
See-also: http1.1 http2
---

WARNING: this option is experimental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it
Added jni/curl/docs/cmdline-opts/parallel-immediate.d.


















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
Long: parallel-immediate
Help: Do not wait for multiplexing (with --parallel)
Added: 7.68.0
See-also: parallel parallel-max
---
When doing parallel transfers, this option will instruct curl that it should
rather prefer opening up more connections in parallel at once rather than
waiting to see if new transfers can be added as multiplexed streams on another
connection.
Changes to jni/curl/docs/cmdline-opts/tlspassword.d.
1
2
3
4
5
6


Long: tlspassword
Help: TLS password
Added: 7.21.4
---
Set password for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlsuser also be set.








>
>
1
2
3
4
5
6
7
8
Long: tlspassword
Help: TLS password
Added: 7.21.4
---
Set password for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlsuser also be set.

This doesn't work with TLS 1.3.
Changes to jni/curl/docs/cmdline-opts/tlsuser.d.
1
2
3
4
5
6
7


Long: tlsuser
Arg: <name>
Help: TLS user name
Added: 7.21.4
---
Set username for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlspassword also is set.









>
>
1
2
3
4
5
6
7
8
9
Long: tlsuser
Arg: <name>
Help: TLS user name
Added: 7.21.4
---
Set username for use with the TLS authentication method specified with
--tlsauthtype. Requires that --tlspassword also is set.

This doesn't work with TLS 1.3.
Changes to jni/curl/docs/curl-config.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 30, 2017" "Curl 7.67.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 30, 2017" "Curl 7.68.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config
Changes to jni/curl/docs/curl.1.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.67.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.68.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
.IP "--abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.

Added in 7.53.0.
.IP "--alt-svc <file name>"
(HTTPS) WARNING: this option is experiemental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.







|







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
.IP "--abstract-unix-socket <path>"
(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.

Added in 7.53.0.
.IP "--alt-svc <file name>"
(HTTPS) WARNING: this option is experimental. Do not use in production.

This option enables the alt-svc parser in curl. If the file name points to an
existing alt-svc cache file, that will be used. After a completed transfer,
the cache will be saved to the file name again if it has been modified.

Specify a "" file name (zero length) to avoid loading/saving and make curl
just handle the cache in memory.
658
659
660
661
662
663
664




























665
666
667
668
669
670
671
used to seed the random engine for SSL connections.

See also \fI--random-file\fP.
.IP "--engine <name>"
(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI--engine\fP
list to print a list of build-time supported engines. Note that not all (or
none) of the engines may be available at run-time.




























.IP "--expect100-timeout <seconds>"
(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
response when curl emits an Expects: 100-continue header in its request. By
default curl will wait one second. This option accepts decimal values! When
curl stops waiting, it will continue as if the response has been received.

See also \fI--connect-timeout\fP. Added in 7.47.0.







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
used to seed the random engine for SSL connections.

See also \fI--random-file\fP.
.IP "--engine <name>"
(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI--engine\fP
list to print a list of build-time supported engines. Note that not all (or
none) of the engines may be available at run-time.
.IP "--etag-compare <file>"
(HTTP) This option makes a conditional HTTP request for the specific
ETag read from the given file by sending a custom If-None-Match
header using the extracted ETag.

For correct results, make sure that specified file contains only a single
line with a desired ETag. An empty file is parsed as an empty ETag.

Use the option \fI--etag-save\fP to first save the ETag from a response, and
then use this option to compare using the saved ETag in a subsequent request.

\fCOMPARISON\fP: There are 2 types of comparison or ETags, Weak and Strong.
This option expects, and uses a strong comparison.

Added in 7.68.0.
.IP "--etag-save <file>"
(HTTP) This option saves an HTTP ETag to the specified file. Etag is
usually part of headers returned by a request. When server sends an
ETag, it must be enveloped by a double quote. This option extracts the
ETag without the double quotes and saves it into the <file>.

A server can send a week ETag which is prefixed by "W/". This identifier
is not considered, and only relevant ETag between quotation marks is parsed.

It an ETag wasn't send by the server or it cannot be parsed, and empty
file is created.

Added in 7.68.0.
.IP "--expect100-timeout <seconds>"
(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
response when curl emits an Expects: 100-continue header in its request. By
default curl will wait one second. This option accepts decimal values! When
curl stops waiting, it will continue as if the response has been received.

See also \fI--connect-timeout\fP. Added in 7.47.0.
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
\fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
.IP "--http2"
(HTTP) Tells curl to use HTTP version 2.

See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
.IP "--http3"
(HTTP) 
WARNING: this option is experiemental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it







|







1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
\fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
.IP "--http2"
(HTTP) Tells curl to use HTTP version 2.

See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
.IP "--http3"
(HTTP) 
WARNING: this option is experimental. Do not use in production.

Tells curl to use HTTP version 3 directly to the host and port number used in
the URL. A normal HTTP/3 transaction will be done to a host and then get
redirected via Alt-SVc, but this option allows a user to circumvent that when
you know that the target speaks HTTP/3 on the given host and port.

This option will make curl fail if a QUIC connection cannot be established, it
1529
1530
1531
1532
1533
1534
1535







1536
1537
1538
1539
1540
1541
1542
  curl example.com example.net -o aa -o bb

See also the \fI--create-dirs\fP option to create the local directories
dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.

See also \fI-O, --remote-name\fP and \fI--remote-name-all\fP and \fI-J, --remote-header-name\fP.







.IP "--parallel-max"
When asked to do parallel transfers, using \fI-Z, --parallel\fP, this option controls
the maximum amount of transfers to do simultaneously.

The default is 50.

See also \fI-Z, --parallel\fP. Added in 7.66.0.







>
>
>
>
>
>
>







1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
  curl example.com example.net -o aa -o bb

See also the \fI--create-dirs\fP option to create the local directories
dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.

See also \fI-O, --remote-name\fP and \fI--remote-name-all\fP and \fI-J, --remote-header-name\fP.
.IP "--parallel-immediate"
When doing parallel transfers, this option will instruct curl that it should
rather prefer opening up more connections in parallel at once rather than
waiting to see if new transfers can be added as multiplexed streams on another
connection.

See also \fI-Z, --parallel\fP and \fI--parallel-max\fP. Added in 7.68.0.
.IP "--parallel-max"
When asked to do parallel transfers, using \fI-Z, --parallel\fP, this option controls
the maximum amount of transfers to do simultaneously.

The default is 50.

See also \fI-Z, --parallel\fP. Added in 7.66.0.
2471
2472
2473
2474
2475
2476
2477


2478
2479
2480
2481


2482
2483
2484
2485
2486
2487
2488
OpenSSL or GnuTLS with TLS-SRP support.

Added in 7.21.4.
.IP "--tlspassword"
Set password for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlsuser\fP also be set.



Added in 7.21.4.
.IP "--tlsuser <name>"
Set username for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlspassword\fP also is set.



Added in 7.21.4.
.IP "--tlsv1.0"
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.0,
but behavior was inconsistent depending on the TLS library. Use \fI--tls-max\fP if







>
>




>
>







2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
OpenSSL or GnuTLS with TLS-SRP support.

Added in 7.21.4.
.IP "--tlspassword"
Set password for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlsuser\fP also be set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "--tlsuser <name>"
Set username for use with the TLS authentication method specified with
\fI--tlsauthtype\fP. Requires that \fI--tlspassword\fP also is set.

This doesn't work with TLS 1.3.

Added in 7.21.4.
.IP "--tlsv1.0"
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.

In old versions of curl this option was documented to allow _only_ TLS 1.0,
but behavior was inconsistent depending on the TLS library. Use \fI--tls-max\fP if
Changes to jni/curl/docs/examples/Makefile.in.
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
	http2-serverpush$(EXEEXT) getredirect$(EXEEXT) \
	ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
	sslbackend$(EXEEXT) postit2-formadd$(EXEEXT) \
	multi-formadd$(EXEEXT) shared-connection-cache$(EXEEXT) \
	sftpuploadresume$(EXEEXT) http2-pushinmemory$(EXEEXT) \
	parseurl$(EXEEXT) urlapi$(EXEEXT) imap-authzid$(EXEEXT) \
	pop3-authzid$(EXEEXT) smtp-authzid$(EXEEXT) http3$(EXEEXT) \
	altsvc$(EXEEXT) http3-present$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \







|







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
	http2-serverpush$(EXEEXT) getredirect$(EXEEXT) \
	ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
	sslbackend$(EXEEXT) postit2-formadd$(EXEEXT) \
	multi-formadd$(EXEEXT) shared-connection-cache$(EXEEXT) \
	sftpuploadresume$(EXEEXT) http2-pushinmemory$(EXEEXT) \
	parseurl$(EXEEXT) urlapi$(EXEEXT) imap-authzid$(EXEEXT) \
	pop3-authzid$(EXEEXT) smtp-authzid$(EXEEXT) http3$(EXEEXT) \
	altsvc$(EXEEXT) http3-present$(EXEEXT) multi-poll$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
	$(top_srcdir)/m4/curl-compilers.m4 \
	$(top_srcdir)/m4/curl-confopts.m4 \
	$(top_srcdir)/m4/curl-functions.m4 \
	$(top_srcdir)/m4/curl-openssl.m4 \
539
540
541
542
543
544
545







546
547
548
549
550
551
552
multi_formadd_SOURCES = multi-formadd.c
multi_formadd_OBJECTS = multi-formadd.$(OBJEXT)
multi_formadd_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_formadd_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_formadd_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la







multi_post_SOURCES = multi-post.c
multi_post_OBJECTS = multi-post.$(OBJEXT)
multi_post_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la







>
>
>
>
>
>
>







539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
multi_formadd_SOURCES = multi-formadd.c
multi_formadd_OBJECTS = multi-formadd.$(OBJEXT)
multi_formadd_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_formadd_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_formadd_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
multi_poll_SOURCES = multi-poll.c
multi_poll_OBJECTS = multi-poll.$(OBJEXT)
multi_poll_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_poll_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_poll_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
multi_post_SOURCES = multi-post.c
multi_post_OBJECTS = multi-post.$(OBJEXT)
multi_post_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_FALSE@	$(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_post_DEPENDENCIES =  \
@USE_EXPLICIT_LIB_DEPS_TRUE@	$(LIBDIR)/libcurl.la
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
	./$(DEPDIR)/imap-examine.Po ./$(DEPDIR)/imap-fetch.Po \
	./$(DEPDIR)/imap-list.Po ./$(DEPDIR)/imap-lsub.Po \
	./$(DEPDIR)/imap-multi.Po ./$(DEPDIR)/imap-noop.Po \
	./$(DEPDIR)/imap-search.Po ./$(DEPDIR)/imap-ssl.Po \
	./$(DEPDIR)/imap-store.Po ./$(DEPDIR)/imap-tls.Po \
	./$(DEPDIR)/multi-app.Po ./$(DEPDIR)/multi-debugcallback.Po \
	./$(DEPDIR)/multi-double.Po ./$(DEPDIR)/multi-formadd.Po \

	./$(DEPDIR)/multi-post.Po ./$(DEPDIR)/multi-single.Po \
	./$(DEPDIR)/parseurl.Po ./$(DEPDIR)/persistent.Po \
	./$(DEPDIR)/pop3-authzid.Po ./$(DEPDIR)/pop3-dele.Po \
	./$(DEPDIR)/pop3-list.Po ./$(DEPDIR)/pop3-multi.Po \
	./$(DEPDIR)/pop3-noop.Po ./$(DEPDIR)/pop3-retr.Po \
	./$(DEPDIR)/pop3-ssl.Po ./$(DEPDIR)/pop3-stat.Po \
	./$(DEPDIR)/pop3-tls.Po ./$(DEPDIR)/pop3-top.Po \
	./$(DEPDIR)/pop3-uidl.Po ./$(DEPDIR)/post-callback.Po \
	./$(DEPDIR)/postinmemory.Po ./$(DEPDIR)/postit2-formadd.Po \
	./$(DEPDIR)/postit2.Po ./$(DEPDIR)/progressfunc.Po \
	./$(DEPDIR)/resolve.Po ./$(DEPDIR)/rtsp.Po \
	./$(DEPDIR)/sendrecv.Po ./$(DEPDIR)/sepheaders.Po \
	./$(DEPDIR)/sftpget.Po ./$(DEPDIR)/sftpuploadresume.Po \
	./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \
	./$(DEPDIR)/simplepost.Po ./$(DEPDIR)/simplessl.Po \
	./$(DEPDIR)/smtp-authzid.Po ./$(DEPDIR)/smtp-expn.Po \
	./$(DEPDIR)/smtp-mail.Po ./$(DEPDIR)/smtp-mime.Po \
	./$(DEPDIR)/smtp-multi.Po ./$(DEPDIR)/smtp-ssl.Po \
	./$(DEPDIR)/smtp-tls.Po ./$(DEPDIR)/smtp-vrfy.Po \
	./$(DEPDIR)/sslbackend.Po ./$(DEPDIR)/url2file.Po \







>
|
|
|
|
|
|
|
|
|
|
|
|
|







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
	./$(DEPDIR)/imap-examine.Po ./$(DEPDIR)/imap-fetch.Po \
	./$(DEPDIR)/imap-list.Po ./$(DEPDIR)/imap-lsub.Po \
	./$(DEPDIR)/imap-multi.Po ./$(DEPDIR)/imap-noop.Po \
	./$(DEPDIR)/imap-search.Po ./$(DEPDIR)/imap-ssl.Po \
	./$(DEPDIR)/imap-store.Po ./$(DEPDIR)/imap-tls.Po \
	./$(DEPDIR)/multi-app.Po ./$(DEPDIR)/multi-debugcallback.Po \
	./$(DEPDIR)/multi-double.Po ./$(DEPDIR)/multi-formadd.Po \
	./$(DEPDIR)/multi-poll.Po ./$(DEPDIR)/multi-post.Po \
	./$(DEPDIR)/multi-single.Po ./$(DEPDIR)/parseurl.Po \
	./$(DEPDIR)/persistent.Po ./$(DEPDIR)/pop3-authzid.Po \
	./$(DEPDIR)/pop3-dele.Po ./$(DEPDIR)/pop3-list.Po \
	./$(DEPDIR)/pop3-multi.Po ./$(DEPDIR)/pop3-noop.Po \
	./$(DEPDIR)/pop3-retr.Po ./$(DEPDIR)/pop3-ssl.Po \
	./$(DEPDIR)/pop3-stat.Po ./$(DEPDIR)/pop3-tls.Po \
	./$(DEPDIR)/pop3-top.Po ./$(DEPDIR)/pop3-uidl.Po \
	./$(DEPDIR)/post-callback.Po ./$(DEPDIR)/postinmemory.Po \
	./$(DEPDIR)/postit2-formadd.Po ./$(DEPDIR)/postit2.Po \
	./$(DEPDIR)/progressfunc.Po ./$(DEPDIR)/resolve.Po \
	./$(DEPDIR)/rtsp.Po ./$(DEPDIR)/sendrecv.Po \
	./$(DEPDIR)/sepheaders.Po ./$(DEPDIR)/sftpget.Po \
	./$(DEPDIR)/sftpuploadresume.Po \
	./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \
	./$(DEPDIR)/simplepost.Po ./$(DEPDIR)/simplessl.Po \
	./$(DEPDIR)/smtp-authzid.Po ./$(DEPDIR)/smtp-expn.Po \
	./$(DEPDIR)/smtp-mail.Po ./$(DEPDIR)/smtp-mime.Po \
	./$(DEPDIR)/smtp-multi.Po ./$(DEPDIR)/smtp-ssl.Po \
	./$(DEPDIR)/smtp-tls.Po ./$(DEPDIR)/smtp-vrfy.Po \
	./$(DEPDIR)/sslbackend.Po ./$(DEPDIR)/url2file.Po \
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
	http2-download.c http2-pushinmemory.c http2-serverpush.c \
	http2-upload.c http3.c http3-present.c httpcustomheader.c \
	httpput.c https.c imap-append.c imap-authzid.c imap-copy.c \
	imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
	imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
	imap-ssl.c imap-store.c imap-tls.c multi-app.c \
	multi-debugcallback.c multi-double.c multi-formadd.c \
	multi-post.c multi-single.c parseurl.c persistent.c \
	pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c \
	pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c \
	pop3-top.c pop3-uidl.c post-callback.c postinmemory.c \
	postit2.c postit2-formadd.c progressfunc.c resolve.c rtsp.c \
	sendrecv.c sepheaders.c sftpget.c sftpuploadresume.c \
	shared-connection-cache.c simple.c simplepost.c simplessl.c \
	smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c \
	smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c \
	url2file.c urlapi.c
DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
	chkspeed.c cookie_interface.c debug.c externalsocket.c \
	fileupload.c fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c \
	ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c \
	ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
	http-post.c http2-download.c http2-pushinmemory.c \
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
	httpcustomheader.c httpput.c https.c imap-append.c \
	imap-authzid.c imap-copy.c imap-create.c imap-delete.c \
	imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
	imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
	imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
	multi-formadd.c multi-post.c multi-single.c parseurl.c \
	persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
	resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
	sftpuploadresume.c shared-connection-cache.c simple.c \
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \







|
|
|
|
|
|
|
|
|
|












|
|







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
	http2-download.c http2-pushinmemory.c http2-serverpush.c \
	http2-upload.c http3.c http3-present.c httpcustomheader.c \
	httpput.c https.c imap-append.c imap-authzid.c imap-copy.c \
	imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
	imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
	imap-ssl.c imap-store.c imap-tls.c multi-app.c \
	multi-debugcallback.c multi-double.c multi-formadd.c \
	multi-poll.c multi-post.c multi-single.c parseurl.c \
	persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
	resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
	sftpuploadresume.c shared-connection-cache.c simple.c \
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
	smtp-vrfy.c sslbackend.c url2file.c urlapi.c
DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
	chkspeed.c cookie_interface.c debug.c externalsocket.c \
	fileupload.c fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c \
	ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c \
	ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
	http-post.c http2-download.c http2-pushinmemory.c \
	http2-serverpush.c http2-upload.c http3.c http3-present.c \
	httpcustomheader.c httpput.c https.c imap-append.c \
	imap-authzid.c imap-copy.c imap-create.c imap-delete.c \
	imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
	imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
	imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
	multi-formadd.c multi-poll.c multi-post.c multi-single.c \
	parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
	pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
	pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
	postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
	resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
	sftpuploadresume.c shared-connection-cache.c simple.c \
	simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
	smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
1105
1106
1107
1108
1109
1110
1111

1112
1113
1114
1115
1116
1117
1118
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
1459
1460
1461
1462
1463
1464
1465




1466
1467
1468
1469
1470
1471
1472
multi-double$(EXEEXT): $(multi_double_OBJECTS) $(multi_double_DEPENDENCIES) $(EXTRA_multi_double_DEPENDENCIES) 
	@rm -f multi-double$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_double_OBJECTS) $(multi_double_LDADD) $(LIBS)

multi-formadd$(EXEEXT): $(multi_formadd_OBJECTS) $(multi_formadd_DEPENDENCIES) $(EXTRA_multi_formadd_DEPENDENCIES) 
	@rm -f multi-formadd$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_formadd_OBJECTS) $(multi_formadd_LDADD) $(LIBS)





multi-post$(EXEEXT): $(multi_post_OBJECTS) $(multi_post_DEPENDENCIES) $(EXTRA_multi_post_DEPENDENCIES) 
	@rm -f multi-post$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_post_OBJECTS) $(multi_post_LDADD) $(LIBS)

multi-single$(EXEEXT): $(multi_single_OBJECTS) $(multi_single_DEPENDENCIES) $(EXTRA_multi_single_DEPENDENCIES) 
	@rm -f multi-single$(EXEEXT)







>
>
>
>







1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
multi-double$(EXEEXT): $(multi_double_OBJECTS) $(multi_double_DEPENDENCIES) $(EXTRA_multi_double_DEPENDENCIES) 
	@rm -f multi-double$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_double_OBJECTS) $(multi_double_LDADD) $(LIBS)

multi-formadd$(EXEEXT): $(multi_formadd_OBJECTS) $(multi_formadd_DEPENDENCIES) $(EXTRA_multi_formadd_DEPENDENCIES) 
	@rm -f multi-formadd$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_formadd_OBJECTS) $(multi_formadd_LDADD) $(LIBS)

multi-poll$(EXEEXT): $(multi_poll_OBJECTS) $(multi_poll_DEPENDENCIES) $(EXTRA_multi_poll_DEPENDENCIES) 
	@rm -f multi-poll$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_poll_OBJECTS) $(multi_poll_LDADD) $(LIBS)

multi-post$(EXEEXT): $(multi_post_OBJECTS) $(multi_post_DEPENDENCIES) $(EXTRA_multi_post_DEPENDENCIES) 
	@rm -f multi-post$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(multi_post_OBJECTS) $(multi_post_LDADD) $(LIBS)

multi-single$(EXEEXT): $(multi_single_OBJECTS) $(multi_single_DEPENDENCIES) $(EXTRA_multi_single_DEPENDENCIES) 
	@rm -f multi-single$(EXEEXT)
1680
1681
1682
1683
1684
1685
1686

1687
1688
1689
1690
1691
1692
1693
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-ssl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-tls.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-formadd.Po@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parseurl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistent.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-authzid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-dele.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-list.Po@am__quote@ # am--include-marker







>







1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-ssl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-tls.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-formadd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-poll.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parseurl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistent.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-authzid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-dele.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-list.Po@am__quote@ # am--include-marker
1934
1935
1936
1937
1938
1939
1940

1941
1942
1943
1944
1945
1946
1947
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
	-rm -f ./$(DEPDIR)/multi-formadd.Po

	-rm -f ./$(DEPDIR)/multi-post.Po
	-rm -f ./$(DEPDIR)/multi-single.Po
	-rm -f ./$(DEPDIR)/parseurl.Po
	-rm -f ./$(DEPDIR)/persistent.Po
	-rm -f ./$(DEPDIR)/pop3-authzid.Po
	-rm -f ./$(DEPDIR)/pop3-dele.Po
	-rm -f ./$(DEPDIR)/pop3-list.Po







>







1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
	-rm -f ./$(DEPDIR)/multi-formadd.Po
	-rm -f ./$(DEPDIR)/multi-poll.Po
	-rm -f ./$(DEPDIR)/multi-post.Po
	-rm -f ./$(DEPDIR)/multi-single.Po
	-rm -f ./$(DEPDIR)/parseurl.Po
	-rm -f ./$(DEPDIR)/persistent.Po
	-rm -f ./$(DEPDIR)/pop3-authzid.Po
	-rm -f ./$(DEPDIR)/pop3-dele.Po
	-rm -f ./$(DEPDIR)/pop3-list.Po
2070
2071
2072
2073
2074
2075
2076

2077
2078
2079
2080
2081
2082
2083
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
	-rm -f ./$(DEPDIR)/multi-formadd.Po

	-rm -f ./$(DEPDIR)/multi-post.Po
	-rm -f ./$(DEPDIR)/multi-single.Po
	-rm -f ./$(DEPDIR)/parseurl.Po
	-rm -f ./$(DEPDIR)/persistent.Po
	-rm -f ./$(DEPDIR)/pop3-authzid.Po
	-rm -f ./$(DEPDIR)/pop3-dele.Po
	-rm -f ./$(DEPDIR)/pop3-list.Po







>







2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
	-rm -f ./$(DEPDIR)/imap-ssl.Po
	-rm -f ./$(DEPDIR)/imap-store.Po
	-rm -f ./$(DEPDIR)/imap-tls.Po
	-rm -f ./$(DEPDIR)/multi-app.Po
	-rm -f ./$(DEPDIR)/multi-debugcallback.Po
	-rm -f ./$(DEPDIR)/multi-double.Po
	-rm -f ./$(DEPDIR)/multi-formadd.Po
	-rm -f ./$(DEPDIR)/multi-poll.Po
	-rm -f ./$(DEPDIR)/multi-post.Po
	-rm -f ./$(DEPDIR)/multi-single.Po
	-rm -f ./$(DEPDIR)/parseurl.Po
	-rm -f ./$(DEPDIR)/persistent.Po
	-rm -f ./$(DEPDIR)/pop3-authzid.Po
	-rm -f ./$(DEPDIR)/pop3-dele.Po
	-rm -f ./$(DEPDIR)/pop3-list.Po
Changes to jni/curl/docs/examples/Makefile.inc.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \
  imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \
  imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
  http2-upload http2-serverpush getredirect ftpuploadfrommem               \
  ftpuploadresume sslbackend postit2-formadd multi-formadd                 \
  shared-connection-cache sftpuploadresume http2-pushinmemory parseurl     \
  urlapi imap-authzid pop3-authzid smtp-authzid http3 altsvc               \
  http3-present

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \







|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \
  imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \
  imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
  http2-upload http2-serverpush getredirect ftpuploadfrommem               \
  ftpuploadresume sslbackend postit2-formadd multi-formadd                 \
  shared-connection-cache sftpuploadresume http2-pushinmemory parseurl     \
  urlapi imap-authzid pop3-authzid smtp-authzid http3 altsvc               \
  http3-present multi-poll

# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
Changes to jni/curl/docs/examples/anyauthput.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/chkspeed.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/crawler.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Web crawler based on curl and libxml2.
 * Copyright (C) 2018 Jeroen Ooms <jeroenooms@gmail.com>
 * License: MIT
 *
 * To compile:
 *   gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
 *
 */
/* <DESC>








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Web crawler based on curl and libxml2.
 * Copyright (C) 2018 - 2019 Jeroen Ooms <jeroenooms@gmail.com>
 * License: MIT
 *
 * To compile:
 *   gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
 *
 */
/* <DESC>
Changes to jni/curl/docs/examples/curlgtk.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*****************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 *  Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
 */
/* <DESC>
 * use the libcurl in a gtk-threaded application
 * </DESC>
 */

#include <stdio.h>







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*****************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 *  Copyright (c) 2000 - 2019 David Odin (aka DindinX) for MandrakeSoft
 */
/* <DESC>
 * use the libcurl in a gtk-threaded application
 * </DESC>
 */

#include <stdio.h>
Changes to jni/curl/docs/examples/curlx.c.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*/
/* <DESC>
 * demonstrates use of SSL context callback, requires OpenSSL
 * </DESC>
 */

/*
 * Copyright (c) 2003 The OpenEvidence Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, the following disclaimer,







|







11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*/
/* <DESC>
 * demonstrates use of SSL context callback, requires OpenSSL
 * </DESC>
 */

/*
 * Copyright (c) 2003 - 2019 The OpenEvidence Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, the following disclaimer,
Changes to jni/curl/docs/examples/fileupload.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/fopen.c.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 * and fread() with url_fread() and it become possible to read remote streams
 * instead of (only) local files. Local files (ie those that can be directly
 * fopened) will drop back to using the underlying clib implementations
 *
 * See the main() function at the bottom that shows an app that retrieves from
 * a specified url using fgets() and fread() and saves as two output files.
 *
 * Copyright (c) 2003, 2017 Simtec Electronics
 *
 * Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
 * reference to original curl example code
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 * and fread() with url_fread() and it become possible to read remote streams
 * instead of (only) local files. Local files (ie those that can be directly
 * fopened) will drop back to using the underlying clib implementations
 *
 * See the main() function at the bottom that shows an app that retrieves from
 * a specified url using fgets() and fread() and saves as two output files.
 *
 * Copyright (c) 2003 - 2019 Simtec Electronics
 *
 * Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
 * reference to original curl example code
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
Changes to jni/curl/docs/examples/ftpupload.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/href_extractor.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/http-post.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/https.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/imap-list.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/imap-lsub.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/imap-noop.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/imap-store.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Added jni/curl/docs/examples/multi-poll.c.
























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
/* <DESC>
 * single download with the multi interface's curl_multi_poll
 * </DESC>
 */

#include <stdio.h>
#include <string.h>

/* somewhat unix-specific */
#include <sys/time.h>
#include <unistd.h>

/* curl stuff */
#include <curl/curl.h>

int main(void)
{
  CURL *http_handle;
  CURLM *multi_handle;
  int still_running = 1; /* keep number of running handles */

  curl_global_init(CURL_GLOBAL_DEFAULT);

  http_handle = curl_easy_init();

  curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");

  multi_handle = curl_multi_init();

  curl_multi_add_handle(multi_handle, http_handle);

  while(still_running) {
    CURLMcode mc; /* curl_multi_poll() return code */
    int numfds;

    /* we start some action by calling perform right away */
    mc = curl_multi_perform(multi_handle, &still_running);

    if(still_running)
      /* wait for activity, timeout or "nothing" */
      mc = curl_multi_poll(multi_handle, NULL, 0, 1000, &numfds);

    if(mc != CURLM_OK) {
      fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
      break;
    }
  }

  curl_multi_remove_handle(multi_handle, http_handle);
  curl_easy_cleanup(http_handle);
  curl_multi_cleanup(multi_handle);
  curl_global_cleanup();

  return 0;
}
Changes to jni/curl/docs/examples/pop3-dele.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-list.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-noop.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-retr.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-ssl.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-stat.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/pop3-uidl.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/postinmemory.c.
100
101
102
103
104
105
106
107
108
109
110
111

112
113
       * Do something nice with it!
       */
      printf("%s\n",chunk.memory);
    }

    /* always cleanup */
    curl_easy_cleanup(curl);

    /* we're done with libcurl, so clean it up */
    curl_global_cleanup();
  }
  free(chunk.memory);

  return 0;
}







|
<
<
|

>


100
101
102
103
104
105
106
107


108
109
110
111
112
       * Do something nice with it!
       */
      printf("%s\n",chunk.memory);
    }

    /* always cleanup */
    curl_easy_cleanup(curl);
  }



  free(chunk.memory);
  curl_global_cleanup();
  return 0;
}
Changes to jni/curl/docs/examples/rtsp.c.
1
2
3
4
5
6
7
8
9
/*
 * Copyright (c) 2011, Jim Hollinger
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.

|







1
2
3
4
5
6
7
8
9
/*
 * Copyright (c) 2011 - 2019, Jim Hollinger
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
Changes to jni/curl/docs/examples/sessioninfo.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smtp-expn.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smtp-ssl.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smtp-tls.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smtp-vrfy.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/url2file.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

  /* set URL to get here */
  curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]);

  /* Switch on full protocol/debug output while testing */
  curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);

  /* disable progress meter, set to 0L to enable and disable debug output */
  curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);

  /* send all data to this function  */
  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);

  /* open the file */
  pagefile = fopen(pagefilename, "wb");







|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

  /* set URL to get here */
  curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]);

  /* Switch on full protocol/debug output while testing */
  curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);

  /* disable progress meter, set to 0L to enable it */
  curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);

  /* send all data to this function  */
  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);

  /* open the file */
  pagefile = fopen(pagefilename, "wb");
Changes to jni/curl/docs/examples/usercertinmem.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/libcurl/Makefile.in.
553
554
555
556
557
558
559

560
561
562
563
564
565
566
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
687
688
689
690
691
692
693

694
695
696
697
698
699
700
 curl_multi_remove_handle.3 \
 curl_multi_setopt.3 \
 curl_multi_socket.3 \
 curl_multi_socket_action.3 \
 curl_multi_socket_all.3 \
 curl_multi_strerror.3 \
 curl_multi_timeout.3 \

 curl_multi_wait.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
 curl_share_strerror.3 \
 curl_slist_append.3 \
 curl_slist_free_all.3 \







>







688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
 curl_multi_remove_handle.3 \
 curl_multi_setopt.3 \
 curl_multi_socket.3 \
 curl_multi_socket_action.3 \
 curl_multi_socket_all.3 \
 curl_multi_strerror.3 \
 curl_multi_timeout.3 \
 curl_multi_wakeup.3 \
 curl_multi_wait.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
 curl_share_strerror.3 \
 curl_slist_append.3 \
 curl_slist_free_all.3 \
Changes to jni/curl/docs/libcurl/Makefile.inc.
50
51
52
53
54
55
56

57
58
59
60
61
62
63
 curl_multi_remove_handle.3 \
 curl_multi_setopt.3 \
 curl_multi_socket.3 \
 curl_multi_socket_action.3 \
 curl_multi_socket_all.3 \
 curl_multi_strerror.3 \
 curl_multi_timeout.3 \

 curl_multi_wait.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
 curl_share_strerror.3 \
 curl_slist_append.3 \
 curl_slist_free_all.3 \







>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 curl_multi_remove_handle.3 \
 curl_multi_setopt.3 \
 curl_multi_socket.3 \
 curl_multi_socket_action.3 \
 curl_multi_socket_all.3 \
 curl_multi_strerror.3 \
 curl_multi_timeout.3 \
 curl_multi_wakeup.3 \
 curl_multi_wait.3 \
 curl_share_cleanup.3 \
 curl_share_init.3 \
 curl_share_setopt.3 \
 curl_share_strerror.3 \
 curl_slist_append.3 \
 curl_slist_free_all.3 \
Changes to jni/curl/docs/libcurl/curl_easy_cleanup.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_duphandle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_escape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string
Changes to jni/curl/docs/libcurl/curl_easy_getinfo.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "August 06, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "August 06, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
Changes to jni/curl/docs/libcurl/curl_easy_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"
Changes to jni/curl/docs/libcurl/curl_easy_pause.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask " );"
Changes to jni/curl/docs/libcurl/curl_easy_perform.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_recv.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_reset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_send.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_setopt.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "August 09, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);







|














|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "January 05, 2020" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
619
620
621
622
623
624
625




626
627
628
629
630
631
632
.SH TELNET OPTIONS
.IP CURLOPT_TELNETOPTIONS
TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
.SH RETURN VALUE
\fICURLE_OK\fP (zero) means that the option was set properly, non-zero means an
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
man page for the full list with descriptions.





If you try to set an option that libcurl doesn't know about, perhaps because
the library is too old to support it or the option was removed in a recent
version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
the option was disabled at compile-time, it will return
\fICURLE_NOT_BUILT_IN\fP.
.SH EXAMPLE







>
>
>
>







619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
.SH TELNET OPTIONS
.IP CURLOPT_TELNETOPTIONS
TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
.SH RETURN VALUE
\fICURLE_OK\fP (zero) means that the option was set properly, non-zero means an
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
man page for the full list with descriptions.

Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise
\fIcurl_easy_setopt(3)\fP returns \fBCURLE_BAD_FUNCTION_ARGUMENT\fP (added in
7.65.0).

If you try to set an option that libcurl doesn't know about, perhaps because
the library is too old to support it or the option was removed in a recent
version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
the option was disabled at compile-time, it will return
\fICURLE_NOT_BUILT_IN\fP.
.SH EXAMPLE
Changes to jni/curl/docs/libcurl/curl_easy_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);
Changes to jni/curl/docs/libcurl/curl_easy_unescape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url
Changes to jni/curl/docs/libcurl/curl_escape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_formadd.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "December 11, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "December 11, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,
Changes to jni/curl/docs/libcurl/curl_formfree.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);
Changes to jni/curl/docs/libcurl/curl_formget.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "September 02, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "September 02, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"
Changes to jni/curl/docs/libcurl/curl_getdate.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "January 18, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "January 18, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
Changes to jni/curl/docs/libcurl/curl_getenv.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"
Changes to jni/curl/docs/libcurl/curl_global_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"
Changes to jni/curl/docs/libcurl/curl_global_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "April 17, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"
Changes to jni/curl/docs/libcurl/curl_global_init_mem.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "August 11, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "August 11, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,
Changes to jni/curl/docs/libcurl/curl_global_sslset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "November 07, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf

40
41
42
43
44
45
46
47

48
49
50
51
52
53
54
  CURLSSLBACKEND_GSKIT = 5,
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_DARWINSSL = 9,
  CURLSSLBACKEND_AXTLS = 10, /* deprecated */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12

} curl_sslbackend;

.B "CURLsslset curl_global_sslset(curl_sslbackend " id,
.B "                              const char *" name,
.B "                              curl_ssl_backend ***" avail ");"
.fi
.SH DESCRIPTION







|
>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  CURLSSLBACKEND_GSKIT = 5,
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_DARWINSSL = 9,
  CURLSSLBACKEND_AXTLS = 10, /* deprecated */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12,
  CURLSSLBACKEND_BEARSSL = 13
} curl_sslbackend;

.B "CURLsslset curl_global_sslset(curl_sslbackend " id,
.B "                              const char *" name,
.B "                              curl_ssl_backend ***" avail ");"
.fi
.SH DESCRIPTION
Changes to jni/curl/docs/libcurl/curl_mime_addpart.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"
Changes to jni/curl/docs/libcurl/curl_mime_data.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data
Changes to jni/curl/docs/libcurl/curl_mime_data_cb.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);
Changes to jni/curl/docs/libcurl/curl_mime_encoder.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filedata.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filename.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);
Changes to jni/curl/docs/libcurl/curl_mime_headers.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_mime_name.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"
Changes to jni/curl/docs/libcurl/curl_mime_subparts.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_type.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mprintf.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "April 01, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "April 01, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>
Changes to jni/curl/docs/libcurl/curl_multi_add_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_assign.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"
Changes to jni/curl/docs/libcurl/curl_multi_fdset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_info_read.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,
Changes to jni/curl/docs/libcurl/curl_multi_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"
Changes to jni/curl/docs/libcurl/curl_multi_perform.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "October 31, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "October 31, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
Changes to jni/curl/docs/libcurl/curl_multi_poll.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "July 29, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "November 17, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

44
45
46
47
48
49
50





51
52
53
54
55

56
57
58
59
60
61
62
The calling application may pass additional curl_waitfd structures which are
similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.

On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
number can include both libcurl internal descriptors as well as descriptors
provided in \fIextra_fds\fP.






If no extra file descriptors are provided and libcurl has no file descriptor
to offer to wait for, this function will instead wait during \fItimeout_ms\fP
milliseconds (or shorter if an internal timer indicates so). This is the
detail that makes this function different than \fIcurl_multi_wait(3)\fP.


This function is encouraged to be used instead of select(3) when using the
multi interface to allow applications to easier circumvent the common problem
with 1024 maximum file descriptors.
.SH curl_waitfd
.nf
struct curl_waitfd {







>
>
>
>
>




|
>







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
The calling application may pass additional curl_waitfd structures which are
similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.

On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
number can include both libcurl internal descriptors as well as descriptors
provided in \fIextra_fds\fP.

The \fIcurl_multi_wakeup(3)\fP function can be used from another thread to
wake up this function and return faster. This is one of the details
that makes this function different than \fIcurl_multi_wait(3)\fP which cannot
be woken up this way.

If no extra file descriptors are provided and libcurl has no file descriptor
to offer to wait for, this function will instead wait during \fItimeout_ms\fP
milliseconds (or shorter if an internal timer indicates so). This is the
other detail that makes this function different than
\fIcurl_multi_wait(3)\fP.

This function is encouraged to be used instead of select(3) when using the
multi interface to allow applications to easier circumvent the common problem
with 1024 maximum file descriptors.
.SH curl_waitfd
.nf
struct curl_waitfd {
104
105
106
107
108
109
110
111

.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH AVAILABILITY
This function was added in libcurl 7.66.0.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_perform "(3), " curl_multi_wait "(3)"








|
>
110
111
112
113
114
115
116
117
118
.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH AVAILABILITY
This function was added in libcurl 7.66.0.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_perform "(3), "
.BR curl_multi_wait "(3), " curl_multi_wakeup "(3)"
Changes to jni/curl/docs/libcurl/curl_multi_remove_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_setopt.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "September 24, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "September 24, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);
Changes to jni/curl/docs/libcurl/curl_multi_socket.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_socket_action.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_multi_timeout.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);
Changes to jni/curl/docs/libcurl/curl_multi_wait.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "October 31, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "November 28, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

46
47
48
49
50
51
52
53

54
55
56
57
58
59
60

On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
number can include both libcurl internal descriptors as well as descriptors
provided in \fIextra_fds\fP.

If no extra file descriptors are provided and libcurl has no file descriptor
to offer to wait for, this function will return immediately.


This function is encouraged to be used instead of select(3) when using the
multi interface to allow applications to easier circumvent the common problem
with 1024 maximum file descriptors.
.SH curl_waitfd
.nf
struct curl_waitfd {







|
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

On completion, if \fInumfds\fP is non-NULL, it will be populated with the
total number of file descriptors on which interesting events occurred. This
number can include both libcurl internal descriptors as well as descriptors
provided in \fIextra_fds\fP.

If no extra file descriptors are provided and libcurl has no file descriptor
to offer to wait for, this function will return immediately. (Try
\fIcurl_multi_poll(3)\fP instead if you rather avoid this behavior.)

This function is encouraged to be used instead of select(3) when using the
multi interface to allow applications to easier circumvent the common problem
with 1024 maximum file descriptors.
.SH curl_waitfd
.nf
struct curl_waitfd {
116
117
118
119
120
121
122
123
.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH AVAILABILITY
This function was added in libcurl 7.28.0.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_perform "(3)"







|
117
118
119
120
121
122
123
124
.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
.SH AVAILABILITY
This function was added in libcurl 7.28.0.
.SH "SEE ALSO"
.BR curl_multi_fdset "(3), " curl_multi_perform "(3)", curl_multi_poll "(3) ",
Added jni/curl/docs/libcurl/curl_multi_wakeup.3.














































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wakeup 3 "November 25, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_wakeup(CURLM *multi_handle);
.ad
.SH DESCRIPTION
This function can be called from any thread and it wakes up a
sleeping \fIcurl_multi_poll(3)\fP call that is currently (or will be)
waiting for activity or a timeout.

If the function is called when there is no \fIcurl_multi_poll(3)\fP call,
it will cause the next call to return immediately.

Calling this function only guarantees to wake up the current (or the next
if there is no current) \fIcurl_multi_poll(3)\fP call, which means it is
possible that multiple calls to this function will wake up the same waiting
operation.

This function has no effect on \fIcurl_multi_wait(3)\fP calls.
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH AVAILABILITY
Added in 7.68.0
.SH EXAMPLE
.nf
CURL *easy_handle;
CURLM *multi_handle;

/* add the individual easy handle */
curl_multi_add_handle(multi_handle, easy_handle);

/* this is thread 1 */
do {
  CURLMcode mc;
  int numfds;

  mc = curl_multi_perform(multi_handle, &still_running);

  if(mc == CURLM_OK) {
    /* wait for activity, timeout or wakeup */
    mc = curl_multi_poll(multi_handle, NULL, 0, 10000, &numfds);
  }

  if(time_to_die())
    exit(1);

} while(still_running);

curl_multi_remove_handle(multi_handle, easy_handle);

/* this is thread 2 */

if(something makes us decide to stop thread 1) {

  set_something_to_signal_thread_1_to_exit();

  curl_multi_wakeup(multi_handle);
}

.fi
.SH "SEE ALSO"
.BR curl_multi_poll "(3), " curl_multi_wait "(3)"
Changes to jni/curl/docs/libcurl/curl_share_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"
Changes to jni/curl/docs/libcurl/curl_share_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"
Changes to jni/curl/docs/libcurl/curl_share_setopt.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
Changes to jni/curl/docs/libcurl/curl_share_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_slist_append.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,
Changes to jni/curl/docs/libcurl/curl_slist_free_all.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);
Changes to jni/curl/docs/libcurl/curl_strequal.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "June 29, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "June 29, 2017" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"
Changes to jni/curl/docs/libcurl/curl_unescape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_url.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "March 22, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "March 22, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();
Changes to jni/curl/docs/libcurl/curl_url_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);
Changes to jni/curl/docs/libcurl/curl_url_dup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);
Changes to jni/curl/docs/libcurl/curl_url_get.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "September 25, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "September 25, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf
Changes to jni/curl/docs/libcurl/curl_url_set.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "September 25, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,







|













|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "January 05, 2020" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,
118
119
120
121
122
123
124




125
126
127
128
129
130
131
host part (normally the only mandatory part of the authority), but libcurl
cannot know whether this is permitted for custom schemes. Specifying the flag
permits empty authority sections, similar to how file scheme is handled.

.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.





If this function returns an error, no URL part is returned.
.SH EXAMPLE
.nf
  CURLUcode rc;
  CURLU *url = curl_url();
  rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0);







>
>
>
>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
host part (normally the only mandatory part of the authority), but libcurl
cannot know whether this is permitted for custom schemes. Specifying the flag
permits empty authority sections, similar to how file scheme is handled.

.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.

A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
part, must be shorter than 8000000 bytes otherwise it returns
\fBCURLUE_MALFORMED_INPUT\fP (added in 7.65.0).

If this function returns an error, no URL part is returned.
.SH EXAMPLE
.nf
  CURLUcode rc;
  CURLU *url = curl_url();
  rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0);
Changes to jni/curl/docs/libcurl/curl_version.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "February 03, 2016" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"
Changes to jni/curl/docs/libcurl/curl_version_info.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "August 13, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "August 13, 2019" "libcurl 7.68.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"
Changes to jni/curl/docs/libcurl/libcurl-easy.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "February 03, 2016" "libcurl 7.67.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "February 03, 2016" "libcurl 7.68.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.
Changes to jni/curl/docs/libcurl/libcurl-env.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "April 17, 2018" "libcurl 7.67.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "April 17, 2018" "libcurl 7.68.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,
Changes to jni/curl/docs/libcurl/libcurl-errors.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "October 31, 2019" "libcurl 7.67.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "November 17, 2019" "libcurl 7.68.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
to function you have to get a rebuilt libcurl.
.IP "CURLE_COULDNT_RESOLVE_PROXY (5)"
Couldn't resolve proxy. The given proxy host could not be resolved.
.IP "CURLE_COULDNT_RESOLVE_HOST (6)"
Couldn't resolve host. The given remote host was not resolved.
.IP "CURLE_COULDNT_CONNECT (7)"
Failed to connect() to host or proxy.
.IP "CURLE_FTP_WEIRD_SERVER_REPLY (8)"
The server sent data libcurl couldn't parse. This error code is used for more
than just FTP and is aliased as \fICURLE_WEIRD_SERVER_REPLY\fP since 7.51.0.
.IP "CURLE_REMOTE_ACCESS_DENIED (9)"
We were denied access to the resource given in the URL.  For FTP, this occurs
while trying to change to the remote directory.
.IP "CURLE_FTP_ACCEPT_FAILED (10)"
While waiting for the server to connect back when an active FTP session is
used, an error code was sent over the control connection or similar.
.IP "CURLE_FTP_WEIRD_PASS_REPLY (11)"







|
|
|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
to function you have to get a rebuilt libcurl.
.IP "CURLE_COULDNT_RESOLVE_PROXY (5)"
Couldn't resolve proxy. The given proxy host could not be resolved.
.IP "CURLE_COULDNT_RESOLVE_HOST (6)"
Couldn't resolve host. The given remote host was not resolved.
.IP "CURLE_COULDNT_CONNECT (7)"
Failed to connect() to host or proxy.
.IP "CURLE_WEIRD_SERVER_REPLY (8)"
The server sent data libcurl couldn't parse. This error code was known as as
\fICURLE_FTP_WEIRD_SERVER_REPLY\fP before 7.51.0.
.IP "CURLE_REMOTE_ACCESS_DENIED (9)"
We were denied access to the resource given in the URL.  For FTP, this occurs
while trying to change to the remote directory.
.IP "CURLE_FTP_ACCEPT_FAILED (10)"
While waiting for the server to connect back when an active FTP session is
used, an error code was sent over the control connection or similar.
.IP "CURLE_FTP_WEIRD_PASS_REPLY (11)"
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
Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP.
.IP "CURLE_HTTP2_STREAM (92)"
Stream error in the HTTP/2 framing layer.
.IP "CURLE_RECURSIVE_API_CALL (93)"
An API function was called from inside a callback.
.IP "CURLE_AUTH_ERROR (94)"
An authentication function returned an error.



.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
.SH "CURLMcode"
This is the generic return code used by functions in the libcurl multi
interface. Also consider \fIcurl_multi_strerror(3)\fP.
.IP "CURLM_CALL_MULTI_PERFORM (-1)"
This is not really an error. It means you should call
\fIcurl_multi_perform(3)\fP again without doing select() or similar in
between. Before version 7.20.0 this could be returned by
\fIcurl_multi_perform(3)\fP, but in later versions this return code is never
used.



.IP "CURLM_OK (0)"
Things are fine.
.IP "CURLM_BAD_HANDLE (1)"
The passed-in handle is not a valid CURLM handle.
.IP "CURLM_BAD_EASY_HANDLE (2)"
An easy handle was not good/valid. It could mean that it isn't an easy handle
at all, or possibly that the handle already is in used by this or another







>
>
>












>
>
>







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
Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP.
.IP "CURLE_HTTP2_STREAM (92)"
Stream error in the HTTP/2 framing layer.
.IP "CURLE_RECURSIVE_API_CALL (93)"
An API function was called from inside a callback.
.IP "CURLE_AUTH_ERROR (94)"
An authentication function returned an error.
.IP "CURLE_HTTP3 (95)"
A problem was detected in the HTTP/3 layer. This is somewhat generic and can
be one out of several problems, see the error buffer for details.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
.SH "CURLMcode"
This is the generic return code used by functions in the libcurl multi
interface. Also consider \fIcurl_multi_strerror(3)\fP.
.IP "CURLM_CALL_MULTI_PERFORM (-1)"
This is not really an error. It means you should call
\fIcurl_multi_perform(3)\fP again without doing select() or similar in
between. Before version 7.20.0 this could be returned by
\fIcurl_multi_perform(3)\fP, but in later versions this return code is never
used.
.IP "CURLM_CALL_MULTI_SOCKET (-1)"
An alias for CURLM_CALL_MULTI_PERFORM. Never returned by modern libcurl
versions.
.IP "CURLM_OK (0)"
Things are fine.
.IP "CURLM_BAD_HANDLE (1)"
The passed-in handle is not a valid CURLM handle.
.IP "CURLM_BAD_EASY_HANDLE (2)"
An easy handle was not good/valid. It could mean that it isn't an easy handle
at all, or possibly that the handle already is in used by this or another
288
289
290
291
292
293
294


295
296
297
298
299
300
301
curl_multi_setopt() with unsupported option
(Added in 7.15.4)
.IP "CURLM_ADDED_ALREADY (7)"
An easy handle already added to a multi handle was attempted to get added a
second time. (Added in 7.32.1)
.IP "CURLM_RECURSIVE_API_CALL (8)"
An API function was called from inside a callback.


.SH "CURLSHcode"
The "share" interface will return a CURLSHcode to indicate when an error has
occurred.  Also consider \fIcurl_share_strerror(3)\fP.
.IP "CURLSHE_OK (0)"
All fine. Proceed as usual.
.IP "CURLSHE_BAD_OPTION (1)"
An invalid option was passed to the function.







>
>







294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
curl_multi_setopt() with unsupported option
(Added in 7.15.4)
.IP "CURLM_ADDED_ALREADY (7)"
An easy handle already added to a multi handle was attempted to get added a
second time. (Added in 7.32.1)
.IP "CURLM_RECURSIVE_API_CALL (8)"
An API function was called from inside a callback.
.IP "CURLM_WAKEUP_FAILURE (9)"
Wakeup is unavailable or failed.
.SH "CURLSHcode"
The "share" interface will return a CURLSHcode to indicate when an error has
occurred.  Also consider \fIcurl_share_strerror(3)\fP.
.IP "CURLSHE_OK (0)"
All fine. Proceed as usual.
.IP "CURLSHE_BAD_OPTION (1)"
An invalid option was passed to the function.
Changes to jni/curl/docs/libcurl/libcurl-multi.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "October 31, 2019" "libcurl 7.67.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "November 28, 2019" "libcurl 7.68.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
you have setup in the individual easy handles. It'll transfer data on all
current transfers in the multi stack that are ready to transfer anything. It
may be all, it may be none. When there's nothing more to do for now, it
returns back to the calling application.

Your application extracts info from libcurl about when it would like to get
invoked to transfer data or do other work. The most convenient way is to use
\fIcurl_multi_wait(3)\fP that will help you wait until the application should
call libcurl again. The older API to accomplish the same thing is
\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
select() or poll() calls in order to get to know when the transfers in the
multi stack might need attention. Both these APIs allow for your program to
wait for input on your own private file descriptors at the same time
\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
period for your select() calls.







|







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
you have setup in the individual easy handles. It'll transfer data on all
current transfers in the multi stack that are ready to transfer anything. It
may be all, it may be none. When there's nothing more to do for now, it
returns back to the calling application.

Your application extracts info from libcurl about when it would like to get
invoked to transfer data or do other work. The most convenient way is to use
\fIcurl_multi_poll(3)\fP that will help you wait until the application should
call libcurl again. The older API to accomplish the same thing is
\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
select() or poll() calls in order to get to know when the transfers in the
multi stack might need attention. Both these APIs allow for your program to
wait for input on your own private file descriptors at the same time
\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
period for your select() calls.
Changes to jni/curl/docs/libcurl/libcurl-security.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "July 16, 2019" "libcurl 7.67.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "July 16, 2019" "libcurl 7.68.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a
Changes to jni/curl/docs/libcurl/libcurl-share.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 27, 2017" "libcurl 7.67.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 27, 2017" "libcurl 7.68.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.
Changes to jni/curl/docs/libcurl/libcurl-symbols.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "nov  6, 2019" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:








|













|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "Jan  8, 2020" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:

86
87
88
89
90
91
92

93
94
95
96
97
98
99
Introduced in 7.7
.IP CURLE_ABORTED_BY_CALLBACK
Introduced in 7.1
.IP CURLE_AGAIN
Introduced in 7.18.2
.IP CURLE_ALREADY_COMPLETE
Introduced in 7.7.2

.IP CURLE_AUTH_ERROR
Introduced in 7.66.0
.IP CURLE_BAD_CALLING_ORDER
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_BAD_CONTENT_ENCODING
Introduced in 7.10







>







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Introduced in 7.7
.IP CURLE_ABORTED_BY_CALLBACK
Introduced in 7.1
.IP CURLE_AGAIN
Introduced in 7.18.2
.IP CURLE_ALREADY_COMPLETE
Introduced in 7.7.2
Deprecated since 7.8
.IP CURLE_AUTH_ERROR
Introduced in 7.66.0
.IP CURLE_BAD_CALLING_ORDER
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_BAD_CONTENT_ENCODING
Introduced in 7.10
124
125
126
127
128
129
130

131
132
133
134
135
136
137
Introduced in 7.1
.IP CURLE_FTP_ACCEPT_FAILED
Introduced in 7.24.0
.IP CURLE_FTP_ACCEPT_TIMEOUT
Introduced in 7.24.0
.IP CURLE_FTP_ACCESS_DENIED
Introduced in 7.1

.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
Introduced in 7.1
Deprecated since 7.1
.IP CURLE_FTP_BAD_FILE_LIST
Introduced in 7.21.0
.IP CURLE_FTP_CANT_GET_HOST
Introduced in 7.1







>







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Introduced in 7.1
.IP CURLE_FTP_ACCEPT_FAILED
Introduced in 7.24.0
.IP CURLE_FTP_ACCEPT_TIMEOUT
Introduced in 7.24.0
.IP CURLE_FTP_ACCESS_DENIED
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
Introduced in 7.1
Deprecated since 7.1
.IP CURLE_FTP_BAD_FILE_LIST
Introduced in 7.21.0
.IP CURLE_FTP_CANT_GET_HOST
Introduced in 7.1
149
150
151
152
153
154
155

156
157
158
159
160
161
162
.IP CURLE_FTP_COULDNT_SET_BINARY
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FTP_COULDNT_SET_TYPE
Introduced in 7.17.0
.IP CURLE_FTP_COULDNT_STOR_FILE
Introduced in 7.1

.IP CURLE_FTP_COULDNT_USE_REST
Introduced in 7.1
.IP CURLE_FTP_PARTIAL_FILE
Introduced in 7.1
Deprecated since 7.1
.IP CURLE_FTP_PORT_FAILED
Introduced in 7.1







>







151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
.IP CURLE_FTP_COULDNT_SET_BINARY
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FTP_COULDNT_SET_TYPE
Introduced in 7.17.0
.IP CURLE_FTP_COULDNT_STOR_FILE
Introduced in 7.1
Deprecated since 7.16.3
.IP CURLE_FTP_COULDNT_USE_REST
Introduced in 7.1
.IP CURLE_FTP_PARTIAL_FILE
Introduced in 7.1
Deprecated since 7.1
.IP CURLE_FTP_PORT_FAILED
Introduced in 7.1
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
Introduced in 7.1
.IP CURLE_FTP_WEIRD_PASS_REPLY
Introduced in 7.1
.IP CURLE_FTP_WEIRD_PASV_REPLY
Introduced in 7.1
.IP CURLE_FTP_WEIRD_SERVER_REPLY
Introduced in 7.1

.IP CURLE_FTP_WEIRD_USER_REPLY
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FTP_WRITE_ERROR
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FUNCTION_NOT_FOUND
Introduced in 7.1
.IP CURLE_GOT_NOTHING
Introduced in 7.9.1
.IP CURLE_HTTP2
Introduced in 7.38.0
.IP CURLE_HTTP2_STREAM
Introduced in 7.49.0


.IP CURLE_HTTP_NOT_FOUND
Introduced in 7.1

.IP CURLE_HTTP_PORT_FAILED
Introduced in 7.3
Deprecated since 7.12.0
.IP CURLE_HTTP_POST_ERROR
Introduced in 7.1
.IP CURLE_HTTP_RANGE_ERROR
Introduced in 7.1







>














>
>


>







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
Introduced in 7.1
.IP CURLE_FTP_WEIRD_PASS_REPLY
Introduced in 7.1
.IP CURLE_FTP_WEIRD_PASV_REPLY
Introduced in 7.1
.IP CURLE_FTP_WEIRD_SERVER_REPLY
Introduced in 7.1
Deprecated since 7.51.0
.IP CURLE_FTP_WEIRD_USER_REPLY
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FTP_WRITE_ERROR
Introduced in 7.1
Deprecated since 7.17.0
.IP CURLE_FUNCTION_NOT_FOUND
Introduced in 7.1
.IP CURLE_GOT_NOTHING
Introduced in 7.9.1
.IP CURLE_HTTP2
Introduced in 7.38.0
.IP CURLE_HTTP2_STREAM
Introduced in 7.49.0
.IP CURLE_HTTP3
Introduced in 7.68.0
.IP CURLE_HTTP_NOT_FOUND
Introduced in 7.1
Deprecated since 7.10.3
.IP CURLE_HTTP_PORT_FAILED
Introduced in 7.3
Deprecated since 7.12.0
.IP CURLE_HTTP_POST_ERROR
Introduced in 7.1
.IP CURLE_HTTP_RANGE_ERROR
Introduced in 7.1
319
320
321
322
323
324
325

326
327
328
329
330
331
332
Introduced in 7.15.0
.IP CURLE_TOO_MANY_REDIRECTS
Introduced in 7.5
.IP CURLE_UNKNOWN_OPTION
Introduced in 7.21.5
.IP CURLE_UNKNOWN_TELNET_OPTION
Introduced in 7.7

.IP CURLE_UNSUPPORTED_PROTOCOL
Introduced in 7.1
.IP CURLE_UPLOAD_FAILED
Introduced in 7.16.3
.IP CURLE_URL_MALFORMAT
Introduced in 7.1
.IP CURLE_URL_MALFORMAT_USER







>







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
Introduced in 7.15.0
.IP CURLE_TOO_MANY_REDIRECTS
Introduced in 7.5
.IP CURLE_UNKNOWN_OPTION
Introduced in 7.21.5
.IP CURLE_UNKNOWN_TELNET_OPTION
Introduced in 7.7
Deprecated since 7.21.5
.IP CURLE_UNSUPPORTED_PROTOCOL
Introduced in 7.1
.IP CURLE_UPLOAD_FAILED
Introduced in 7.16.3
.IP CURLE_URL_MALFORMAT
Introduced in 7.1
.IP CURLE_URL_MALFORMAT_USER
743
744
745
746
747
748
749


750
751
752
753
754
755
756
Introduced in 7.9.6
.IP CURLM_OK
Introduced in 7.9.6
.IP CURLM_OUT_OF_MEMORY
Introduced in 7.9.6
.IP CURLM_RECURSIVE_API_CALL
Introduced in 7.59.0


.IP CURLM_UNKNOWN_OPTION
Introduced in 7.15.4
.IP CURLOPTTYPE_FUNCTIONPOINT
Introduced in 7.1
.IP CURLOPTTYPE_LONG
Introduced in 7.1
.IP CURLOPTTYPE_OBJECTPOINT







>
>







751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
Introduced in 7.9.6
.IP CURLM_OK
Introduced in 7.9.6
.IP CURLM_OUT_OF_MEMORY
Introduced in 7.9.6
.IP CURLM_RECURSIVE_API_CALL
Introduced in 7.59.0
.IP CURLM_WAKEUP_FAILURE
Introduced in 7.68.0
.IP CURLM_UNKNOWN_OPTION
Introduced in 7.15.4
.IP CURLOPTTYPE_FUNCTIONPOINT
Introduced in 7.1
.IP CURLOPTTYPE_LONG
Introduced in 7.1
.IP CURLOPTTYPE_OBJECTPOINT
1526
1527
1528
1529
1530
1531
1532


1533
1534
1535
1536
1537
1538
1539
.IP CURLSSH_AUTH_PASSWORD
Introduced in 7.16.1
.IP CURLSSH_AUTH_PUBLICKEY
Introduced in 7.16.1
.IP CURLSSLBACKEND_AXTLS
Introduced in 7.38.0
Deprecated since 7.61.0


.IP CURLSSLBACKEND_BORINGSSL
Introduced in 7.49.0
.IP CURLSSLBACKEND_CYASSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_DARWINSSL
Introduced in 7.34.0
Deprecated since 7.64.1







>
>







1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
.IP CURLSSH_AUTH_PASSWORD
Introduced in 7.16.1
.IP CURLSSH_AUTH_PUBLICKEY
Introduced in 7.16.1
.IP CURLSSLBACKEND_AXTLS
Introduced in 7.38.0
Deprecated since 7.61.0
.IP CURLSSLBACKEND_BEARSSL
Introduced in 7.68.0
.IP CURLSSLBACKEND_BORINGSSL
Introduced in 7.49.0
.IP CURLSSLBACKEND_CYASSL
Introduced in 7.34.0
.IP CURLSSLBACKEND_DARWINSSL
Introduced in 7.34.0
Deprecated since 7.64.1
1561
1562
1563
1564
1565
1566
1567


1568
1569
1570
1571
1572
1573
1574
Introduced in 7.34.0
.IP CURLSSLBACKEND_SECURETRANSPORT
Introduced in 7.64.1
.IP CURLSSLBACKEND_WOLFSSL
Introduced in 7.49.0
.IP CURLSSLOPT_ALLOW_BEAST
Introduced in 7.25.0


.IP CURLSSLOPT_NO_REVOKE
Introduced in 7.44.0
.IP CURLSSLSET_NO_BACKENDS
Introduced in 7.56.0
.IP CURLSSLSET_OK
Introduced in 7.56.0
.IP CURLSSLSET_TOO_LATE







>
>







1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
Introduced in 7.34.0
.IP CURLSSLBACKEND_SECURETRANSPORT
Introduced in 7.64.1
.IP CURLSSLBACKEND_WOLFSSL
Introduced in 7.49.0
.IP CURLSSLOPT_ALLOW_BEAST
Introduced in 7.25.0
.IP CURLSSLOPT_NO_PARTIALCHAIN
Introduced in 7.68.0
.IP CURLSSLOPT_NO_REVOKE
Introduced in 7.44.0
.IP CURLSSLSET_NO_BACKENDS
Introduced in 7.56.0
.IP CURLSSLSET_OK
Introduced in 7.56.0
.IP CURLSSLSET_TOO_LATE
1831
1832
1833
1834
1835
1836
1837


1838
1839
1840
1841
1842
1843
1844
Introduced in 7.14.0
.IP CURL_POLL_NONE
Introduced in 7.14.0
.IP CURL_POLL_OUT
Introduced in 7.14.0
.IP CURL_POLL_REMOVE
Introduced in 7.14.0


.IP CURL_PROGRESS_BAR
Introduced in 7.1.1
.IP CURL_PROGRESS_STATS
Introduced in 7.1.1
.IP CURL_PUSH_DENY
Introduced in 7.44.0
.IP CURL_PUSH_OK







>
>







1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
Introduced in 7.14.0
.IP CURL_POLL_NONE
Introduced in 7.14.0
.IP CURL_POLL_OUT
Introduced in 7.14.0
.IP CURL_POLL_REMOVE
Introduced in 7.14.0
.IP CURL_PROGRESSFUNC_CONTINUE
Introduced in 7.68.0
.IP CURL_PROGRESS_BAR
Introduced in 7.1.1
.IP CURL_PROGRESS_STATS
Introduced in 7.1.1
.IP CURL_PUSH_DENY
Introduced in 7.44.0
.IP CURL_PUSH_OK
Changes to jni/curl/docs/libcurl/libcurl-thread.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.67.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.68.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.
Changes to jni/curl/docs/libcurl/libcurl-tutorial.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "October 31, 2019" "libcurl 7.67.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "October 31, 2019" "libcurl 7.68.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as
Changes to jni/curl/docs/libcurl/libcurl-url.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "September 10, 2018" "libcurl 7.67.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "September 10, 2018" "libcurl 7.68.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was
Changes to jni/curl/docs/libcurl/libcurl.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "July 15, 2017" "libcurl 7.67.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "July 15, 2017" "libcurl 7.68.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the
Changes to jni/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "August 07, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "August 07, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "August 06, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "August 06, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SCHEME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "August 26, 2019" "libcurl 7.68.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.68.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "August 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "August 14, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "August 13, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "August 13, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_APPEND.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLF.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CURLU.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3.
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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,
                       size_t size,
                       size_t nitems,
                       void *userdata);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.

This function gets called by libcurl as soon as it has received header
data. The header callback will be called once for each header and only
complete header lines are passed on to the callback. Parsing headers is very
easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP
multiplied with \fInitems\fP. Do not assume that the header line is zero
terminated!

The pointer named \fIuserdata\fP is the one you set with the
\fICURLOPT_HEADERDATA(3)\fP option.

This callback function must return the number of bytes actually taken care of.
If that amount differs from the amount passed in to your function, it'll signal
an error to the library. This will cause the transfer to get aborted and the







|



















|
|
|







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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "December 26, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,
                       size_t size,
                       size_t nitems,
                       void *userdata);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.

This function gets called by libcurl as soon as it has received header
data. The header callback will be called once for each header and only
complete header lines are passed on to the callback. Parsing headers is very
easy using this. \fIbuffer\fP points to the delivered data, and the size of
that data is \fInitems\fP; \fIsize\fP is always 1. Do not assume that the
header line is zero terminated!

The pointer named \fIuserdata\fP is the one you set with the
\fICURLOPT_HEADERDATA(3)\fP option.

This callback function must return the number of bytes actually taken care of.
If that amount differs from the amount passed in to your function, it'll signal
an error to the library. This will cause the transfer to get aborted and the
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "August 05, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "August 05, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "September 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "September 14, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOBODY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>

typedef enum  {
  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
  CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
  CURLSOCKTYPE_LAST    /* never use */
} curlsocktype;

struct curl_sockaddr {
  int family;
  int socktype;
  int protocol;
  unsigned int addrlen;







|














|









<
<







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "December 03, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>

typedef enum  {
  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */


} curlsocktype;

struct curl_sockaddr {
  int family;
  int socktype;
  int protocol;
  unsigned int addrlen;
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.

This callback function gets called by libcurl instead of the \fIsocket(2)\fP
call. The callback's \fIpurpose\fP argument identifies the exact purpose for
this particular socket: \fICURLSOCKTYPE_IPCXN\fP is for IP based connections
and \fICURLSOCKTYPE_ACCEPT\fP is for sockets created after accept() - such as
when doing active FTP. Future versions of libcurl may support more
purposes.

The \fIclientp\fP pointer contains whatever user-defined value set using the
\fICURLOPT_OPENSOCKETDATA(3)\fP function.

The callback gets the resolved peer address as the \fIaddress\fP argument and
is allowed to modify the address or refuse to connect completely. The callback
function should return the newly created socket or \fICURL_SOCKET_BAD\fP in







|
<
|
|







47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.

This callback function gets called by libcurl instead of the \fIsocket(2)\fP
call. The callback's \fIpurpose\fP argument identifies the exact purpose for
this particular socket. \fICURLSOCKTYPE_IPCXN\fP is for IP based connections

and is the only purpose currently used in libcurl. Future versions of libcurl
may support more purposes.

The \fIclientp\fP pointer contains whatever user-defined value set using the
\fICURLOPT_OPENSOCKETDATA(3)\fP function.

The callback gets the resolved peer address as the \fIaddress\fP argument and
is allowed to modify the address or refuse to connect completely. The callback
function should return the newly created socket or \fICURL_SOCKET_BAD\fP in
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "July 22, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "July 22, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3.
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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);
.SH DESCRIPTION
Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
after your FTP transfer request. The commands will only be run if no error
occurred. The linked list should be a fully valid list of struct curl_slist
structs properly filled in as described for \fICURLOPT_QUOTE(3)\fP.

Disable this operation again by setting a NULL to this option.
.SH DEFAULT
NULL
.SH PROTOCOLS
SFTP and FTP
.SH EXAMPLE
.nf
struct curl_slist *h = NULL;
h = curl_slist_append(h, "RNFR source-name");
h = curl_slist_append(h, "RNTO new-name");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run after the transfer */
  curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
If support for the protocols are built-in.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_QUOTE "(3), " CURLOPT_PREQUOTE "(3), "







|




















|
|
|






|












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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "December 18, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);
.SH DESCRIPTION
Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
after your FTP transfer request. The commands will only be run if no error
occurred. The linked list should be a fully valid list of struct curl_slist
structs properly filled in as described for \fICURLOPT_QUOTE(3)\fP.

Disable this operation again by setting a NULL to this option.
.SH DEFAULT
NULL
.SH PROTOCOLS
SFTP and FTP
.SH EXAMPLE
.nf
struct curl_slist *cmdlist = NULL;
cmdlist = curl_slist_append(cmdlist, "RNFR source-name");
cmdlist = curl_slist_append(cmdlist, "RNTO new-name");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run after the transfer */
  curl_easy_setopt(curl, CURLOPT_POSTQUOTE, cmdlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
If support for the protocols are built-in.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_QUOTE "(3), " CURLOPT_PREQUOTE "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "December 18, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,
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
this option does not.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
.nf
struct curl_slist *h = NULL;
h = curl_slist_append(h, "SYST");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run */
  curl_easy_setopt(curl, CURLOPT_PREQUOTE, headerlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Along with the protocol support
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_QUOTE "(3), " CURLOPT_POSTQUOTE "(3), "







|
|






|












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
this option does not.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
.nf
struct curl_slist *cmdlist = NULL;
cmdlist = curl_slist_append(cmdlist, "SYST");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run */
  curl_easy_setopt(curl, CURLOPT_PREQUOTE, cmdlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
Along with the protocol support
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_QUOTE "(3), " CURLOPT_POSTQUOTE "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "November 26, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
57
58
59
60
61
62
63



64
65
66
67
68
69
70
71
72
uploaded so far.

Unknown/unused argument values passed to the callback will be set to zero
(like if you only download data, the upload size will remain 0). Many times
the callback will be called one or more times first, before it knows the data
sizes so a program must be made to handle that.




Returning a non-zero value from this callback will cause libcurl to abort the
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.

If you transfer data with the multi interface, this function will not be
called during periods of idleness unless you call the appropriate libcurl
function that performs transfers.

\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
get called.







>
>
>
|
|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
uploaded so far.

Unknown/unused argument values passed to the callback will be set to zero
(like if you only download data, the upload size will remain 0). Many times
the callback will be called one or more times first, before it knows the data
sizes so a program must be made to handle that.

If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
libcurl to continue executing the default progress function.

Returning any other non-zero value from this callback will cause libcurl to
abort the transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.

If you transfer data with the multi interface, this function will not be
called during periods of idleness unless you call the appropriate libcurl
function that performs transfers.

\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
get called.
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_QUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "December 18, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);
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
.RE
.SH DEFAULT
NULL
.SH PROTOCOLS
SFTP and FTP
.SH EXAMPLE
.nf
struct curl_slist *h = NULL;
h = curl_slist_append(h, "RNFR source-name");
h = curl_slist_append(h, "RNTO new-name");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run before the transfer */
  curl_easy_setopt(curl, CURLOPT_QUOTE, headerlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
SFTP support added in 7.16.3. *-prefix for SFTP added in 7.24.0
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_POSTQUOTE "(3), " CURLOPT_PREQUOTE "(3), "







|
|
|






|












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
.RE
.SH DEFAULT
NULL
.SH PROTOCOLS
SFTP and FTP
.SH EXAMPLE
.nf
struct curl_slist *cmdlist = NULL;
cmdlist = curl_slist_append(cmdlist, "RNFR source-name");
cmdlist = curl_slist_append(cmdlist, "RNTO new-name");

curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");

  /* pass in the FTP commands to run before the transfer */
  curl_easy_setopt(curl, CURLOPT_QUOTE, cmdlist);

  ret = curl_easy_perform(curl);

  curl_easy_cleanup(curl);
}
.fi
.SH AVAILABILITY
SFTP support added in 7.16.3. *-prefix for SFTP added in 7.24.0
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_POSTQUOTE "(3), " CURLOPT_PREQUOTE "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "August 12, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "January 06, 2020" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);
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
  fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
          " bytes from file\\n", nread);
  return retcode;
}

void setup(char *uploadthis)
{
  FILE *file = fopen("rb", uploadthis);
  CURLcode result;

  /* set callback to use */
  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);

  /* pass in suitable argument to callback */
  curl_easy_setopt(curl, CURLOPT_READDATA, uploadthis);

  result = curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
was added in 7.12.1.
.SH RETURN VALUE
This will return CURLE_OK.
.SH "SEE ALSO"
.BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
.BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), "
.BR CURLOPT_UPLOAD_BUFFERSIZE "(3), "







|






|













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
  fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
          " bytes from file\\n", nread);
  return retcode;
}

void setup(char *uploadthis)
{
  FILE *file = fopen(uploadthis, "rb");
  CURLcode result;

  /* set callback to use */
  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);

  /* pass in suitable argument to callback */
  curl_easy_setopt(curl, CURLOPT_READDATA, (void *)file);

  result = curl_easy_perform(curl);
}
.fi
.SH AVAILABILITY
CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
was added in 7.12.1.
.SH RETURN VALUE
This will return CURLE_OK.
.SH "SEE ALSO"
.BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
.BR CURLOPT_SEEKFUNCTION "(3), " CURLOPT_UPLOAD "(3), " CURLOPT_POST "(3), "
.BR CURLOPT_UPLOAD_BUFFERSIZE "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REFERER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SHARE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3.
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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
.SH DESCRIPTION
Pass a long with a bitmask to tell libcurl about specific SSL behaviors.

\fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this
option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a

work-around for this flaw although it might cause interoperability problems
with some (older) SSL implementations. WARNING: avoiding this work-around
lessens the security, and by setting this option to 1 you ask for exactly that.
This option is only supported for DarwinSSL, NSS and OpenSSL.

Added in 7.44.0:

\fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
checks for those SSL backends where such behavior is present. This option is
only supported for Schannel (the native Windows SSL library), with an
exception in the case of Windows' Untrusted Publishers blacklist which it

seems can't be bypassed.




.SH DEFAULT
0
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|








|
|
|
|
|
>
|
|
|
|
|
<
<
|
|
|
|
>
|
>
>
>
>







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
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "December 02, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
.SH DESCRIPTION
Pass a long with a bitmask to tell libcurl about specific SSL
behaviors. Available bits:
.IP CURLSSLOPT_ALLOW_BEAST
Tells libcurl to not attempt to use any workarounds for a security flaw in the
SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0,
the SSL layer libcurl uses may use a work-around for this flaw although it
might cause interoperability problems with some (older) SSL
implementations. WARNING: avoiding this work-around lessens the security, and
by setting this option to 1 you ask for exactly that.  This option is only
supported for DarwinSSL, NSS and OpenSSL.
.IP CURLSSLOPT_NO_REVOKE


Tells libcurl to disable certificate revocation checks for those SSL backends
where such behavior is present. This option is only supported for Schannel
(the native Windows SSL library), with an exception in the case of Windows'
Untrusted Publishers blacklist which it seems can't be bypassed. (Added in
7.44.0)
.IP CURLSSLOPT_NO_PARTIALCHAIN
Tells libcurl to not accept "partial" certificate chains, which it otherwise
does by default. This option is only supported for OpenSSL and will fail the
certificate verification if the chain ends with an intermediate certificate
and not with a root cert. (Added in 7.68.0)
.SH DEFAULT
0
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STDERR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "October 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "October 15, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
.SH DESCRIPTION
Pass a char * as parameter, which should point to the zero terminated password
to use for the TLS authentication method specified with the
\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP option also be set.

The application does not have to keep the string around after setting this
option.


.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|














|















>
>







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "December 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
.SH DESCRIPTION
Pass a char * as parameter, which should point to the zero terminated password
to use for the TLS authentication method specified with the
\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP option also be set.

The application does not have to keep the string around after setting this
option.

This feature relies in TLS SRP which doesn't work with TLS 1.3.
.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. The string
should be the method of the TLS authentication. Supported method is "SRP".

.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
defined in RFC5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
options.

The application does not have to keep the string around after setting this
option.


.SH DEFAULT
blank
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|














|








|
|










>
>







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "December 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. The string should be
the method of the TLS authentication. Supported method is "SRP".

.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
defined in RFC5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
options.

The application does not have to keep the string around after setting this
option.

TLS SRP doesn't work with TLS 1.3.
.SH DEFAULT
blank
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
.SH DESCRIPTION
Pass a char * as parameter, which should point to the zero terminated username
to use for the TLS authentication method specified with the
\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
\fICURLOPT_TLSAUTH_PASSWORD(3)\fP option also be set.

The application does not have to keep the string around after setting this
option.


.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|














|















>
>







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "December 16, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
.SH DESCRIPTION
Pass a char * as parameter, which should point to the zero terminated username
to use for the TLS authentication method specified with the
\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
\fICURLOPT_TLSAUTH_PASSWORD(3)\fP option also be set.

The application does not have to keep the string around after setting this
option.

This feature relies in TLS SRP which doesn't work with TLS 1.3.
.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "October 31, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_URL.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);







|














|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "December 18, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
user name is not embedded in the URL, it can be set with the
\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP option.

scp://user@example.com/etc/issue - This specifies the file /etc/issue

scp://example.com/~/my-file - This specifies the file my-file in the
user's home directory on the server

.IP SFTP
The path part of a SFTP request specifies the file to retrieve and from what
directory. If the file part is omitted then libcurl downloads the directory
listing for the directory specified.  If the path ends in a / then a directory
listing is returned instead of a file.  If the path is omitted entirely then
the directory listing for the root / home directory will be returned.  If the
user name is not embedded in the URL, it can be set with the







<







224
225
226
227
228
229
230

231
232
233
234
235
236
237
user name is not embedded in the URL, it can be set with the
\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP option.

scp://user@example.com/etc/issue - This specifies the file /etc/issue

scp://example.com/~/my-file - This specifies the file my-file in the
user's home directory on the server

.IP SFTP
The path part of a SFTP request specifies the file to retrieve and from what
directory. If the file part is omitted then libcurl downloads the directory
listing for the directory specified.  If the path ends in a / then a directory
listing is returned instead of a file.  If the path is omitted entirely then
the directory listing for the root / home directory will be returned.  If the
user name is not embedded in the URL, it can be set with the
257
258
259
260
261
262
263

264
265
266
267
268
269
270

smb://server.example.com/files/issue - This specifies the file "issue" located
in the root of the "files" share

smb://server.example.com/files/ -T issue - This specifies the file "issue" will
be uploaded to the root of the "files" share.


.IP LDAP
The path part of a LDAP request can be used to specify the: Distinguished
Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field
is separated by a question mark and when that field is not required an empty
string with the question mark separator should be included.

ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search







>







256
257
258
259
260
261
262
263
264
265
266
267
268
269
270

smb://server.example.com/files/issue - This specifies the file "issue" located
in the root of the "files" share

smb://server.example.com/files/ -T issue - This specifies the file "issue" will
be uploaded to the root of the "files" share.

curl supports SMB version 1 (only)
.IP LDAP
The path part of a LDAP request can be used to specify the: Distinguished
Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field
is separated by a question mark and when that field is not required an empty
string with the question mark separator should be included.

ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);







|














|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "December 04, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);
58
59
60
61
62
63
64

.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "








>
58
59
60
61
62
63
64
65
.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
.BR CURLOPT_ERRORBUFFER "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "November 26, 2019" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
54
55
56
57
58
59
60



61
62
63
64
65
66
67
68
69
uploaded so far.

Unknown/unused argument values passed to the callback will be set to zero
(like if you only download data, the upload size will remain 0). Many times
the callback will be called one or more times first, before it knows the data
sizes so a program must be made to handle that.




Returning a non-zero value from this callback will cause libcurl to abort the
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.

If you transfer data with the multi interface, this function will not be
called during periods of idleness unless you call the appropriate libcurl
function that performs transfers.

\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
get called.







>
>
>
|
|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
uploaded so far.

Unknown/unused argument values passed to the callback will be set to zero
(like if you only download data, the upload size will remain 0). Many times
the callback will be called one or more times first, before it knows the data
sizes so a program must be made to handle that.

If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
libcurl to continue executing the default progress function.

Returning any other non-zero value from this callback will cause libcurl to
abort the transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.

If you transfer data with the multi interface, this function will not be
called during periods of idleness unless you call the appropriate libcurl
function that performs transfers.

\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
get called.
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.68.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
Changes to jni/curl/docs/libcurl/opts/Makefile.in.
313
314
315
316
317
318
319

320
321
322
323
324
325
326
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/docs/libcurl/symbols-in-versions.
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
CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7
CURLCLOSEPOLICY_LEAST_TRAFFIC   7.7
CURLCLOSEPOLICY_NONE            7.7
CURLCLOSEPOLICY_OLDEST          7.7
CURLCLOSEPOLICY_SLOWEST         7.7
CURLE_ABORTED_BY_CALLBACK       7.1
CURLE_AGAIN                     7.18.2
CURLE_ALREADY_COMPLETE          7.7.2
CURLE_AUTH_ERROR                7.66.0
CURLE_BAD_CALLING_ORDER         7.1           7.17.0
CURLE_BAD_CONTENT_ENCODING      7.10
CURLE_BAD_DOWNLOAD_RESUME       7.10
CURLE_BAD_FUNCTION_ARGUMENT     7.1
CURLE_BAD_PASSWORD_ENTERED      7.4.2         7.17.0
CURLE_CHUNK_FAILED              7.21.0
CURLE_CONV_FAILED               7.15.4
CURLE_CONV_REQD                 7.15.4
CURLE_COULDNT_CONNECT           7.1
CURLE_COULDNT_RESOLVE_HOST      7.1
CURLE_COULDNT_RESOLVE_PROXY     7.1
CURLE_FAILED_INIT               7.1
CURLE_FILESIZE_EXCEEDED         7.10.8
CURLE_FILE_COULDNT_READ_FILE    7.1
CURLE_FTP_ACCEPT_FAILED         7.24.0
CURLE_FTP_ACCEPT_TIMEOUT        7.24.0
CURLE_FTP_ACCESS_DENIED         7.1
CURLE_FTP_BAD_DOWNLOAD_RESUME   7.1           7.1
CURLE_FTP_BAD_FILE_LIST         7.21.0
CURLE_FTP_CANT_GET_HOST         7.1
CURLE_FTP_CANT_RECONNECT        7.1           7.17.0
CURLE_FTP_COULDNT_GET_SIZE      7.1           7.17.0
CURLE_FTP_COULDNT_RETR_FILE     7.1
CURLE_FTP_COULDNT_SET_ASCII     7.1           7.17.0
CURLE_FTP_COULDNT_SET_BINARY    7.1           7.17.0
CURLE_FTP_COULDNT_SET_TYPE      7.17.0
CURLE_FTP_COULDNT_STOR_FILE     7.1
CURLE_FTP_COULDNT_USE_REST      7.1
CURLE_FTP_PARTIAL_FILE          7.1           7.1
CURLE_FTP_PORT_FAILED           7.1
CURLE_FTP_PRET_FAILED           7.20.0
CURLE_FTP_QUOTE_ERROR           7.1           7.17.0
CURLE_FTP_SSL_FAILED            7.11.0        7.17.0
CURLE_FTP_USER_PASSWORD_INCORRECT 7.1         7.17.0
CURLE_FTP_WEIRD_227_FORMAT      7.1
CURLE_FTP_WEIRD_PASS_REPLY      7.1
CURLE_FTP_WEIRD_PASV_REPLY      7.1
CURLE_FTP_WEIRD_SERVER_REPLY    7.1
CURLE_FTP_WEIRD_USER_REPLY      7.1           7.17.0
CURLE_FTP_WRITE_ERROR           7.1           7.17.0
CURLE_FUNCTION_NOT_FOUND        7.1
CURLE_GOT_NOTHING               7.9.1
CURLE_HTTP2                     7.38.0
CURLE_HTTP2_STREAM              7.49.0

CURLE_HTTP_NOT_FOUND            7.1
CURLE_HTTP_PORT_FAILED          7.3           7.12.0
CURLE_HTTP_POST_ERROR           7.1
CURLE_HTTP_RANGE_ERROR          7.1           7.17.0
CURLE_HTTP_RETURNED_ERROR       7.10.3
CURLE_INTERFACE_FAILED          7.12.0
CURLE_LDAP_CANNOT_BIND          7.1
CURLE_LDAP_INVALID_URL          7.10.8







|

















|









|










|






>
|







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
CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7
CURLCLOSEPOLICY_LEAST_TRAFFIC   7.7
CURLCLOSEPOLICY_NONE            7.7
CURLCLOSEPOLICY_OLDEST          7.7
CURLCLOSEPOLICY_SLOWEST         7.7
CURLE_ABORTED_BY_CALLBACK       7.1
CURLE_AGAIN                     7.18.2
CURLE_ALREADY_COMPLETE          7.7.2         7.8
CURLE_AUTH_ERROR                7.66.0
CURLE_BAD_CALLING_ORDER         7.1           7.17.0
CURLE_BAD_CONTENT_ENCODING      7.10
CURLE_BAD_DOWNLOAD_RESUME       7.10
CURLE_BAD_FUNCTION_ARGUMENT     7.1
CURLE_BAD_PASSWORD_ENTERED      7.4.2         7.17.0
CURLE_CHUNK_FAILED              7.21.0
CURLE_CONV_FAILED               7.15.4
CURLE_CONV_REQD                 7.15.4
CURLE_COULDNT_CONNECT           7.1
CURLE_COULDNT_RESOLVE_HOST      7.1
CURLE_COULDNT_RESOLVE_PROXY     7.1
CURLE_FAILED_INIT               7.1
CURLE_FILESIZE_EXCEEDED         7.10.8
CURLE_FILE_COULDNT_READ_FILE    7.1
CURLE_FTP_ACCEPT_FAILED         7.24.0
CURLE_FTP_ACCEPT_TIMEOUT        7.24.0
CURLE_FTP_ACCESS_DENIED         7.1           7.17.0
CURLE_FTP_BAD_DOWNLOAD_RESUME   7.1           7.1
CURLE_FTP_BAD_FILE_LIST         7.21.0
CURLE_FTP_CANT_GET_HOST         7.1
CURLE_FTP_CANT_RECONNECT        7.1           7.17.0
CURLE_FTP_COULDNT_GET_SIZE      7.1           7.17.0
CURLE_FTP_COULDNT_RETR_FILE     7.1
CURLE_FTP_COULDNT_SET_ASCII     7.1           7.17.0
CURLE_FTP_COULDNT_SET_BINARY    7.1           7.17.0
CURLE_FTP_COULDNT_SET_TYPE      7.17.0
CURLE_FTP_COULDNT_STOR_FILE     7.1           7.16.3
CURLE_FTP_COULDNT_USE_REST      7.1
CURLE_FTP_PARTIAL_FILE          7.1           7.1
CURLE_FTP_PORT_FAILED           7.1
CURLE_FTP_PRET_FAILED           7.20.0
CURLE_FTP_QUOTE_ERROR           7.1           7.17.0
CURLE_FTP_SSL_FAILED            7.11.0        7.17.0
CURLE_FTP_USER_PASSWORD_INCORRECT 7.1         7.17.0
CURLE_FTP_WEIRD_227_FORMAT      7.1
CURLE_FTP_WEIRD_PASS_REPLY      7.1
CURLE_FTP_WEIRD_PASV_REPLY      7.1
CURLE_FTP_WEIRD_SERVER_REPLY    7.1           7.51.0
CURLE_FTP_WEIRD_USER_REPLY      7.1           7.17.0
CURLE_FTP_WRITE_ERROR           7.1           7.17.0
CURLE_FUNCTION_NOT_FOUND        7.1
CURLE_GOT_NOTHING               7.9.1
CURLE_HTTP2                     7.38.0
CURLE_HTTP2_STREAM              7.49.0
CURLE_HTTP3                     7.68.0
CURLE_HTTP_NOT_FOUND            7.1           7.10.3
CURLE_HTTP_PORT_FAILED          7.3           7.12.0
CURLE_HTTP_POST_ERROR           7.1
CURLE_HTTP_RANGE_ERROR          7.1           7.17.0
CURLE_HTTP_RETURNED_ERROR       7.10.3
CURLE_INTERFACE_FAILED          7.12.0
CURLE_LDAP_CANNOT_BIND          7.1
CURLE_LDAP_INVALID_URL          7.10.8
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
CURLE_TFTP_ILLEGAL              7.15.0
CURLE_TFTP_NOSUCHUSER           7.15.0
CURLE_TFTP_NOTFOUND             7.15.0
CURLE_TFTP_PERM                 7.15.0
CURLE_TFTP_UNKNOWNID            7.15.0
CURLE_TOO_MANY_REDIRECTS        7.5
CURLE_UNKNOWN_OPTION            7.21.5
CURLE_UNKNOWN_TELNET_OPTION     7.7
CURLE_UNSUPPORTED_PROTOCOL      7.1
CURLE_UPLOAD_FAILED             7.16.3
CURLE_URL_MALFORMAT             7.1
CURLE_URL_MALFORMAT_USER        7.1           7.17.0
CURLE_USE_SSL_FAILED            7.17.0
CURLE_WEIRD_SERVER_REPLY        7.51.0
CURLE_WRITE_ERROR               7.1







|







140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
CURLE_TFTP_ILLEGAL              7.15.0
CURLE_TFTP_NOSUCHUSER           7.15.0
CURLE_TFTP_NOTFOUND             7.15.0
CURLE_TFTP_PERM                 7.15.0
CURLE_TFTP_UNKNOWNID            7.15.0
CURLE_TOO_MANY_REDIRECTS        7.5
CURLE_UNKNOWN_OPTION            7.21.5
CURLE_UNKNOWN_TELNET_OPTION     7.7           7.21.5
CURLE_UNSUPPORTED_PROTOCOL      7.1
CURLE_UPLOAD_FAILED             7.16.3
CURLE_URL_MALFORMAT             7.1
CURLE_URL_MALFORMAT_USER        7.1           7.17.0
CURLE_USE_SSL_FAILED            7.17.0
CURLE_WEIRD_SERVER_REPLY        7.51.0
CURLE_WRITE_ERROR               7.1
337
338
339
340
341
342
343

344
345
346
347
348
349
350
CURLM_BAD_SOCKET                7.15.4
CURLM_CALL_MULTI_PERFORM        7.9.6
CURLM_CALL_MULTI_SOCKET         7.15.5
CURLM_INTERNAL_ERROR            7.9.6
CURLM_OK                        7.9.6
CURLM_OUT_OF_MEMORY             7.9.6
CURLM_RECURSIVE_API_CALL        7.59.0

CURLM_UNKNOWN_OPTION            7.15.4
CURLOPTTYPE_FUNCTIONPOINT       7.1
CURLOPTTYPE_LONG                7.1
CURLOPTTYPE_OBJECTPOINT         7.1
CURLOPTTYPE_OFF_T               7.11.0
CURLOPTTYPE_STRINGPOINT         7.46.0
CURLOPTTYPE_SLISTPOINT          7.65.2







>







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
CURLM_BAD_SOCKET                7.15.4
CURLM_CALL_MULTI_PERFORM        7.9.6
CURLM_CALL_MULTI_SOCKET         7.15.5
CURLM_INTERNAL_ERROR            7.9.6
CURLM_OK                        7.9.6
CURLM_OUT_OF_MEMORY             7.9.6
CURLM_RECURSIVE_API_CALL        7.59.0
CURLM_WAKEUP_FAILURE            7.68.0
CURLM_UNKNOWN_OPTION            7.15.4
CURLOPTTYPE_FUNCTIONPOINT       7.1
CURLOPTTYPE_LONG                7.1
CURLOPTTYPE_OBJECTPOINT         7.1
CURLOPTTYPE_OFF_T               7.11.0
CURLOPTTYPE_STRINGPOINT         7.46.0
CURLOPTTYPE_SLISTPOINT          7.65.2
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
CURLSSH_AUTH_GSSAPI             7.58.0
CURLSSH_AUTH_HOST               7.16.1
CURLSSH_AUTH_KEYBOARD           7.16.1
CURLSSH_AUTH_NONE               7.16.1
CURLSSH_AUTH_PASSWORD           7.16.1
CURLSSH_AUTH_PUBLICKEY          7.16.1
CURLSSLBACKEND_AXTLS            7.38.0       7.61.0

CURLSSLBACKEND_BORINGSSL        7.49.0
CURLSSLBACKEND_CYASSL           7.34.0
CURLSSLBACKEND_DARWINSSL        7.34.0       7.64.1
CURLSSLBACKEND_GNUTLS           7.34.0
CURLSSLBACKEND_GSKIT            7.34.0
CURLSSLBACKEND_LIBRESSL         7.49.0
CURLSSLBACKEND_MBEDTLS          7.46.0
CURLSSLBACKEND_MESALINK         7.62.0
CURLSSLBACKEND_NONE             7.34.0
CURLSSLBACKEND_NSS              7.34.0
CURLSSLBACKEND_OPENSSL          7.34.0
CURLSSLBACKEND_POLARSSL         7.34.0
CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
CURLSSLBACKEND_SCHANNEL         7.34.0
CURLSSLBACKEND_SECURETRANSPORT  7.64.1
CURLSSLBACKEND_WOLFSSL          7.49.0
CURLSSLOPT_ALLOW_BEAST          7.25.0

CURLSSLOPT_NO_REVOKE            7.44.0
CURLSSLSET_NO_BACKENDS          7.56.0
CURLSSLSET_OK                   7.56.0
CURLSSLSET_TOO_LATE             7.56.0
CURLSSLSET_UNKNOWN_BACKEND      7.56.0
CURLUE_BAD_HANDLE               7.62.0
CURLUE_BAD_PARTPOINTER          7.62.0







>

















>







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
CURLSSH_AUTH_GSSAPI             7.58.0
CURLSSH_AUTH_HOST               7.16.1
CURLSSH_AUTH_KEYBOARD           7.16.1
CURLSSH_AUTH_NONE               7.16.1
CURLSSH_AUTH_PASSWORD           7.16.1
CURLSSH_AUTH_PUBLICKEY          7.16.1
CURLSSLBACKEND_AXTLS            7.38.0       7.61.0
CURLSSLBACKEND_BEARSSL          7.68.0
CURLSSLBACKEND_BORINGSSL        7.49.0
CURLSSLBACKEND_CYASSL           7.34.0
CURLSSLBACKEND_DARWINSSL        7.34.0       7.64.1
CURLSSLBACKEND_GNUTLS           7.34.0
CURLSSLBACKEND_GSKIT            7.34.0
CURLSSLBACKEND_LIBRESSL         7.49.0
CURLSSLBACKEND_MBEDTLS          7.46.0
CURLSSLBACKEND_MESALINK         7.62.0
CURLSSLBACKEND_NONE             7.34.0
CURLSSLBACKEND_NSS              7.34.0
CURLSSLBACKEND_OPENSSL          7.34.0
CURLSSLBACKEND_POLARSSL         7.34.0
CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
CURLSSLBACKEND_SCHANNEL         7.34.0
CURLSSLBACKEND_SECURETRANSPORT  7.64.1
CURLSSLBACKEND_WOLFSSL          7.49.0
CURLSSLOPT_ALLOW_BEAST          7.25.0
CURLSSLOPT_NO_PARTIALCHAIN      7.68.0
CURLSSLOPT_NO_REVOKE            7.44.0
CURLSSLSET_NO_BACKENDS          7.56.0
CURLSSLSET_OK                   7.56.0
CURLSSLSET_TOO_LATE             7.56.0
CURLSSLSET_UNKNOWN_BACKEND      7.56.0
CURLUE_BAD_HANDLE               7.62.0
CURLUE_BAD_PARTPOINTER          7.62.0
862
863
864
865
866
867
868

869
870
871
872
873
874
875
CURL_NETRC_OPTIONAL             7.9.8
CURL_NETRC_REQUIRED             7.9.8
CURL_POLL_IN                    7.14.0
CURL_POLL_INOUT                 7.14.0
CURL_POLL_NONE                  7.14.0
CURL_POLL_OUT                   7.14.0
CURL_POLL_REMOVE                7.14.0

CURL_PROGRESS_BAR               7.1.1         -           7.4.1
CURL_PROGRESS_STATS             7.1.1         -           7.4.1
CURL_PUSH_DENY                  7.44.0
CURL_PUSH_OK                    7.44.0
CURL_READFUNC_ABORT             7.12.1
CURL_READFUNC_PAUSE             7.18.0
CURL_REDIR_GET_ALL              7.19.1







>







866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
CURL_NETRC_OPTIONAL             7.9.8
CURL_NETRC_REQUIRED             7.9.8
CURL_POLL_IN                    7.14.0
CURL_POLL_INOUT                 7.14.0
CURL_POLL_NONE                  7.14.0
CURL_POLL_OUT                   7.14.0
CURL_POLL_REMOVE                7.14.0
CURL_PROGRESSFUNC_CONTINUE      7.68.0
CURL_PROGRESS_BAR               7.1.1         -           7.4.1
CURL_PROGRESS_STATS             7.1.1         -           7.4.1
CURL_PUSH_DENY                  7.44.0
CURL_PUSH_OK                    7.44.0
CURL_READFUNC_ABORT             7.12.1
CURL_READFUNC_PAUSE             7.18.0
CURL_REDIR_GET_ALL              7.19.1
Changes to jni/curl/include/Makefile.in.
319
320
321
322
323
324
325

326
327
328
329
330
331
332
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/include/curl/Makefile.in.
306
307
308
309
310
311
312

313
314
315
316
317
318
319
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/include/curl/curl.h.
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
  CURLSSLBACKEND_GSKIT = 5,
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_SECURETRANSPORT = 9,
  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12

} curl_sslbackend;

/* aliases for library clones and renames */
#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL

/* deprecated names: */







|
>







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
  CURLSSLBACKEND_GSKIT = 5,
  CURLSSLBACKEND_POLARSSL = 6,
  CURLSSLBACKEND_WOLFSSL = 7,
  CURLSSLBACKEND_SCHANNEL = 8,
  CURLSSLBACKEND_SECURETRANSPORT = 9,
  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
  CURLSSLBACKEND_MBEDTLS = 11,
  CURLSSLBACKEND_MESALINK = 12,
  CURLSSLBACKEND_BEARSSL = 13
} curl_sslbackend;

/* aliases for library clones and renames */
#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL

/* deprecated names: */
205
206
207
208
209
210
211





212
213
214
215
216
217
218
  void *userp;                      /* custom pointer used for
                                       HTTPPOST_CALLBACK posts */
  curl_off_t contentlen;            /* alternative length of contents
                                       field. Used if CURL_HTTPPOST_LARGE is
                                       set. Added in 7.46.0 */
};






/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
   considered deprecated but was the only choice up until 7.31.0 */
typedef int (*curl_progress_callback)(void *clientp,
                                      double dltotal,
                                      double dlnow,
                                      double ultotal,
                                      double ulnow);







>
>
>
>
>







206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
  void *userp;                      /* custom pointer used for
                                       HTTPPOST_CALLBACK posts */
  curl_off_t contentlen;            /* alternative length of contents
                                       field. Used if CURL_HTTPPOST_LARGE is
                                       set. Added in 7.46.0 */
};


/* This is a return code for the progress callback that, when returned, will
   signal libcurl to continue executing the default progress function */
#define CURL_PROGRESSFUNC_CONTINUE 0x10000001

/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
   considered deprecated but was the only choice up until 7.31.0 */
typedef int (*curl_progress_callback)(void *clientp,
                                      double dltotal,
                                      double dlnow,
                                      double ultotal,
                                      double ulnow);
598
599
600
601
602
603
604

605
606
607
608
609
610
611
  CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */
  CURLE_HTTP2_STREAM,            /* 92 - stream error in HTTP/2 framing layer
                                    */
  CURLE_RECURSIVE_API_CALL,      /* 93 - an api function was called from
                                    inside a callback */
  CURLE_AUTH_ERROR,              /* 94 - an authentication function returned an
                                    error */

  CURL_LAST /* never use! */
} CURLcode;

#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                          the obsolete stuff removed! */

/* Previously obsolete error code re-used in 7.38.0 */







>







604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
  CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */
  CURLE_HTTP2_STREAM,            /* 92 - stream error in HTTP/2 framing layer
                                    */
  CURLE_RECURSIVE_API_CALL,      /* 93 - an api function was called from
                                    inside a callback */
  CURLE_AUTH_ERROR,              /* 94 - an authentication function returned an
                                    error */
  CURLE_HTTP3,                   /* 95 - An HTTP/3 layer problem */
  CURL_LAST /* never use! */
} CURLcode;

#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                          the obsolete stuff removed! */

/* Previously obsolete error code re-used in 7.38.0 */
816
817
818
819
820
821
822




823
824
825
826
827
828
829
   make the SSL communication fail. To regain functionality with those broken
   servers, a user can this way allow the vulnerability back. */
#define CURLSSLOPT_ALLOW_BEAST (1<<0)

/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
   SSL backends where such behavior is present. */
#define CURLSSLOPT_NO_REVOKE (1<<1)





/* The default connection attempt delay in milliseconds for happy eyeballs.
   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document
   this value, keep them in sync. */
#define CURL_HET_DEFAULT 200L

/* The default connection upkeep interval in milliseconds. */







>
>
>
>







823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
   make the SSL communication fail. To regain functionality with those broken
   servers, a user can this way allow the vulnerability back. */
#define CURLSSLOPT_ALLOW_BEAST (1<<0)

/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
   SSL backends where such behavior is present. */
#define CURLSSLOPT_NO_REVOKE (1<<1)

/* - NO_PARTIALCHAIN tells libcurl to *NOT* accept a partial certificate chain
   if possible. The OpenSSL backend has this ability. */
#define CURLSSLOPT_NO_PARTIALCHAIN (1<<2)

/* The default connection attempt delay in milliseconds for happy eyeballs.
   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document
   this value, keep them in sync. */
#define CURL_HET_DEFAULT 200L

/* The default connection upkeep interval in milliseconds. */
941
942
943
944
945
946
947


948
949
950
951
952
953
954

#ifdef CURL_ISOCPP
#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu
#else
/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
#define LONG          CURLOPTTYPE_LONG
#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT


#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
#define OFF_T         CURLOPTTYPE_OFF_T
#define CINIT(name,type,number) CURLOPT_/**/name = type + number
#endif

/* handy aliases that make no run-time difference */
#define CURLOPTTYPE_STRINGPOINT  CURLOPTTYPE_OBJECTPOINT







>
>







952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967

#ifdef CURL_ISOCPP
#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu
#else
/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
#define LONG          CURLOPTTYPE_LONG
#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
#define STRINGPOINT   CURLOPTTYPE_OBJECTPOINT
#define SLISTPOINT    CURLOPTTYPE_OBJECTPOINT
#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
#define OFF_T         CURLOPTTYPE_OFF_T
#define CINIT(name,type,number) CURLOPT_/**/name = type + number
#endif

/* handy aliases that make no run-time difference */
#define CURLOPTTYPE_STRINGPOINT  CURLOPTTYPE_OBJECTPOINT
Changes to jni/curl/include/curl/curlver.h.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.67.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 67
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ







|




|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.68.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 68
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ
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
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074300

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2019-11-06"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */







|










|






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
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074400

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2020-01-08"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */
Changes to jni/curl/include/curl/multi.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef CURLINC_MULTI_H
#define CURLINC_MULTI_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef CURLINC_MULTI_H
#define CURLINC_MULTI_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
68
69
70
71
72
73
74

75
76
77
78
79
80
81
  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
  CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was
                            attempted to get added - again */
  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
                               callback */

  CURLM_LAST
} CURLMcode;

/* just to make code nicer when using curl_multi_socket() you can now check
   for CURLM_CALL_MULTI_SOCKET too in the same style it works for
   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM







>







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
  CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was
                            attempted to get added - again */
  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
                               callback */
  CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
  CURLM_LAST
} CURLMcode;

/* just to make code nicer when using curl_multi_socket() you can now check
   for CURLM_CALL_MULTI_SOCKET too in the same style it works for
   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
183
184
185
186
187
188
189









190
191
192
193
194
195
196
 */
CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
                                      struct curl_waitfd extra_fds[],
                                      unsigned int extra_nfds,
                                      int timeout_ms,
                                      int *ret);










 /*
  * Name:    curl_multi_perform()
  *
  * Desc:    When the app thinks there's data available for curl it calls this
  *          function to read/write whatever there is right now. This returns
  *          as soon as the reads and writes are done. This function does not
  *          require that there actually is data available for reading or that







>
>
>
>
>
>
>
>
>







184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
 */
CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
                                      struct curl_waitfd extra_fds[],
                                      unsigned int extra_nfds,
                                      int timeout_ms,
                                      int *ret);

/*
 * Name:     curl_multi_wakeup()
 *
 * Desc:     wakes up a sleeping curl_multi_poll call.
 *
 * Returns:  CURLMcode type, general multi error code.
 */
CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);

 /*
  * Name:    curl_multi_perform()
  *
  * Desc:    When the app thinks there's data available for curl it calls this
  *          function to read/write whatever there is right now. This returns
  *          as soon as the reads and writes are done. This function does not
  *          require that there actually is data available for reading or that
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461

typedef int (*curl_push_callback)(CURL *parent,
                                  CURL *easy,
                                  size_t num_headers,
                                  struct curl_pushheaders *headers,
                                  void *userp);

/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)

#ifdef __cplusplus
} /* end of extern "C" */
#endif

#endif







<
<
<





457
458
459
460
461
462
463



464
465
466
467
468

typedef int (*curl_push_callback)(CURL *parent,
                                  CURL *easy,
                                  size_t num_headers,
                                  struct curl_pushheaders *headers,
                                  void *userp);




#ifdef __cplusplus
} /* end of extern "C" */
#endif

#endif
Changes to jni/curl/include/curl/system.h.
133
134
135
136
137
138
139

140
141
142
143
144









145

146
147
148
149
150
151
152
153
154
155
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  endif
#  define CURL_TYPEOF_CURL_SOCKLEN_T int

#elif defined(__LCC__)

#  define CURL_TYPEOF_CURL_OFF_T     long
#  define CURL_FORMAT_CURL_OFF_T     "ld"
#  define CURL_FORMAT_CURL_OFF_TU    "lu"
#  define CURL_SUFFIX_CURL_OFF_T     L
#  define CURL_SUFFIX_CURL_OFF_TU    UL









#  define CURL_TYPEOF_CURL_SOCKLEN_T int


#elif defined(__SYMBIAN32__)
#  if defined(__EABI__)  /* Treat all ARM compilers equally */
#    define CURL_TYPEOF_CURL_OFF_T     long long
#    define CURL_FORMAT_CURL_OFF_T     "lld"
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  elif defined(__CW32__)
#    pragma longlong on







>
|
|
|
|
|
>
>
>
>
>
>
>
>
>
|
>


|







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
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  endif
#  define CURL_TYPEOF_CURL_SOCKLEN_T int

#elif defined(__LCC__)
#  if defined(__e2k__) /* MCST eLbrus C Compiler */
#    define CURL_TYPEOF_CURL_OFF_T     long
#    define CURL_FORMAT_CURL_OFF_T     "ld"
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
#    define CURL_SUFFIX_CURL_OFF_T     L
#    define CURL_SUFFIX_CURL_OFF_TU    UL
#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
#    define CURL_PULL_SYS_TYPES_H      1
#    define CURL_PULL_SYS_SOCKET_H     1
#  else                /* Local (or Little) C Compiler */
#    define CURL_TYPEOF_CURL_OFF_T     long
#    define CURL_FORMAT_CURL_OFF_T     "ld"
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
#    define CURL_SUFFIX_CURL_OFF_T     L
#    define CURL_SUFFIX_CURL_OFF_TU    UL
#    define CURL_TYPEOF_CURL_SOCKLEN_T int
#  endif

#elif defined(__SYMBIAN32__)
#  if defined(__EABI__) /* Treat all ARM compilers equally */
#    define CURL_TYPEOF_CURL_OFF_T     long long
#    define CURL_FORMAT_CURL_OFF_T     "lld"
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  elif defined(__CW32__)
#    pragma longlong on
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
#  define CURL_FORMAT_CURL_OFF_T     "ld"
#  define CURL_FORMAT_CURL_OFF_TU    "lu"
#  define CURL_SUFFIX_CURL_OFF_T     L
#  define CURL_SUFFIX_CURL_OFF_TU    UL
#  define CURL_TYPEOF_CURL_SOCKLEN_T int

#elif defined(__TINYC__) /* also known as tcc */

#  define CURL_TYPEOF_CURL_OFF_T     long long
#  define CURL_FORMAT_CURL_OFF_T     "lld"
#  define CURL_FORMAT_CURL_OFF_TU    "llu"
#  define CURL_SUFFIX_CURL_OFF_T     LL
#  define CURL_SUFFIX_CURL_OFF_TU    ULL
#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
#  define CURL_PULL_SYS_TYPES_H      1







<







295
296
297
298
299
300
301

302
303
304
305
306
307
308
#  define CURL_FORMAT_CURL_OFF_T     "ld"
#  define CURL_FORMAT_CURL_OFF_TU    "lu"
#  define CURL_SUFFIX_CURL_OFF_T     L
#  define CURL_SUFFIX_CURL_OFF_TU    UL
#  define CURL_TYPEOF_CURL_SOCKLEN_T int

#elif defined(__TINYC__) /* also known as tcc */

#  define CURL_TYPEOF_CURL_OFF_T     long long
#  define CURL_FORMAT_CURL_OFF_T     "lld"
#  define CURL_FORMAT_CURL_OFF_TU    "llu"
#  define CURL_SUFFIX_CURL_OFF_T     LL
#  define CURL_SUFFIX_CURL_OFF_TU    ULL
#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
#  define CURL_PULL_SYS_TYPES_H      1
373
374
375
376
377
378
379

380
381
382
383
384
385
386
#    define CURL_TYPEOF_CURL_OFF_T     long long
#    define CURL_FORMAT_CURL_OFF_T     "lld"
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  elif defined(__LP64__) || \
        defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \

        (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
        (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
#    define CURL_TYPEOF_CURL_OFF_T     long
#    define CURL_FORMAT_CURL_OFF_T     "ld"
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
#    define CURL_SUFFIX_CURL_OFF_T     L
#    define CURL_SUFFIX_CURL_OFF_TU    UL







>







383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
#    define CURL_TYPEOF_CURL_OFF_T     long long
#    define CURL_FORMAT_CURL_OFF_T     "lld"
#    define CURL_FORMAT_CURL_OFF_TU    "llu"
#    define CURL_SUFFIX_CURL_OFF_T     LL
#    define CURL_SUFFIX_CURL_OFF_TU    ULL
#  elif defined(__LP64__) || \
        defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
        defined(__e2k__) || \
        (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
        (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
#    define CURL_TYPEOF_CURL_OFF_T     long
#    define CURL_FORMAT_CURL_OFF_T     "ld"
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
#    define CURL_SUFFIX_CURL_OFF_T     L
#    define CURL_SUFFIX_CURL_OFF_TU    UL
Changes to jni/curl/lib/CMakeLists.txt.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

list(APPEND HHEADERS
  ${CMAKE_CURRENT_BINARY_DIR}/curl_config.h
  )

if(MSVC)
  list(APPEND CSOURCES libcurl.rc)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127")
endif()

# SET(CSOURCES
# #  memdebug.c -not used
# # nwlib.c - Not used
# # strtok.c - specify later
# # strtoofft.c - specify later







<







16
17
18
19
20
21
22

23
24
25
26
27
28
29

list(APPEND HHEADERS
  ${CMAKE_CURRENT_BINARY_DIR}/curl_config.h
  )

if(MSVC)
  list(APPEND CSOURCES libcurl.rc)

endif()

# SET(CSOURCES
# #  memdebug.c -not used
# # nwlib.c - Not used
# # strtok.c - specify later
# # strtoofft.c - specify later
Changes to jni/curl/lib/Makefile.in.
241
242
243
244
245
246
247
248

249
250
251
252
253
254
255
256
257
258
259
260
261
262
am__objects_3 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
	vtls/libcurl_la-vtls.lo vtls/libcurl_la-nss.lo \
	vtls/libcurl_la-polarssl.lo \
	vtls/libcurl_la-polarssl_threadlock.lo \
	vtls/libcurl_la-wolfssl.lo vtls/libcurl_la-schannel.lo \
	vtls/libcurl_la-schannel_verify.lo \
	vtls/libcurl_la-sectransp.lo vtls/libcurl_la-gskit.lo \
	vtls/libcurl_la-mbedtls.lo vtls/libcurl_la-mesalink.lo

am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo
am__objects_5 = vssh/libcurl_la-libssh2.lo vssh/libcurl_la-libssh.lo
am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
	$(am__objects_4) $(am__objects_5)
am__objects_7 =
am__objects_8 = $(am__objects_7) $(am__objects_7) $(am__objects_7) \
	$(am__objects_7)
am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8)
libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 = 
libcurl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \







|
>






|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
am__objects_3 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
	vtls/libcurl_la-vtls.lo vtls/libcurl_la-nss.lo \
	vtls/libcurl_la-polarssl.lo \
	vtls/libcurl_la-polarssl_threadlock.lo \
	vtls/libcurl_la-wolfssl.lo vtls/libcurl_la-schannel.lo \
	vtls/libcurl_la-schannel_verify.lo \
	vtls/libcurl_la-sectransp.lo vtls/libcurl_la-gskit.lo \
	vtls/libcurl_la-mbedtls.lo vtls/libcurl_la-mesalink.lo \
	vtls/libcurl_la-bearssl.lo
am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo
am__objects_5 = vssh/libcurl_la-libssh2.lo vssh/libcurl_la-libssh.lo
am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
	$(am__objects_4) $(am__objects_5)
am__objects_7 =
am__objects_8 = $(am__objects_7) $(am__objects_7) $(am__objects_7) \
	$(am__objects_7) $(am__objects_7)
am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8)
libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 = 
libcurl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
328
329
330
331
332
333
334
335

336
337
338
339
340
341
342
am__objects_11 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
	vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
	vtls/libcurlu_la-polarssl.lo \
	vtls/libcurlu_la-polarssl_threadlock.lo \
	vtls/libcurlu_la-wolfssl.lo vtls/libcurlu_la-schannel.lo \
	vtls/libcurlu_la-schannel_verify.lo \
	vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-gskit.lo \
	vtls/libcurlu_la-mbedtls.lo vtls/libcurlu_la-mesalink.lo

am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
	vquic/libcurlu_la-quiche.lo
am__objects_13 = vssh/libcurlu_la-libssh2.lo \
	vssh/libcurlu_la-libssh.lo
am__objects_14 = $(am__objects_9) $(am__objects_10) $(am__objects_11) \
	$(am__objects_12) $(am__objects_13)
am_libcurlu_la_OBJECTS = $(am__objects_14) $(am__objects_8)







|
>







329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
am__objects_11 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
	vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
	vtls/libcurlu_la-polarssl.lo \
	vtls/libcurlu_la-polarssl_threadlock.lo \
	vtls/libcurlu_la-wolfssl.lo vtls/libcurlu_la-schannel.lo \
	vtls/libcurlu_la-schannel_verify.lo \
	vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-gskit.lo \
	vtls/libcurlu_la-mbedtls.lo vtls/libcurlu_la-mesalink.lo \
	vtls/libcurlu_la-bearssl.lo
am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
	vquic/libcurlu_la-quiche.lo
am__objects_13 = vssh/libcurlu_la-libssh2.lo \
	vssh/libcurlu_la-libssh.lo
am__objects_14 = $(am__objects_9) $(am__objects_10) $(am__objects_11) \
	$(am__objects_12) $(am__objects_13)
am_libcurlu_la_OBJECTS = $(am__objects_14) $(am__objects_8)
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
	vquic/$(DEPDIR)/libcurl_la-quiche.Plo \
	vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo \
	vquic/$(DEPDIR)/libcurlu_la-quiche.Plo \
	vssh/$(DEPDIR)/libcurl_la-libssh.Plo \
	vssh/$(DEPDIR)/libcurl_la-libssh2.Plo \
	vssh/$(DEPDIR)/libcurlu_la-libssh.Plo \
	vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo \

	vtls/$(DEPDIR)/libcurl_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurl_la-nss.Plo \
	vtls/$(DEPDIR)/libcurl_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-polarssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \

	vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
	vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo \







>













>







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
	vquic/$(DEPDIR)/libcurl_la-quiche.Plo \
	vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo \
	vquic/$(DEPDIR)/libcurlu_la-quiche.Plo \
	vssh/$(DEPDIR)/libcurl_la-libssh.Plo \
	vssh/$(DEPDIR)/libcurl_la-libssh2.Plo \
	vssh/$(DEPDIR)/libcurlu_la-libssh.Plo \
	vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo \
	vtls/$(DEPDIR)/libcurl_la-bearssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurl_la-nss.Plo \
	vtls/$(DEPDIR)/libcurl_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-polarssl.Plo \
	vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel.Plo \
	vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo \
	vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
	vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
	vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
	vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
	vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
	vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
	vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \
	vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo \
811
812
813
814
815
816
817

818
819
820
821
822
823
824
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
971
972
973
974
975
976
977
978

979
980
981
982
983
984
985
986
987

988
989
990
991
992
993
994
  vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c       \
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c


LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c

LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \







|
>




|




>







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
  vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c       \
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c          \
  vtls/bearssl.c

LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h vtls/bearssl.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c
LIB_VSSH_HFILES = vssh/ssh.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)


# Makefile.inc provides the CSOURCES and HHEADERS defines
libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;







|
















|







1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h curl_base64.h curl_addrinfo.h curl_sspi.h                     \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES) $(LIB_VSSH_HFILES)


# Makefile.inc provides the CSOURCES and HHEADERS defines
libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
1201
1202
1203
1204
1205
1206
1207


1208
1209
1210
1211
1212
1213
1214
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mbedtls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)


vquic/$(am__dirstamp):
	@$(MKDIR_P) vquic
	@: > vquic/$(am__dirstamp)
vquic/$(DEPDIR)/$(am__dirstamp):
	@$(MKDIR_P) vquic/$(DEPDIR)
	@: > vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurl_la-ngtcp2.lo: vquic/$(am__dirstamp) \







>
>







1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mbedtls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-bearssl.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vquic/$(am__dirstamp):
	@$(MKDIR_P) vquic
	@: > vquic/$(am__dirstamp)
vquic/$(DEPDIR)/$(am__dirstamp):
	@$(MKDIR_P) vquic/$(DEPDIR)
	@: > vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurl_la-ngtcp2.lo: vquic/$(am__dirstamp) \
1273
1274
1275
1276
1277
1278
1279


1280
1281
1282
1283
1284
1285
1286
vtls/libcurlu_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mbedtls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \


	vtls/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-ngtcp2.lo: vquic/$(am__dirstamp) \
	vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-quiche.lo: vquic/$(am__dirstamp) \
	vquic/$(DEPDIR)/$(am__dirstamp)
vssh/libcurlu_la-libssh2.lo: vssh/$(am__dirstamp) \
	vssh/$(DEPDIR)/$(am__dirstamp)







>
>







1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
vtls/libcurlu_la-sectransp.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mbedtls.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-bearssl.lo: vtls/$(am__dirstamp) \
	vtls/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-ngtcp2.lo: vquic/$(am__dirstamp) \
	vquic/$(DEPDIR)/$(am__dirstamp)
vquic/libcurlu_la-quiche.lo: vquic/$(am__dirstamp) \
	vquic/$(DEPDIR)/$(am__dirstamp)
vssh/libcurlu_la-libssh2.lo: vssh/$(am__dirstamp) \
	vssh/$(DEPDIR)/$(am__dirstamp)
1554
1555
1556
1557
1558
1559
1560

1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573

1574
1575
1576
1577
1578
1579
1580
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@ # am--include-marker







>













>







1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-quiche.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@ # am--include-marker
2563
2564
2565
2566
2567
2568
2569







2570
2571
2572
2573
2574
2575
2576
vtls/libcurl_la-mesalink.lo: vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurl_la-mesalink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c








vquic/libcurl_la-ngtcp2.lo: vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vquic/libcurl_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurl_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c








>
>
>
>
>
>
>







2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
vtls/libcurl_la-mesalink.lo: vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurl_la-mesalink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c

vtls/libcurl_la-bearssl.lo: vtls/bearssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-bearssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-bearssl.Tpo -c -o vtls/libcurl_la-bearssl.lo `test -f 'vtls/bearssl.c' || echo '$(srcdir)/'`vtls/bearssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-bearssl.Tpo vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/bearssl.c' object='vtls/libcurl_la-bearssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-bearssl.lo `test -f 'vtls/bearssl.c' || echo '$(srcdir)/'`vtls/bearssl.c

vquic/libcurl_la-ngtcp2.lo: vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vquic/libcurl_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurl_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c

3543
3544
3545
3546
3547
3548
3549







3550
3551
3552
3553
3554
3555
3556
vtls/libcurlu_la-mesalink.lo: vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurlu_la-mesalink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c








vquic/libcurlu_la-ngtcp2.lo: vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vquic/libcurlu_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurlu_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c








>
>
>
>
>
>
>







3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
vtls/libcurlu_la-mesalink.lo: vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurlu_la-mesalink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c

vtls/libcurlu_la-bearssl.lo: vtls/bearssl.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-bearssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-bearssl.Tpo -c -o vtls/libcurlu_la-bearssl.lo `test -f 'vtls/bearssl.c' || echo '$(srcdir)/'`vtls/bearssl.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-bearssl.Tpo vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vtls/bearssl.c' object='vtls/libcurlu_la-bearssl.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-bearssl.lo `test -f 'vtls/bearssl.c' || echo '$(srcdir)/'`vtls/bearssl.c

vquic/libcurlu_la-ngtcp2.lo: vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vquic/libcurlu_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurlu_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c

3972
3973
3974
3975
3976
3977
3978

3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991

3992
3993
3994
3995
3996
3997
3998
	-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo

	-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo







>













>







3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
	-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo
4297
4298
4299
4300
4301
4302
4303

4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316

4317
4318
4319
4320
4321
4322
4323
	-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo

	-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo

	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo







>













>







4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
	-rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
	-rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
	-rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
	-rm -f vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo
Changes to jni/curl/lib/Makefile.inc.
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
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h

LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c


LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c

LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h

LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c



LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \







|
>




|






>
>







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
  vauth/spnego_gssapi.c vauth/spnego_sspi.c

LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h

LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
  vtls/polarssl.c vtls/polarssl_threadlock.c                            \
  vtls/wolfssl.c vtls/schannel.c vtls/schannel_verify.c                 \
  vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c          \
  vtls/bearssl.c

LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h                \
  vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h          \
  vtls/mbedtls.h vtls/mesalink.h vtls/bearssl.h

LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c

LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h

LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c

LIB_VSSH_HFILES = vssh/ssh.h

LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
  getinfo.c transfer.c strcase.c easy.c security.c curl_fnmatch.c       \
  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
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
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc

CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)







|
















|
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
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h curl_base64.h curl_addrinfo.h curl_sspi.h                     \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc

CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES) $(LIB_VSSH_HFILES)
Changes to jni/curl/lib/Makefile.m32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1999 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
    endif
  endif
  ifndef DYN
    OPENSSL_LIBS += -lgdi32 -lcrypt32
  endif
  INCLUDES += -I"$(OPENSSL_INCLUDE)"
  CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
            -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5
  DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
  ifdef SRP
    ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
      CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
    endif
  endif
endif







|







267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
    endif
  endif
  ifndef DYN
    OPENSSL_LIBS += -lgdi32 -lcrypt32
  endif
  INCLUDES += -I"$(OPENSSL_INCLUDE)"
  CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \
            -DOPENSSL_NO_KRB5
  DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
  ifdef SRP
    ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
      CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
    endif
  endif
endif
Changes to jni/curl/lib/altsvc.c.
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
static enum alpnid alpn2alpnid(char *name)
{
  if(strcasecompare(name, "h1"))
    return ALPN_h1;
  if(strcasecompare(name, "h2"))
    return ALPN_h2;
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
  if(strcasecompare(name, "h3-23"))
    return ALPN_h3;
#else
  if(strcasecompare(name, "h3"))
    return ALPN_h3;
#endif
  return ALPN_none; /* unknown, probably rubbish input */
}

/* Given the ALPN ID, return the name */
const char *Curl_alpnid2str(enum alpnid id)
{
  switch(id) {
  case ALPN_h1:
    return "h1";
  case ALPN_h2:
    return "h2";
  case ALPN_h3:
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
    return "h3-23";
#else
    return "h3";
#endif
  default:
    return ""; /* bad */
  }
}







|


















|







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
static enum alpnid alpn2alpnid(char *name)
{
  if(strcasecompare(name, "h1"))
    return ALPN_h1;
  if(strcasecompare(name, "h2"))
    return ALPN_h2;
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
  if(strcasecompare(name, "h3-24"))
    return ALPN_h3;
#else
  if(strcasecompare(name, "h3"))
    return ALPN_h3;
#endif
  return ALPN_none; /* unknown, probably rubbish input */
}

/* Given the ALPN ID, return the name */
const char *Curl_alpnid2str(enum alpnid id)
{
  switch(id) {
  case ALPN_h1:
    return "h1";
  case ALPN_h2:
    return "h2";
  case ALPN_h3:
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
    return "h3-24";
#else
    return "h3";
#endif
  default:
    return ""; /* bad */
  }
}
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
              "%" MAX_ALTSVC_ALPNLENSTR "s %" MAX_ALTSVC_HOSTLENSTR "s %u "
              "\"%" MAX_ALTSVC_DATELENSTR "[^\"]\" %u %u",
              srcalpn, srchost, &srcport,
              dstalpn, dsthost, &dstport,
              date, &persist, &prio);
  if(9 == rc) {
    struct altsvc *as;
    time_t expires = curl_getdate(date, NULL);
    as = altsvc_create(srchost, dsthost, srcalpn, dstalpn, srcport, dstport);
    if(as) {
      as->expires = expires;
      as->prio = prio;
      as->persist = persist ? 1 : 0;
      Curl_llist_insert_next(&asi->list, asi->list.tail, as, &as->node);
      asi->num++; /* one more entry */







|







157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
              "%" MAX_ALTSVC_ALPNLENSTR "s %" MAX_ALTSVC_HOSTLENSTR "s %u "
              "\"%" MAX_ALTSVC_DATELENSTR "[^\"]\" %u %u",
              srcalpn, srchost, &srcport,
              dstalpn, dsthost, &dstport,
              date, &persist, &prio);
  if(9 == rc) {
    struct altsvc *as;
    time_t expires = Curl_getdate_capped(date);
    as = altsvc_create(srchost, dsthost, srcalpn, dstalpn, srcport, dstport);
    if(as) {
      as->expires = expires;
      as->prio = prio;
      as->persist = persist ? 1 : 0;
      Curl_llist_insert_next(&asi->list, asi->list.tail, as, &as->node);
      asi->num++; /* one more entry */
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
  CURLcode result = CURLE_OK;
  FILE *out;

  if(!altsvc)
    /* no cache activated */
    return CURLE_OK;

  if((altsvc->flags & CURLALTSVC_READONLYFILE) || !file[0])
    /* marked as read-only or zero length file name */
    return CURLE_OK;
  out = fopen(file, FOPEN_WRITETEXT);
  if(!out)
    return CURLE_WRITE_ERROR;
  fputs("# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html\n"
        "# This file was generated by libcurl! Edit at your own risk.\n",
        out);







|
|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
  CURLcode result = CURLE_OK;
  FILE *out;

  if(!altsvc)
    /* no cache activated */
    return CURLE_OK;

  if((altsvc->flags & CURLALTSVC_READONLYFILE) || !file || !file[0])
    /* marked as read-only, no file or zero length file name */
    return CURLE_OK;
  out = fopen(file, FOPEN_WRITETEXT);
  if(!out)
    return CURLE_WRITE_ERROR;
  fputs("# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html\n"
        "# This file was generated by libcurl! Edit at your own risk.\n",
        out);
Changes to jni/curl/lib/asyn-thread.c.
694
695
696
697
698
699
700










701
702
703
704
705
706
707
{
  struct in_addr in;
  struct Curl_easy *data = conn->data;
  struct resdata *reslv = (struct resdata *)data->state.resolver;

  *waitp = 0; /* default to synchronous response */











  if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
    /* This is a dotted IP address 123.123.123.123-style */
    return Curl_ip2addr(AF_INET, &in, hostname, port);

  reslv->start = Curl_now();

  /* fire up a new resolver thread! */







>
>
>
>
>
>
>
>
>
>







694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
{
  struct in_addr in;
  struct Curl_easy *data = conn->data;
  struct resdata *reslv = (struct resdata *)data->state.resolver;

  *waitp = 0; /* default to synchronous response */

#ifdef ENABLE_IPV6
  {
    struct in6_addr in6;
    /* check if this is an IPv6 address string */
    if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
      /* This is an IPv6 address literal */
      return Curl_ip2addr(AF_INET6, &in6, hostname, port);
  }
#endif /* ENABLE_IPV6 */

  if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
    /* This is a dotted IP address 123.123.123.123-style */
    return Curl_ip2addr(AF_INET, &in, hostname, port);

  reslv->start = Curl_now();

  /* fire up a new resolver thread! */
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
  {
    struct in_addr in;
    /* First check if this is an IPv4 address string */
    if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
      /* This is a dotted IP address 123.123.123.123-style */
      return Curl_ip2addr(AF_INET, &in, hostname, port);
  }
#ifdef CURLRES_IPV6
  {
    struct in6_addr in6;
    /* check if this is an IPv6 address string */
    if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
      /* This is an IPv6 address literal */
      return Curl_ip2addr(AF_INET6, &in6, hostname, port);
  }
#endif /* CURLRES_IPV6 */
#endif /* !USE_RESOLVE_ON_IPS */

#ifdef CURLRES_IPV6
  /*
   * Check if a limited name resolve has been requested.
   */
  switch(conn->ip_version) {







|







|







747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
  {
    struct in_addr in;
    /* First check if this is an IPv4 address string */
    if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
      /* This is a dotted IP address 123.123.123.123-style */
      return Curl_ip2addr(AF_INET, &in, hostname, port);
  }
#ifdef ENABLE_IPV6
  {
    struct in6_addr in6;
    /* check if this is an IPv6 address string */
    if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
      /* This is an IPv6 address literal */
      return Curl_ip2addr(AF_INET6, &in6, hostname, port);
  }
#endif /* ENABLE_IPV6 */
#endif /* !USE_RESOLVE_ON_IPS */

#ifdef CURLRES_IPV6
  /*
   * Check if a limited name resolve has been requested.
   */
  switch(conn->ip_version) {
Changes to jni/curl/lib/checksrc.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
713
714
715
716
717
718
719

720
721
722
723

724


725

726
727
728
729
730
731
732
        # only locally committed files but inspect all files wrt the year of
        # their last commit. Removing the `git rev-list origin/master..HEAD`
        # condition below will enfore copyright year checks against the year
        # the file was last committed (and thus edited to some degree).
        my $commityear = undef;
        @copyright = sort {$$b{year} cmp $$a{year}} @copyright;


        if(`git status -s -- $file` =~ /^ [MARCU]/) {
            $commityear = (localtime(time))[5] + 1900;
        }
        elsif (`git rev-list --count origin/master..HEAD -- $file` !~ /^0/) {

            my $grl = `git rev-list --max-count=1 --timestamp HEAD -- $file`;


            $commityear = (localtime((split(/ /, $grl))[0]))[5] + 1900;

        }

        if(defined($commityear) && scalar(@copyright) &&
           $copyright[0]{year} != $commityear) {
            checkwarn("COPYRIGHTYEAR", $copyright[0]{line}, $copyright[0]{col},
                      $file, $copyright[0]{code},
                      "Copyright year out of date, should be $commityear, " .







>



|
>
|
>
>
|
>







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
        # only locally committed files but inspect all files wrt the year of
        # their last commit. Removing the `git rev-list origin/master..HEAD`
        # condition below will enfore copyright year checks against the year
        # the file was last committed (and thus edited to some degree).
        my $commityear = undef;
        @copyright = sort {$$b{year} cmp $$a{year}} @copyright;

        # if the file is modified, assume commit year this year
        if(`git status -s -- $file` =~ /^ [MARCU]/) {
            $commityear = (localtime(time))[5] + 1900;
        }
        else {
            # min-parents=1 to ignore wrong initial commit in truncated repos
            my $grl = `git rev-list --max-count=1 --min-parents=1 --timestamp HEAD -- $file`;
            if($grl) {
                chomp $grl;
                $commityear = (localtime((split(/ /, $grl))[0]))[5] + 1900;
            }
        }

        if(defined($commityear) && scalar(@copyright) &&
           $copyright[0]{year} != $commityear) {
            checkwarn("COPYRIGHTYEAR", $copyright[0]{line}, $copyright[0]{col},
                      $file, $copyright[0]{code},
                      "Copyright year out of date, should be $commityear, " .
Changes to jni/curl/lib/config-dos.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_DOS_H
#define HEADER_CURL_CONFIG_DOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_DOS_H
#define HEADER_CURL_CONFIG_DOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/config-mac.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_MAC_H
#define HEADER_CURL_CONFIG_MAC_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_MAC_H
#define HEADER_CURL_CONFIG_MAC_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/config-plan9.h.
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

#define HAVE_ALARM 1
#define HAVE_ARPA_INET_H 1
#define HAVE_ASSERT_H 1
#define HAVE_BASENAME 1
#define HAVE_BOOL_T 1
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1
#define HAVE_ERRNO_H 1
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
#define HAVE_FDOPEN 1
#define HAVE_FORK 1
#define HAVE_FREEADDRINFO 1
#define HAVE_FTRUNCATE 1







<







98
99
100
101
102
103
104

105
106
107
108
109
110
111

#define HAVE_ALARM 1
#define HAVE_ARPA_INET_H 1
#define HAVE_ASSERT_H 1
#define HAVE_BASENAME 1
#define HAVE_BOOL_T 1
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1

#define HAVE_ERRNO_H 1
#define HAVE_FCNTL 1
#define HAVE_FCNTL_H 1
#define HAVE_FDOPEN 1
#define HAVE_FORK 1
#define HAVE_FREEADDRINFO 1
#define HAVE_FTRUNCATE 1
Changes to jni/curl/lib/config-symbian.h.
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
/*#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1*/

/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
#define HAVE_ERR_H 1

/* Define to 1 if you have the <fcntl.h> header file. */







<
<
<







124
125
126
127
128
129
130



131
132
133
134
135
136
137

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1




/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
#define HAVE_ERR_H 1

/* Define to 1 if you have the <fcntl.h> header file. */
Changes to jni/curl/lib/config-tpf.h.
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* #undef HAVE_CRYPTO_H */
#define HAVE_CRYPTO_H 1

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */
#define HAVE_DES_H 1

/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1

/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */
#define HAVE_ERR_H 1








<
<
<
<







115
116
117
118
119
120
121




122
123
124
125
126
127
128
/* #undef HAVE_CRYPTO_H */
#define HAVE_CRYPTO_H 1

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */
#define HAVE_DES_H 1





/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */
#define HAVE_ERR_H 1

Changes to jni/curl/lib/config-vxworks.h.
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1

/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */

/* Define to 1 if you have the fcntl function. */







<
<
<







139
140
141
142
143
144
145



146
147
148
149
150
151
152

/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1




/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */

/* Define to 1 if you have the fcntl function. */
Changes to jni/curl/lib/config-win32.h.
731
732
733
734
735
736
737
738
739




740
741
742
743
744
745
746

/* Define cpu-machine-OS */
#undef OS
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
#define OS "x86_64-pc-win32"
#elif defined(_M_IA64) /* Itanium */
#define OS "ia64-pc-win32"




#else
#define OS "unknown-pc-win32"
#endif

/* Name of package */
#define PACKAGE "curl"








|

>
>
>
>







731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750

/* Define cpu-machine-OS */
#undef OS
#if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
#define OS "i386-pc-win32"
#elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
#define OS "x86_64-pc-win32"
#elif defined(_M_IA64) || defined(__ia64__) /* Itanium */
#define OS "ia64-pc-win32"
#elif defined(_M_ARM_NT) || defined(__arm__) /* ARMv7-Thumb2 (Windows RT) */
#define OS "thumbv7a-pc-win32"
#elif defined(_M_ARM64) || defined(__aarch64__) /* ARM64 (Windows 10) */
#define OS "aarch64-pc-win32"
#else
#define OS "unknown-pc-win32"
#endif

/* Name of package */
#define PACKAGE "curl"

Changes to jni/curl/lib/config-win32ce.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32CE_H
#define HEADER_CURL_CONFIG_WIN32CE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_WIN32CE_H
#define HEADER_CURL_CONFIG_WIN32CE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/conncache.c.
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
#include "connect.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

#ifdef CURLDEBUG
/* the debug versions of these macros make extra certain that the lock is
   never doubly locked or unlocked */
#define CONN_LOCK(x) if((x)->share) {                                   \
    Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE); \
    DEBUGASSERT(!(x)->state.conncache_lock);                            \
    (x)->state.conncache_lock = TRUE;                                   \
  }

#define CONN_UNLOCK(x) if((x)->share) {                                 \
    DEBUGASSERT((x)->state.conncache_lock);                             \
    (x)->state.conncache_lock = FALSE;                                  \
    Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT);                     \
  }
#else
#define CONN_LOCK(x) if((x)->share)                                     \
    Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE)
#define CONN_UNLOCK(x) if((x)->share)                   \
    Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT)
#endif

#define HASHKEY_SIZE 128

static void conn_llist_dtor(void *user, void *element)
{
  struct connectdata *conn = element;
  (void)user;
  conn->bundle = NULL;







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







36
37
38
39
40
41
42





















43
44
45
46
47
48
49
#include "connect.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"






















#define HASHKEY_SIZE 128

static void conn_llist_dtor(void *user, void *element)
{
  struct connectdata *conn = element;
  (void)user;
  conn->bundle = NULL;
118
119
120
121
122
123
124

125
126
127
128
129
130
131
      Curl_llist_remove(&cb_ptr->conn_list, curr, NULL);
      cb_ptr->num_connections--;
      conn->bundle = NULL;
      return 1; /* we removed a handle */
    }
    curr = curr->next;
  }

  return 0;
}

static void free_bundle_hash_entry(void *freethis)
{
  struct connectbundle *b = (struct connectbundle *) freethis;








>







97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
      Curl_llist_remove(&cb_ptr->conn_list, curr, NULL);
      cb_ptr->num_connections--;
      conn->bundle = NULL;
      return 1; /* we removed a handle */
    }
    curr = curr->next;
  }
  DEBUGASSERT(0);
  return 0;
}

static void free_bundle_hash_entry(void *freethis)
{
  struct connectbundle *b = (struct connectbundle *) freethis;

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

/*
 * Give ownership of a connection back to the connection cache. Might
 * disconnect the oldest existing in there to make space.
 *
 * Return TRUE if stored, FALSE if closed.
 */
bool Curl_conncache_return_conn(struct connectdata *conn)
{
  struct Curl_easy *data = conn->data;

  /* data->multi->maxconnects can be negative, deal with it. */
  size_t maxconnects =
    (data->multi->maxconnects < 0) ? data->multi->num_easy * 4:
    data->multi->maxconnects;
  struct connectdata *conn_candidate = NULL;

  conn->data = NULL; /* no owner anymore */
  conn->lastused = Curl_now(); /* it was used up until now */
  if(maxconnects > 0 &&
     Curl_conncache_size(data) > maxconnects) {
    infof(data, "Connection cache is full, closing the oldest one.\n");

    conn_candidate = Curl_conncache_extract_oldest(data);
    if(conn_candidate) {







|
<
|
|






<







404
405
406
407
408
409
410
411

412
413
414
415
416
417
418
419

420
421
422
423
424
425
426

/*
 * Give ownership of a connection back to the connection cache. Might
 * disconnect the oldest existing in there to make space.
 *
 * Return TRUE if stored, FALSE if closed.
 */
bool Curl_conncache_return_conn(struct Curl_easy *data,

                                struct connectdata *conn)
{
  /* data->multi->maxconnects can be negative, deal with it. */
  size_t maxconnects =
    (data->multi->maxconnects < 0) ? data->multi->num_easy * 4:
    data->multi->maxconnects;
  struct connectdata *conn_candidate = NULL;


  conn->lastused = Curl_now(); /* it was used up until now */
  if(maxconnects > 0 &&
     Curl_conncache_size(data) > maxconnects) {
    infof(data, "Connection cache is full, closing the oldest one.\n");

    conn_candidate = Curl_conncache_extract_oldest(data);
    if(conn_candidate) {
537
538
539
540
541
542
543
544

545
546
547
548
549
550
551

    bundle = he->ptr;

    curr = bundle->conn_list.head;
    while(curr) {
      conn = curr->ptr;

      if(!CONN_INUSE(conn) && !conn->data) {

        /* Set higher score for the age passed since the connection was used */
        score = Curl_timediff(now, conn->lastused);

        if(score > highscore) {
          highscore = score;
          conn_candidate = conn;
          bundle_candidate = bundle;







|
>







515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530

    bundle = he->ptr;

    curr = bundle->conn_list.head;
    while(curr) {
      conn = curr->ptr;

      if(!CONN_INUSE(conn) && !conn->data && !conn->bits.close &&
         !conn->bits.connect_only) {
        /* Set higher score for the age passed since the connection was used */
        score = Curl_timediff(now, conn->lastused);

        if(score > highscore) {
          highscore = score;
          conn_candidate = conn;
          bundle_candidate = bundle;
Changes to jni/curl/lib/conncache.h.
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
  /* handle used for closing cached connections */
  struct Curl_easy *closure_handle;
};

#define BUNDLE_NO_MULTIUSE -1
#define BUNDLE_UNKNOWN     0  /* initial value */
#define BUNDLE_MULTIPLEX   2






















struct connectbundle {
  int multiuse;                 /* supports multi-use */
  size_t num_connections;       /* Number of connections in the bundle */
  struct curl_llist conn_list;  /* The connectdata members of the bundle */
};

/* returns 1 on error, 0 is fine */
int Curl_conncache_init(struct conncache *, int size);
void Curl_conncache_destroy(struct conncache *connc);

/* return the correct bundle, to a host or a proxy */
struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
                                                 struct conncache *connc,
                                                 const char **hostp);
void Curl_conncache_unlock(struct Curl_easy *data);
/* returns number of connections currently held in the connection cache */
size_t Curl_conncache_size(struct Curl_easy *data);
size_t Curl_conncache_bundle_size(struct connectdata *conn);

bool Curl_conncache_return_conn(struct connectdata *conn);

CURLcode Curl_conncache_add_conn(struct conncache *connc,
                                 struct connectdata *conn) WARN_UNUSED_RESULT;
void Curl_conncache_remove_conn(struct Curl_easy *data,
                                struct connectdata *conn,
                                bool lock);
bool Curl_conncache_foreach(struct Curl_easy *data,
                            struct conncache *connc,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




















|
>







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
  /* handle used for closing cached connections */
  struct Curl_easy *closure_handle;
};

#define BUNDLE_NO_MULTIUSE -1
#define BUNDLE_UNKNOWN     0  /* initial value */
#define BUNDLE_MULTIPLEX   2

#ifdef CURLDEBUG
/* the debug versions of these macros make extra certain that the lock is
   never doubly locked or unlocked */
#define CONN_LOCK(x) if((x)->share) {                                   \
    Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE); \
    DEBUGASSERT(!(x)->state.conncache_lock);                            \
    (x)->state.conncache_lock = TRUE;                                   \
  }

#define CONN_UNLOCK(x) if((x)->share) {                                 \
    DEBUGASSERT((x)->state.conncache_lock);                             \
    (x)->state.conncache_lock = FALSE;                                  \
    Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT);                     \
  }
#else
#define CONN_LOCK(x) if((x)->share)                                     \
    Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE)
#define CONN_UNLOCK(x) if((x)->share)                   \
    Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT)
#endif

struct connectbundle {
  int multiuse;                 /* supports multi-use */
  size_t num_connections;       /* Number of connections in the bundle */
  struct curl_llist conn_list;  /* The connectdata members of the bundle */
};

/* returns 1 on error, 0 is fine */
int Curl_conncache_init(struct conncache *, int size);
void Curl_conncache_destroy(struct conncache *connc);

/* return the correct bundle, to a host or a proxy */
struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
                                                 struct conncache *connc,
                                                 const char **hostp);
void Curl_conncache_unlock(struct Curl_easy *data);
/* returns number of connections currently held in the connection cache */
size_t Curl_conncache_size(struct Curl_easy *data);
size_t Curl_conncache_bundle_size(struct connectdata *conn);

bool Curl_conncache_return_conn(struct Curl_easy *data,
                                struct connectdata *conn);
CURLcode Curl_conncache_add_conn(struct conncache *connc,
                                 struct connectdata *conn) WARN_UNUSED_RESULT;
void Curl_conncache_remove_conn(struct Curl_easy *data,
                                struct connectdata *conn,
                                bool lock);
bool Curl_conncache_foreach(struct Curl_easy *data,
                            struct conncache *connc,
Changes to jni/curl/lib/connect.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
928
929
930
931
932
933
934

935
936
937

938
939
940
941
942
943
944
     * address" for the given host. But first remember the latest error.
     */
    if(error) {
      data->state.os_errno = error;
      SET_SOCKERRNO(error);
      if(conn->tempaddr[i]) {
        CURLcode status;

        char ipaddress[MAX_IPADR_LEN];
        char buffer[STRERROR_LEN];
        Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);

        infof(data, "connect to %s port %ld failed: %s\n",
              ipaddress, conn->port,
              Curl_strerror(error, buffer, sizeof(buffer)));

        conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
          allow : allow / 2;








>



>







928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
     * address" for the given host. But first remember the latest error.
     */
    if(error) {
      data->state.os_errno = error;
      SET_SOCKERRNO(error);
      if(conn->tempaddr[i]) {
        CURLcode status;
#ifndef CURL_DISABLE_VERBOSE_STRINGS
        char ipaddress[MAX_IPADR_LEN];
        char buffer[STRERROR_LEN];
        Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
#endif
        infof(data, "connect to %s port %ld failed: %s\n",
              ipaddress, conn->port,
              Curl_strerror(error, buffer, sizeof(buffer)));

        conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
          allow : allow / 2;

988
989
990
991
992
993
994
995
996
997
998
999


1000
1001
1002
1003
1004
1005
1006
1007
1008
1009

  return result;
}

static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
{
#if defined(TCP_NODELAY)
#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
  struct Curl_easy *data = conn->data;
#endif
  curl_socklen_t onoff = (curl_socklen_t) 1;
  int level = IPPROTO_TCP;


  char buffer[STRERROR_LEN];

#if defined(CURL_DISABLE_VERBOSE_STRINGS)
  (void) conn;
#endif

  if(setsockopt(sockfd, level, TCP_NODELAY, (void *)&onoff,
                sizeof(onoff)) < 0)
    infof(data, "Could not set TCP_NODELAY: %s\n",
          Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));







<
<
<


>
>

|
<







990
991
992
993
994
995
996



997
998
999
1000
1001
1002

1003
1004
1005
1006
1007
1008
1009

  return result;
}

static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
{
#if defined(TCP_NODELAY)



  curl_socklen_t onoff = (curl_socklen_t) 1;
  int level = IPPROTO_TCP;
#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
  struct Curl_easy *data = conn->data;
  char buffer[STRERROR_LEN];
#else

  (void) conn;
#endif

  if(setsockopt(sockfd, level, TCP_NODELAY, (void *)&onoff,
                sizeof(onoff)) < 0)
    infof(data, "Could not set TCP_NODELAY: %s\n",
          Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
Changes to jni/curl/lib/cookie.c.
92
93
94
95
96
97
98

99
100
101
102
103
104
105
#include "slist.h"
#include "share.h"
#include "strtoofft.h"
#include "strcase.h"
#include "curl_get_line.h"
#include "curl_memrchr.h"
#include "inet_pton.h"


/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

static void freecookie(struct Cookie *co)







>







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "slist.h"
#include "share.h"
#include "strtoofft.h"
#include "strcase.h"
#include "curl_get_line.h"
#include "curl_memrchr.h"
#include "inet_pton.h"
#include "parsedate.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

static void freecookie(struct Cookie *co)
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
        else
          co->expires += now;
      }
    }
    else if(co->expirestr) {
      /* Note that if the date couldn't get parsed for whatever reason,
         the cookie will be treated as a session cookie */
      co->expires = curl_getdate(co->expirestr, NULL);

      /* Session cookies have expires set to 0 so if we get that back
         from the date parser let's add a second to make it a
         non-session cookie */
      if(co->expires == 0)
        co->expires = 1;
      else if(co->expires < 0)







|







712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
        else
          co->expires += now;
      }
    }
    else if(co->expirestr) {
      /* Note that if the date couldn't get parsed for whatever reason,
         the cookie will be treated as a session cookie */
      co->expires = Curl_getdate_capped(co->expirestr);

      /* Session cookies have expires set to 0 so if we get that back
         from the date parser let's add a second to make it a
         non-session cookie */
      if(co->expires == 0)
        co->expires = 1;
      else if(co->expires < 0)
Changes to jni/curl/lib/curl_base64.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_BASE64_H
#define HEADER_CURL_BASE64_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_BASE64_H
#define HEADER_CURL_BASE64_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_config.h.cmake.
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160

/* Define to 1 if you have the <des.h> header file. */
#cmakedefine HAVE_DES_H 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H 1

/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
#cmakedefine HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1

/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
#cmakedefine HAVE_ERR_H 1

/* Define to 1 if you have the fcntl function. */







<
<
<







144
145
146
147
148
149
150



151
152
153
154
155
156
157

/* Define to 1 if you have the <des.h> header file. */
#cmakedefine HAVE_DES_H 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H 1




/* Define to 1 if you have the <errno.h> header file. */
#cmakedefine HAVE_ERRNO_H 1

/* Define to 1 if you have the <err.h> header file. */
#cmakedefine HAVE_ERR_H 1

/* Define to 1 if you have the fcntl function. */
944
945
946
947
948
949
950



951
952
953
954
955
956
957
958



959
960
961
962
963
964
965

/* if Secure Transport is enabled */
#cmakedefine USE_SECTRANSP 1

/* if mbedTLS is enabled */
#cmakedefine USE_MBEDTLS 1




/* if libSSH2 is in use */
#cmakedefine USE_LIBSSH2 1

/* If you want to build curl with the built-in manual */
#cmakedefine USE_MANUAL 1

/* if NSS is enabled */
#cmakedefine USE_NSS 1




/* if you want to use OpenLDAP code instead of legacy ldap implementation */
#cmakedefine USE_OPENLDAP 1

/* if OpenSSL is in use */
#cmakedefine USE_OPENSSL 1








>
>
>








>
>
>







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

/* if Secure Transport is enabled */
#cmakedefine USE_SECTRANSP 1

/* if mbedTLS is enabled */
#cmakedefine USE_MBEDTLS 1

/* if BearSSL is enabled */
#cmakedefine USE_BEARSSL 1

/* if libSSH2 is in use */
#cmakedefine USE_LIBSSH2 1

/* If you want to build curl with the built-in manual */
#cmakedefine USE_MANUAL 1

/* if NSS is enabled */
#cmakedefine USE_NSS 1

/* if you have the PK11_CreateManagedGenericObject function */
#cmakedefine HAVE_PK11_CREATEMANAGEDGENERICOBJECT 1

/* if you want to use OpenLDAP code instead of legacy ldap implementation */
#cmakedefine USE_OPENLDAP 1

/* if OpenSSL is in use */
#cmakedefine USE_OPENSSL 1

Changes to jni/curl/lib/curl_config.h.in.
950
951
952
953
954
955
956



957
958
959
960
961
962
963
#undef USE_ALTSVC

/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES




/* if ESNI support is available */
#undef USE_ESNI

/* if GnuTLS is enabled */
#undef USE_GNUTLS








>
>
>







950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
#undef USE_ALTSVC

/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES

/* if BearSSL is enabled */
#undef USE_BEARSSL

/* if ESNI support is available */
#undef USE_ESNI

/* if GnuTLS is enabled */
#undef USE_GNUTLS

Changes to jni/curl/lib/curl_des.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2015 - 2019, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_des.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DES_H
#define HEADER_CURL_DES_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2015, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DES_H
#define HEADER_CURL_DES_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2015 - 2019, Steve Holme, <steve_holme@hotmail.com>.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_endian.c.
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
 */
unsigned short Curl_read16_be(const unsigned char *buf)
{
  return (unsigned short)(((unsigned short)buf[0] << 8) |
                          ((unsigned short)buf[1]));
}


/*
 * write32_le()
 *
 * This function converts a 32-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:
 *
 * value    [in]     - The 32-bit integer value.
 * buffer   [in]     - A pointer to the output buffer.
 */
static void write32_le(const int value, unsigned char *buffer)
{
  buffer[0] = (char)(value & 0x000000FF);
  buffer[1] = (char)((value & 0x0000FF00) >> 8);
  buffer[2] = (char)((value & 0x00FF0000) >> 16);
  buffer[3] = (char)((value & 0xFF000000) >> 24);
}

#if (CURL_SIZEOF_CURL_OFF_T > 4)
/*
 * Curl_write64_le()
 *
 * This function converts a 64-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:







>



















<







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
 */
unsigned short Curl_read16_be(const unsigned char *buf)
{
  return (unsigned short)(((unsigned short)buf[0] << 8) |
                          ((unsigned short)buf[1]));
}

#if (CURL_SIZEOF_CURL_OFF_T > 4)
/*
 * write32_le()
 *
 * This function converts a 32-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:
 *
 * value    [in]     - The 32-bit integer value.
 * buffer   [in]     - A pointer to the output buffer.
 */
static void write32_le(const int value, unsigned char *buffer)
{
  buffer[0] = (char)(value & 0x000000FF);
  buffer[1] = (char)((value & 0x0000FF00) >> 8);
  buffer[2] = (char)((value & 0x00FF0000) >> 16);
  buffer[3] = (char)((value & 0xFF000000) >> 24);
}


/*
 * Curl_write64_le()
 *
 * This function converts a 64-bit integer from the native endian format,
 * to little endian format ready for sending down the wire.
 *
 * Parameters:
Changes to jni/curl/lib/curl_fnmatch.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FNMATCH_H
#define HEADER_CURL_FNMATCH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FNMATCH_H
#define HEADER_CURL_FNMATCH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_gethostname.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GETHOSTNAME_H
#define HEADER_CURL_GETHOSTNAME_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GETHOSTNAME_H
#define HEADER_CURL_GETHOSTNAME_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_ldap.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_LDAP_H
#define HEADER_CURL_LDAP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_LDAP_H
#define HEADER_CURL_LDAP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_memrchr.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MEMRCHR_H
#define HEADER_CURL_MEMRCHR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MEMRCHR_H
#define HEADER_CURL_MEMRCHR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_multibyte.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_multibyte.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MULTIBYTE_H
#define HEADER_CURL_MULTIBYTE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MULTIBYTE_H
#define HEADER_CURL_MULTIBYTE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
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
 * no actual free'ing of this pointer it is simply set to NULL.
 */

#ifdef UNICODE

#define Curl_convert_UTF8_to_tchar(ptr) Curl_convert_UTF8_to_wchar((ptr))
#define Curl_convert_tchar_to_UTF8(ptr) Curl_convert_wchar_to_UTF8((ptr))
#define Curl_unicodefree(ptr) \



  do {if((ptr)) {free((ptr)); (ptr) = NULL;}} WHILE_FALSE



typedef union {
  unsigned short       *tchar_ptr;
  const unsigned short *const_tchar_ptr;
  unsigned short       *tbyte_ptr;
  const unsigned short *const_tbyte_ptr;
} xcharp_u;

#else

#define Curl_convert_UTF8_to_tchar(ptr) (ptr)
#define Curl_convert_tchar_to_UTF8(ptr) (ptr)
#define Curl_unicodefree(ptr) \
  do {(ptr) = NULL;} WHILE_FALSE

typedef union {
  char                *tchar_ptr;
  const char          *const_tchar_ptr;
  unsigned char       *tbyte_ptr;
  const unsigned char *const_tbyte_ptr;
} xcharp_u;

#endif /* UNICODE */

#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || USE_WIN32_LDAP */

#endif /* HEADER_CURL_MULTIBYTE_H */







|
>
>
>
|
>
>













|













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
 * no actual free'ing of this pointer it is simply set to NULL.
 */

#ifdef UNICODE

#define Curl_convert_UTF8_to_tchar(ptr) Curl_convert_UTF8_to_wchar((ptr))
#define Curl_convert_tchar_to_UTF8(ptr) Curl_convert_wchar_to_UTF8((ptr))
#define Curl_unicodefree(ptr)                           \
  do {                                                  \
    if(ptr) {                                           \
      free(ptr);                                        \
      (ptr) = NULL;                                     \
    }                                                   \
  } while(0)

typedef union {
  unsigned short       *tchar_ptr;
  const unsigned short *const_tchar_ptr;
  unsigned short       *tbyte_ptr;
  const unsigned short *const_tbyte_ptr;
} xcharp_u;

#else

#define Curl_convert_UTF8_to_tchar(ptr) (ptr)
#define Curl_convert_tchar_to_UTF8(ptr) (ptr)
#define Curl_unicodefree(ptr) \
  do {(ptr) = NULL;} while(0)

typedef union {
  char                *tchar_ptr;
  const char          *const_tchar_ptr;
  unsigned char       *tbyte_ptr;
  const unsigned char *const_tbyte_ptr;
} xcharp_u;

#endif /* UNICODE */

#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || USE_WIN32_LDAP */

#endif /* HEADER_CURL_MULTIBYTE_H */
Changes to jni/curl/lib/curl_ntlm_core.h.
44
45
46
47
48
49
50
51


52
53
54
55
56
57
58
/* Define USE_NTRESPONSES in order to make the type-3 message include
 * the NT response message. */
#define USE_NTRESPONSES

/* Define USE_NTLM2SESSION in order to make the type-3 message include the
   NTLM2Session response message, requires USE_NTRESPONSES defined to 1 and a
   Crypto engine that we have curl_ssl_md5sum() for. */
#if defined(USE_NTRESPONSES) && !defined(USE_WIN32_CRYPTO)


#define USE_NTLM2SESSION
#endif

/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
   and support for 64-bit integers. */
#if defined(USE_NTRESPONSES) && (CURL_SIZEOF_CURL_OFF_T > 4)







|
>
>







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* Define USE_NTRESPONSES in order to make the type-3 message include
 * the NT response message. */
#define USE_NTRESPONSES

/* Define USE_NTLM2SESSION in order to make the type-3 message include the
   NTLM2Session response message, requires USE_NTRESPONSES defined to 1 and a
   Crypto engine that we have curl_ssl_md5sum() for. */
#if defined(USE_NTRESPONSES) && \
  (!defined(USE_WIN32_CRYPTO) || \
  (defined(USE_SSL) && !defined(CURL_DISABLE_CRYPTO_AUTH)))
#define USE_NTLM2SESSION
#endif

/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
   and support for 64-bit integers. */
#if defined(USE_NTRESPONSES) && (CURL_SIZEOF_CURL_OFF_T > 4)
Changes to jni/curl/lib/curl_ntlm_wb.c.
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
      case 3:
        break;
      }
    }
    conn->ntlm_auth_hlpr_pid = 0;
  }

  free(conn->challenge_header);
  conn->challenge_header = NULL;
  free(conn->response_header);
  conn->response_header = NULL;
}

static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
{
  curl_socket_t sockfds[2];
  pid_t child_pid;
  const char *username;







|
<
|
<







104
105
106
107
108
109
110
111

112

113
114
115
116
117
118
119
      case 3:
        break;
      }
    }
    conn->ntlm_auth_hlpr_pid = 0;
  }

  Curl_safefree(conn->challenge_header);

  Curl_safefree(conn->response_header);

}

static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
{
  curl_socket_t sockfds[2];
  pid_t child_pid;
  const char *username;
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
  char **allocuserpwd;
  /* point to the name and password for this */
  const char *userp;
  curlntlm *state;
  struct auth *authp;

  CURLcode res = CURLE_OK;
  char *input;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->data);

  if(proxy) {
    allocuserpwd = &conn->allocptr.proxyuserpwd;
    userp = conn->http_proxy.user;







<







387
388
389
390
391
392
393

394
395
396
397
398
399
400
  char **allocuserpwd;
  /* point to the name and password for this */
  const char *userp;
  curlntlm *state;
  struct auth *authp;

  CURLcode res = CURLE_OK;


  DEBUGASSERT(conn);
  DEBUGASSERT(conn->data);

  if(proxy) {
    allocuserpwd = &conn->allocptr.proxyuserpwd;
    userp = conn->http_proxy.user;
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
      return res;

    free(*allocuserpwd);
    *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                            proxy ? "Proxy-" : "",
                            conn->response_header);
    DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
    free(conn->response_header);
    if(!*allocuserpwd)
      return CURLE_OUT_OF_MEMORY;
    conn->response_header = NULL;
    break;

  case NTLMSTATE_TYPE2:
    input = aprintf("TT %s\n", conn->challenge_header);
    if(!input)
      return CURLE_OUT_OF_MEMORY;
    res = ntlm_wb_response(conn, input, *state);
    free(input);
    input = NULL;
    if(res)
      return res;

    free(*allocuserpwd);
    *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                            proxy ? "Proxy-" : "",
                            conn->response_header);
    DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd));
    *state = NTLMSTATE_TYPE3; /* we sent a type-3 */
    authp->done = TRUE;
    Curl_http_auth_cleanup_ntlm_wb(conn);
    if(!*allocuserpwd)
      return CURLE_OUT_OF_MEMORY;
    break;

  case NTLMSTATE_TYPE3:
    /* connection is already authenticated,
     * don't send a header in future requests */
    *state = NTLMSTATE_LAST;
    /* FALLTHROUGH */
  case NTLMSTATE_LAST:
    Curl_safefree(*allocuserpwd);







|


<


|
|




<














|







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
      return res;

    free(*allocuserpwd);
    *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                            proxy ? "Proxy-" : "",
                            conn->response_header);
    DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
    Curl_safefree(conn->response_header);
    if(!*allocuserpwd)
      return CURLE_OUT_OF_MEMORY;

    break;

  case NTLMSTATE_TYPE2: {
    char *input = aprintf("TT %s\n", conn->challenge_header);
    if(!input)
      return CURLE_OUT_OF_MEMORY;
    res = ntlm_wb_response(conn, input, *state);
    free(input);

    if(res)
      return res;

    free(*allocuserpwd);
    *allocuserpwd = aprintf("%sAuthorization: %s\r\n",
                            proxy ? "Proxy-" : "",
                            conn->response_header);
    DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd));
    *state = NTLMSTATE_TYPE3; /* we sent a type-3 */
    authp->done = TRUE;
    Curl_http_auth_cleanup_ntlm_wb(conn);
    if(!*allocuserpwd)
      return CURLE_OUT_OF_MEMORY;
    break;
  }
  case NTLMSTATE_TYPE3:
    /* connection is already authenticated,
     * don't send a header in future requests */
    *state = NTLMSTATE_LAST;
    /* FALLTHROUGH */
  case NTLMSTATE_LAST:
    Curl_safefree(*allocuserpwd);
Changes to jni/curl/lib/curl_rtmp.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_RTMP_H
#define HEADER_CURL_RTMP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_RTMP_H
#define HEADER_CURL_RTMP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2010 - 2019, Howard Chu, <hyc@highlandsun.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_setup.h.
22
23
24
25
26
27
28








29
30
31
32
33
34
35
 *
 ***************************************************************************/

#if defined(BUILDING_LIBCURL) && !defined(CURL_NO_OLDIES)
#define CURL_NO_OLDIES
#endif









/*
 * Define WIN32 when build target is Win32 API
 */

#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) && \
    !defined(__SYMBIAN32__)
#define WIN32







>
>
>
>
>
>
>
>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 *
 ***************************************************************************/

#if defined(BUILDING_LIBCURL) && !defined(CURL_NO_OLDIES)
#define CURL_NO_OLDIES
#endif

/*
 * Disable Visual Studio warnings:
 * 4127 "conditional expression is constant"
 */
#ifdef _MSC_VER
#pragma warning(disable:4127)
#endif

/*
 * Define WIN32 when build target is Win32 API
 */

#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) && \
    !defined(__SYMBIAN32__)
#define WIN32
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
#  undef USE_THREADS_POSIX
#  undef USE_THREADS_WIN32
#endif

/*
 * Mutually exclusive CURLRES_* definitions.
 */







#ifdef USE_ARES
#  define CURLRES_ASYNCH
#  define CURLRES_ARES
/* now undef the stock libc functions just to avoid them being used */
#  undef HAVE_GETADDRINFO
#  undef HAVE_FREEADDRINFO
#  undef HAVE_GETHOSTBYNAME
#elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#  define CURLRES_ASYNCH
#  define CURLRES_THREADED
#else
#  define CURLRES_SYNCH
#endif

#ifdef ENABLE_IPV6
#  define CURLRES_IPV6
#else
#  define CURLRES_IPV4
#endif

/* ---------------------------------------------------------------- */

/*
 * When using WINSOCK, TELNET protocol requires WINSOCK2 API.
 */

#if defined(USE_WINSOCK) && (USE_WINSOCK != 2)







>
>
>
>
>
>















<
<
<
<
<
<







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
#  undef USE_THREADS_POSIX
#  undef USE_THREADS_WIN32
#endif

/*
 * Mutually exclusive CURLRES_* definitions.
 */

#if defined(ENABLE_IPV6) && defined(HAVE_GETADDRINFO)
#  define CURLRES_IPV6
#else
#  define CURLRES_IPV4
#endif

#ifdef USE_ARES
#  define CURLRES_ASYNCH
#  define CURLRES_ARES
/* now undef the stock libc functions just to avoid them being used */
#  undef HAVE_GETADDRINFO
#  undef HAVE_FREEADDRINFO
#  undef HAVE_GETHOSTBYNAME
#elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#  define CURLRES_ASYNCH
#  define CURLRES_THREADED
#else
#  define CURLRES_SYNCH
#endif







/* ---------------------------------------------------------------- */

/*
 * When using WINSOCK, TELNET protocol requires WINSOCK2 API.
 */

#if defined(USE_WINSOCK) && (USE_WINSOCK != 2)
640
641
642
643
644
645
646
647

648
649
650
651
652
653
654
#endif

#define LIBIDN_REQUIRED_VERSION "0.4.1"

#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
    defined(USE_MBEDTLS) || \
    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
    defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK)

#define USE_SSL    /* SSL support has been enabled */
#endif

/* Single point where USE_SPNEGO definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_SPNEGO







|
>







648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
#endif

#define LIBIDN_REQUIRED_VERSION "0.4.1"

#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
    defined(USE_MBEDTLS) || \
    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
    defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK) || \
    defined(USE_BEARSSL)
#define USE_SSL    /* SSL support has been enabled */
#endif

/* Single point where USE_SPNEGO definition might be defined */
#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
#define USE_SPNEGO
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
#endif

/*
 * Definition of our NOP statement Object-like macro
 */

#ifndef Curl_nop_stmt
#  define Curl_nop_stmt do { } WHILE_FALSE
#endif

/*
 * Ensure that Winsock and lwIP TCP/IP stacks are not mixed.
 */

#if defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)







|







718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
#endif

/*
 * Definition of our NOP statement Object-like macro
 */

#ifndef Curl_nop_stmt
#  define Curl_nop_stmt do { } while(0)
#endif

/*
 * Ensure that Winsock and lwIP TCP/IP stacks are not mixed.
 */

#if defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)
Changes to jni/curl/lib/curl_setup_once.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_ONCE_H
#define HEADER_CURL_SETUP_ONCE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_ONCE_H
#define HEADER_CURL_SETUP_ONCE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
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
#define TRUE true
#endif
#ifndef FALSE
#define FALSE false
#endif

#include "curl_ctype.h"

/*
 * Macro WHILE_FALSE may be used to build single-iteration do-while loops,
 * avoiding compiler warnings. Mostly intended for other macro definitions.
 */

#define WHILE_FALSE  while(0)

#if defined(_MSC_VER) && !defined(__POCC__)
#  undef WHILE_FALSE
#  if (_MSC_VER < 1500)
#    define WHILE_FALSE  while(1, 0)
#  else
#    define WHILE_FALSE \
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
while(0) \
__pragma(warning(pop))
#  endif
#endif


/*
 * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type.
 */

#ifndef HAVE_SIG_ATOMIC_T
typedef int sig_atomic_t;







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







324
325
326
327
328
329
330





















331
332
333
334
335
336
337
#define TRUE true
#endif
#ifndef FALSE
#define FALSE false
#endif

#include "curl_ctype.h"






















/*
 * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type.
 */

#ifndef HAVE_SIG_ATOMIC_T
typedef int sig_atomic_t;
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
/*
 * Macro used to include code only in debug builds.
 */

#ifdef DEBUGBUILD
#define DEBUGF(x) x
#else
#define DEBUGF(x) do { } WHILE_FALSE
#endif


/*
 * Macro used to include assertion code only in debug builds.
 */


#if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H)
#define DEBUGASSERT(x) assert(x)
#else
#define DEBUGASSERT(x) do { } WHILE_FALSE
#endif


/*
 * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
 * (or equivalent) on this platform to hide platform details to code using it.
 */







|







>



|







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
/*
 * Macro used to include code only in debug builds.
 */

#ifdef DEBUGBUILD
#define DEBUGF(x) x
#else
#define DEBUGF(x) do { } while(0)
#endif


/*
 * Macro used to include assertion code only in debug builds.
 */

#undef DEBUGASSERT
#if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H)
#define DEBUGASSERT(x) assert(x)
#else
#define DEBUGASSERT(x) do { } while(0)
#endif


/*
 * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
 * (or equivalent) on this platform to hide platform details to code using it.
 */
Changes to jni/curl/lib/curl_sha256.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SHA256_H
#define HEADER_CURL_SHA256_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2010, Florin Petriuc, <petriuc.florin@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SHA256_H
#define HEADER_CURL_SHA256_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Florin Petriuc, <petriuc.florin@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_sspi.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_sspi.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SSPI_H
#define HEADER_CURL_SSPI_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SSPI_H
#define HEADER_CURL_SSPI_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_threads.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/curl_threads.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_THREADS_H
#define HEADER_CURL_THREADS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_THREADS_H
#define HEADER_CURL_THREADS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/dict.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DICT_H
#define HEADER_CURL_DICT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DICT_H
#define HEADER_CURL_DICT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/doh.c.
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
                            size_t len,  /* buffer size */
                            size_t *olen) /* output length */
{
  const size_t hostlen = strlen(host);
  unsigned char *orig = dnsp;
  const char *hostp = host;

  /* The expected output length does not depend on the number of dots within







   * the host name. It will always be two more than the length of the host


   * name, one for the size and one trailing null. In case there are dots,
   * each dot adds one size but removes the need to store the dot, net zero.







   */

  const size_t expected_len = 12 + ( 1 + hostlen + 1) + 4;








  if(len < expected_len)
    return DOH_TOO_SMALL_BUFFER;

  *dnsp++ = 0; /* 16 bit id */
  *dnsp++ = 0;
  *dnsp++ = 0x01; /* |QR|   Opcode  |AA|TC|RD| Set the RD bit */
  *dnsp++ = '\0'; /* |RA|   Z    |   RCODE   |                */
  *dnsp++ = '\0';
  *dnsp++ = 1;    /* QDCOUNT (number of entries in the question section) */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* ANCOUNT */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* NSCOUNT */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* ARCOUNT */

  /* store a QNAME */
  do {
    char *dot = strchr(hostp, '.');
    size_t labellen;
    bool found = false;
    if(dot) {
      found = true;
      labellen = dot - hostp;
    }
    else
      labellen = strlen(hostp);
    if(labellen > 63) {
      /* too long label, error out */
      *olen = 0;
      return DOH_DNS_BAD_LABEL;
    }

    *dnsp++ = (unsigned char)labellen;
    memcpy(dnsp, hostp, labellen);
    dnsp += labellen;
    hostp += labellen + 1;

    if(!found) {

      *dnsp++ = 0; /* terminating zero */
      break;
    }
  } while(1);


  /* There are assigned TYPE codes beyond 255: use range [1..65535]  */
  *dnsp++ = (unsigned char)(255 & (dnstype>>8)); /* upper 8 bit TYPE */
  *dnsp++ = (unsigned char)(255 & dnstype);      /* lower 8 bit TYPE */

  *dnsp++ = '\0'; /* upper 8 bit CLASS */
  *dnsp++ = DNS_CLASS_IN; /* IN - "the Internet" */

  *olen = dnsp - orig;

  /* verify that our assumption of length is valid, since
   * this has lead to buffer overflows in this function */
  DEBUGASSERT(*olen == expected_len);
  return DOH_OK;
}

static size_t
doh_write_cb(void *contents, size_t size, size_t nmemb, void *userp)
{







|
>
>
>
>
>
>
>
|
>
>
|
|
>
>
>
>
>
>
>

>
|
>
>
>
>
>
>
>

















|
<
|

|
|
<

<


|
|



>



|
>
|
>
|
<
|
<
>










|
|







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
                            size_t len,  /* buffer size */
                            size_t *olen) /* output length */
{
  const size_t hostlen = strlen(host);
  unsigned char *orig = dnsp;
  const char *hostp = host;

  /* The expected output length is 16 bytes more than the length of
   * the QNAME-encoding of the host name.
   *
   * A valid DNS name may not contain a zero-length label, except at
   * the end.  For this reason, a name beginning with a dot, or
   * containing a sequence of two or more consecutive dots, is invalid
   * and cannot be encoded as a QNAME.
   *
   * If the host name ends with a trailing dot, the corresponding
   * QNAME-encoding is one byte longer than the host name. If (as is
   * also valid) the hostname is shortened by the omission of the
   * trailing dot, then its QNAME-encoding will be two bytes longer
   * than the host name.
   *
   * Each [ label, dot ] pair is encoded as [ length, label ],
   * preserving overall length.  A final [ label ] without a dot is
   * also encoded as [ length, label ], increasing overall length
   * by one. The encoding is completed by appending a zero byte,
   * representing the zero-length root label, again increasing
   * the overall length by one.
   */

  size_t expected_len;
  DEBUGASSERT(hostlen);
  expected_len = 12 + 1 + hostlen + 4;
  if(host[hostlen-1]!='.')
    expected_len++;

  if(expected_len > (256 + 16)) /* RFCs 1034, 1035 */
    return DOH_DNS_NAME_TOO_LONG;

  if(len < expected_len)
    return DOH_TOO_SMALL_BUFFER;

  *dnsp++ = 0; /* 16 bit id */
  *dnsp++ = 0;
  *dnsp++ = 0x01; /* |QR|   Opcode  |AA|TC|RD| Set the RD bit */
  *dnsp++ = '\0'; /* |RA|   Z    |   RCODE   |                */
  *dnsp++ = '\0';
  *dnsp++ = 1;    /* QDCOUNT (number of entries in the question section) */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* ANCOUNT */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* NSCOUNT */
  *dnsp++ = '\0';
  *dnsp++ = '\0'; /* ARCOUNT */

  /* encode each label and store it in the QNAME */

  while(*hostp) {
    size_t labellen;
    char *dot = strchr(hostp, '.');
    if(dot)

      labellen = dot - hostp;

    else
      labellen = strlen(hostp);
    if((labellen > 63) || (!labellen)) {
      /* label is too long or too short, error out */
      *olen = 0;
      return DOH_DNS_BAD_LABEL;
    }
    /* label is non-empty, process it */
    *dnsp++ = (unsigned char)labellen;
    memcpy(dnsp, hostp, labellen);
    dnsp += labellen;
    hostp += labellen;
    /* advance past dot, but only if there is one */
    if(dot)
      hostp++;
  } /* next label */



  *dnsp++ = 0; /* append zero-length label for root */

  /* There are assigned TYPE codes beyond 255: use range [1..65535]  */
  *dnsp++ = (unsigned char)(255 & (dnstype>>8)); /* upper 8 bit TYPE */
  *dnsp++ = (unsigned char)(255 & dnstype);      /* lower 8 bit TYPE */

  *dnsp++ = '\0'; /* upper 8 bit CLASS */
  *dnsp++ = DNS_CLASS_IN; /* IN - "the Internet" */

  *olen = dnsp - orig;

  /* verify that our estimation of length is valid, since
   * this has led to buffer overflows in this function */
  DEBUGASSERT(*olen == expected_len);
  return DOH_OK;
}

static size_t
doh_write_cb(void *contents, size_t size, size_t nmemb, void *userp)
{
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
}

#define ERROR_CHECK_SETOPT(x,y) \
do {                                      \
  result = curl_easy_setopt(doh, x, y);   \
  if(result)                              \
    goto error;                           \
} WHILE_FALSE

static CURLcode dohprobe(struct Curl_easy *data,
                         struct dnsprobe *p, DNStype dnstype,
                         const char *host,
                         const char *url, CURLM *multi,
                         struct curl_slist *headers)
{







|







214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
}

#define ERROR_CHECK_SETOPT(x,y) \
do {                                      \
  result = curl_easy_setopt(doh, x, y);   \
  if(result)                              \
    goto error;                           \
} while(0)

static CURLcode dohprobe(struct Curl_easy *data,
                         struct dnsprobe *p, DNStype dnstype,
                         const char *host,
                         const char *url, CURLM *multi,
                         struct curl_slist *headers)
{
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

    /* Inherit *some* SSL options from the user's transfer. This is a
       best-guess as to which options are needed for compatibility. #3661 */
    if(data->set.ssl.falsestart)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_FALSESTART, 1L);
    if(data->set.ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYHOST, 2L);

    if(data->set.proxy_ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYHOST, 2L);
    if(data->set.ssl.primary.verifypeer)


      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYPEER, 1L);






    if(data->set.proxy_ssl.primary.verifypeer)


      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYPEER, 1L);





    if(data->set.ssl.primary.verifystatus)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYSTATUS, 1L);
    if(data->set.str[STRING_SSL_CAFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAINFO,
        data->set.str[STRING_SSL_CAFILE_ORIG]);
    }
    if(data->set.str[STRING_SSL_CAFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAINFO,
        data->set.str[STRING_SSL_CAFILE_PROXY]);
    }
    if(data->set.str[STRING_SSL_CAPATH_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAPATH,
        data->set.str[STRING_SSL_CAPATH_ORIG]);
    }
    if(data->set.str[STRING_SSL_CAPATH_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAPATH,
        data->set.str[STRING_SSL_CAPATH_PROXY]);
    }
    if(data->set.str[STRING_SSL_CRLFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_ORIG]);
    }
    if(data->set.str[STRING_SSL_CRLFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_PROXY]);
    }
    if(data->set.ssl.certinfo)
      ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
    if(data->set.str[STRING_SSL_RANDOM_FILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
        data->set.str[STRING_SSL_RANDOM_FILE]);
    }
    if(data->set.str[STRING_SSL_EGDSOCKET]) {
      ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
        data->set.str[STRING_SSL_EGDSOCKET]);
    }
    if(data->set.ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    if(data->set.proxy_ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    if(data->set.ssl.fsslctx)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
    if(data->set.ssl.fsslctxp)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_DATA, data->set.ssl.fsslctxp);

    doh->set.fmultidone = Curl_doh_done;
    doh->set.dohfor = data; /* identify for which transfer this is done */







>


|
>
>
|
>
>
>
>
>
>
|
>
>
|
>
>
>
>
>






<
<
<
<




<
<
<
<




<
<
<
<












<
<







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

    /* Inherit *some* SSL options from the user's transfer. This is a
       best-guess as to which options are needed for compatibility. #3661 */
    if(data->set.ssl.falsestart)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_FALSESTART, 1L);
    if(data->set.ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYHOST, 2L);
#ifndef CURL_DISABLE_PROXY
    if(data->set.proxy_ssl.primary.verifyhost)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYHOST, 2L);
    if(data->set.proxy_ssl.primary.verifypeer)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
    if(data->set.str[STRING_SSL_CAFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAINFO,
        data->set.str[STRING_SSL_CAFILE_PROXY]);
    }
    if(data->set.str[STRING_SSL_CRLFILE_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_PROXY]);
    }
    if(data->set.proxy_ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    if(data->set.str[STRING_SSL_CAPATH_PROXY]) {
      ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAPATH,
        data->set.str[STRING_SSL_CAPATH_PROXY]);
    }
#endif
    if(data->set.ssl.primary.verifypeer)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYPEER, 1L);
    if(data->set.ssl.primary.verifystatus)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYSTATUS, 1L);
    if(data->set.str[STRING_SSL_CAFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAINFO,
        data->set.str[STRING_SSL_CAFILE_ORIG]);
    }




    if(data->set.str[STRING_SSL_CAPATH_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CAPATH,
        data->set.str[STRING_SSL_CAPATH_ORIG]);
    }




    if(data->set.str[STRING_SSL_CRLFILE_ORIG]) {
      ERROR_CHECK_SETOPT(CURLOPT_CRLFILE,
        data->set.str[STRING_SSL_CRLFILE_ORIG]);
    }




    if(data->set.ssl.certinfo)
      ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
    if(data->set.str[STRING_SSL_RANDOM_FILE]) {
      ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
        data->set.str[STRING_SSL_RANDOM_FILE]);
    }
    if(data->set.str[STRING_SSL_EGDSOCKET]) {
      ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
        data->set.str[STRING_SSL_EGDSOCKET]);
    }
    if(data->set.ssl.no_revoke)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);


    if(data->set.ssl.fsslctx)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
    if(data->set.ssl.fsslctxp)
      ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_DATA, data->set.ssl.fsslctxp);

    doh->set.fmultidone = Curl_doh_done;
    doh->set.dohfor = data; /* identify for which transfer this is done */
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
Curl_addrinfo *Curl_doh(struct connectdata *conn,
                        const char *hostname,
                        int port,
                        int *waitp)
{
  struct Curl_easy *data = conn->data;
  CURLcode result = CURLE_OK;

  *waitp = TRUE; /* this never returns synchronously */
  (void)conn;
  (void)hostname;
  (void)port;

  /* start clean, consider allocating this struct on demand */
  memset(&data->req.doh, 0, sizeof(struct dohdata));

  data->req.doh.host = hostname;
  data->req.doh.port = port;
  data->req.doh.headers =
    curl_slist_append(NULL,
                      "Content-Type: application/dns-message");
  if(!data->req.doh.headers)
    goto error;

  if(conn->ip_version != CURL_IPRESOLVE_V6) {
    /* create IPv4 DOH request */
    result = dohprobe(data, &data->req.doh.probe[0], DNS_TYPE_A,
                      hostname, data->set.str[STRING_DOH],
                      data->multi, data->req.doh.headers);
    if(result)
      goto error;
    data->req.doh.pending++;
  }

  if(conn->ip_version != CURL_IPRESOLVE_V4) {
    /* create IPv6 DOH request */
    result = dohprobe(data, &data->req.doh.probe[1], DNS_TYPE_AAAA,
                      hostname, data->set.str[STRING_DOH],
                      data->multi, data->req.doh.headers);
    if(result)
      goto error;
    data->req.doh.pending++;
  }
  return NULL;

  error:
  curl_slist_free_all(data->req.doh.headers);
  data->req.doh.headers = NULL;
  Curl_close(&data->req.doh.probe[0].easy);
  Curl_close(&data->req.doh.probe[1].easy);

  return NULL;
}

static DOHcode skipqname(unsigned char *doh, size_t dohlen,
                         unsigned int *indexp)
{
  unsigned char length;







>


















|
|








|
|










|
|
>







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
Curl_addrinfo *Curl_doh(struct connectdata *conn,
                        const char *hostname,
                        int port,
                        int *waitp)
{
  struct Curl_easy *data = conn->data;
  CURLcode result = CURLE_OK;
  int slot;
  *waitp = TRUE; /* this never returns synchronously */
  (void)conn;
  (void)hostname;
  (void)port;

  /* start clean, consider allocating this struct on demand */
  memset(&data->req.doh, 0, sizeof(struct dohdata));

  data->req.doh.host = hostname;
  data->req.doh.port = port;
  data->req.doh.headers =
    curl_slist_append(NULL,
                      "Content-Type: application/dns-message");
  if(!data->req.doh.headers)
    goto error;

  if(conn->ip_version != CURL_IPRESOLVE_V6) {
    /* create IPv4 DOH request */
    result = dohprobe(data, &data->req.doh.probe[DOH_PROBE_SLOT_IPADDR_V4],
                      DNS_TYPE_A, hostname, data->set.str[STRING_DOH],
                      data->multi, data->req.doh.headers);
    if(result)
      goto error;
    data->req.doh.pending++;
  }

  if(conn->ip_version != CURL_IPRESOLVE_V4) {
    /* create IPv6 DOH request */
    result = dohprobe(data, &data->req.doh.probe[DOH_PROBE_SLOT_IPADDR_V6],
                      DNS_TYPE_AAAA, hostname, data->set.str[STRING_DOH],
                      data->multi, data->req.doh.headers);
    if(result)
      goto error;
    data->req.doh.pending++;
  }
  return NULL;

  error:
  curl_slist_free_all(data->req.doh.headers);
  data->req.doh.headers = NULL;
  for(slot = 0; slot < DOH_PROBE_SLOTS; slot++) {
    Curl_close(&data->req.doh.probe[slot].easy);
  }
  return NULL;
}

static DOHcode skipqname(unsigned char *doh, size_t dohlen,
                         unsigned int *indexp)
{
  unsigned char length;
582
583
584
585
586
587
588



589
590
591
592
593
594
595
      return rc;
    break;
  case DNS_TYPE_CNAME:
    rc = store_cname(doh, dohlen, index, d);
    if(rc)
      return rc;
    break;



  default:
    /* unsupported type, just skip it */
    break;
  }
  return DOH_OK;
}








>
>
>







609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
      return rc;
    break;
  case DNS_TYPE_CNAME:
    rc = store_cname(doh, dohlen, index, d);
    if(rc)
      return rc;
    break;
  case DNS_TYPE_DNAME:
    /* explicit for clarity; just skip; rely on synthesized CNAME  */
    break;
  default:
    /* unsupported type, just skip it */
    break;
  }
  return DOH_OK;
}

643
644
645
646
647
648
649
650


651
652
653
654
655
656
657
658
    if(rc)
      return rc; /* bad qname */

    if(dohlen < (index + 2))
      return DOH_DNS_OUT_OF_RANGE;

    type = get16bit(doh, index);
    if((type != DNS_TYPE_CNAME) && (type != dnstype))


      /* Not the same type as was asked for nor CNAME */
      return DOH_DNS_UNEXPECTED_TYPE;
    index += 2;

    if(dohlen < (index + 2))
      return DOH_DNS_OUT_OF_RANGE;
    class = get16bit(doh, index);
    if(DNS_CLASS_IN != class)







|
>
>
|







673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
    if(rc)
      return rc; /* bad qname */

    if(dohlen < (index + 2))
      return DOH_DNS_OUT_OF_RANGE;

    type = get16bit(doh, index);
    if((type != DNS_TYPE_CNAME)    /* may be synthesized from DNAME */
       && (type != DNS_TYPE_DNAME) /* if present, accept and ignore */
       && (type != dnstype))
      /* Not the same type as was asked for nor CNAME nor DNAME */
      return DOH_DNS_UNEXPECTED_TYPE;
    index += 2;

    if(dohlen < (index + 2))
      return DOH_DNS_OUT_OF_RANGE;
    class = get16bit(doh, index);
    if(DNS_CLASS_IN != class)
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
    free(d->cname[i].alloc);
  }
}

CURLcode Curl_doh_is_resolved(struct connectdata *conn,
                              struct Curl_dns_entry **dnsp)
{

  struct Curl_easy *data = conn->data;
  *dnsp = NULL; /* defaults to no response */

  if(!data->req.doh.probe[0].easy && !data->req.doh.probe[1].easy) {

    failf(data, "Could not DOH-resolve: %s", conn->async.hostname);
    return conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
      CURLE_COULDNT_RESOLVE_HOST;
  }
  else if(!data->req.doh.pending) {
    DOHcode rc;
    DOHcode rc2;
    struct dohentry de;

    /* remove DOH handles from multi handle and close them */
    curl_multi_remove_handle(data->multi, data->req.doh.probe[0].easy);
    Curl_close(&data->req.doh.probe[0].easy);
    curl_multi_remove_handle(data->multi, data->req.doh.probe[1].easy);
    Curl_close(&data->req.doh.probe[1].easy);

    /* parse the responses, create the struct and return it! */
    init_dohentry(&de);

    rc = doh_decode(data->req.doh.probe[0].serverdoh.memory,
                    data->req.doh.probe[0].serverdoh.size,
                    data->req.doh.probe[0].dnstype,
                    &de);
    Curl_safefree(data->req.doh.probe[0].serverdoh.memory);
    if(rc) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc),
            type2name(data->req.doh.probe[0].dnstype),
            data->req.doh.host);
    }
    rc2 = doh_decode(data->req.doh.probe[1].serverdoh.memory,
                     data->req.doh.probe[1].serverdoh.size,
                     data->req.doh.probe[1].dnstype,
                     &de);
    Curl_safefree(data->req.doh.probe[1].serverdoh.memory);
    if(rc2) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc2),
            type2name(data->req.doh.probe[1].dnstype),
            data->req.doh.host);
    }

    if(!rc || !rc2) {

      struct Curl_dns_entry *dns;
      struct Curl_addrinfo *ai;

      infof(data, "DOH Host name: %s\n", data->req.doh.host);
      showdoh(data, &de);

      ai = doh2ai(&de, data->req.doh.host, data->req.doh.port);







>



|
>





|
<

>

|
<
|
|
>


>
|
|
|
|
|
|
|
|
|
|
<
|
<
<
<
<
<
<
<
|
>
|
>







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
    free(d->cname[i].alloc);
  }
}

CURLcode Curl_doh_is_resolved(struct connectdata *conn,
                              struct Curl_dns_entry **dnsp)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  *dnsp = NULL; /* defaults to no response */

  if(!data->req.doh.probe[DOH_PROBE_SLOT_IPADDR_V4].easy &&
     !data->req.doh.probe[DOH_PROBE_SLOT_IPADDR_V6].easy) {
    failf(data, "Could not DOH-resolve: %s", conn->async.hostname);
    return conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
      CURLE_COULDNT_RESOLVE_HOST;
  }
  else if(!data->req.doh.pending) {
    DOHcode rc[DOH_PROBE_SLOTS];

    struct dohentry de;
    int slot;
    /* remove DOH handles from multi handle and close them */
    for(slot = 0; slot < DOH_PROBE_SLOTS; slot++) {

      curl_multi_remove_handle(data->multi, data->req.doh.probe[slot].easy);
      Curl_close(&data->req.doh.probe[slot].easy);
    }
    /* parse the responses, create the struct and return it! */
    init_dohentry(&de);
    for(slot = 0; slot < DOH_PROBE_SLOTS; slot++) {
      rc[slot] = doh_decode(data->req.doh.probe[slot].serverdoh.memory,
                            data->req.doh.probe[slot].serverdoh.size,
                            data->req.doh.probe[slot].dnstype,
                            &de);
      Curl_safefree(data->req.doh.probe[slot].serverdoh.memory);
      if(rc[slot]) {
        infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc[slot]),
              type2name(data->req.doh.probe[slot].dnstype),
              data->req.doh.host);
      }

    } /* next slot */








    result = CURLE_COULDNT_RESOLVE_HOST; /* until we know better */
    if(!rc[DOH_PROBE_SLOT_IPADDR_V4] || !rc[DOH_PROBE_SLOT_IPADDR_V6]) {
      /* we have an address, of one kind or other */
      struct Curl_dns_entry *dns;
      struct Curl_addrinfo *ai;

      infof(data, "DOH Host name: %s\n", data->req.doh.host);
      showdoh(data, &de);

      ai = doh2ai(&de, data->req.doh.host, data->req.doh.port);
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

      /* we got a response, store it in the cache */
      dns = Curl_cache_addr(data, ai, data->req.doh.host, data->req.doh.port);

      if(data->share)
        Curl_share_unlock(data, CURL_LOCK_DATA_DNS);

      de_cleanup(&de);
      if(!dns)
        /* returned failure, bail out nicely */
        Curl_freeaddrinfo(ai);

      else {
        conn->async.dns = dns;
        *dnsp = dns;
        return CURLE_OK;
      }

    }



    de_cleanup(&de);

    return CURLE_COULDNT_RESOLVE_HOST;
  }



  return CURLE_OK;
}

#endif /* CURL_DISABLE_DOH */







<
|


>



|

>
|
>
>
>

|
<
|
>

>




995
996
997
998
999
1000
1001

1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017

1018
1019
1020
1021
1022
1023
1024
1025

      /* we got a response, store it in the cache */
      dns = Curl_cache_addr(data, ai, data->req.doh.host, data->req.doh.port);

      if(data->share)
        Curl_share_unlock(data, CURL_LOCK_DATA_DNS);


      if(!dns) {
        /* returned failure, bail out nicely */
        Curl_freeaddrinfo(ai);
      }
      else {
        conn->async.dns = dns;
        *dnsp = dns;
        result = CURLE_OK;      /* address resolution OK */
      }
    } /* address processing done */

    /* Now process any build-specific attributes retrieved from DNS */

    /* All done */
    de_cleanup(&de);
    return result;


  } /* !data->req.doh.pending */

  /* else wait for pending DOH transactions to complete */
  return CURLE_OK;
}

#endif /* CURL_DISABLE_DOH */
Changes to jni/curl/lib/doh.h.
51
52
53
54
55
56
57
58

59
60
61
62
63
64
65

66
67
68
69
70
71
72
  DOH_OUT_OF_MEM,       /* 5 */
  DOH_DNS_RDATA_LEN,    /* 6 */
  DOH_DNS_MALFORMAT,    /* 7 */
  DOH_DNS_BAD_RCODE,    /* 8 - no such name */
  DOH_DNS_UNEXPECTED_TYPE,  /* 9 */
  DOH_DNS_UNEXPECTED_CLASS, /* 10 */
  DOH_NO_CONTENT,           /* 11 */
  DOH_DNS_BAD_ID            /* 12 */

} DOHcode;

typedef enum {
  DNS_TYPE_A = 1,
  DNS_TYPE_NS = 2,
  DNS_TYPE_CNAME = 5,
  DNS_TYPE_AAAA = 28

} DNStype;

#define DOH_MAX_ADDR 24
#define DOH_MAX_CNAME 4

struct cnamestore {
  size_t len;       /* length of cname */







|
>






|
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  DOH_OUT_OF_MEM,       /* 5 */
  DOH_DNS_RDATA_LEN,    /* 6 */
  DOH_DNS_MALFORMAT,    /* 7 */
  DOH_DNS_BAD_RCODE,    /* 8 - no such name */
  DOH_DNS_UNEXPECTED_TYPE,  /* 9 */
  DOH_DNS_UNEXPECTED_CLASS, /* 10 */
  DOH_NO_CONTENT,           /* 11 */
  DOH_DNS_BAD_ID,           /* 12 */
  DOH_DNS_NAME_TOO_LONG     /* 13 */
} DOHcode;

typedef enum {
  DNS_TYPE_A = 1,
  DNS_TYPE_NS = 2,
  DNS_TYPE_CNAME = 5,
  DNS_TYPE_AAAA = 28,
  DNS_TYPE_DNAME = 39           /* RFC6672 */
} DNStype;

#define DOH_MAX_ADDR 24
#define DOH_MAX_CNAME 4

struct cnamestore {
  size_t len;       /* length of cname */
Changes to jni/curl/lib/dotdot.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/dotdot.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DOTDOT_H
#define HEADER_CURL_DOTDOT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DOTDOT_H
#define HEADER_CURL_DOTDOT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/easy.c.
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "slist.h"
#include "mime.h"
#include "amigaos.h"
#include "non-ascii.h"
#include "warnless.h"
#include "multiif.h"
#include "sigpipe.h"
#include "ssh.h"
#include "setopt.h"
#include "http_digest.h"
#include "system_win32.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"







|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "slist.h"
#include "mime.h"
#include "amigaos.h"
#include "non-ascii.h"
#include "warnless.h"
#include "multiif.h"
#include "sigpipe.h"
#include "vssh/ssh.h"
#include "setopt.h"
#include "http_digest.h"
#include "system_win32.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
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
#if defined(WIN32) && defined(UNICODE)
    Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup;
#endif
  }

  if(!Curl_ssl_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_ssl_init failed\n"));
    return CURLE_FAILED_INIT;
  }

#ifdef WIN32
  if(Curl_win32_init(flags)) {
    DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
    return CURLE_FAILED_INIT;
  }
#endif

#ifdef __AMIGA__
  if(!Curl_amiga_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
    return CURLE_FAILED_INIT;
  }
#endif

#ifdef NETWARE
  if(netware_init()) {
    DEBUGF(fprintf(stderr, "Warning: LONG namespace not available\n"));
  }
#endif

  if(Curl_resolver_global_init()) {
    DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
    return CURLE_FAILED_INIT;
  }

  (void)Curl_ipv6works();

#if defined(USE_SSH)
  if(Curl_ssh_init()) {
    return CURLE_FAILED_INIT;
  }
#endif

  if(flags & CURL_GLOBAL_ACK_EINTR)
    Curl_ack_eintr = 1;

  init_flags = flags;

  Curl_version_init();

  return CURLE_OK;




}


/**
 * curl_global_init() globally initializes curl given a bitwise set of the
 * different features of what to initialize.
 */







|





|






|











|






|











>
>
>
>







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
#if defined(WIN32) && defined(UNICODE)
    Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup;
#endif
  }

  if(!Curl_ssl_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_ssl_init failed\n"));
    goto fail;
  }

#ifdef WIN32
  if(Curl_win32_init(flags)) {
    DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
    goto fail;
  }
#endif

#ifdef __AMIGA__
  if(!Curl_amiga_init()) {
    DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
    goto fail;
  }
#endif

#ifdef NETWARE
  if(netware_init()) {
    DEBUGF(fprintf(stderr, "Warning: LONG namespace not available\n"));
  }
#endif

  if(Curl_resolver_global_init()) {
    DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
    goto fail;
  }

  (void)Curl_ipv6works();

#if defined(USE_SSH)
  if(Curl_ssh_init()) {
    goto fail;
  }
#endif

  if(flags & CURL_GLOBAL_ACK_EINTR)
    Curl_ack_eintr = 1;

  init_flags = flags;

  Curl_version_init();

  return CURLE_OK;

  fail:
  initialized--; /* undo the increase */
  return CURLE_FAILED_INIT;
}


/**
 * curl_global_init() globally initializes curl given a bitwise set of the
 * different features of what to initialize.
 */
1023
1024
1025
1026
1027
1028
1029

1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
  if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
     (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
    if(data->multi)
      Curl_update_timer(data->multi);
  }


  /* This transfer may have been moved in or out of the bundle, update
     the corresponding socket callback, if used */
  Curl_updatesocket(data);

  return result;
}


static CURLcode easy_connection(struct Curl_easy *data,
                                curl_socket_t *sfd,







>
|
|
|







1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
  if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
     (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
    if(data->multi)
      Curl_update_timer(data->multi);
  }

  if(!data->state.done)
    /* This transfer may have been moved in or out of the bundle, update the
       corresponding socket callback, if used */
    Curl_updatesocket(data);

  return result;
}


static CURLcode easy_connection(struct Curl_easy *data,
                                curl_socket_t *sfd,
Changes to jni/curl/lib/easyif.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_EASYIF_H
#define HEADER_CURL_EASYIF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_EASYIF_H
#define HEADER_CURL_EASYIF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/file.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 * connect-then-transfer protocol and "connect" to the file here
 */
static CURLcode file_connect(struct connectdata *conn, bool *done)
{
  struct Curl_easy *data = conn->data;
  char *real_path;
  struct FILEPROTO *file = data->req.protop;
  int fd;
#ifdef DOS_FILESYSTEM
  size_t i;
  char *actual_path;
#endif
  size_t real_path_len;

  CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &real_path,







|







132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 * connect-then-transfer protocol and "connect" to the file here
 */
static CURLcode file_connect(struct connectdata *conn, bool *done)
{
  struct Curl_easy *data = conn->data;
  char *real_path;
  struct FILEPROTO *file = data->req.protop;
  int fd = -1;
#ifdef DOS_FILESYSTEM
  size_t i;
  char *actual_path;
#endif
  size_t real_path_len;

  CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &real_path,
177
178
179
180
181
182
183


184
185
186
187
188
189
190
191
    if(actual_path[i] == '/')
      actual_path[i] = '\\';
    else if(!actual_path[i]) { /* binary zero */
      Curl_safefree(real_path);
      return CURLE_URL_MALFORMAT;
    }



  fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
  file->path = actual_path;
#else
  if(memchr(real_path, 0, real_path_len)) {
    /* binary zeroes indicate foul play */
    Curl_safefree(real_path);
    return CURLE_URL_MALFORMAT;
  }







>
>
|







177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
    if(actual_path[i] == '/')
      actual_path[i] = '\\';
    else if(!actual_path[i]) { /* binary zero */
      Curl_safefree(real_path);
      return CURLE_URL_MALFORMAT;
    }

  if(strncmp("\\\\", actual_path, 2))
    /* refuse to open path that starts with two backslashes */
    fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
  file->path = actual_path;
#else
  if(memchr(real_path, 0, real_path_len)) {
    /* binary zeroes indicate foul play */
    Curl_safefree(real_path);
    return CURLE_URL_MALFORMAT;
  }
Changes to jni/curl/lib/file.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FILE_H
#define HEADER_CURL_FILE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FILE_H
#define HEADER_CURL_FILE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/ftp.c.
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
      /* we got a time. Format should be: "YYYYMMDDHHMMSS[.sss]" where the
         last .sss part is optional and means fractions of a second */
      int year, month, day, hour, minute, second;
      if(6 == sscanf(&data->state.buffer[4], "%04d%02d%02d%02d%02d%02d",
                     &year, &month, &day, &hour, &minute, &second)) {
        /* we have a time, reformat it */
        char timebuf[24];
        time_t secs = time(NULL);

        msnprintf(timebuf, sizeof(timebuf),
                  "%04d%02d%02d %02d:%02d:%02d GMT",
                  year, month, day, hour, minute, second);
        /* now, convert this into a time() value: */
        data->info.filetime = curl_getdate(timebuf, &secs);
      }

#ifdef CURL_FTP_HTTPSTYLE_HEAD
      /* If we asked for a time of the file and we actually got one as well,
         we "emulate" a HTTP-style header in our output. */

      if(data->set.opt_no_body &&







<
<




|







2035
2036
2037
2038
2039
2040
2041


2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
      /* we got a time. Format should be: "YYYYMMDDHHMMSS[.sss]" where the
         last .sss part is optional and means fractions of a second */
      int year, month, day, hour, minute, second;
      if(6 == sscanf(&data->state.buffer[4], "%04d%02d%02d%02d%02d%02d",
                     &year, &month, &day, &hour, &minute, &second)) {
        /* we have a time, reformat it */
        char timebuf[24];


        msnprintf(timebuf, sizeof(timebuf),
                  "%04d%02d%02d %02d:%02d:%02d GMT",
                  year, month, day, hour, minute, second);
        /* now, convert this into a time() value: */
        data->info.filetime = Curl_getdate_capped(timebuf);
      }

#ifdef CURL_FTP_HTTPSTYLE_HEAD
      /* If we asked for a time of the file and we actually got one as well,
         we "emulate" a HTTP-style header in our output. */

      if(data->set.opt_no_body &&
Changes to jni/curl/lib/ftplistparser.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FTPLISTPARSER_H
#define HEADER_CURL_FTPLISTPARSER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_FTPLISTPARSER_H
#define HEADER_CURL_FTPLISTPARSER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/getinfo.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GETINFO_H
#define HEADER_CURL_GETINFO_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GETINFO_H
#define HEADER_CURL_GETINFO_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/gopher.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GOPHER_H
#define HEADER_CURL_GOPHER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GOPHER_H
#define HEADER_CURL_GOPHER_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/hostcheck.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_HOSTCHECK_H
#define HEADER_CURL_HOSTCHECK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_HOSTCHECK_H
#define HEADER_CURL_HOSTCHECK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/hostip.c.
1017
1018
1019
1020
1021
1022
1023




1024
1025
1026
1027
1028
1029
1030

  return CURLE_OK;
}

CURLcode Curl_resolv_check(struct connectdata *conn,
                           struct Curl_dns_entry **dns)
{




  if(conn->data->set.doh)
    return Curl_doh_is_resolved(conn, dns);
  return Curl_resolver_is_resolved(conn, dns);
}

int Curl_resolv_getsock(struct connectdata *conn,
                        curl_socket_t *socks)







>
>
>
>







1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034

  return CURLE_OK;
}

CURLcode Curl_resolv_check(struct connectdata *conn,
                           struct Curl_dns_entry **dns)
{
#if defined(CURL_DISABLE_DOH) && !defined(CURLRES_ASYNCH)
  (void)dns;
#endif

  if(conn->data->set.doh)
    return Curl_doh_is_resolved(conn, dns);
  return Curl_resolver_is_resolved(conn, dns);
}

int Curl_resolv_getsock(struct connectdata *conn,
                        curl_socket_t *socks)
Changes to jni/curl/lib/hostip4.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
127
128
129
130
131
132
133










134
135
136
137
138
139
140
  int res;
#endif
  Curl_addrinfo *ai = NULL;
  struct hostent *h = NULL;
  struct in_addr in;
  struct hostent *buf = NULL;











  if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
    /* This is a dotted IP address 123.123.123.123-style */
    return Curl_ip2addr(AF_INET, &in, hostname, port);

#if defined(HAVE_GETADDRINFO_THREADSAFE)
  else {
    struct addrinfo hints;







>
>
>
>
>
>
>
>
>
>







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
  int res;
#endif
  Curl_addrinfo *ai = NULL;
  struct hostent *h = NULL;
  struct in_addr in;
  struct hostent *buf = NULL;

#ifdef ENABLE_IPV6
  {
    struct in6_addr in6;
    /* check if this is an IPv6 address string */
    if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
      /* This is an IPv6 address literal */
      return Curl_ip2addr(AF_INET6, &in6, hostname, port);
  }
#endif /* ENABLE_IPV6 */

  if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
    /* This is a dotted IP address 123.123.123.123-style */
    return Curl_ip2addr(AF_INET, &in, hostname, port);

#if defined(HAVE_GETADDRINFO_THREADSAFE)
  else {
    struct addrinfo hints;
Changes to jni/curl/lib/hostsyn.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/http.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
                    struct auth *authstatus,
                    const char *request,
                    const char *path,
                    bool proxy)
{
  const char *auth = NULL;
  CURLcode result = CURLE_OK;
#if !defined(CURL_DISABLE_VERBOSE_STRINGS) || defined(USE_SPNEGO)
  struct Curl_easy *data = conn->data;
#endif

#ifdef CURL_DISABLE_CRYPTO_AUTH
  (void)request;
  (void)path;
#endif







|







637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
                    struct auth *authstatus,
                    const char *request,
                    const char *path,
                    bool proxy)
{
  const char *auth = NULL;
  CURLcode result = CURLE_OK;
#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
  struct Curl_easy *data = conn->data;
#endif

#ifdef CURL_DISABLE_CRYPTO_AUTH
  (void)request;
  (void)path;
#endif
1613
1614
1615
1616
1617
1618
1619
1620

1621
1622
1623
1624
1625
1626
1627
  if(!http)
    return CURLE_OK;

  if(http->send_buffer) {
    Curl_add_buffer_free(&http->send_buffer);
  }

  Curl_http2_done(conn, premature);


  Curl_mime_cleanpart(&http->form);

  if(status)
    return status;

  if(!premature && /* this check is pointless when DONE is called before the







|
>







1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
  if(!http)
    return CURLE_OK;

  if(http->send_buffer) {
    Curl_add_buffer_free(&http->send_buffer);
  }

  Curl_http2_done(data, premature);
  Curl_quic_done(data, premature);

  Curl_mime_cleanpart(&http->form);

  if(status)
    return status;

  if(!premature && /* this check is pointless when DONE is called before the
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
      result = Curl_build_unencoding_stack(conn, k->p + 17, FALSE);
      if(result)
        return result;
    }
    else if(checkprefix("Retry-After:", k->p)) {
      /* Retry-After = HTTP-date / delay-seconds */
      curl_off_t retry_after = 0; /* zero for unknown or "now" */
      time_t date = curl_getdate(&k->p[12], NULL);
      if(-1 == date) {
        /* not a date, try it as a decimal number */
        (void)curlx_strtoofft(&k->p[12], NULL, 10, &retry_after);
      }
      else
        /* convert date to number of seconds into the future */
        retry_after = date - time(NULL);







|







3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
      result = Curl_build_unencoding_stack(conn, k->p + 17, FALSE);
      if(result)
        return result;
    }
    else if(checkprefix("Retry-After:", k->p)) {
      /* Retry-After = HTTP-date / delay-seconds */
      curl_off_t retry_after = 0; /* zero for unknown or "now" */
      time_t date = Curl_getdate_capped(&k->p[12]);
      if(-1 == date) {
        /* not a date, try it as a decimal number */
        (void)curlx_strtoofft(&k->p[12], NULL, 10, &retry_after);
      }
      else
        /* convert date to number of seconds into the future */
        retry_after = date - time(NULL);
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
                      (conn->handler->protocol&CURLPROTO_HTTPS)?
                      TRUE:FALSE);
      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
    }
#endif
    else if(!k->http_bodyless && checkprefix("Last-Modified:", k->p) &&
            (data->set.timecondition || data->set.get_filetime) ) {
      time_t secs = time(NULL);
      k->timeofdoc = curl_getdate(k->p + strlen("Last-Modified:"),
                                  &secs);
      if(data->set.get_filetime)
        data->info.filetime = k->timeofdoc;
    }
    else if((checkprefix("WWW-Authenticate:", k->p) &&
             (401 == k->httpcode)) ||
            (checkprefix("Proxy-authenticate:", k->p) &&
             (407 == k->httpcode))) {







<
|
<







4028
4029
4030
4031
4032
4033
4034

4035

4036
4037
4038
4039
4040
4041
4042
                      (conn->handler->protocol&CURLPROTO_HTTPS)?
                      TRUE:FALSE);
      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
    }
#endif
    else if(!k->http_bodyless && checkprefix("Last-Modified:", k->p) &&
            (data->set.timecondition || data->set.get_filetime) ) {

      k->timeofdoc = Curl_getdate_capped(k->p + strlen("Last-Modified:"));

      if(data->set.get_filetime)
        data->info.filetime = k->timeofdoc;
    }
    else if((checkprefix("WWW-Authenticate:", k->p) &&
             (401 == k->httpcode)) ||
            (checkprefix("Proxy-authenticate:", k->p) &&
             (407 == k->httpcode))) {
Changes to jni/curl/lib/http.h.
189
190
191
192
193
194
195

196
197
198
199
200

201



202
203
204
205
206
207
208
  size_t upload_len; /* size of the buffer 'upload_mem' points to */
  curl_off_t upload_left; /* number of bytes left to upload */
#endif

#ifdef ENABLE_QUIC
  /*********** for HTTP/3 we store stream-local data here *************/
  int64_t stream3_id; /* stream we are interested in */

  bool firstbody;  /* FALSE until body arrives */
  bool h3req;    /* FALSE until request is issued */
  bool upload_done;
#endif
#ifdef USE_NGHTTP3

  struct h3out *h3out; /* per-stream buffers for upload */



#endif
};

#ifdef USE_NGHTTP2
/* h2 settings for this connection */
struct h2settings {
  uint32_t max_concurrent_streams;







>





>

>
>
>







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
  size_t upload_len; /* size of the buffer 'upload_mem' points to */
  curl_off_t upload_left; /* number of bytes left to upload */
#endif

#ifdef ENABLE_QUIC
  /*********** for HTTP/3 we store stream-local data here *************/
  int64_t stream3_id; /* stream we are interested in */
  bool firstheader;  /* FALSE until headers arrive */
  bool firstbody;  /* FALSE until body arrives */
  bool h3req;    /* FALSE until request is issued */
  bool upload_done;
#endif
#ifdef USE_NGHTTP3
  size_t unacked_window;
  struct h3out *h3out; /* per-stream buffers for upload */
  char *overflow_buf; /* excess data received during a single Curl_read */
  size_t overflow_buflen; /* amount of data currently in overflow_buf */
  size_t overflow_bufsize; /* size of the overflow_buf allocation */
#endif
};

#ifdef USE_NGHTTP2
/* h2 settings for this connection */
struct h2settings {
  uint32_t max_concurrent_streams;
Changes to jni/curl/lib/http2.c.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#endif

#define HTTP2_HUGE_WINDOW_SIZE (1 << 30)

#ifdef DEBUG_HTTP2
#define H2BUGF(x) x
#else
#define H2BUGF(x) do { } WHILE_FALSE
#endif


static ssize_t http2_recv(struct connectdata *conn, int sockindex,
                          char *mem, size_t len, CURLcode *err);
static bool http2_connisdead(struct connectdata *conn);
static int h2_session_send(struct Curl_easy *data,







|







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#endif

#define HTTP2_HUGE_WINDOW_SIZE (1 << 30)

#ifdef DEBUG_HTTP2
#define H2BUGF(x) x
#else
#define H2BUGF(x) do { } while(0)
#endif


static ssize_t http2_recv(struct connectdata *conn, int sockindex,
                          char *mem, size_t len, CURLcode *err);
static bool http2_connisdead(struct connectdata *conn);
static int h2_session_send(struct Curl_easy *data,
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = conn->data->multi->push_cb != NULL;

  httpc->local_settings_num = 3;
}

void Curl_http2_done(struct connectdata *conn, bool premature)
{
  struct Curl_easy *data = conn->data;
  struct HTTP *http = data->req.protop;
  struct http_conn *httpc = &conn->proto.httpc;

  /* there might be allocated resources done before this got the 'h2' pointer
     setup */
  if(http->header_recvbuf) {
    Curl_add_buffer_free(&http->header_recvbuf);
    Curl_add_buffer_free(&http->trailer_recvbuf);
    if(http->push_headers) {







|

<

|







1165
1166
1167
1168
1169
1170
1171
1172
1173

1174
1175
1176
1177
1178
1179
1180
1181
1182

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = conn->data->multi->push_cb != NULL;

  httpc->local_settings_num = 3;
}

void Curl_http2_done(struct Curl_easy *data, bool premature)
{

  struct HTTP *http = data->req.protop;
  struct http_conn *httpc = &data->conn->proto.httpc;

  /* there might be allocated resources done before this got the 'h2' pointer
     setup */
  if(http->header_recvbuf) {
    Curl_add_buffer_free(&http->header_recvbuf);
    Curl_add_buffer_free(&http->trailer_recvbuf);
    if(http->push_headers) {
Changes to jni/curl/lib/http2.h.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
                                    struct connectdata *conn);
CURLcode Curl_http2_setup(struct connectdata *conn);
CURLcode Curl_http2_switched(struct connectdata *conn,
                             const char *data, size_t nread);
/* called from http_setup_conn */
void Curl_http2_setup_conn(struct connectdata *conn);
void Curl_http2_setup_req(struct Curl_easy *data);
void Curl_http2_done(struct connectdata *conn, bool premature);
CURLcode Curl_http2_done_sending(struct connectdata *conn);
CURLcode Curl_http2_add_child(struct Curl_easy *parent,
                              struct Curl_easy *child,
                              bool exclusive);
void Curl_http2_remove_child(struct Curl_easy *parent,
                             struct Curl_easy *child);
void Curl_http2_cleanup_dependencies(struct Curl_easy *data);







|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
                                    struct connectdata *conn);
CURLcode Curl_http2_setup(struct connectdata *conn);
CURLcode Curl_http2_switched(struct connectdata *conn,
                             const char *data, size_t nread);
/* called from http_setup_conn */
void Curl_http2_setup_conn(struct connectdata *conn);
void Curl_http2_setup_req(struct Curl_easy *data);
void Curl_http2_done(struct Curl_easy *data, bool premature);
CURLcode Curl_http2_done_sending(struct connectdata *conn);
CURLcode Curl_http2_add_child(struct Curl_easy *parent,
                              struct Curl_easy *child,
                              bool exclusive);
void Curl_http2_remove_child(struct Curl_easy *parent,
                             struct Curl_easy *child);
void Curl_http2_cleanup_dependencies(struct Curl_easy *data);
Changes to jni/curl/lib/http_ntlm.c.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "curl_ntlm_core.h"
#include "curl_ntlm_wb.h"
#include "vauth/vauth.h"
#include "url.h"

/* SSL backend-specific #if branches in this file must be kept in the order
   documented in curl_ntlm_core. */
#if defined(NTLM_NEEDS_NSS_INIT)
#include "vtls/nssg.h"
#elif defined(USE_WINDOWS_SSPI)
#include "curl_sspi.h"
#endif

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"







<
<
|







40
41
42
43
44
45
46


47
48
49
50
51
52
53
54
#include "curl_ntlm_core.h"
#include "curl_ntlm_wb.h"
#include "vauth/vauth.h"
#include "url.h"

/* SSL backend-specific #if branches in this file must be kept in the order
   documented in curl_ntlm_core. */


#if defined(USE_WINDOWS_SSPI)
#include "curl_sspi.h"
#endif

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
  struct ntlmdata *ntlm;
  curlntlm *state;
  struct auth *authp;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->data);

#if defined(NTLM_NEEDS_NSS_INIT)
  if(CURLE_OK != Curl_nss_force_init(conn->data))
    return CURLE_OUT_OF_MEMORY;
#endif

  if(proxy) {
    allocuserpwd = &conn->allocptr.proxyuserpwd;
    userp = conn->http_proxy.user;
    passwdp = conn->http_proxy.passwd;
    service = conn->data->set.str[STRING_PROXY_SERVICE_NAME] ?
              conn->data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
    hostname = conn->http_proxy.host.name;







<
<
<
<
<







131
132
133
134
135
136
137





138
139
140
141
142
143
144
  struct ntlmdata *ntlm;
  curlntlm *state;
  struct auth *authp;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->data);






  if(proxy) {
    allocuserpwd = &conn->allocptr.proxyuserpwd;
    userp = conn->http_proxy.user;
    passwdp = conn->http_proxy.passwd;
    service = conn->data->set.str[STRING_PROXY_SERVICE_NAME] ?
              conn->data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
    hostname = conn->http_proxy.host.name;
Changes to jni/curl/lib/http_proxy.c.
54
55
56
57
58
59
60
61
62

63
64
65
66
67
68
69
  DEBUGASSERT(conn->http_proxy.proxytype == CURLPROXY_HTTPS);
  if(!conn->bits.proxy_ssl_connected[sockindex]) {
    /* perform SSL initialization for this socket */
    result =
      Curl_ssl_connect_nonblocking(conn, sockindex,
                                   &conn->bits.proxy_ssl_connected[sockindex]);
    if(result)
      conn->bits.close = TRUE; /* a failed connection is marked for closure to
                                  prevent (bad) re-use or similar */

  }
  return result;
#else
  (void) conn;
  (void) sockindex;
  return CURLE_NOT_BUILT_IN;
#endif







|
|
>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  DEBUGASSERT(conn->http_proxy.proxytype == CURLPROXY_HTTPS);
  if(!conn->bits.proxy_ssl_connected[sockindex]) {
    /* perform SSL initialization for this socket */
    result =
      Curl_ssl_connect_nonblocking(conn, sockindex,
                                   &conn->bits.proxy_ssl_connected[sockindex]);
    if(result)
      /* a failed connection is marked for closure to prevent (bad) re-use or
         similar */
      connclose(conn, "TLS handshake failed");
  }
  return result;
#else
  (void) conn;
  (void) sockindex;
  return CURLE_NOT_BUILT_IN;
#endif
Changes to jni/curl/lib/imap.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_IMAP_H
#define HEADER_CURL_IMAP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_IMAP_H
#define HEADER_CURL_IMAP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/inet_ntop.c.
1
2
3
4
5
6
7
8
9
/*
 * Copyright (C) 1996-2001  Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
 * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL

|







1
2
3
4
5
6
7
8
9
/*
 * Copyright (C) 1996-2019  Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
 * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
Changes to jni/curl/lib/inet_ntop.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_INET_NTOP_H
#define HEADER_CURL_INET_NTOP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_INET_NTOP_H
#define HEADER_CURL_INET_NTOP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/inet_pton.c.
1
2
3
4
5
6
7
8
9
10
/* This is from the BIND 4.9.4 release, modified to compile by itself */

/* Copyright (c) 1996 by Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES


|







1
2
3
4
5
6
7
8
9
10
/* This is from the BIND 4.9.4 release, modified to compile by itself */

/* Copyright (c) 1996 - 2019 by Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
Changes to jni/curl/lib/inet_pton.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_INET_PTON_H
#define HEADER_CURL_INET_PTON_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_INET_PTON_H
#define HEADER_CURL_INET_PTON_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/krb5.c.
1
2
3
4
5
6
7
8
9
10
11
12
/* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
 *
 * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
 * (Royal Institute of Technology, Stockholm, Sweden).
 * Copyright (c) 2004 - 2017 Daniel Stenberg
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright




|







1
2
3
4
5
6
7
8
9
10
11
12
/* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
 *
 * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
 * (Royal Institute of Technology, Stockholm, Sweden).
 * Copyright (c) 2004 - 2019 Daniel Stenberg
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
Changes to jni/curl/lib/ldap.c.
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#define ldap_free_urldesc       _ldap_free_urldesc
#endif

#ifdef DEBUG_LDAP
  #define LDAP_TRACE(x)   do { \
                            _ldap_trace("%u: ", __LINE__); \
                            _ldap_trace x; \
                          } WHILE_FALSE

  static void _ldap_trace(const char *fmt, ...);
#else
  #define LDAP_TRACE(x)   Curl_nop_stmt
#endif

#if defined(USE_WIN32_LDAP) && defined(ldap_err2string)







|







108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#define ldap_free_urldesc       _ldap_free_urldesc
#endif

#ifdef DEBUG_LDAP
  #define LDAP_TRACE(x)   do { \
                            _ldap_trace("%u: ", __LINE__); \
                            _ldap_trace x; \
                          } while(0)

  static void _ldap_trace(const char *fmt, ...);
#else
  #define LDAP_TRACE(x)   Curl_nop_stmt
#endif

#if defined(USE_WIN32_LDAP) && defined(ldap_err2string)
Changes to jni/curl/lib/libcurl.plist.
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
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.haxx.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.67.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.67.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.67.0</string>
</dict>
</plist>







|











|


|


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
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.haxx.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.68.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.68.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.68.0</string>
</dict>
</plist>
Changes to jni/curl/lib/llist.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_LLIST_H
#define HEADER_CURL_LLIST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_LLIST_H
#define HEADER_CURL_LLIST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/memdebug.h.
165
166
167
168
169
170
171
172
173
174
/*
 * Curl_safefree defined as a macro to allow MemoryTracking feature
 * to log free() calls at same location where Curl_safefree is used.
 * This macro also assigns NULL to given pointer when free'd.
 */

#define Curl_safefree(ptr) \
  do { free((ptr)); (ptr) = NULL;} WHILE_FALSE

#endif /* HEADER_CURL_MEMDEBUG_H */







|


165
166
167
168
169
170
171
172
173
174
/*
 * Curl_safefree defined as a macro to allow MemoryTracking feature
 * to log free() calls at same location where Curl_safefree is used.
 * This macro also assigns NULL to given pointer when free'd.
 */

#define Curl_safefree(ptr) \
  do { free((ptr)); (ptr) = NULL;} while(0)

#endif /* HEADER_CURL_MEMDEBUG_H */
Changes to jni/curl/lib/mprintf.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1999 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1999 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

#define OUTCHAR(x) \
  do{ \
    if(stream((unsigned char)(x), (FILE *)data) != -1) \
      done++; \
    else \
     return done; /* return immediately on failure */ \
  } WHILE_FALSE

/* Data type to read from the arglist */
typedef enum {
  FORMAT_UNKNOWN = 0,
  FORMAT_STRING,
  FORMAT_PTR,
  FORMAT_INT,







|







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

#define OUTCHAR(x) \
  do{ \
    if(stream((unsigned char)(x), (FILE *)data) != -1) \
      done++; \
    else \
     return done; /* return immediately on failure */ \
  } while(0)

/* Data type to read from the arglist */
typedef enum {
  FORMAT_UNKNOWN = 0,
  FORMAT_STRING,
  FORMAT_PTR,
  FORMAT_INT,
Changes to jni/curl/lib/multi.c.
42
43
44
45
46
47
48

49
50
51
52
53
54
55
#include "conncache.h"
#include "multihandle.h"
#include "sigpipe.h"
#include "vtls/vtls.h"
#include "connect.h"
#include "http_proxy.h"
#include "http2.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/*
  CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97







>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "conncache.h"
#include "multihandle.h"
#include "sigpipe.h"
#include "vtls/vtls.h"
#include "connect.h"
#include "http_proxy.h"
#include "http2.h"
#include "socketpair.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/*
  CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97
255
256
257
258
259
260
261

262
263
264
265
266
267
268
                    trhash_compare, trhash_dtor)) {
    free(check);
    return NULL;
  }

  /* make/add new hash entry */
  if(!Curl_hash_add(sh, (char *)&s, sizeof(curl_socket_t), check)) {

    free(check);
    return NULL; /* major failure */
  }

  return check; /* things are good in sockhash land */
}








>







256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
                    trhash_compare, trhash_dtor)) {
    free(check);
    return NULL;
  }

  /* make/add new hash entry */
  if(!Curl_hash_add(sh, (char *)&s, sizeof(curl_socket_t), check)) {
    Curl_hash_destroy(&check->transfers);
    free(check);
    return NULL; /* major failure */
  }

  return check; /* things are good in sockhash land */
}

363
364
365
366
367
368
369















370
371
372
373
374
375
376
  Curl_llist_init(&multi->msglist, NULL);
  Curl_llist_init(&multi->pending, NULL);

  multi->multiplexing = TRUE;

  /* -1 means it not set by user, use the default value */
  multi->maxconnects = -1;















  return multi;

  error:

  Curl_hash_destroy(&multi->sockhash);
  Curl_hash_destroy(&multi->hostcache);
  Curl_conncache_destroy(&multi->conn_cache);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
  Curl_llist_init(&multi->msglist, NULL);
  Curl_llist_init(&multi->pending, NULL);

  multi->multiplexing = TRUE;

  /* -1 means it not set by user, use the default value */
  multi->maxconnects = -1;

#ifdef ENABLE_WAKEUP
  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) {
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
  else if(curlx_nonblock(multi->wakeup_pair[0], TRUE) < 0 ||
          curlx_nonblock(multi->wakeup_pair[1], TRUE) < 0) {
    sclose(multi->wakeup_pair[0]);
    sclose(multi->wakeup_pair[1]);
    multi->wakeup_pair[0] = CURL_SOCKET_BAD;
    multi->wakeup_pair[1] = CURL_SOCKET_BAD;
  }
#endif

  return multi;

  error:

  Curl_hash_destroy(&multi->sockhash);
  Curl_hash_destroy(&multi->hostcache);
  Curl_conncache_destroy(&multi->conn_cache);
526
527
528
529
530
531
532


533
534
535
536
537
538
539
  unsigned int i;

  DEBUGF(infof(data, "multi_done\n"));

  if(data->state.done)
    /* Stop if multi_done() has already been called */
    return CURLE_OK;



  /* Stop the resolver and free its own resources (but not dns_entry yet). */
  Curl_resolver_kill(conn);

  /* Cleanup possible redirect junk */
  Curl_safefree(data->req.newurl);
  Curl_safefree(data->req.location);







>
>







543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
  unsigned int i;

  DEBUGF(infof(data, "multi_done\n"));

  if(data->state.done)
    /* Stop if multi_done() has already been called */
    return CURLE_OK;

  conn->data = data; /* ensure the connection uses this transfer now */

  /* Stop the resolver and free its own resources (but not dns_entry yet). */
  Curl_resolver_kill(conn);

  /* Cleanup possible redirect junk */
  Curl_safefree(data->req.newurl);
  Curl_safefree(data->req.location);
563
564
565
566
567
568
569

570
571
572

573
574
575
576
577
578
579
580
581
582
583
584
585
    CURLcode rc = Curl_pgrsDone(conn);
    if(!result && rc)
      result = CURLE_ABORTED_BY_CALLBACK;
  }

  process_pending_handles(data->multi); /* connection / multiplex */


  detach_connnection(data);
  if(CONN_INUSE(conn)) {
    /* Stop if still used. */

    DEBUGF(infof(data, "Connection still in use %zu, "
                 "no more multi_done now!\n",
                 conn->easyq.size));
    return CURLE_OK;
  }

  data->state.done = TRUE; /* called just now! */

  if(conn->dns_entry) {
    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
    conn->dns_entry = NULL;
  }
  Curl_hostcache_prune(data);







>



>





|







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
    CURLcode rc = Curl_pgrsDone(conn);
    if(!result && rc)
      result = CURLE_ABORTED_BY_CALLBACK;
  }

  process_pending_handles(data->multi); /* connection / multiplex */

  CONN_LOCK(data);
  detach_connnection(data);
  if(CONN_INUSE(conn)) {
    /* Stop if still used. */
    CONN_UNLOCK(data);
    DEBUGF(infof(data, "Connection still in use %zu, "
                 "no more multi_done now!\n",
                 conn->easyq.size));
    return CURLE_OK;
  }
  conn->data = NULL; /* the connection now has no owner */
  data->state.done = TRUE; /* called just now! */

  if(conn->dns_entry) {
    Curl_resolv_unlock(data, conn->dns_entry); /* done with this */
    conn->dns_entry = NULL;
  }
  Curl_hostcache_prune(data);
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
#endif
#if defined(USE_SPNEGO)
      && !(conn->http_negotiate_state == GSS_AUTHRECV ||
           conn->proxy_negotiate_state == GSS_AUTHRECV)
#endif
     ) || conn->bits.close
       || (premature && !(conn->handler->flags & PROTOPT_STREAM))) {



    CURLcode res2 = Curl_disconnect(data, conn, premature);

    /* If we had an error already, make sure we return that one. But
       if we got a new error, return that. */
    if(!result && res2)
      result = res2;
  }
  else {
    char buffer[256];
    /* create string before returning the connection */
    msnprintf(buffer, sizeof(buffer),
              "Connection #%ld to host %s left intact",
              conn->connection_id,
              conn->bits.socksproxy ? conn->socks_proxy.host.dispname :
              conn->bits.httpproxy ? conn->http_proxy.host.dispname :
              conn->bits.conn_to_host ? conn->conn_to_host.dispname :
              conn->host.dispname);

    /* the connection is no longer in use by this transfer */

    if(Curl_conncache_return_conn(conn)) {
      /* remember the most recently used connection */
      data->state.lastconnect = conn;
      infof(data, "%s\n", buffer);
    }
    else
      data->state.lastconnect = NULL;
  }







>
>
>
|
















<

>
|







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
#endif
#if defined(USE_SPNEGO)
      && !(conn->http_negotiate_state == GSS_AUTHRECV ||
           conn->proxy_negotiate_state == GSS_AUTHRECV)
#endif
     ) || conn->bits.close
       || (premature && !(conn->handler->flags & PROTOPT_STREAM))) {
    CURLcode res2;
    connclose(conn, "disconnecting");
    CONN_UNLOCK(data);
    res2 = Curl_disconnect(data, conn, premature);

    /* If we had an error already, make sure we return that one. But
       if we got a new error, return that. */
    if(!result && res2)
      result = res2;
  }
  else {
    char buffer[256];
    /* create string before returning the connection */
    msnprintf(buffer, sizeof(buffer),
              "Connection #%ld to host %s left intact",
              conn->connection_id,
              conn->bits.socksproxy ? conn->socks_proxy.host.dispname :
              conn->bits.httpproxy ? conn->http_proxy.host.dispname :
              conn->bits.conn_to_host ? conn->conn_to_host.dispname :
              conn->host.dispname);

    /* the connection is no longer in use by this transfer */
    CONN_UNLOCK(data);
    if(Curl_conncache_return_conn(data, conn)) {
      /* remember the most recently used connection */
      data->state.lastconnect = conn;
      infof(data, "%s\n", buffer);
    }
    else
      data->state.lastconnect = NULL;
  }
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
    /* Set connection owner so that the DONE function closes it.  We can
       safely do this here since connection is killed. */
    data->conn->data = easy;
    streamclose(data->conn, "Removed with partial response");
    easy_owns_conn = TRUE;
  }

  /* The timer must be shut down before data->multi is set to NULL,
     else the timenode will remain in the splay tree after
     curl_easy_cleanup is called. */
  Curl_expire_clear(data);

  if(data->conn) {

    /* we must call multi_done() here (if we still own the connection) so that
       we don't leave a half-baked one around */
    if(easy_owns_conn) {

      /* multi_done() clears the conn->data field to lose the association
         between the easy handle and the connection

         Note that this ignores the return code simply because there's
         nothing really useful to do with it anyway! */
      (void)multi_done(data, data->result, premature);
    }
  }






  if(data->connect_queue.ptr)
    /* the handle was in the pending list waiting for an available connection,
       so go ahead and remove it */
    Curl_llist_remove(&multi->pending, &data->connect_queue, NULL);

  if(data->dns.hostcachetype == HCACHE_MULTI) {







<
<
<
<
<














>
>
>
>
>







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
    /* Set connection owner so that the DONE function closes it.  We can
       safely do this here since connection is killed. */
    data->conn->data = easy;
    streamclose(data->conn, "Removed with partial response");
    easy_owns_conn = TRUE;
  }






  if(data->conn) {

    /* we must call multi_done() here (if we still own the connection) so that
       we don't leave a half-baked one around */
    if(easy_owns_conn) {

      /* multi_done() clears the conn->data field to lose the association
         between the easy handle and the connection

         Note that this ignores the return code simply because there's
         nothing really useful to do with it anyway! */
      (void)multi_done(data, data->result, premature);
    }
  }

  /* The timer must be shut down before data->multi is set to NULL, else the
     timenode will remain in the splay tree after curl_easy_cleanup is
     called. Do it after multi_done() in case that sets another time! */
  Curl_expire_clear(data);

  if(data->connect_queue.ptr)
    /* the handle was in the pending list waiting for an available connection,
       so go ahead and remove it */
    Curl_llist_remove(&multi->pending, &data->connect_queue, NULL);

  if(data->dns.hostcachetype == HCACHE_MULTI) {
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
  /* change state without using multistate(), only to make singlesocket() do
     what we want */
  data->mstate = CURLM_STATE_COMPLETED;
  singlesocket(multi, easy); /* to let the application know what sockets that
                                vanish with this handle */

  /* Remove the association between the connection and the handle */
  if(data->conn) {
    data->conn->data = NULL;
    detach_connnection(data);
  }

#ifdef USE_LIBPSL
  /* Remove the PSL association. */
  if(data->psl == &multi->psl)
    data->psl = NULL;
#endif








|
<

<







764
765
766
767
768
769
770
771

772

773
774
775
776
777
778
779
  /* change state without using multistate(), only to make singlesocket() do
     what we want */
  data->mstate = CURLM_STATE_COMPLETED;
  singlesocket(multi, easy); /* to let the application know what sockets that
                                vanish with this handle */

  /* Remove the association between the connection and the handle */
  if(data->conn)

    detach_connnection(data);


#ifdef USE_LIBPSL
  /* Remove the PSL association. */
  if(data->psl == &multi->psl)
    data->psl = NULL;
#endif

1001
1002
1003
1004
1005
1006
1007
1008

1009
1010
1011
1012
1013
1014
1015
#define NUM_POLLS_ON_STACK 10

static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
                                 struct curl_waitfd extra_fds[],
                                 unsigned int extra_nfds,
                                 int timeout_ms,
                                 int *ret,
                                 bool extrawait) /* when no socket, wait */

{
  struct Curl_easy *data;
  curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
  int bitmap;
  unsigned int i;
  unsigned int nfds = 0;
  unsigned int curlfds;







|
>







1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
#define NUM_POLLS_ON_STACK 10

static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
                                 struct curl_waitfd extra_fds[],
                                 unsigned int extra_nfds,
                                 int timeout_ms,
                                 int *ret,
                                 bool extrawait, /* when no socket, wait */
                                 bool use_wakeup)
{
  struct Curl_easy *data;
  curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
  int bitmap;
  unsigned int i;
  unsigned int nfds = 0;
  unsigned int curlfds;
1054
1055
1056
1057
1058
1059
1060






1061
1062
1063
1064
1065
1066
1067
     is actually larger than -1! */
  (void)multi_timeout(multi, &timeout_internal);
  if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms))
    timeout_ms = (int)timeout_internal;

  curlfds = nfds; /* number of internal file descriptors */
  nfds += extra_nfds; /* add the externally provided ones */







  if(nfds > NUM_POLLS_ON_STACK) {
    /* 'nfds' is a 32 bit value and 'struct pollfd' is typically 8 bytes
       big, so at 2^29 sockets this value might wrap. When a process gets
       the capability to actually handle over 500 million sockets this
       calculation needs a integer overflow check. */
    ufds = malloc(nfds * sizeof(struct pollfd));







>
>
>
>
>
>







1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
     is actually larger than -1! */
  (void)multi_timeout(multi, &timeout_internal);
  if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms))
    timeout_ms = (int)timeout_internal;

  curlfds = nfds; /* number of internal file descriptors */
  nfds += extra_nfds; /* add the externally provided ones */

#ifdef ENABLE_WAKEUP
  if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) {
    ++nfds;
  }
#endif

  if(nfds > NUM_POLLS_ON_STACK) {
    /* 'nfds' is a 32 bit value and 'struct pollfd' is typically 8 bytes
       big, so at 2^29 sockets this value might wrap. When a process gets
       the capability to actually handle over 500 million sockets this
       calculation needs a integer overflow check. */
    ufds = malloc(nfds * sizeof(struct pollfd));
1112
1113
1114
1115
1116
1117
1118








1119
1120
1121
1122
1123
1124
1125
      ufds[nfds].events |= POLLIN;
    if(extra_fds[i].events & CURL_WAIT_POLLPRI)
      ufds[nfds].events |= POLLPRI;
    if(extra_fds[i].events & CURL_WAIT_POLLOUT)
      ufds[nfds].events |= POLLOUT;
    ++nfds;
  }









  if(nfds) {
    int pollrc;
    /* wait... */
    pollrc = Curl_poll(ufds, nfds, timeout_ms);

    if(pollrc > 0) {







>
>
>
>
>
>
>
>







1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
      ufds[nfds].events |= POLLIN;
    if(extra_fds[i].events & CURL_WAIT_POLLPRI)
      ufds[nfds].events |= POLLPRI;
    if(extra_fds[i].events & CURL_WAIT_POLLOUT)
      ufds[nfds].events |= POLLOUT;
    ++nfds;
  }

#ifdef ENABLE_WAKEUP
  if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) {
    ufds[nfds].fd = multi->wakeup_pair[0];
    ufds[nfds].events = POLLIN;
    ++nfds;
  }
#endif

  if(nfds) {
    int pollrc;
    /* wait... */
    pollrc = Curl_poll(ufds, nfds, timeout_ms);

    if(pollrc > 0) {
1136
1137
1138
1139
1140
1141
1142























1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158




1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173

1174
1175
1176
1177
1178
1179
1180
1181
1182
















































1183
1184
1185
1186
1187
1188
1189
        if(r & POLLOUT)
          mask |= CURL_WAIT_POLLOUT;
        if(r & POLLPRI)
          mask |= CURL_WAIT_POLLPRI;

        extra_fds[i].revents = mask;
      }























    }
  }

  if(ufds_malloc)
    free(ufds);
  if(ret)
    *ret = retcode;
  if(!extrawait || extra_fds || curlfds)
    /* if any socket was checked */
    ;
  else {
    long sleep_ms = 0;

    /* Avoid busy-looping when there's nothing particular to wait for */
    if(!curl_multi_timeout(multi, &sleep_ms) && sleep_ms) {
      if(sleep_ms > timeout_ms)




        sleep_ms = timeout_ms;
      Curl_wait_ms((int)sleep_ms);
    }
  }

  return CURLM_OK;
}

CURLMcode curl_multi_wait(struct Curl_multi *multi,
                          struct curl_waitfd extra_fds[],
                          unsigned int extra_nfds,
                          int timeout_ms,
                          int *ret)
{
  return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, FALSE);

}

CURLMcode curl_multi_poll(struct Curl_multi *multi,
                          struct curl_waitfd extra_fds[],
                          unsigned int extra_nfds,
                          int timeout_ms,
                          int *ret)
{
  return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, TRUE);
















































}

/*
 * multi_ischanged() is called
 *
 * Returns TRUE/FALSE whether the state is changed to trigger a CONNECT_PEND
 * => CONNECT action.







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







|








>
>
>
>














|
>








|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
        if(r & POLLOUT)
          mask |= CURL_WAIT_POLLOUT;
        if(r & POLLPRI)
          mask |= CURL_WAIT_POLLPRI;

        extra_fds[i].revents = mask;
      }

#ifdef ENABLE_WAKEUP
      if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) {
        if(ufds[curlfds + extra_nfds].revents & POLLIN) {
          char buf[64];
          while(1) {
            /* the reading socket is non-blocking, try to read
               data from it until it receives an error (except EINTR).
               In normal cases it will get EAGAIN or EWOULDBLOCK
               when there is no more data, breaking the loop. */
            if(sread(multi->wakeup_pair[0], buf, sizeof(buf)) < 0) {
#ifndef USE_WINSOCK
              if(EINTR == SOCKERRNO)
                continue;
#endif
              break;
            }
          }
          /* do not count the wakeup socket into the returned value */
          retcode--;
        }
      }
#endif
    }
  }

  if(ufds_malloc)
    free(ufds);
  if(ret)
    *ret = retcode;
  if(!extrawait || nfds)
    /* if any socket was checked */
    ;
  else {
    long sleep_ms = 0;

    /* Avoid busy-looping when there's nothing particular to wait for */
    if(!curl_multi_timeout(multi, &sleep_ms) && sleep_ms) {
      if(sleep_ms > timeout_ms)
        sleep_ms = timeout_ms;
      /* when there are no easy handles in the multi, this holds a -1
         timeout */
      else if((sleep_ms < 0) && extrawait)
        sleep_ms = timeout_ms;
      Curl_wait_ms((int)sleep_ms);
    }
  }

  return CURLM_OK;
}

CURLMcode curl_multi_wait(struct Curl_multi *multi,
                          struct curl_waitfd extra_fds[],
                          unsigned int extra_nfds,
                          int timeout_ms,
                          int *ret)
{
  return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, FALSE,
                         FALSE);
}

CURLMcode curl_multi_poll(struct Curl_multi *multi,
                          struct curl_waitfd extra_fds[],
                          unsigned int extra_nfds,
                          int timeout_ms,
                          int *ret)
{
  return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, TRUE,
                         TRUE);
}

CURLMcode curl_multi_wakeup(struct Curl_multi *multi)
{
  /* this function is usually called from another thread,
     it has to be careful only to access parts of the
     Curl_multi struct that are constant */

  /* GOOD_MULTI_HANDLE can be safely called */
  if(!GOOD_MULTI_HANDLE(multi))
    return CURLM_BAD_HANDLE;

#ifdef ENABLE_WAKEUP
  /* the wakeup_pair variable is only written during init and cleanup,
     making it safe to access from another thread after the init part
     and before cleanup */
  if(multi->wakeup_pair[1] != CURL_SOCKET_BAD) {
    char buf[1];
    buf[0] = 1;
    while(1) {
      /* swrite() is not thread-safe in general, because concurrent calls
         can have their messages interleaved, but in this case the content
         of the messages does not matter, which makes it ok to call.

         The write socket is set to non-blocking, this way this function
         cannot block, making it safe to call even from the same thread
         that will call Curl_multi_wait(). If swrite() returns that it
         would block, it's considered successful because it means that
         previous calls to this function will wake up the poll(). */
      if(swrite(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
        int err = SOCKERRNO;
        int return_success;
#ifdef USE_WINSOCK
        return_success = WSAEWOULDBLOCK == err;
#else
        if(EINTR == err)
          continue;
        return_success = EWOULDBLOCK == err || EAGAIN == err;
#endif
        if(!return_success)
          return CURLM_WAKEUP_FAILURE;
      }
      return CURLM_OK;
    }
  }
#endif
  return CURLM_WAKEUP_FAILURE;
}

/*
 * multi_ischanged() is called
 *
 * Returns TRUE/FALSE whether the state is changed to trigger a CONNECT_PEND
 * => CONNECT action.
1238
1239
1240
1241
1242
1243
1244

1245
1246
1247
1248
1249
1250
1251
static CURLcode multi_do(struct Curl_easy *data, bool *done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->handler);


  if(conn->handler->do_it) {
    /* generic protocol-specific function pointer set in curl_connect() */
    result = conn->handler->do_it(conn, done);

    if(!result && *done)
      /* do_complete must be called after the protocol-specific DO function */







>







1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
static CURLcode multi_do(struct Curl_easy *data, bool *done)
{
  CURLcode result = CURLE_OK;
  struct connectdata *conn = data->conn;

  DEBUGASSERT(conn);
  DEBUGASSERT(conn->handler);
  DEBUGASSERT(conn->data == data);

  if(conn->handler->do_it) {
    /* generic protocol-specific function pointer set in curl_connect() */
    result = conn->handler->do_it(conn, done);

    if(!result && *done)
      /* do_complete must be called after the protocol-specific DO function */
2301
2302
2303
2304
2305
2306
2307





2308
2309
2310
2311
2312
2313
2314
    Curl_hash_destroy(&multi->sockhash);
    Curl_conncache_destroy(&multi->conn_cache);
    Curl_llist_destroy(&multi->msglist, NULL);
    Curl_llist_destroy(&multi->pending, NULL);

    Curl_hash_destroy(&multi->hostcache);
    Curl_psl_destroy(&multi->psl);





    free(multi);

    return CURLM_OK;
  }
  return CURLM_BAD_HANDLE;
}








>
>
>
>
>







2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
    Curl_hash_destroy(&multi->sockhash);
    Curl_conncache_destroy(&multi->conn_cache);
    Curl_llist_destroy(&multi->msglist, NULL);
    Curl_llist_destroy(&multi->pending, NULL);

    Curl_hash_destroy(&multi->hostcache);
    Curl_psl_destroy(&multi->psl);

#ifdef ENABLE_WAKEUP
    sclose(multi->wakeup_pair[0]);
    sclose(multi->wakeup_pair[1]);
#endif
    free(multi);

    return CURLM_OK;
  }
  return CURLM_BAD_HANDLE;
}

Changes to jni/curl/lib/multihandle.h.
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
#ifndef HEADER_CURL_MULTIHANDLE_H
#define HEADER_CURL_MULTIHANDLE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "conncache.h"
#include "psl.h"


struct Curl_message {
  struct curl_llist_element list;
  /* the 'CURLMsg' is the part that is visible to the external user */
  struct CURLMsg extmsg;
};










|
















>







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
#ifndef HEADER_CURL_MULTIHANDLE_H
#define HEADER_CURL_MULTIHANDLE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "conncache.h"
#include "psl.h"
#include "socketpair.h"

struct Curl_message {
  struct curl_llist_element list;
  /* the 'CURLMsg' is the part that is visible to the external user */
  struct CURLMsg extmsg;
};

61
62
63
64
65
66
67








68
69
70
71
72
73
74
/* we support N sockets per easy handle. Set the corresponding bit to what
   action we should wait for */
#define MAX_SOCKSPEREASYHANDLE 5
#define GETSOCK_READABLE (0x00ff)
#define GETSOCK_WRITABLE (0xff00)

#define CURLPIPE_ANY (CURLPIPE_MULTIPLEX)









/* This is the struct known as CURLM on the outside */
struct Curl_multi {
  /* First a simple identifier to easier detect if a user mix up
     this multi handle with an easy handle. Set this to CURL_MULTI_HANDLE. */
  long type;








>
>
>
>
>
>
>
>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* we support N sockets per easy handle. Set the corresponding bit to what
   action we should wait for */
#define MAX_SOCKSPEREASYHANDLE 5
#define GETSOCK_READABLE (0x00ff)
#define GETSOCK_WRITABLE (0xff00)

#define CURLPIPE_ANY (CURLPIPE_MULTIPLEX)

#if defined(USE_SOCKETPAIR) && !defined(USE_BLOCKING_SOCKETS)
#define ENABLE_WAKEUP
#endif


/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)

/* This is the struct known as CURLM on the outside */
struct Curl_multi {
  /* First a simple identifier to easier detect if a user mix up
     this multi handle with an easy handle. Set this to CURL_MULTI_HANDLE. */
  long type;

130
131
132
133
134
135
136





137
138
139
  /* timer callback and user data pointer for the *socket() API */
  curl_multi_timer_callback timer_cb;
  void *timer_userp;
  struct curltime timer_lastcall; /* the fixed time for the timeout for the
                                    previous callback */
  bool in_callback;            /* true while executing a callback */
  long max_concurrent_streams; /* max concurrent streams client to support */





};

#endif /* HEADER_CURL_MULTIHANDLE_H */







>
>
>
>
>



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
  /* timer callback and user data pointer for the *socket() API */
  curl_multi_timer_callback timer_cb;
  void *timer_userp;
  struct curltime timer_lastcall; /* the fixed time for the timeout for the
                                    previous callback */
  bool in_callback;            /* true while executing a callback */
  long max_concurrent_streams; /* max concurrent streams client to support */

#ifdef ENABLE_WAKEUP
  curl_socket_t wakeup_pair[2]; /* socketpair() used for wakeup
                                   0 is used for read, 1 is used for write */
#endif
};

#endif /* HEADER_CURL_MULTIHANDLE_H */
Changes to jni/curl/lib/nonblock.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/nonblock.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_NONBLOCK_H
#define HEADER_CURL_NONBLOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_NONBLOCK_H
#define HEADER_CURL_NONBLOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/parsedate.c.
582
583
584
585
586
587
588
























589
590
591
592
593
594
595
      /* avoid returning -1 for a working scenario */
      parsed++;
    return parsed;
  }
  /* everything else is fail */
  return -1;
}

























/*
 * Curl_gmtime() is a gmtime() replacement for portability. Do not use the
 * gmtime_r() or gmtime() functions anywhere else but here.
 *
 */








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
      /* avoid returning -1 for a working scenario */
      parsed++;
    return parsed;
  }
  /* everything else is fail */
  return -1;
}

/* Curl_getdate_capped() differs from curl_getdate() in that this will return
   TIME_T_MAX in case the parsed time value was too big, instead of an
   error. */

time_t Curl_getdate_capped(const char *p)
{
  time_t parsed = -1;
  int rc = parsedate(p, &parsed);

  switch(rc) {
  case PARSEDATE_OK:
    if(parsed == -1)
      /* avoid returning -1 for a working scenario */
      parsed++;
    return parsed;
  case PARSEDATE_LATER:
    /* this returns the maximum time value */
    return parsed;
  default:
    return -1; /* everything else is fail */
  }
  /* UNREACHABLE */
}

/*
 * Curl_gmtime() is a gmtime() replacement for portability. Do not use the
 * gmtime_r() or gmtime() functions anywhere else but here.
 *
 */

Changes to jni/curl/lib/parsedate.h.
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
#ifndef HEADER_CURL_PARSEDATE_H
#define HEADER_CURL_PARSEDATE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

extern const char * const Curl_wkday[7];
extern const char * const Curl_month[12];

CURLcode Curl_gmtime(time_t intime, struct tm *store);







#endif /* HEADER_CURL_PARSEDATE_H */









|



















>
>
>
>
>
>

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
#ifndef HEADER_CURL_PARSEDATE_H
#define HEADER_CURL_PARSEDATE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

extern const char * const Curl_wkday[7];
extern const char * const Curl_month[12];

CURLcode Curl_gmtime(time_t intime, struct tm *store);

/* Curl_getdate_capped() differs from curl_getdate() in that this will return
   TIME_T_MAX in case the parsed time value was too big, instead of an
   error. */

time_t Curl_getdate_capped(const char *p);

#endif /* HEADER_CURL_PARSEDATE_H */
Changes to jni/curl/lib/pop3.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POP3_H
#define HEADER_CURL_POP3_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POP3_H
#define HEADER_CURL_POP3_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/progress.c.
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
      Curl_set_in_callback(data, true);
      result = data->set.fxferinfo(data->set.progress_client,
                                   data->progress.size_dl,
                                   data->progress.downloaded,
                                   data->progress.size_ul,
                                   data->progress.uploaded);
      Curl_set_in_callback(data, false);

      if(result)
        failf(data, "Callback aborted");
      return result;
    }

    if(data->set.fprogress) {
      int result;
      /* The older deprecated callback is set, call that */
      Curl_set_in_callback(data, true);
      result = data->set.fprogress(data->set.progress_client,
                                   (double)data->progress.size_dl,
                                   (double)data->progress.downloaded,
                                   (double)data->progress.size_ul,
                                   (double)data->progress.uploaded);
      Curl_set_in_callback(data, false);

      if(result)
        failf(data, "Callback aborted");
      return result;

    }

    if(showprogress)
      progress_meter(conn);
  }

  return 0;







>
|
|
|
|
>
|









>
|
|
|
>







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
      Curl_set_in_callback(data, true);
      result = data->set.fxferinfo(data->set.progress_client,
                                   data->progress.size_dl,
                                   data->progress.downloaded,
                                   data->progress.size_ul,
                                   data->progress.uploaded);
      Curl_set_in_callback(data, false);
      if(result != CURL_PROGRESSFUNC_CONTINUE) {
        if(result)
          failf(data, "Callback aborted");
        return result;
      }
    }
    else if(data->set.fprogress) {
      int result;
      /* The older deprecated callback is set, call that */
      Curl_set_in_callback(data, true);
      result = data->set.fprogress(data->set.progress_client,
                                   (double)data->progress.size_dl,
                                   (double)data->progress.downloaded,
                                   (double)data->progress.size_ul,
                                   (double)data->progress.uploaded);
      Curl_set_in_callback(data, false);
      if(result != CURL_PROGRESSFUNC_CONTINUE) {
        if(result)
          failf(data, "Callback aborted");
        return result;
      }
    }

    if(showprogress)
      progress_meter(conn);
  }

  return 0;
Changes to jni/curl/lib/quic.h.
41
42
43
44
45
46
47


48
49
50


51
52
53
                           const struct sockaddr *addr,
                           socklen_t addrlen);
CURLcode Curl_quic_is_connected(struct connectdata *conn,
                                curl_socket_t sockfd,
                                bool *connected);
int Curl_quic_ver(char *p, size_t len);
CURLcode Curl_quic_done_sending(struct connectdata *conn);



#else /* ENABLE_QUIC */
#define Curl_quic_done_sending(x)


#endif /* !ENABLE_QUIC */

#endif /* HEADER_CURL_QUIC_H */







>
>



>
>



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
                           const struct sockaddr *addr,
                           socklen_t addrlen);
CURLcode Curl_quic_is_connected(struct connectdata *conn,
                                curl_socket_t sockfd,
                                bool *connected);
int Curl_quic_ver(char *p, size_t len);
CURLcode Curl_quic_done_sending(struct connectdata *conn);
void Curl_quic_done(struct Curl_easy *data, bool premature);
bool Curl_quic_data_pending(const struct Curl_easy *data);

#else /* ENABLE_QUIC */
#define Curl_quic_done_sending(x)
#define Curl_quic_done(x,y)
#define Curl_quic_data_pending(x)
#endif /* !ENABLE_QUIC */

#endif /* HEADER_CURL_QUIC_H */
Changes to jni/curl/lib/rtsp.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_RTSP_H
#define HEADER_CURL_RTSP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_RTSP_H
#define HEADER_CURL_RTSP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/select.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/select.h.
105
106
107
108
109
110
111
112
113
114
115
#else
#define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE))
#define VERIFY_SOCK(x) do { \
  if(!VALID_SOCK(x)) { \
    SET_SOCKERRNO(EINVAL); \
    return -1; \
  } \
} WHILE_FALSE
#endif

#endif /* HEADER_CURL_SELECT_H */







|



105
106
107
108
109
110
111
112
113
114
115
#else
#define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE))
#define VERIFY_SOCK(x) do { \
  if(!VALID_SOCK(x)) { \
    SET_SOCKERRNO(EINVAL); \
    return -1; \
  } \
} while(0)
#endif

#endif /* HEADER_CURL_SELECT_H */
Changes to jni/curl/lib/sendf.c.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

#include <curl/curl.h>

#include "urldata.h"
#include "sendf.h"
#include "connect.h"
#include "vtls/vtls.h"
#include "ssh.h"
#include "easyif.h"
#include "multiif.h"
#include "non-ascii.h"
#include "strerror.h"
#include "select.h"
#include "strdup.h"








|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

#include <curl/curl.h>

#include "urldata.h"
#include "sendf.h"
#include "connect.h"
#include "vtls/vtls.h"
#include "vssh/ssh.h"
#include "easyif.h"
#include "multiif.h"
#include "non-ascii.h"
#include "strerror.h"
#include "select.h"
#include "strdup.h"

220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
/* Use "do-nothing" macros instead of functions when workaround not used */
bool Curl_recv_has_postponed_data(struct connectdata *conn, int sockindex)
{
  (void)conn;
  (void)sockindex;
  return false;
}
#define pre_receive_plain(c,n) do {} WHILE_FALSE
#define get_pre_recved(c,n,b,l) 0
#endif /* ! USE_RECV_BEFORE_SEND_WORKAROUND */

/* Curl_infof() is for info message along the way */

void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
{







|







220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
/* Use "do-nothing" macros instead of functions when workaround not used */
bool Curl_recv_has_postponed_data(struct connectdata *conn, int sockindex)
{
  (void)conn;
  (void)sockindex;
  return false;
}
#define pre_receive_plain(c,n) do {} while(0)
#define get_pre_recved(c,n,b,l) 0
#endif /* ! USE_RECV_BEFORE_SEND_WORKAROUND */

/* Curl_infof() is for info message along the way */

void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
{
Changes to jni/curl/lib/setopt.c.
2129
2130
2131
2132
2133
2134
2135

2136
2137
2138
2139
2140
2141
2142
2143

2144
2145
2146
2147
2148
2149
2150
    break;

  case CURLOPT_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);

    break;

#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.proxy_ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);

    break;
#endif

#endif
  case CURLOPT_IPRESOLVE:
    arg = va_arg(param, long);
    if((arg < CURL_IPRESOLVE_WHATEVER) || (arg > CURL_IPRESOLVE_V6))







>








>







2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
    break;

  case CURLOPT_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
    data->set.ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
    break;

#ifndef CURL_DISABLE_PROXY
  case CURLOPT_PROXY_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.proxy_ssl.enable_beast =
      (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
    data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
    data->set.proxy_ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
    break;
#endif

#endif
  case CURLOPT_IPRESOLVE:
    arg = va_arg(param, long);
    if((arg < CURL_IPRESOLVE_WHATEVER) || (arg > CURL_IPRESOLVE_V6))
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
#if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \
   defined(TCP_FASTOPEN_CONNECT)
    data->set.tcp_fastopen = (0 != va_arg(param, long))?TRUE:FALSE;
#else
    result = CURLE_NOT_BUILT_IN;
#endif
    break;
#ifdef USE_NGHTTP2
  case CURLOPT_SSL_ENABLE_NPN:
    data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;
  case CURLOPT_SSL_ENABLE_ALPN:
    data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;
#endif
#ifdef USE_UNIX_SOCKETS
  case CURLOPT_UNIX_SOCKET_PATH:
    data->set.abstract_unix_socket = FALSE;
    result = Curl_setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH],
                            va_arg(param, char *));
    break;
  case CURLOPT_ABSTRACT_UNIX_SOCKET:







<






<







2610
2611
2612
2613
2614
2615
2616

2617
2618
2619
2620
2621
2622

2623
2624
2625
2626
2627
2628
2629
#if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \
   defined(TCP_FASTOPEN_CONNECT)
    data->set.tcp_fastopen = (0 != va_arg(param, long))?TRUE:FALSE;
#else
    result = CURLE_NOT_BUILT_IN;
#endif
    break;

  case CURLOPT_SSL_ENABLE_NPN:
    data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;
  case CURLOPT_SSL_ENABLE_ALPN:
    data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

#ifdef USE_UNIX_SOCKETS
  case CURLOPT_UNIX_SOCKET_PATH:
    data->set.abstract_unix_socket = FALSE;
    result = Curl_setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH],
                            va_arg(param, char *));
    break;
  case CURLOPT_ABSTRACT_UNIX_SOCKET:
Changes to jni/curl/lib/sha256.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Florin Petriuc, <petriuc.florin@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Florin Petriuc, <petriuc.florin@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/slist.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/slist.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SLIST_H
#define HEADER_CURL_SLIST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SLIST_H
#define HEADER_CURL_SLIST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/smtp.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SMTP_H
#define HEADER_CURL_SMTP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SMTP_H
#define HEADER_CURL_SMTP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2009 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/sockaddr.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKADDR_H
#define HEADER_CURL_SOCKADDR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKADDR_H
#define HEADER_CURL_SOCKADDR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/socketpair.c.
35
36
37
38
39
40
41



42
43
44
45
46
47
48
#include <io.h>
#else
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> /* IPPROTO_TCP */



#endif
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK 0x7f000001
#endif /* !INADDR_LOOPBACK */
#endif /* !WIN32 */

/* The last 3 #include files should be in this order */







>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <io.h>
#else
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> /* IPPROTO_TCP */
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK 0x7f000001
#endif /* !INADDR_LOOPBACK */
#endif /* !WIN32 */

/* The last 3 #include files should be in this order */
Changes to jni/curl/lib/socks.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKS_H
#define HEADER_CURL_SOCKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SOCKS_H
#define HEADER_CURL_SOCKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Deleted jni/curl/lib/ssh.h.
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
#ifndef HEADER_CURL_SSH_H
#define HEADER_CURL_SSH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#if defined(HAVE_LIBSSH2_H)
#include <libssh2.h>
#include <libssh2_sftp.h>
#elif defined(HAVE_LIBSSH_LIBSSH_H)
#include <libssh/libssh.h>
#include <libssh/sftp.h>
#endif /* HAVE_LIBSSH2_H */

/****************************************************************************
 * SSH unique setup
 ***************************************************************************/
typedef enum {
  SSH_NO_STATE = -1,  /* Used for "nextState" so say there is none */
  SSH_STOP = 0,       /* do nothing state, stops the state machine */

  SSH_INIT,           /* First state in SSH-CONNECT */
  SSH_S_STARTUP,      /* Session startup */
  SSH_HOSTKEY,        /* verify hostkey */
  SSH_AUTHLIST,
  SSH_AUTH_PKEY_INIT,
  SSH_AUTH_PKEY,
  SSH_AUTH_PASS_INIT,
  SSH_AUTH_PASS,
  SSH_AUTH_AGENT_INIT, /* initialize then wait for connection to agent */
  SSH_AUTH_AGENT_LIST, /* ask for list then wait for entire list to come */
  SSH_AUTH_AGENT,      /* attempt one key at a time */
  SSH_AUTH_HOST_INIT,
  SSH_AUTH_HOST,
  SSH_AUTH_KEY_INIT,
  SSH_AUTH_KEY,
  SSH_AUTH_GSSAPI,
  SSH_AUTH_DONE,
  SSH_SFTP_INIT,
  SSH_SFTP_REALPATH,   /* Last state in SSH-CONNECT */

  SSH_SFTP_QUOTE_INIT, /* First state in SFTP-DO */
  SSH_SFTP_POSTQUOTE_INIT, /* (Possibly) First state in SFTP-DONE */
  SSH_SFTP_QUOTE,
  SSH_SFTP_NEXT_QUOTE,
  SSH_SFTP_QUOTE_STAT,
  SSH_SFTP_QUOTE_SETSTAT,
  SSH_SFTP_QUOTE_SYMLINK,
  SSH_SFTP_QUOTE_MKDIR,
  SSH_SFTP_QUOTE_RENAME,
  SSH_SFTP_QUOTE_RMDIR,
  SSH_SFTP_QUOTE_UNLINK,
  SSH_SFTP_QUOTE_STATVFS,
  SSH_SFTP_GETINFO,
  SSH_SFTP_FILETIME,
  SSH_SFTP_TRANS_INIT,
  SSH_SFTP_UPLOAD_INIT,
  SSH_SFTP_CREATE_DIRS_INIT,
  SSH_SFTP_CREATE_DIRS,
  SSH_SFTP_CREATE_DIRS_MKDIR,
  SSH_SFTP_READDIR_INIT,
  SSH_SFTP_READDIR,
  SSH_SFTP_READDIR_LINK,
  SSH_SFTP_READDIR_BOTTOM,
  SSH_SFTP_READDIR_DONE,
  SSH_SFTP_DOWNLOAD_INIT,
  SSH_SFTP_DOWNLOAD_STAT, /* Last state in SFTP-DO */
  SSH_SFTP_CLOSE,    /* Last state in SFTP-DONE */
  SSH_SFTP_SHUTDOWN, /* First state in SFTP-DISCONNECT */
  SSH_SCP_TRANS_INIT, /* First state in SCP-DO */
  SSH_SCP_UPLOAD_INIT,
  SSH_SCP_DOWNLOAD_INIT,
  SSH_SCP_DOWNLOAD,
  SSH_SCP_DONE,
  SSH_SCP_SEND_EOF,
  SSH_SCP_WAIT_EOF,
  SSH_SCP_WAIT_CLOSE,
  SSH_SCP_CHANNEL_FREE,   /* Last state in SCP-DONE */
  SSH_SESSION_DISCONNECT, /* First state in SCP-DISCONNECT */
  SSH_SESSION_FREE,       /* Last state in SCP/SFTP-DISCONNECT */
  SSH_QUIT,
  SSH_LAST  /* never used */
} sshstate;

/* this struct is used in the HandleData struct which is part of the
   Curl_easy, which means this is used on a per-easy handle basis.
   Everything that is strictly related to a connection is banned from this
   struct. */
struct SSHPROTO {
  char *path;                  /* the path we operate on */
};

/* ssh_conn is used for struct connection-oriented data in the connectdata
   struct */
struct ssh_conn {
  const char *authlist;       /* List of auth. methods, managed by libssh2 */

  /* common */
  const char *passphrase;     /* pass-phrase to use */
  char *rsa_pub;              /* path name */
  char *rsa;                  /* path name */
  bool authed;                /* the connection has been authenticated fine */
  sshstate state;             /* always use ssh.c:state() to change state! */
  sshstate nextstate;         /* the state to goto after stopping */
  CURLcode actualcode;        /* the actual error code */
  struct curl_slist *quote_item; /* for the quote option */
  char *quote_path1;          /* two generic pointers for the QUOTE stuff */
  char *quote_path2;

  bool acceptfail;            /* used by the SFTP_QUOTE (continue if
                                 quote command fails) */
  char *homedir;              /* when doing SFTP we figure out home dir in the
                                 connect phase */
  size_t readdir_len, readdir_totalLen, readdir_currLen;
  char *readdir_line;
  char *readdir_linkPath;
  /* end of READDIR stuff */

  int secondCreateDirs;         /* counter use by the code to see if the
                                   second attempt has been made to change
                                   to/create a directory */
  char *slash_pos;              /* used by the SFTP_CREATE_DIRS state */

  int orig_waitfor;             /* default READ/WRITE bits wait for */

#if defined(USE_LIBSSH)
/* our variables */
  unsigned kbd_state; /* 0 or 1 */
  ssh_key privkey;
  ssh_key pubkey;
  int auth_methods;
  ssh_session ssh_session;
  ssh_scp scp_session;
  sftp_session sftp_session;
  sftp_file sftp_file;
  sftp_dir sftp_dir;

  unsigned sftp_recv_state; /* 0 or 1 */
  int sftp_file_index; /* for async read */
  sftp_attributes readdir_attrs; /* used by the SFTP readdir actions */
  sftp_attributes readdir_link_attrs; /* used by the SFTP readdir actions */
  sftp_attributes quote_attrs; /* used by the SFTP_QUOTE state */

  const char *readdir_filename; /* points within readdir_attrs */
  const char *readdir_longentry;
  char *readdir_tmp;
#elif defined(USE_LIBSSH2)
  char *readdir_filename;
  char *readdir_longentry;

  LIBSSH2_SFTP_ATTRIBUTES quote_attrs; /* used by the SFTP_QUOTE state */

  /* Here's a set of struct members used by the SFTP_READDIR state */
  LIBSSH2_SFTP_ATTRIBUTES readdir_attrs;
  LIBSSH2_SESSION *ssh_session; /* Secure Shell session */
  LIBSSH2_CHANNEL *ssh_channel; /* Secure Shell channel handle */
  LIBSSH2_SFTP *sftp_session;   /* SFTP handle */
  LIBSSH2_SFTP_HANDLE *sftp_handle;

#ifdef HAVE_LIBSSH2_AGENT_API
  LIBSSH2_AGENT *ssh_agent;     /* proxy to ssh-agent/pageant */
  struct libssh2_agent_publickey *sshagent_identity,
                                 *sshagent_prev_identity;
#endif

  /* note that HAVE_LIBSSH2_KNOWNHOST_API is a define set in the libssh2.h
     header */
#ifdef HAVE_LIBSSH2_KNOWNHOST_API
  LIBSSH2_KNOWNHOSTS *kh;
#endif
#endif /* USE_LIBSSH */
};

#if defined(USE_LIBSSH)

#define CURL_LIBSSH_VERSION ssh_version(0)

extern const struct Curl_handler Curl_handler_scp;
extern const struct Curl_handler Curl_handler_sftp;

#elif defined(USE_LIBSSH2)

/* Feature detection based on version numbers to better work with
   non-configure platforms */

#if !defined(LIBSSH2_VERSION_NUM) || (LIBSSH2_VERSION_NUM < 0x001000)
#  error "SCP/SFTP protocols require libssh2 0.16 or later"
#endif

#if LIBSSH2_VERSION_NUM >= 0x010000
#define HAVE_LIBSSH2_SFTP_SEEK64 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010100
#define HAVE_LIBSSH2_VERSION 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010205
#define HAVE_LIBSSH2_INIT 1
#define HAVE_LIBSSH2_EXIT 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010206
#define HAVE_LIBSSH2_KNOWNHOST_CHECKP 1
#define HAVE_LIBSSH2_SCP_SEND64 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010208
#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1
#endif

#ifdef HAVE_LIBSSH2_VERSION
/* get it run-time if possible */
#define CURL_LIBSSH2_VERSION libssh2_version(0)
#else
/* use build-time if run-time not possible */
#define CURL_LIBSSH2_VERSION LIBSSH2_VERSION
#endif

extern const struct Curl_handler Curl_handler_scp;
extern const struct Curl_handler Curl_handler_sftp;
#endif /* USE_LIBSSH2 */

#ifdef USE_SSH
/* generic SSH backend functions */
CURLcode Curl_ssh_init(void);
void Curl_ssh_cleanup(void);
size_t Curl_ssh_version(char *buffer, size_t buflen);
#else
/* for non-SSH builds */
#define Curl_ssh_cleanup()
#endif

#endif /* HEADER_CURL_SSH_H */
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<




























































































































































































































































































































































































































































































































Changes to jni/curl/lib/strdup.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/strerror.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2004 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2004 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
310
311
312
313
314
315
316



317
318
319
320
321
322
323

  case CURLE_RECURSIVE_API_CALL:
    return "API function called from within callback";

  case CURLE_AUTH_ERROR:
    return "An authentication function returned an error";




    /* error codes not used by current libcurl */
  case CURLE_OBSOLETE20:
  case CURLE_OBSOLETE24:
  case CURLE_OBSOLETE29:
  case CURLE_OBSOLETE32:
  case CURLE_OBSOLETE40:
  case CURLE_OBSOLETE44:







>
>
>







310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326

  case CURLE_RECURSIVE_API_CALL:
    return "API function called from within callback";

  case CURLE_AUTH_ERROR:
    return "An authentication function returned an error";

  case CURLE_HTTP3:
    return "HTTP/3 error";

    /* error codes not used by current libcurl */
  case CURLE_OBSOLETE20:
  case CURLE_OBSOLETE24:
  case CURLE_OBSOLETE29:
  case CURLE_OBSOLETE32:
  case CURLE_OBSOLETE40:
  case CURLE_OBSOLETE44:
382
383
384
385
386
387
388



389
390
391
392
393
394
395

  case CURLM_ADDED_ALREADY:
    return "The easy handle is already added to a multi handle";

  case CURLM_RECURSIVE_API_CALL:
    return "API function called from within callback";




  case CURLM_LAST:
    break;
  }

  return "Unknown error";
#else
  if(error == CURLM_OK)







>
>
>







385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401

  case CURLM_ADDED_ALREADY:
    return "The easy handle is already added to a multi handle";

  case CURLM_RECURSIVE_API_CALL:
    return "API function called from within callback";

  case CURLM_WAKEUP_FAILURE:
    return "Wakeup is unavailable or failed";

  case CURLM_LAST:
    break;
  }

  return "Unknown error";
#else
  if(error == CURLM_OK)
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
    return "No error";
  else
    return "Error";
#endif
}

#ifdef USE_WINSOCK

/* This function handles most / all (?) Winsock errors curl is able to produce.

 */
static const char *
get_winsock_error (int err, char *buf, size_t len)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;


  const char *p;


#ifndef CURL_DISABLE_VERBOSE_STRINGS



  switch(err) {
  case WSAEINTR:
    p = "Call interrupted";
    break;
  case WSAEBADF:
    p = "Bad file";
    break;







|
|
>




|
|

|
>
>
|
>

|
>
>
>







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
    return "No error";
  else
    return "Error";
#endif
}

#ifdef USE_WINSOCK
/* This is a helper function for Curl_strerror that converts Winsock error
 * codes (WSAGetLastError) to error messages.
 * Returns NULL if no error message was found for error code.
 */
static const char *
get_winsock_error (int err, char *buf, size_t len)
{
#ifndef CURL_DISABLE_VERBOSE_STRINGS
  const char *p;
#endif

  if(!len)
    return NULL;

  *buf = '\0';

#ifdef CURL_DISABLE_VERBOSE_STRINGS
  (void)err;
  return NULL;
#else
  switch(err) {
  case WSAEINTR:
    p = "Call interrupted";
    break;
  case WSAEBADF:
    p = "Bad file";
    break;
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
  case WSANO_DATA:
    p = "No data record of requested type";
    break;

  default:
    return NULL;
  }



#else













  if(!err)
    return NULL;
  else
    p = "error";
#endif




  strncpy(buf, p, len);







  buf [len-1] = '\0';

  if(errno != old_errno)





    errno = old_errno;

#ifdef PRESERVE_WINDOWS_ERROR_CODE
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif










  return buf;
}
#endif   /* USE_WINSOCK */

/*
 * Our thread-safe and smart strerror() replacement.
 *
 * The 'err' argument passed in to this function MUST be a true errno number
 * as reported on this system. We do no range checking on the number before
 * we pass it to the "number-to-message" conversion function and there might
 * be systems that don't do proper range checking in there themselves.
 *
 * We don't do range checking (on systems other than Windows) since there is
 * no good reliable and portable way to do it.








 */
const char *Curl_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;
  char *p;
  size_t max;




  DEBUGASSERT(err >= 0);

  max = buflen - 1;
  *buf = '\0';

#ifdef USE_WINSOCK

#ifdef _WIN32_WCE
  {
    wchar_t wbuf[256];
    wbuf[0] = L'\0';

    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
                  LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL);
    wcstombs(buf, wbuf, max);
  }
#else
  /* 'sys_nerr' is the maximum errno number, it is not widely portable */
  if(err >= 0 && err < sys_nerr)
    strncpy(buf, strerror(err), max);
  else {




    if(!get_winsock_error(err, buf, max) &&
       !FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,

                       LANG_NEUTRAL, buf, (DWORD)max, NULL))
      msnprintf(buf, max, "Unknown error %d (%#x)", err, err);
  }
#endif

#else /* not USE_WINSOCK coming up */

#if defined(HAVE_STRERROR_R) && defined(HAVE_POSIX_STRERROR_R)
 /*
  * The POSIX-style strerror_r() may set errno to ERANGE if insufficient
  * storage is supplied via 'strerrbuf' and 'buflen' to hold the generated
  * message string, or EINVAL if 'errnum' is not a valid error number.
  */







>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
|

|
|
|
>
>
>
>
|
>
>
>
>
>
>
>
|
|
<
>
>
>
>
>
|
|
<
<
<


>
>
>
>
>
>
>
>
>
|

|











>
>
>
>
>
>
>
>










>
>
>





<
<
|
<
<
<
|
<
<
<
<
<



|
>
>
>
>
|
<
>
|


<
<
|







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
  case WSANO_DATA:
    p = "No data record of requested type";
    break;

  default:
    return NULL;
  }
  strncpy(buf, p, len);
  buf [len-1] = '\0';
  return buf;
#endif
}
#endif   /* USE_WINSOCK */

#if defined(WIN32) || defined(_WIN32_WCE)
/* This is a helper function for Curl_strerror that converts Windows API error
 * codes (GetLastError) to error messages.
 * Returns NULL if no error message was found for error code.
 */
static const char *
get_winapi_error(int err, char *buf, size_t buflen)
{
  char *p;

  if(!buflen)
    return NULL;

  *buf = '\0';

#ifdef _WIN32_WCE
  {
    wchar_t wbuf[256];
    wbuf[0] = L'\0';

    if(FormatMessage((FORMAT_MESSAGE_FROM_SYSTEM |
                      FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
                     LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
      size_t written = wcstombs(buf, wbuf, buflen - 1);
      if(written != (size_t)-1)
        buf[written] = '\0';
      else
        *buf = '\0';
    }

  }
#else
  if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
                      FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
                     LANG_NEUTRAL, buf, (DWORD)buflen, NULL)) {
    *buf = '\0';
  }



#endif

  /* Truncate multiple lines */
  p = strchr(buf, '\n');
  if(p) {
    if(p > buf && *(p-1) == '\r')
      *(p-1) = '\0';
    else
      *p = '\0';
  }

  return (*buf ? buf : NULL);
}
#endif /* WIN32 || _WIN32_WCE */

/*
 * Our thread-safe and smart strerror() replacement.
 *
 * The 'err' argument passed in to this function MUST be a true errno number
 * as reported on this system. We do no range checking on the number before
 * we pass it to the "number-to-message" conversion function and there might
 * be systems that don't do proper range checking in there themselves.
 *
 * We don't do range checking (on systems other than Windows) since there is
 * no good reliable and portable way to do it.
 *
 * On Windows different types of error codes overlap. This function has an
 * order of preference when trying to match error codes:
 * CRT (errno), Winsock (WSAGetLastError), Windows API (GetLastError).
 *
 * It may be more correct to call one of the variant functions instead:
 * Call Curl_sspi_strerror if the error code is definitely Windows SSPI.
 * Call Curl_winapi_strerror if the error code is definitely Windows API.
 */
const char *Curl_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;
  char *p;
  size_t max;

  if(!buflen)
    return NULL;

  DEBUGASSERT(err >= 0);

  max = buflen - 1;
  *buf = '\0';



#if defined(WIN32) || defined(_WIN32_WCE)



#if defined(WIN32)





  /* 'sys_nerr' is the maximum errno number, it is not widely portable */
  if(err >= 0 && err < sys_nerr)
    strncpy(buf, strerror(err), max);
  else
#endif
  {
    if(
#ifdef USE_WINSOCK
       !get_winsock_error(err, buf, max) &&

#endif
       !get_winapi_error((DWORD)err, buf, max))
      msnprintf(buf, max, "Unknown error %d (%#x)", err, err);
  }


#else /* not Windows coming up */

#if defined(HAVE_STRERROR_R) && defined(HAVE_POSIX_STRERROR_R)
 /*
  * The POSIX-style strerror_r() may set errno to ERANGE if insufficient
  * storage is supplied via 'strerrbuf' and 'buflen' to hold the generated
  * message string, or EINVAL if 'errnum' is not a valid error number.
  */
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
    if(msg)
      strncpy(buf, msg, max);
    else
      msnprintf(buf, max, "Unknown error %d", err);
  }
#endif

#endif /* end of ! USE_WINSOCK */

  buf[max] = '\0'; /* make sure the string is zero terminated */

  /* strip trailing '\r\n' or '\n'. */
  p = strrchr(buf, '\n');
  if(p && (p - buf) >= 2)
    *p = '\0';







|







783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
    if(msg)
      strncpy(buf, msg, max);
    else
      msnprintf(buf, max, "Unknown error %d", err);
  }
#endif

#endif /* end of not Windows */

  buf[max] = '\0'; /* make sure the string is zero terminated */

  /* strip trailing '\r\n' or '\n'. */
  p = strrchr(buf, '\n');
  if(p && (p - buf) >= 2)
    *p = '\0';
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
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038

1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif

  return buf;
}










































#ifdef USE_WINDOWS_SSPI




const char *Curl_sspi_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;
  const char *txt;
  char *outbuf;
  size_t outmax;
#ifndef CURL_DISABLE_VERBOSE_STRINGS
  char txtbuf[80];
  char msgbuf[256];
  char *p, *str, *msg = NULL;
  bool msg_formatted = FALSE;
#endif

  outbuf = buf;
  outmax = buflen - 1;
  *outbuf = '\0';

#ifndef CURL_DISABLE_VERBOSE_STRINGS

  switch(err) {
    case SEC_E_OK:
      txt = "No error";
      break;
    case CRYPT_E_REVOKED:
      txt = "CRYPT_E_REVOKED";
      break;
    case SEC_E_ALGORITHM_MISMATCH:
      txt = "SEC_E_ALGORITHM_MISMATCH";
      break;
    case SEC_E_BAD_BINDINGS:
      txt = "SEC_E_BAD_BINDINGS";
      break;
    case SEC_E_BAD_PKGID:
      txt = "SEC_E_BAD_PKGID";
      break;
    case SEC_E_BUFFER_TOO_SMALL:
      txt = "SEC_E_BUFFER_TOO_SMALL";
      break;
    case SEC_E_CANNOT_INSTALL:
      txt = "SEC_E_CANNOT_INSTALL";
      break;
    case SEC_E_CANNOT_PACK:
      txt = "SEC_E_CANNOT_PACK";
      break;
    case SEC_E_CERT_EXPIRED:
      txt = "SEC_E_CERT_EXPIRED";
      break;
    case SEC_E_CERT_UNKNOWN:
      txt = "SEC_E_CERT_UNKNOWN";
      break;
    case SEC_E_CERT_WRONG_USAGE:
      txt = "SEC_E_CERT_WRONG_USAGE";
      break;
    case SEC_E_CONTEXT_EXPIRED:
      txt = "SEC_E_CONTEXT_EXPIRED";
      break;
    case SEC_E_CROSSREALM_DELEGATION_FAILURE:
      txt = "SEC_E_CROSSREALM_DELEGATION_FAILURE";
      break;
    case SEC_E_CRYPTO_SYSTEM_INVALID:
      txt = "SEC_E_CRYPTO_SYSTEM_INVALID";
      break;
    case SEC_E_DECRYPT_FAILURE:
      txt = "SEC_E_DECRYPT_FAILURE";
      break;
    case SEC_E_DELEGATION_POLICY:
      txt = "SEC_E_DELEGATION_POLICY";
      break;
    case SEC_E_DELEGATION_REQUIRED:
      txt = "SEC_E_DELEGATION_REQUIRED";
      break;
    case SEC_E_DOWNGRADE_DETECTED:
      txt = "SEC_E_DOWNGRADE_DETECTED";
      break;
    case SEC_E_ENCRYPT_FAILURE:
      txt = "SEC_E_ENCRYPT_FAILURE";
      break;
    case SEC_E_ILLEGAL_MESSAGE:
      txt = "SEC_E_ILLEGAL_MESSAGE";
      break;
    case SEC_E_INCOMPLETE_CREDENTIALS:
      txt = "SEC_E_INCOMPLETE_CREDENTIALS";
      break;
    case SEC_E_INCOMPLETE_MESSAGE:
      txt = "SEC_E_INCOMPLETE_MESSAGE";
      break;
    case SEC_E_INSUFFICIENT_MEMORY:
      txt = "SEC_E_INSUFFICIENT_MEMORY";
      break;
    case SEC_E_INTERNAL_ERROR:
      txt = "SEC_E_INTERNAL_ERROR";
      break;
    case SEC_E_INVALID_HANDLE:
      txt = "SEC_E_INVALID_HANDLE";
      break;
    case SEC_E_INVALID_PARAMETER:
      txt = "SEC_E_INVALID_PARAMETER";
      break;
    case SEC_E_INVALID_TOKEN:
      txt = "SEC_E_INVALID_TOKEN";
      break;
    case SEC_E_ISSUING_CA_UNTRUSTED:
      txt = "SEC_E_ISSUING_CA_UNTRUSTED";
      break;
    case SEC_E_ISSUING_CA_UNTRUSTED_KDC:
      txt = "SEC_E_ISSUING_CA_UNTRUSTED_KDC";
      break;
    case SEC_E_KDC_CERT_EXPIRED:
      txt = "SEC_E_KDC_CERT_EXPIRED";
      break;
    case SEC_E_KDC_CERT_REVOKED:
      txt = "SEC_E_KDC_CERT_REVOKED";
      break;
    case SEC_E_KDC_INVALID_REQUEST:
      txt = "SEC_E_KDC_INVALID_REQUEST";
      break;
    case SEC_E_KDC_UNABLE_TO_REFER:
      txt = "SEC_E_KDC_UNABLE_TO_REFER";
      break;
    case SEC_E_KDC_UNKNOWN_ETYPE:
      txt = "SEC_E_KDC_UNKNOWN_ETYPE";
      break;
    case SEC_E_LOGON_DENIED:
      txt = "SEC_E_LOGON_DENIED";
      break;
    case SEC_E_MAX_REFERRALS_EXCEEDED:
      txt = "SEC_E_MAX_REFERRALS_EXCEEDED";
      break;
    case SEC_E_MESSAGE_ALTERED:
      txt = "SEC_E_MESSAGE_ALTERED";
      break;
    case SEC_E_MULTIPLE_ACCOUNTS:
      txt = "SEC_E_MULTIPLE_ACCOUNTS";
      break;
    case SEC_E_MUST_BE_KDC:
      txt = "SEC_E_MUST_BE_KDC";
      break;
    case SEC_E_NOT_OWNER:
      txt = "SEC_E_NOT_OWNER";
      break;
    case SEC_E_NO_AUTHENTICATING_AUTHORITY:
      txt = "SEC_E_NO_AUTHENTICATING_AUTHORITY";
      break;
    case SEC_E_NO_CREDENTIALS:
      txt = "SEC_E_NO_CREDENTIALS";
      break;
    case SEC_E_NO_IMPERSONATION:
      txt = "SEC_E_NO_IMPERSONATION";
      break;
    case SEC_E_NO_IP_ADDRESSES:
      txt = "SEC_E_NO_IP_ADDRESSES";
      break;
    case SEC_E_NO_KERB_KEY:
      txt = "SEC_E_NO_KERB_KEY";
      break;
    case SEC_E_NO_PA_DATA:
      txt = "SEC_E_NO_PA_DATA";
      break;
    case SEC_E_NO_S4U_PROT_SUPPORT:
      txt = "SEC_E_NO_S4U_PROT_SUPPORT";
      break;
    case SEC_E_NO_TGT_REPLY:
      txt = "SEC_E_NO_TGT_REPLY";
      break;
    case SEC_E_OUT_OF_SEQUENCE:
      txt = "SEC_E_OUT_OF_SEQUENCE";
      break;
    case SEC_E_PKINIT_CLIENT_FAILURE:
      txt = "SEC_E_PKINIT_CLIENT_FAILURE";
      break;
    case SEC_E_PKINIT_NAME_MISMATCH:
      txt = "SEC_E_PKINIT_NAME_MISMATCH";
      break;
    case SEC_E_POLICY_NLTM_ONLY:
      txt = "SEC_E_POLICY_NLTM_ONLY";
      break;
    case SEC_E_QOP_NOT_SUPPORTED:
      txt = "SEC_E_QOP_NOT_SUPPORTED";
      break;
    case SEC_E_REVOCATION_OFFLINE_C:
      txt = "SEC_E_REVOCATION_OFFLINE_C";
      break;
    case SEC_E_REVOCATION_OFFLINE_KDC:
      txt = "SEC_E_REVOCATION_OFFLINE_KDC";
      break;
    case SEC_E_SECPKG_NOT_FOUND:
      txt = "SEC_E_SECPKG_NOT_FOUND";
      break;
    case SEC_E_SECURITY_QOS_FAILED:
      txt = "SEC_E_SECURITY_QOS_FAILED";
      break;
    case SEC_E_SHUTDOWN_IN_PROGRESS:
      txt = "SEC_E_SHUTDOWN_IN_PROGRESS";
      break;
    case SEC_E_SMARTCARD_CERT_EXPIRED:
      txt = "SEC_E_SMARTCARD_CERT_EXPIRED";
      break;
    case SEC_E_SMARTCARD_CERT_REVOKED:
      txt = "SEC_E_SMARTCARD_CERT_REVOKED";
      break;
    case SEC_E_SMARTCARD_LOGON_REQUIRED:
      txt = "SEC_E_SMARTCARD_LOGON_REQUIRED";
      break;
    case SEC_E_STRONG_CRYPTO_NOT_SUPPORTED:
      txt = "SEC_E_STRONG_CRYPTO_NOT_SUPPORTED";
      break;
    case SEC_E_TARGET_UNKNOWN:
      txt = "SEC_E_TARGET_UNKNOWN";
      break;
    case SEC_E_TIME_SKEW:
      txt = "SEC_E_TIME_SKEW";
      break;
    case SEC_E_TOO_MANY_PRINCIPALS:
      txt = "SEC_E_TOO_MANY_PRINCIPALS";
      break;
    case SEC_E_UNFINISHED_CONTEXT_DELETED:
      txt = "SEC_E_UNFINISHED_CONTEXT_DELETED";
      break;
    case SEC_E_UNKNOWN_CREDENTIALS:
      txt = "SEC_E_UNKNOWN_CREDENTIALS";
      break;
    case SEC_E_UNSUPPORTED_FUNCTION:
      txt = "SEC_E_UNSUPPORTED_FUNCTION";
      break;
    case SEC_E_UNSUPPORTED_PREAUTH:
      txt = "SEC_E_UNSUPPORTED_PREAUTH";
      break;
    case SEC_E_UNTRUSTED_ROOT:
      txt = "SEC_E_UNTRUSTED_ROOT";
      break;
    case SEC_E_WRONG_CREDENTIAL_HANDLE:
      txt = "SEC_E_WRONG_CREDENTIAL_HANDLE";
      break;
    case SEC_E_WRONG_PRINCIPAL:
      txt = "SEC_E_WRONG_PRINCIPAL";
      break;
    case SEC_I_COMPLETE_AND_CONTINUE:
      txt = "SEC_I_COMPLETE_AND_CONTINUE";
      break;
    case SEC_I_COMPLETE_NEEDED:
      txt = "SEC_I_COMPLETE_NEEDED";
      break;
    case SEC_I_CONTEXT_EXPIRED:
      txt = "SEC_I_CONTEXT_EXPIRED";
      break;
    case SEC_I_CONTINUE_NEEDED:
      txt = "SEC_I_CONTINUE_NEEDED";
      break;
    case SEC_I_INCOMPLETE_CREDENTIALS:
      txt = "SEC_I_INCOMPLETE_CREDENTIALS";
      break;
    case SEC_I_LOCAL_LOGON:
      txt = "SEC_I_LOCAL_LOGON";
      break;
    case SEC_I_NO_LSA_CONTEXT:
      txt = "SEC_I_NO_LSA_CONTEXT";
      break;
    case SEC_I_RENEGOTIATE:
      txt = "SEC_I_RENEGOTIATE";
      break;
    case SEC_I_SIGNATURE_NEEDED:
      txt = "SEC_I_SIGNATURE_NEEDED";
      break;
    default:
      txt = "Unknown error";
  }

  if(err == SEC_E_OK)
    strncpy(outbuf, txt, outmax);
  else if(err == SEC_E_ILLEGAL_MESSAGE)
    msnprintf(outbuf, outmax,
              "SEC_E_ILLEGAL_MESSAGE (0x%08X) - This error usually occurs "
              "when a fatal SSL/TLS alert is received (e.g. handshake failed)."
              " More detail may be available in the Windows System event log.",
              err);

  else {
    str = txtbuf;
    msnprintf(txtbuf, sizeof(txtbuf), "%s (0x%08X)", txt, err);
    txtbuf[sizeof(txtbuf)-1] = '\0';

#ifdef _WIN32_WCE
    {
      wchar_t wbuf[256];
      wbuf[0] = L'\0';

      if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
                       FORMAT_MESSAGE_IGNORE_INSERTS,
                       NULL, err, LANG_NEUTRAL,
                       wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
        wcstombs(msgbuf, wbuf, sizeof(msgbuf)-1);
        msg_formatted = TRUE;
      }
    }
#else
    if(FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
                      FORMAT_MESSAGE_IGNORE_INSERTS,
                      NULL, err, LANG_NEUTRAL,
                      msgbuf, sizeof(msgbuf)-1, NULL)) {
      msg_formatted = TRUE;
    }
#endif
    if(msg_formatted) {
      msgbuf[sizeof(msgbuf)-1] = '\0';
      /* strip trailing '\r\n' or '\n' */
      p = strrchr(msgbuf, '\n');
      if(p && (p - msgbuf) >= 2)
        *p = '\0';
      p = strrchr(msgbuf, '\r');
      if(p && (p - msgbuf) >= 1)
        *p = '\0';
      msg = msgbuf;
    }
    if(msg)
      msnprintf(outbuf, outmax, "%s - %s", str, msg);
    else
      strncpy(outbuf, str, outmax);
  }

#else

  if(err == SEC_E_OK)
    txt = "No error";
  else
    txt = "Error";

  strncpy(outbuf, txt, outmax);

#endif

  outbuf[outmax] = '\0';

  if(errno != old_errno)
    errno = old_errno;

#ifdef PRESERVE_WINDOWS_ERROR_CODE
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif

  return outbuf;
}
#endif /* USE_WINDOWS_SSPI */







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

>
>
>
>







|
<
<
|
<
|
<
<

<
<
|







|
|
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<
|
<
<




|
<
<
|




>

|
<
<
<
<
<
|
<

<
<
<
|
<
<
|
<
<
<
<
<
|
<
<
<
<
<
<
<
|
|
|
<
|
<

<
<
<
<



<




<
|
|


<
<








|


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
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif

  return buf;
}

/*
 * Curl_winapi_strerror:
 * Variant of Curl_strerror if the error code is definitely Windows API.
 */
#if defined(WIN32) || defined(_WIN32_WCE)
const char *Curl_winapi_strerror(DWORD err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;

  if(!buflen)
    return NULL;

  *buf = '\0';

#ifndef CURL_DISABLE_VERBOSE_STRINGS
  if(!get_winapi_error(err, buf, buflen)) {
    msnprintf(buf, buflen, "Unknown error %u (0x%08X)", err, err);
  }
#else
  {
    const char *txt = (err == ERROR_SUCCESS) ? "No error" : "Error";
    strncpy(buf, txt, buflen);
    buf[buflen - 1] = '\0';
  }
#endif

  if(errno != old_errno)
    errno = old_errno;

#ifdef PRESERVE_WINDOWS_ERROR_CODE
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif

  return buf;
}
#endif /* WIN32 || _WIN32_WCE */

#ifdef USE_WINDOWS_SSPI
/*
 * Curl_sspi_strerror:
 * Variant of Curl_strerror if the error code is definitely Windows SSPI.
 */
const char *Curl_sspi_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
  DWORD old_win_err = GetLastError();
#endif
  int old_errno = errno;
  const char *txt;



  if(!buflen)

    return NULL;





  *buf = '\0';

#ifndef CURL_DISABLE_VERBOSE_STRINGS

  switch(err) {
    case SEC_E_OK:
      txt = "No error";
      break;
#define SEC2TXT(sec) case sec: txt = #sec; break
    SEC2TXT(CRYPT_E_REVOKED);

    SEC2TXT(SEC_E_ALGORITHM_MISMATCH);


    SEC2TXT(SEC_E_BAD_BINDINGS);


    SEC2TXT(SEC_E_BAD_PKGID);


    SEC2TXT(SEC_E_BUFFER_TOO_SMALL);


    SEC2TXT(SEC_E_CANNOT_INSTALL);


    SEC2TXT(SEC_E_CANNOT_PACK);


    SEC2TXT(SEC_E_CERT_EXPIRED);


    SEC2TXT(SEC_E_CERT_UNKNOWN);


    SEC2TXT(SEC_E_CERT_WRONG_USAGE);


    SEC2TXT(SEC_E_CONTEXT_EXPIRED);


    SEC2TXT(SEC_E_CROSSREALM_DELEGATION_FAILURE);


    SEC2TXT(SEC_E_CRYPTO_SYSTEM_INVALID);


    SEC2TXT(SEC_E_DECRYPT_FAILURE);


    SEC2TXT(SEC_E_DELEGATION_POLICY);


    SEC2TXT(SEC_E_DELEGATION_REQUIRED);


    SEC2TXT(SEC_E_DOWNGRADE_DETECTED);


    SEC2TXT(SEC_E_ENCRYPT_FAILURE);


    SEC2TXT(SEC_E_ILLEGAL_MESSAGE);


    SEC2TXT(SEC_E_INCOMPLETE_CREDENTIALS);


    SEC2TXT(SEC_E_INCOMPLETE_MESSAGE);


    SEC2TXT(SEC_E_INSUFFICIENT_MEMORY);


    SEC2TXT(SEC_E_INTERNAL_ERROR);


    SEC2TXT(SEC_E_INVALID_HANDLE);


    SEC2TXT(SEC_E_INVALID_PARAMETER);


    SEC2TXT(SEC_E_INVALID_TOKEN);


    SEC2TXT(SEC_E_ISSUING_CA_UNTRUSTED);


    SEC2TXT(SEC_E_ISSUING_CA_UNTRUSTED_KDC);


    SEC2TXT(SEC_E_KDC_CERT_EXPIRED);


    SEC2TXT(SEC_E_KDC_CERT_REVOKED);


    SEC2TXT(SEC_E_KDC_INVALID_REQUEST);


    SEC2TXT(SEC_E_KDC_UNABLE_TO_REFER);


    SEC2TXT(SEC_E_KDC_UNKNOWN_ETYPE);


    SEC2TXT(SEC_E_LOGON_DENIED);


    SEC2TXT(SEC_E_MAX_REFERRALS_EXCEEDED);


    SEC2TXT(SEC_E_MESSAGE_ALTERED);


    SEC2TXT(SEC_E_MULTIPLE_ACCOUNTS);


    SEC2TXT(SEC_E_MUST_BE_KDC);


    SEC2TXT(SEC_E_NOT_OWNER);


    SEC2TXT(SEC_E_NO_AUTHENTICATING_AUTHORITY);


    SEC2TXT(SEC_E_NO_CREDENTIALS);


    SEC2TXT(SEC_E_NO_IMPERSONATION);


    SEC2TXT(SEC_E_NO_IP_ADDRESSES);


    SEC2TXT(SEC_E_NO_KERB_KEY);


    SEC2TXT(SEC_E_NO_PA_DATA);


    SEC2TXT(SEC_E_NO_S4U_PROT_SUPPORT);


    SEC2TXT(SEC_E_NO_TGT_REPLY);


    SEC2TXT(SEC_E_OUT_OF_SEQUENCE);


    SEC2TXT(SEC_E_PKINIT_CLIENT_FAILURE);


    SEC2TXT(SEC_E_PKINIT_NAME_MISMATCH);


    SEC2TXT(SEC_E_POLICY_NLTM_ONLY);


    SEC2TXT(SEC_E_QOP_NOT_SUPPORTED);


    SEC2TXT(SEC_E_REVOCATION_OFFLINE_C);


    SEC2TXT(SEC_E_REVOCATION_OFFLINE_KDC);


    SEC2TXT(SEC_E_SECPKG_NOT_FOUND);


    SEC2TXT(SEC_E_SECURITY_QOS_FAILED);


    SEC2TXT(SEC_E_SHUTDOWN_IN_PROGRESS);


    SEC2TXT(SEC_E_SMARTCARD_CERT_EXPIRED);


    SEC2TXT(SEC_E_SMARTCARD_CERT_REVOKED);


    SEC2TXT(SEC_E_SMARTCARD_LOGON_REQUIRED);


    SEC2TXT(SEC_E_STRONG_CRYPTO_NOT_SUPPORTED);


    SEC2TXT(SEC_E_TARGET_UNKNOWN);


    SEC2TXT(SEC_E_TIME_SKEW);


    SEC2TXT(SEC_E_TOO_MANY_PRINCIPALS);


    SEC2TXT(SEC_E_UNFINISHED_CONTEXT_DELETED);


    SEC2TXT(SEC_E_UNKNOWN_CREDENTIALS);


    SEC2TXT(SEC_E_UNSUPPORTED_FUNCTION);


    SEC2TXT(SEC_E_UNSUPPORTED_PREAUTH);


    SEC2TXT(SEC_E_UNTRUSTED_ROOT);


    SEC2TXT(SEC_E_WRONG_CREDENTIAL_HANDLE);


    SEC2TXT(SEC_E_WRONG_PRINCIPAL);


    SEC2TXT(SEC_I_COMPLETE_AND_CONTINUE);


    SEC2TXT(SEC_I_COMPLETE_NEEDED);


    SEC2TXT(SEC_I_CONTEXT_EXPIRED);


    SEC2TXT(SEC_I_CONTINUE_NEEDED);


    SEC2TXT(SEC_I_INCOMPLETE_CREDENTIALS);


    SEC2TXT(SEC_I_LOCAL_LOGON);


    SEC2TXT(SEC_I_NO_LSA_CONTEXT);


    SEC2TXT(SEC_I_RENEGOTIATE);


    SEC2TXT(SEC_I_SIGNATURE_NEEDED);


    default:
      txt = "Unknown error";
  }

  if(err == SEC_E_ILLEGAL_MESSAGE) {


    msnprintf(buf, buflen,
              "SEC_E_ILLEGAL_MESSAGE (0x%08X) - This error usually occurs "
              "when a fatal SSL/TLS alert is received (e.g. handshake failed)."
              " More detail may be available in the Windows System event log.",
              err);
  }
  else {
    char txtbuf[80];





    char msgbuf[256];





    msnprintf(txtbuf, sizeof(txtbuf), "%s (0x%08X)", txt, err);








    if(get_winapi_error(err, msgbuf, sizeof(msgbuf)))







      msnprintf(buf, buflen, "%s - %s", txtbuf, msgbuf);
    else {
      strncpy(buf, txtbuf, buflen);

      buf[buflen - 1] = '\0';

    }




  }

#else

  if(err == SEC_E_OK)
    txt = "No error";
  else
    txt = "Error";

  strncpy(buf, txt, buflen);
  buf[buflen - 1] = '\0';
#endif



  if(errno != old_errno)
    errno = old_errno;

#ifdef PRESERVE_WINDOWS_ERROR_CODE
  if(old_win_err != GetLastError())
    SetLastError(old_win_err);
#endif

  return buf;
}
#endif /* USE_WINDOWS_SSPI */
Changes to jni/curl/lib/strerror.h.
23
24
25
26
27
28
29



30
31
32
33
34
 ***************************************************************************/

#include "urldata.h"

#define STRERROR_LEN 128 /* a suitable length */

const char *Curl_strerror(int err, char *buf, size_t buflen);



#ifdef USE_WINDOWS_SSPI
const char *Curl_sspi_strerror(int err, char *buf, size_t buflen);
#endif

#endif /* HEADER_CURL_STRERROR_H */







>
>
>





23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 ***************************************************************************/

#include "urldata.h"

#define STRERROR_LEN 128 /* a suitable length */

const char *Curl_strerror(int err, char *buf, size_t buflen);
#if defined(WIN32) || defined(_WIN32_WCE)
const char *Curl_winapi_strerror(DWORD err, char *buf, size_t buflen);
#endif
#ifdef USE_WINDOWS_SSPI
const char *Curl_sspi_strerror(int err, char *buf, size_t buflen);
#endif

#endif /* HEADER_CURL_STRERROR_H */
Changes to jni/curl/lib/strtok.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/strtok.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_STRTOK_H
#define HEADER_CURL_STRTOK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_STRTOK_H
#define HEADER_CURL_STRTOK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/strtoofft.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/telnet.c.
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#define SUBBUFSIZE 512

#define CURL_SB_CLEAR(x)  x->subpointer = x->subbuffer
#define CURL_SB_TERM(x)                                 \
  do {                                                  \
    x->subend = x->subpointer;                          \
    CURL_SB_CLEAR(x);                                   \
  } WHILE_FALSE
#define CURL_SB_ACCUM(x,c)                                      \
  do {                                                          \
    if(x->subpointer < (x->subbuffer + sizeof(x->subbuffer)))   \
      *x->subpointer++ = (c);                                   \
  } WHILE_FALSE

#define  CURL_SB_GET(x) ((*x->subpointer++)&0xff)
#define  CURL_SB_LEN(x) (x->subend - x->subpointer)

/* For posterity:
#define  CURL_SB_PEEK(x) ((*x->subpointer)&0xff)
#define  CURL_SB_EOF(x) (x->subpointer >= x->subend) */







|




|







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#define SUBBUFSIZE 512

#define CURL_SB_CLEAR(x)  x->subpointer = x->subbuffer
#define CURL_SB_TERM(x)                                 \
  do {                                                  \
    x->subend = x->subpointer;                          \
    CURL_SB_CLEAR(x);                                   \
  } while(0)
#define CURL_SB_ACCUM(x,c)                                      \
  do {                                                          \
    if(x->subpointer < (x->subbuffer + sizeof(x->subbuffer)))   \
      *x->subpointer++ = (c);                                   \
  } while(0)

#define  CURL_SB_GET(x) ((*x->subpointer++)&0xff)
#define  CURL_SB_LEN(x) (x->subend - x->subpointer)

/* For posterity:
#define  CURL_SB_PEEK(x) ((*x->subpointer)&0xff)
#define  CURL_SB_EOF(x) (x->subpointer >= x->subend) */
Changes to jni/curl/lib/telnet.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TELNET_H
#define HEADER_CURL_TELNET_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TELNET_H
#define HEADER_CURL_TELNET_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/tftp.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TFTP_H
#define HEADER_CURL_TFTP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TFTP_H
#define HEADER_CURL_TFTP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/transfer.c.
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
      failf(data, "necessary data rewind wasn't possible");
      return CURLE_SEND_FAIL_REWIND;
    }
  }
  return CURLE_OK;
}

static int data_pending(const struct connectdata *conn)
{

  /* in the case of libssh2, we can never be really sure that we have emptied
     its internal buffers so we MUST always try until we get EAGAIN back */
  return conn->handler->protocol&(CURLPROTO_SCP|CURLPROTO_SFTP) ||
#if defined(USE_NGHTTP2)
    Curl_ssl_data_pending(conn, FIRSTSOCKET) ||
    /* For HTTP/2, we may read up everything including response body
       with header fields in Curl_http_readwrite_headers. If no
       content-length is provided, curl waits for the connection
       close, which we emulate it using conn->proto.httpc.closed =
       TRUE. The thing is if we read everything, then http2_recv won't
       be called and we cannot signal the HTTP/2 stream has closed. As
       a workaround, we return nonzero here to call http2_recv. */
    ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion >= 20);


#else
    Curl_ssl_data_pending(conn, FIRSTSOCKET);
#endif
}

/*
 * Check to see if CURLOPT_TIMECONDITION was met by comparing the time of the







|

>













>
>







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
      failf(data, "necessary data rewind wasn't possible");
      return CURLE_SEND_FAIL_REWIND;
    }
  }
  return CURLE_OK;
}

static int data_pending(const struct Curl_easy *data)
{
  struct connectdata *conn = data->conn;
  /* in the case of libssh2, we can never be really sure that we have emptied
     its internal buffers so we MUST always try until we get EAGAIN back */
  return conn->handler->protocol&(CURLPROTO_SCP|CURLPROTO_SFTP) ||
#if defined(USE_NGHTTP2)
    Curl_ssl_data_pending(conn, FIRSTSOCKET) ||
    /* For HTTP/2, we may read up everything including response body
       with header fields in Curl_http_readwrite_headers. If no
       content-length is provided, curl waits for the connection
       close, which we emulate it using conn->proto.httpc.closed =
       TRUE. The thing is if we read everything, then http2_recv won't
       be called and we cannot signal the HTTP/2 stream has closed. As
       a workaround, we return nonzero here to call http2_recv. */
    ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion >= 20);
#elif defined(ENABLE_QUIC)
    Curl_ssl_data_pending(conn, FIRSTSOCKET) || Curl_quic_data_pending(data);
#else
    Curl_ssl_data_pending(conn, FIRSTSOCKET);
#endif
}

/*
 * Check to see if CURLOPT_TIMECONDITION was met by comparing the time of the
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
    }

    if(k->keepon & KEEP_RECV_PAUSE) {
      /* this is a paused transfer */
      break;
    }

  } while(data_pending(conn) && maxloops--);

  if(maxloops <= 0) {
    /* we mark it as read-again-please */
    conn->cselect_bits = CURL_CSELECT_IN;
    *comeback = TRUE;
  }








|







917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
    }

    if(k->keepon & KEEP_RECV_PAUSE) {
      /* this is a paused transfer */
      break;
    }

  } while(data_pending(data) && maxloops--);

  if(maxloops <= 0) {
    /* we mark it as read-again-please */
    conn->cselect_bits = CURL_CSELECT_IN;
    *comeback = TRUE;
  }

1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
        result = Curl_done_sending(conn, k);
        if(result)
          return result;
      }
    }


  } WHILE_FALSE; /* just to break out from! */

  return CURLE_OK;
}

/*
 * Curl_readwrite() is the low-level function to be called when data is to
 * be read and written to/from the connection.







|







1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
        result = Curl_done_sending(conn, k);
        if(result)
          return result;
      }
    }


  } while(0); /* just to break out from! */

  return CURLE_OK;
}

/*
 * Curl_readwrite() is the low-level function to be called when data is to
 * be read and written to/from the connection.
Changes to jni/curl/lib/url.c.
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "dict.h"
#include "telnet.h"
#include "tftp.h"
#include "http.h"
#include "http2.h"
#include "file.h"
#include "curl_ldap.h"
#include "ssh.h"
#include "imap.h"
#include "url.h"
#include "connect.h"
#include "inet_ntop.h"
#include "http_ntlm.h"
#include "curl_rtmp.h"
#include "gopher.h"







|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "dict.h"
#include "telnet.h"
#include "tftp.h"
#include "http.h"
#include "http2.h"
#include "file.h"
#include "curl_ldap.h"
#include "vssh/ssh.h"
#include "imap.h"
#include "url.h"
#include "connect.h"
#include "inet_ntop.h"
#include "http_ntlm.h"
#include "curl_rtmp.h"
#include "gopher.h"
399
400
401
402
403
404
405

406
407
408

409
410
411
412
413
414
415
  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);
    data->share->dirty--;
    Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
  }


  free(data->req.doh.probe[0].serverdoh.memory);
  free(data->req.doh.probe[1].serverdoh.memory);
  curl_slist_free_all(data->req.doh.headers);


  /* destruct wildcard structures if it is needed */
  Curl_wildcard_dtor(&data->wildcard);
  Curl_freeset(data);
  free(data);
  return CURLE_OK;
}







>



>







399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);
    data->share->dirty--;
    Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
  }

#ifndef CURL_DISABLE_DOH
  free(data->req.doh.probe[0].serverdoh.memory);
  free(data->req.doh.probe[1].serverdoh.memory);
  curl_slist_free_all(data->req.doh.headers);
#endif

  /* destruct wildcard structures if it is needed */
  Curl_wildcard_dtor(&data->wildcard);
  Curl_freeset(data);
  free(data);
  return CURLE_OK;
}
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
static void conn_reset_all_postponed_data(struct connectdata *conn)
{
  conn_reset_postponed_data(conn, 0);
  conn_reset_postponed_data(conn, 1);
}
#else  /* ! USE_RECV_BEFORE_SEND_WORKAROUND */
/* Use "do-nothing" macro instead of function when workaround not used */
#define conn_reset_all_postponed_data(c) do {} WHILE_FALSE
#endif /* ! USE_RECV_BEFORE_SEND_WORKAROUND */


static void conn_shutdown(struct connectdata *conn)
{
  if(!conn)
    return;







|







670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
static void conn_reset_all_postponed_data(struct connectdata *conn)
{
  conn_reset_postponed_data(conn, 0);
  conn_reset_postponed_data(conn, 1);
}
#else  /* ! USE_RECV_BEFORE_SEND_WORKAROUND */
/* Use "do-nothing" macro instead of function when workaround not used */
#define conn_reset_all_postponed_data(c) do {} while(0)
#endif /* ! USE_RECV_BEFORE_SEND_WORKAROUND */


static void conn_shutdown(struct connectdata *conn)
{
  if(!conn)
    return;
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092

1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
      /*
       * Note that if we use a HTTP proxy in normal mode (no tunneling), we
       * check connections to that proxy and not to the actual remote server.
       */
      check = curr->ptr;
      curr = curr->next;

      if(check->bits.connect_only)
        /* connect-only connections will not be reused */
        continue;

      multiplexed = CONN_INUSE(check) &&
        (bundle->multiuse == BUNDLE_MULTIPLEX);

      if(canmultiplex) {
        if(check->bits.protoconnstart && check->bits.close)
          continue;

      }
      else {
        if(multiplexed) {
          /* can only happen within multi handles, and means that another easy
             handle is using this connection */
          continue;
        }

        if(Curl_resolver_asynch()) {
          /* ip_addr_str[0] is NUL only if the resolving of the name hasn't
             completed yet and until then we don't re-use this connection */
          if(!check->ip_addr_str[0]) {
            infof(data,
                  "Connection #%ld is still name resolving, can't reuse\n",
                  check->connection_id);
            continue;
          }
        }

        if((check->sock[FIRSTSOCKET] == CURL_SOCKET_BAD) ||
           check->bits.close) {
          if(!check->bits.close)
            foundPendingCandidate = TRUE;
          /* Don't pick a connection that hasn't connected yet or that is going
             to get closed. */
          infof(data, "Connection #%ld isn't open enough, can't reuse\n",
                check->connection_id);
          continue;
        }
      }

#ifdef USE_UNIX_SOCKETS







|
|






<
<
>



















|
<
<
|
|
<







1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092


1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113


1114
1115

1116
1117
1118
1119
1120
1121
1122
      /*
       * Note that if we use a HTTP proxy in normal mode (no tunneling), we
       * check connections to that proxy and not to the actual remote server.
       */
      check = curr->ptr;
      curr = curr->next;

      if(check->bits.connect_only || check->bits.close)
        /* connect-only or to-be-closed connections will not be reused */
        continue;

      multiplexed = CONN_INUSE(check) &&
        (bundle->multiuse == BUNDLE_MULTIPLEX);

      if(canmultiplex) {


        ;
      }
      else {
        if(multiplexed) {
          /* can only happen within multi handles, and means that another easy
             handle is using this connection */
          continue;
        }

        if(Curl_resolver_asynch()) {
          /* ip_addr_str[0] is NUL only if the resolving of the name hasn't
             completed yet and until then we don't re-use this connection */
          if(!check->ip_addr_str[0]) {
            infof(data,
                  "Connection #%ld is still name resolving, can't reuse\n",
                  check->connection_id);
            continue;
          }
        }

        if(check->sock[FIRSTSOCKET] == CURL_SOCKET_BAD) {


          foundPendingCandidate = TRUE;
          /* Don't pick a connection that hasn't connected yet */

          infof(data, "Connection #%ld isn't open enough, can't reuse\n",
                check->connection_id);
          continue;
        }
      }

#ifdef USE_UNIX_SOCKETS
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
      }

      if(!canmultiplex && check->data)
        /* this request can't be multiplexed but the checked connection is
           already in use so we skip it */
        continue;

      if(CONN_INUSE(check) && check->data &&
         (check->data->multi != needle->data->multi))
        /* this could be subject for multiplex use, but only if they belong to
         * the same multi handle */
        continue;

      if(needle->localdev || needle->localport) {
        /* If we are bound to a specific local end (IP+port), we must not
           re-use a random other one, although if we didn't ask for a







<
|







1186
1187
1188
1189
1190
1191
1192

1193
1194
1195
1196
1197
1198
1199
1200
      }

      if(!canmultiplex && check->data)
        /* this request can't be multiplexed but the checked connection is
           already in use so we skip it */
        continue;


      if(check->data && (check->data->multi != needle->data->multi))
        /* this could be subject for multiplex use, but only if they belong to
         * the same multi handle */
        continue;

      if(needle->localdev || needle->localport) {
        /* If we are bound to a specific local end (IP+port), we must not
           re-use a random other one, although if we didn't ask for a
1637
1638
1639
1640
1641
1642
1643

1644
1645
1646
1647
1648
1649
1650
  conn->localportrange = data->set.localportrange;
  conn->localport = data->set.localport;

  /* the close socket stuff needs to be copied to the connection struct as
     it may live on without (this specific) Curl_easy */
  conn->fclosesocket = data->set.fclosesocket;
  conn->closesocket_client = data->set.closesocket_client;


  return conn;
  error:

  Curl_llist_destroy(&conn->easyq, NULL);
  free(conn->localdev);
#ifdef USE_SSL







>







1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
  conn->localportrange = data->set.localportrange;
  conn->localport = data->set.localport;

  /* the close socket stuff needs to be copied to the connection struct as
     it may live on without (this specific) Curl_easy */
  conn->fclosesocket = data->set.fclosesocket;
  conn->closesocket_client = data->set.closesocket_client;
  conn->lastused = Curl_now(); /* used now */

  return conn;
  error:

  Curl_llist_destroy(&conn->easyq, NULL);
  free(conn->localdev);
#ifdef USE_SSL
1983
1984
1985
1986
1987
1988
1989


1990
1991

1992
1993
1994
1995
1996
1997
1998
 * Curl_easy for this single request.
 */

void Curl_free_request_state(struct Curl_easy *data)
{
  Curl_safefree(data->req.protop);
  Curl_safefree(data->req.newurl);


  Curl_close(&data->req.doh.probe[0].easy);
  Curl_close(&data->req.doh.probe[1].easy);

}


#ifndef CURL_DISABLE_PROXY
/****************************************************************
* Checks if the host is in the noproxy list. returns true if it matches
* and therefore the proxy should NOT be used.







>
>


>







1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
 * Curl_easy for this single request.
 */

void Curl_free_request_state(struct Curl_easy *data)
{
  Curl_safefree(data->req.protop);
  Curl_safefree(data->req.newurl);

#ifndef CURL_DISABLE_DOH
  Curl_close(&data->req.doh.probe[0].easy);
  Curl_close(&data->req.doh.probe[1].easy);
#endif
}


#ifndef CURL_DISABLE_PROXY
/****************************************************************
* Checks if the host is in the noproxy list. returns true if it matches
* and therefore the proxy should NOT be used.
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
     authentication phase). CONNECT_ONLY transfers also refuse reuse. */
  if((data->set.reuse_fresh && !data->state.this_is_a_follow) ||
     data->set.connect_only)
    reuse = FALSE;
  else
    reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe);

  /* If we found a reusable connection that is now marked as in use, we may
     still want to open a new connection if we are multiplexing. */
  if(reuse && !force_reuse && IsMultiplexingPossible(data, conn_temp)) {
    size_t multiplexed = CONN_INUSE(conn_temp);
    if(multiplexed > 0) {
      infof(data, "Found connection %ld, with %zu requests on it\n",
            conn_temp->connection_id, multiplexed);

      if(Curl_conncache_bundle_size(conn_temp) < max_host_connections &&
         Curl_conncache_size(data) < max_total_connections) {
        /* We want a new connection anyway */
        reuse = FALSE;

        infof(data, "We can reuse, but we want a new connection anyway\n");
        Curl_conncache_return_conn(conn_temp);
      }
    }
  }

  if(reuse) {
    /*
     * We already have a connection for this, we got the former connection
     * in the conn_temp variable and thus we need to cleanup the one we
     * just allocated before we can move along and use the previously
     * existing one.
     */







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







3590
3591
3592
3593
3594
3595
3596



















3597
3598
3599
3600
3601
3602
3603
     authentication phase). CONNECT_ONLY transfers also refuse reuse. */
  if((data->set.reuse_fresh && !data->state.this_is_a_follow) ||
     data->set.connect_only)
    reuse = FALSE;
  else
    reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe);




















  if(reuse) {
    /*
     * We already have a connection for this, we got the former connection
     * in the conn_temp variable and thus we need to cleanup the one we
     * just allocated before we can move along and use the previously
     * existing one.
     */
Changes to jni/curl/lib/urldata.h.
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

#include "mime.h"
#include "imap.h"
#include "pop3.h"
#include "smtp.h"
#include "ftp.h"
#include "file.h"
#include "ssh.h"
#include "http.h"
#include "rtsp.h"
#include "smb.h"
#include "wildcard.h"
#include "multihandle.h"
#include "quic.h"








|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

#include "mime.h"
#include "imap.h"
#include "pop3.h"
#include "smtp.h"
#include "ftp.h"
#include "file.h"
#include "vssh/ssh.h"
#include "http.h"
#include "rtsp.h"
#include "smb.h"
#include "wildcard.h"
#include "multihandle.h"
#include "quic.h"

253
254
255
256
257
258
259

260
261
262
263
264
265
266
  char *password; /* TLS password (for, e.g., SRP) */
  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
#endif
  BIT(certinfo);     /* gather lots of certificate info */
  BIT(falsestart);
  BIT(enable_beast); /* allow this flaw for interoperability's sake*/
  BIT(no_revoke);    /* disable SSL certificate revocation checks */

};

struct ssl_general_config {
  size_t max_ssl_sessions; /* SSL session id cache size */
};

/* information stored about one single SSL session */







>







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
  char *password; /* TLS password (for, e.g., SRP) */
  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
#endif
  BIT(certinfo);     /* gather lots of certificate info */
  BIT(falsestart);
  BIT(enable_beast); /* allow this flaw for interoperability's sake*/
  BIT(no_revoke);    /* disable SSL certificate revocation checks */
  BIT(no_partialchain); /* don't accept partial certificate chains */
};

struct ssl_general_config {
  size_t max_ssl_sessions; /* SSL session id cache size */
};

/* information stored about one single SSL session */
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

enum upgrade101 {
  UPGR101_INIT,               /* default state */
  UPGR101_REQUESTED,          /* upgrade requested */
  UPGR101_RECEIVED,           /* response received */
  UPGR101_WORKING             /* talking upgraded protocol */
};



















struct dohresponse {
  unsigned char *memory;
  size_t size;
};

/* one of these for each DoH request */
struct dnsprobe {
  CURL *easy;
  int dnstype;
  unsigned char dohbuffer[512];
  size_t dohlen;
  struct dohresponse serverdoh;
};

struct dohdata {
  struct curl_slist *headers;
  struct dnsprobe probe[2];
  unsigned int pending; /* still outstanding requests */
  const char *host;
  int port;
};

/*
 * Request specific data in the easy handle (Curl_easy).  Previously,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

















|







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

enum upgrade101 {
  UPGR101_INIT,               /* default state */
  UPGR101_REQUESTED,          /* upgrade requested */
  UPGR101_RECEIVED,           /* response received */
  UPGR101_WORKING             /* talking upgraded protocol */
};

enum doh_slots {
  /* Explicit values for first two symbols so as to match hard-coded
   * constants in existing code
   */
  DOH_PROBE_SLOT_IPADDR_V4 = 0, /* make 'V4' stand out for readability */
  DOH_PROBE_SLOT_IPADDR_V6 = 1, /* 'V6' likewise */

  /* Space here for (possibly build-specific) additional slot definitions */

  /* for example */
  /* #ifdef WANT_DOH_FOOBAR_TXT */
  /*   DOH_PROBE_SLOT_FOOBAR_TXT, */
  /* #endif */

  /* AFTER all slot definitions, establish how many we have */
  DOH_PROBE_SLOTS
};

struct dohresponse {
  unsigned char *memory;
  size_t size;
};

/* one of these for each DoH request */
struct dnsprobe {
  CURL *easy;
  int dnstype;
  unsigned char dohbuffer[512];
  size_t dohlen;
  struct dohresponse serverdoh;
};

struct dohdata {
  struct curl_slist *headers;
  struct dnsprobe probe[DOH_PROBE_SLOTS];
  unsigned int pending; /* still outstanding requests */
  const char *host;
  int port;
};

/*
 * Request specific data in the easy handle (Curl_easy).  Previously,
Changes to jni/curl/lib/vauth/cram.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/vauth/digest.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DIGEST_H
#define HEADER_CURL_DIGEST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_DIGEST_H
#define HEADER_CURL_DIGEST_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/version.c.
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

#include "curl_setup.h"

#include <curl/curl.h>
#include "urldata.h"
#include "vtls/vtls.h"
#include "http2.h"
#include "ssh.h"
#include "quic.h"
#include "curl_printf.h"

#ifdef USE_ARES
#  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
     (defined(WIN32) || defined(__SYMBIAN32__))
#    define CARES_STATICLIB







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

#include "curl_setup.h"

#include <curl/curl.h>
#include "urldata.h"
#include "vtls/vtls.h"
#include "http2.h"
#include "vssh/ssh.h"
#include "quic.h"
#include "curl_printf.h"

#ifdef USE_ARES
#  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \
     (defined(WIN32) || defined(__SYMBIAN32__))
#    define CARES_STATICLIB
Changes to jni/curl/lib/vquic/ngtcp2.c.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* #define DEBUG_NGTCP2 */
#ifdef CURLDEBUG
#define DEBUG_HTTP3
#endif
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

/*
 * This holds outgoing HTTP/3 stream data that is used by nghttp3 until acked.
 * It is used as a circular buffer. Add new bytes at the end until it reaches
 * the far end, then start over at index 0 again.
 */







|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* #define DEBUG_NGTCP2 */
#ifdef CURLDEBUG
#define DEBUG_HTTP3
#endif
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } while(0)
#endif

/*
 * This holds outgoing HTTP/3 stream data that is used by nghttp3 until acked.
 * It is used as a circular buffer. Add new bytes at the end until it reaches
 * the far end, then start over at index 0 again.
 */
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
  int level = quic_from_ossl_level(ossl_level);

  if(ngtcp2_crypto_derive_and_install_key(
         qs->qconn, ssl, NULL, NULL, NULL, NULL, NULL, NULL, level, rx_secret,
         tx_secret, secretlen, NGTCP2_CRYPTO_SIDE_CLIENT) != 0)
    return 0;

  if(level == NGTCP2_CRYPTO_LEVEL_APP && init_ngh3_conn(qs) != CURLE_OK)

    return 0;


  return 1;
}

static int quic_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,
                                   const uint8_t *data, size_t len)
{
  struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
  struct quic_handshake *crypto_data;
  ngtcp2_crypto_level level = quic_from_ossl_level(ossl_level);
  int rv;

  crypto_data = &qs->client_crypto_data[level];
  if(crypto_data->buf == NULL) {
    crypto_data->buf = malloc(4096);


    crypto_data->alloclen = 4096;
    /* TODO Explode if malloc failed */
  }

  /* TODO Just pretend that handshake does not grow more than 4KiB for
     now */
  assert(crypto_data->len + len <= crypto_data->alloclen);

  memcpy(&crypto_data->buf[crypto_data->len], data, len);
  crypto_data->len += len;

  rv = ngtcp2_conn_submit_crypto_data(
      qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len),
      len);
  if(rv) {
    H3BUGF(fprintf(stderr, "write_client_handshake failed\n"));
  }
  assert(0 == rv);

  return 1;
}







|
>
|
>












|


>
>

<










|
|







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
  int level = quic_from_ossl_level(ossl_level);

  if(ngtcp2_crypto_derive_and_install_key(
         qs->qconn, ssl, NULL, NULL, NULL, NULL, NULL, NULL, level, rx_secret,
         tx_secret, secretlen, NGTCP2_CRYPTO_SIDE_CLIENT) != 0)
    return 0;

  if(level == NGTCP2_CRYPTO_LEVEL_APP) {
    if(init_ngh3_conn(qs) != CURLE_OK)
      return 0;
  }

  return 1;
}

static int quic_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,
                                   const uint8_t *data, size_t len)
{
  struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
  struct quic_handshake *crypto_data;
  ngtcp2_crypto_level level = quic_from_ossl_level(ossl_level);
  int rv;

  crypto_data = &qs->crypto_data[level];
  if(crypto_data->buf == NULL) {
    crypto_data->buf = malloc(4096);
    if(!crypto_data->buf)
      return 0;
    crypto_data->alloclen = 4096;

  }

  /* TODO Just pretend that handshake does not grow more than 4KiB for
     now */
  assert(crypto_data->len + len <= crypto_data->alloclen);

  memcpy(&crypto_data->buf[crypto_data->len], data, len);
  crypto_data->len += len;

  rv = ngtcp2_conn_submit_crypto_data(
    qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len),
    len);
  if(rv) {
    H3BUGF(fprintf(stderr, "write_client_handshake failed\n"));
  }
  assert(0 == rv);

  return 1;
}
240
241
242
243
244
245
246


247
248
249
250
251
252
253
254
255

  SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION);
  SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION);

  SSL_CTX_set_default_verify_paths(ssl_ctx);

  if(SSL_CTX_set_ciphersuites(ssl_ctx, QUIC_CIPHERS) != 1) {


    failf(data, "SSL_CTX_set_ciphersuites: %s",
          ERR_error_string(ERR_get_error(), NULL));
    return NULL;
  }

  if(SSL_CTX_set1_groups_list(ssl_ctx, QUIC_GROUPS) != 1) {
    failf(data, "SSL_CTX_set1_groups_list failed");
    return NULL;
  }







>
>
|
<







243
244
245
246
247
248
249
250
251
252

253
254
255
256
257
258
259

  SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION);
  SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION);

  SSL_CTX_set_default_verify_paths(ssl_ctx);

  if(SSL_CTX_set_ciphersuites(ssl_ctx, QUIC_CIPHERS) != 1) {
    char error_buffer[256];
    ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
    failf(data, "SSL_CTX_set_ciphersuites: %s", error_buffer);

    return NULL;
  }

  if(SSL_CTX_set1_groups_list(ssl_ctx, QUIC_GROUPS) != 1) {
    failf(data, "SSL_CTX_set1_groups_list failed");
    return NULL;
  }
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
}

static int cb_initial(ngtcp2_conn *quic, void *user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;

  if(ngtcp2_crypto_read_write_crypto_data(
         quic, qs->ssl, NGTCP2_CRYPTO_LEVEL_INITIAL, NULL, 0) != 0)
    return NGTCP2_ERR_CALLBACK_FAILURE;

  return 0;
}

static int
cb_recv_crypto_data(ngtcp2_conn *tconn, ngtcp2_crypto_level crypto_level,







|







305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
}

static int cb_initial(ngtcp2_conn *quic, void *user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;

  if(ngtcp2_crypto_read_write_crypto_data(
       quic, qs->ssl, NGTCP2_CRYPTO_LEVEL_INITIAL, NULL, 0) != 0)
    return NGTCP2_ERR_CALLBACK_FAILURE;

  return 0;
}

static int
cb_recv_crypto_data(ngtcp2_conn *tconn, ngtcp2_crypto_level crypto_level,
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
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  (void)tconn;
  infof(qs->conn->data, "QUIC handshake is completed\n");

  return 0;
}











static int cb_recv_stream_data(ngtcp2_conn *tconn, int64_t stream_id,
                               int fin, uint64_t offset,
                               const uint8_t *buf, size_t buflen,
                               void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  ssize_t nconsumed;
  (void)offset;
  (void)stream_user_data;

  infof(qs->conn->data, "Received %ld bytes data on stream %u\n",
        buflen, stream_id);

  nconsumed =
    nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
  if(nconsumed < 0) {
    failf(qs->conn->data, "nghttp3_conn_read_stream returned error: %s\n",
          nghttp3_strerror((int)nconsumed));
    return NGTCP2_ERR_CALLBACK_FAILURE;
  }




  ngtcp2_conn_extend_max_stream_offset(tconn, stream_id, nconsumed);
  ngtcp2_conn_extend_max_offset(tconn, nconsumed);

  return 0;
}

static int







>
>
>
>
>
>
>
>
>
>











<
<
<








>
>
>







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
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  (void)tconn;
  infof(qs->conn->data, "QUIC handshake is completed\n");

  return 0;
}

static void extend_stream_window(ngtcp2_conn *tconn,
                                 struct HTTP *stream)
{
  size_t thismuch = stream->unacked_window;
  ngtcp2_conn_extend_max_stream_offset(tconn, stream->stream3_id, thismuch);
  ngtcp2_conn_extend_max_offset(tconn, thismuch);
  stream->unacked_window = 0;
}


static int cb_recv_stream_data(ngtcp2_conn *tconn, int64_t stream_id,
                               int fin, uint64_t offset,
                               const uint8_t *buf, size_t buflen,
                               void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = (struct quicsocket *)user_data;
  ssize_t nconsumed;
  (void)offset;
  (void)stream_user_data;




  nconsumed =
    nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
  if(nconsumed < 0) {
    failf(qs->conn->data, "nghttp3_conn_read_stream returned error: %s\n",
          nghttp3_strerror((int)nconsumed));
    return NGTCP2_ERR_CALLBACK_FAILURE;
  }

  /* number of bytes inside buflen which consists of framing overhead
   * including QPACK HEADERS. In other words, it does not consume payload of
   * DATA frame. */
  ngtcp2_conn_extend_max_stream_offset(tconn, stream_id, nconsumed);
  ngtcp2_conn_extend_max_offset(tconn, nconsumed);

  return 0;
}

static int
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
  NULL, /* recv_stateless_reset */
  cb_recv_retry,
  cb_extend_max_local_streams_bidi,
  NULL, /* extend_max_local_streams_uni */
  NULL, /* rand  */
  cb_get_new_connection_id,
  NULL, /* remove_connection_id */
  NULL, /* update_key */
  NULL, /* path_validation */
  NULL, /* select_preferred_addr */
  cb_stream_reset,
  NULL, /* extend_max_remote_streams_bidi */
  NULL, /* extend_max_remote_streams_uni */
  cb_extend_max_stream_data,
};







|







524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
  NULL, /* recv_stateless_reset */
  cb_recv_retry,
  cb_extend_max_local_streams_bidi,
  NULL, /* extend_max_local_streams_uni */
  NULL, /* rand  */
  cb_get_new_connection_id,
  NULL, /* remove_connection_id */
  ngtcp2_crypto_update_key_cb, /* update_key */
  NULL, /* path_validation */
  NULL, /* select_preferred_addr */
  cb_stream_reset,
  NULL, /* extend_max_remote_streams_bidi */
  NULL, /* extend_max_remote_streams_uni */
  cb_extend_max_stream_data,
};
652
653
654
655
656
657
658

659
660







661
662
663
664
665
666
667
{
  return ng_getsock((struct connectdata *)conn, socks);
}

static CURLcode ng_disconnect(struct connectdata *conn,
                              bool dead_connection)
{

  (void)conn;
  (void)dead_connection;







  return CURLE_OK;
}

static unsigned int ng_conncheck(struct connectdata *conn,
                                 unsigned int checks_to_perform)
{
  (void)conn;







>
|

>
>
>
>
>
>
>







666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
{
  return ng_getsock((struct connectdata *)conn, socks);
}

static CURLcode ng_disconnect(struct connectdata *conn,
                              bool dead_connection)
{
  int i;
  struct quicsocket *qs = &conn->hequic[0];
  (void)dead_connection;
  if(qs->ssl)
    SSL_free(qs->ssl);
  for(i = 0; i < 3; i++)
    free(qs->crypto_data[i].buf);
  nghttp3_conn_del(qs->h3conn);
  ngtcp2_conn_del(qs->qconn);
  SSL_CTX_free(qs->sslctx);
  return CURLE_OK;
}

static unsigned int ng_conncheck(struct connectdata *conn,
                                 unsigned int checks_to_perform)
{
  (void)conn;
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
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  H3BUGF(infof(data, "cb_h3_stream_close CALLED\n"));

  stream->closed = TRUE;
  Curl_expire(data, 0, EXPIRE_QUIC);



  return 0;
}






























































































static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream_id,
                           const uint8_t *buf, size_t buflen,
                           void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  size_t ncopy;
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;

  (void)conn;
  H3BUGF(infof(data, "cb_h3_recv_data CALLED with %d bytes\n", buflen));

  /* TODO: this needs to be handled properly */
  DEBUGASSERT(buflen <= stream->len);

  ncopy = CURLMIN(stream->len, buflen);
  memcpy(stream->mem, buf, ncopy);
  stream->len -= ncopy;
  stream->memlen += ncopy;
#if 0 /* extra debugging of incoming h3 data */
  fprintf(stderr, "!! Copies %zd bytes to %p (total %zd)\n",
          ncopy, stream->mem, stream->memlen);
  {
    size_t i;
    for(i = 0; i < ncopy; i++) {
      fprintf(stderr, "!! data[%d]: %02x '%c'\n", i, buf[i], buf[i]);
    }
  }
#endif
  stream->mem += ncopy;

  ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, buflen);
  ngtcp2_conn_extend_max_offset(qs->qconn, buflen);

  return 0;
}

static int cb_h3_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
                                  size_t consumed, void *user_data,
                                  void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  (void)conn;
  (void)stream_user_data;


  ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed);
  ngtcp2_conn_extend_max_offset(qs->qconn, consumed);

  return 0;
}

/* Decode HTTP status code.  Returns -1 if no valid status code was
   decoded. (duplicate from http2.c) */
static int decode_status_code(const uint8_t *value, size_t len)
{







>
>
>



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<


>

<

<
|
|
<
<
|
<
<
<
<
<
<
<
<
|
<
<
|
|
<
<
|










>



<







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
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  H3BUGF(infof(data, "cb_h3_stream_close CALLED\n"));

  stream->closed = TRUE;
  Curl_expire(data, 0, EXPIRE_QUIC);
  /* make sure that ngh3_stream_recv is called again to complete the transfer
     even if there are no more packets to be received from the server. */
  data->state.drain = 1;
  return 0;
}

/* Minimum size of the overflow buffer */
#define OVERFLOWSIZE 1024

/*
 * allocate_overflow() ensures that there is room for incoming data in the
 * overflow buffer, growing it to accommodate the new data if necessary. We
 * may need to use the overflow buffer because we can't precisely limit the
 * amount of HTTP/3 header data we receive using QUIC flow control mechanisms.
 */
static CURLcode allocate_overflow(struct Curl_easy *data,
                                  struct HTTP *stream,
                                  size_t length)
{
  size_t maxleft;
  size_t newsize;
  /* length can be arbitrarily large, so take care not to overflow newsize */
  maxleft = CURL_MAX_READ_SIZE - stream->overflow_buflen;
  if(length > maxleft) {
    /* The reason to have a max limit for this is to avoid the risk of a bad
       server feeding libcurl with a highly compressed list of headers that
       will cause our overflow buffer to grow too large */
    failf(data, "Rejected %zu bytes of overflow data (max is %d)!",
          stream->overflow_buflen + length, CURL_MAX_READ_SIZE);
    return CURLE_OUT_OF_MEMORY;
  }
  newsize = stream->overflow_buflen + length;
  if(newsize > stream->overflow_bufsize) {
    /* We enlarge the overflow buffer as it is too small */
    char *newbuff;
    newsize = CURLMAX(newsize * 3 / 2, stream->overflow_bufsize*2);
    newsize = CURLMIN(CURLMAX(OVERFLOWSIZE, newsize), CURL_MAX_READ_SIZE);
    newbuff = realloc(stream->overflow_buf, newsize);
    if(!newbuff) {
      failf(data, "Failed to alloc memory for overflow buffer!");
      return CURLE_OUT_OF_MEMORY;
    }
    stream->overflow_buf = newbuff;
    stream->overflow_bufsize = newsize;
    infof(data, "Grew HTTP/3 overflow buffer to %zu bytes\n", newsize);
  }
  return CURLE_OK;
}

/*
 * write_data() copies data to the stream's receive buffer. If not enough
 * space is available in the receive buffer, it copies the rest to the
 * stream's overflow buffer.
 */
static CURLcode write_data(struct Curl_easy *data,
                           struct HTTP *stream,
                           const void *mem, size_t memlen)
{
  CURLcode result = CURLE_OK;
  const char *buf = mem;
  size_t ncopy = memlen;
  /* copy as much as possible to the receive buffer */
  if(stream->len) {
    size_t len = CURLMIN(ncopy, stream->len);
#if 0 /* extra debugging of incoming h3 data */
    fprintf(stderr, "!! Copies %zd bytes to %p (total %zd)\n",
            len, stream->mem, stream->memlen);
#endif
    memcpy(stream->mem, buf, len);
    stream->len -= len;
    stream->memlen += len;
    stream->mem += len;
    buf += len;
    ncopy -= len;
  }
  /* copy the rest to the overflow buffer */
  if(ncopy) {
    result = allocate_overflow(data, stream, ncopy);
    if(result) {
      return result;
    }
#if 0 /* extra debugging of incoming h3 data */
    fprintf(stderr, "!! Copies %zd overflow bytes to %p (total %zd)\n",
            ncopy, stream->overflow_buf, stream->overflow_buflen);
#endif
    memcpy(stream->overflow_buf + stream->overflow_buflen, buf, ncopy);
    stream->overflow_buflen += ncopy;
  }
#if 0 /* extra debugging of incoming h3 data */
  {
    size_t i;
    for(i = 0; i < memlen; i++) {
      fprintf(stderr, "!! data[%d]: %02x '%c'\n", i, buf[i], buf[i]);
    }
  }
#endif
  return result;
}

static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream_id,
                           const uint8_t *buf, size_t buflen,
                           void *user_data, void *stream_user_data)
{


  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  CURLcode result = CURLE_OK;
  (void)conn;



  result = write_data(data, stream, buf, buflen);
  if(result) {


    return -1;








  }


  stream->unacked_window += buflen;
  (void)stream_id;


  (void)user_data;
  return 0;
}

static int cb_h3_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
                                  size_t consumed, void *user_data,
                                  void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  (void)conn;
  (void)stream_user_data;
  (void)stream_id;

  ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed);
  ngtcp2_conn_extend_max_offset(qs->qconn, consumed);

  return 0;
}

/* Decode HTTP status code.  Returns -1 if no valid status code was
   decoded. (duplicate from http2.c) */
static int decode_status_code(const uint8_t *value, size_t len)
{
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
}

static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
                             void *user_data, void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;

  (void)conn;
  (void)stream_id;
  (void)user_data;


  if(stream->memlen >= 2) {
    memcpy(stream->mem, "\r\n", 2);
    stream->len -= 2;
    stream->memlen += 2;
    stream->mem += 2;

  }
  return 0;
}

static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
                             int32_t token, nghttp3_rcbuf *name,
                             nghttp3_rcbuf *value, uint8_t flags,
                             void *user_data, void *stream_user_data)
{
  nghttp3_vec h3name = nghttp3_rcbuf_get_buf(name);
  nghttp3_vec h3val = nghttp3_rcbuf_get_buf(value);
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  size_t ncopy;
  (void)conn;
  (void)stream_id;
  (void)token;
  (void)flags;
  (void)user_data;

  if(h3name.len == sizeof(":status") - 1 &&
     !memcmp(":status", h3name.base, h3name.len)) {


    int status = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(status != -1);
    msnprintf(stream->mem, stream->len, "HTTP/3 %03d \r\n", status);



  }

  else {
    /* store as a HTTP1-style header */
    msnprintf(stream->mem, stream->len, "%.*s: %.*s\n",
              h3name.len, h3name.base, h3val.len, h3val.base);


  }





  ncopy = strlen(stream->mem);
  stream->len -= ncopy;






  stream->memlen += ncopy;
  stream->mem += ncopy;
  return 0;
}

static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                                   uint64_t app_error_code,
                                   void *user_data,
                                   void *stream_user_data)







>




>
|
|
|
<
|
>













|








>
>


|
>
>
>
|
>


<
|
>
>
|
>
>
>
|
>
|
|
>
>
>
>
>
>
|
|







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
}

static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
                             void *user_data, void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  CURLcode result = CURLE_OK;
  (void)conn;
  (void)stream_id;
  (void)user_data;

  /* add a CRLF only if we've received some headers */
  if(stream->firstheader) {
    result = write_data(data, stream, "\r\n", 2);
    if(result) {

      return -1;
    }
  }
  return 0;
}

static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
                             int32_t token, nghttp3_rcbuf *name,
                             nghttp3_rcbuf *value, uint8_t flags,
                             void *user_data, void *stream_user_data)
{
  nghttp3_vec h3name = nghttp3_rcbuf_get_buf(name);
  nghttp3_vec h3val = nghttp3_rcbuf_get_buf(value);
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  CURLcode result = CURLE_OK;
  (void)conn;
  (void)stream_id;
  (void)token;
  (void)flags;
  (void)user_data;

  if(h3name.len == sizeof(":status") - 1 &&
     !memcmp(":status", h3name.base, h3name.len)) {
    char line[14]; /* status line is always 13 characters long */
    size_t ncopy;
    int status = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(status != -1);
    ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n", status);
    result = write_data(data, stream, line, ncopy);
    if(result) {
      return -1;
    }
  }
  else {
    /* store as a HTTP1-style header */

    result = write_data(data, stream, h3name.base, h3name.len);
    if(result) {
      return -1;
    }
    result = write_data(data, stream, ": ", 2);
    if(result) {
      return -1;
    }
    result = write_data(data, stream, h3val.base, h3val.len);
    if(result) {
      return -1;
    }
    result = write_data(data, stream, "\r\n", 2);
    if(result) {
      return -1;
    }
  }

  stream->firstheader = TRUE;
  return 0;
}

static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                                   uint64_t app_error_code,
                                   void *user_data,
                                   void *stream_user_data)
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
  fail:

  return result;
}

static Curl_recv ngh3_stream_recv;
static Curl_send ngh3_stream_send;
















/* incoming data frames on the h3 stream */
static ssize_t ngh3_stream_recv(struct connectdata *conn,
                                int sockindex,
                                char *buf,
                                size_t buffersize,
                                CURLcode *curlcode)
{
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = conn->data->req.protop;
  struct quicsocket *qs = conn->quic;

  if(!stream->memlen) {
    /* remember where to store incoming data for this stream and how big the
       buffer is */
    stream->mem = buf;
    stream->len = buffersize;
  }
  /* else, there's data in the buffer already */





  if(ng_process_ingress(conn, sockfd, qs)) {
    *curlcode = CURLE_RECV_ERROR;
    return -1;
  }
  if(ng_flush_egress(conn, sockfd, qs)) {
    *curlcode = CURLE_SEND_ERROR;
    return -1;
  }

  if(stream->memlen) {
    ssize_t memlen = stream->memlen;
    /* data arrived */
    *curlcode = CURLE_OK;
    /* reset to allow more data to come */
    stream->memlen = 0;
    stream->mem = buf;
    stream->len = buffersize;


    H3BUGF(infof(conn->data, "!! ngh3_stream_recv returns %zd bytes at %p\n",
                 memlen, buf));



    return memlen;
  }

  if(stream->closed) {
    *curlcode = CURLE_OK;
    return 0;
  }







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



















>
>
>
>


















>
>
|
|
>
>
>







1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
  fail:

  return result;
}

static Curl_recv ngh3_stream_recv;
static Curl_send ngh3_stream_send;

static size_t drain_overflow_buffer(struct HTTP *stream)
{
  size_t ncopy = CURLMIN(stream->overflow_buflen, stream->len);
  if(ncopy > 0) {
    memcpy(stream->mem, stream->overflow_buf, ncopy);
    stream->len -= ncopy;
    stream->mem += ncopy;
    stream->memlen += ncopy;
    stream->overflow_buflen -= ncopy;
    memmove(stream->overflow_buf, stream->overflow_buf + ncopy,
            stream->overflow_buflen);
  }
  return ncopy;
}

/* incoming data frames on the h3 stream */
static ssize_t ngh3_stream_recv(struct connectdata *conn,
                                int sockindex,
                                char *buf,
                                size_t buffersize,
                                CURLcode *curlcode)
{
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = conn->data->req.protop;
  struct quicsocket *qs = conn->quic;

  if(!stream->memlen) {
    /* remember where to store incoming data for this stream and how big the
       buffer is */
    stream->mem = buf;
    stream->len = buffersize;
  }
  /* else, there's data in the buffer already */

  /* if there's data in the overflow buffer from a previous call, copy as much
     as possible to the receive buffer before receiving more */
  drain_overflow_buffer(stream);

  if(ng_process_ingress(conn, sockfd, qs)) {
    *curlcode = CURLE_RECV_ERROR;
    return -1;
  }
  if(ng_flush_egress(conn, sockfd, qs)) {
    *curlcode = CURLE_SEND_ERROR;
    return -1;
  }

  if(stream->memlen) {
    ssize_t memlen = stream->memlen;
    /* data arrived */
    *curlcode = CURLE_OK;
    /* reset to allow more data to come */
    stream->memlen = 0;
    stream->mem = buf;
    stream->len = buffersize;
    /* extend the stream window with the data we're consuming and send out
       any additional packets to tell the server that we can receive more */
    extend_stream_window(qs->qconn, stream);
    if(ng_flush_egress(conn, sockfd, qs)) {
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
    return memlen;
  }

  if(stream->closed) {
    *curlcode = CURLE_OK;
    return 0;
  }
1586
1587
1588
1589
1590
1591
1592




























1593
    struct quicsocket *qs = conn->quic;
    stream->upload_done = TRUE;
    (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
  }

  return CURLE_OK;
}




























#endif







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
    struct quicsocket *qs = conn->quic;
    stream->upload_done = TRUE;
    (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
  }

  return CURLE_OK;
}

/*
 * Called from http.c:Curl_http_done when a request completes.
 */
void Curl_quic_done(struct Curl_easy *data, bool premature)
{
  (void)premature;
  if(data->conn->handler == &Curl_handler_http3) {
    /* only for HTTP/3 transfers */
    struct HTTP *stream = data->req.protop;
    Curl_safefree(stream->overflow_buf);
  }
}

/*
 * Called from transfer.c:data_pending to know if we should keep looping
 * to receive more data from the connection.
 */
bool Curl_quic_data_pending(const struct Curl_easy *data)
{
  /* We may have received more data than we're able to hold in the receive
     buffer and allocated an overflow buffer. Since it's possible that
     there's no more data coming on the socket, we need to keep reading
     until the overflow buffer is empty. */
  const struct HTTP *stream = data->req.protop;
  return stream->overflow_buflen > 0;
}

#endif
Changes to jni/curl/lib/vquic/ngtcp2.h.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  ngtcp2_conn *qconn;
  ngtcp2_cid dcid;
  ngtcp2_cid scid;
  uint32_t version;
  ngtcp2_settings settings;
  SSL_CTX *sslctx;
  SSL *ssl;
  struct quic_handshake client_crypto_data[3];
  /* the last TLS alert description generated by the local endpoint */
  uint8_t tls_alert;
  struct sockaddr_storage local_addr;
  socklen_t local_addrlen;

  nghttp3_conn *h3conn;
  nghttp3_conn_settings h3settings;







|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  ngtcp2_conn *qconn;
  ngtcp2_cid dcid;
  ngtcp2_cid scid;
  uint32_t version;
  ngtcp2_settings settings;
  SSL_CTX *sslctx;
  SSL *ssl;
  struct quic_handshake crypto_data[3];
  /* the last TLS alert description generated by the local endpoint */
  uint8_t tls_alert;
  struct sockaddr_storage local_addr;
  socklen_t local_addrlen;

  nghttp3_conn *h3conn;
  nghttp3_conn_settings h3settings;
Changes to jni/curl/lib/vquic/quiche.c.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "memdebug.h"

#define DEBUG_HTTP3
/* #define DEBUG_QUICHE */
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

#define QUIC_MAX_STREAMS (256*1024)
#define QUIC_MAX_DATA (1*1024*1024)
#define QUIC_IDLE_TIMEOUT (60 * 1000) /* milliseconds */

static CURLcode process_ingress(struct connectdata *conn,







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "memdebug.h"

#define DEBUG_HTTP3
/* #define DEBUG_QUICHE */
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } while(0)
#endif

#define QUIC_MAX_STREAMS (256*1024)
#define QUIC_MAX_DATA (1*1024*1024)
#define QUIC_IDLE_TIMEOUT (60 * 1000) /* milliseconds */

static CURLcode process_ingress(struct connectdata *conn,
375
376
377
378
379
380
381



382
383
384
385
386
387
388
  size_t olen = 0;

  if((name_len == 7) && !strncmp(":status", (char *)name, 7)) {
    msnprintf(headers->dest,
              headers->destlen, "HTTP/3 %.*s\n",
              (int) value_len, value);
  }



  else {
    msnprintf(headers->dest,
              headers->destlen, "%.*s: %.*s\n",
              (int)name_len, name, (int) value_len, value);
  }
  olen = strlen(headers->dest);
  headers->destlen -= olen;







>
>
>







375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
  size_t olen = 0;

  if((name_len == 7) && !strncmp(":status", (char *)name, 7)) {
    msnprintf(headers->dest,
              headers->destlen, "HTTP/3 %.*s\n",
              (int) value_len, value);
  }
  else if(!headers->nlen) {
    return CURLE_HTTP3;
  }
  else {
    msnprintf(headers->dest,
              headers->destlen, "%.*s: %.*s\n",
              (int)name_len, name, (int) value_len, value);
  }
  olen = strlen(headers->dest);
  headers->destlen -= olen;
429
430
431
432
433
434
435
436


437
438
439
440
441
442
443
      continue;
    }

    switch(quiche_h3_event_type(ev)) {
    case QUICHE_H3_EVENT_HEADERS:
      rc = quiche_h3_event_for_each_header(ev, cb_each_header, &headers);
      if(rc) {
        /* what do we do about this? */


      }
      recvd = headers.nlen;
      break;
    case QUICHE_H3_EVENT_DATA:
      if(!stream->firstbody) {
        /* add a header-body separator CRLF */
        buf[0] = '\r';







|
>
>







432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
      continue;
    }

    switch(quiche_h3_event_type(ev)) {
    case QUICHE_H3_EVENT_HEADERS:
      rc = quiche_h3_event_for_each_header(ev, cb_each_header, &headers);
      if(rc) {
        *curlcode = rc;
        failf(data, "Error in HTTP/3 response header");
        break;
      }
      recvd = headers.nlen;
      break;
    case QUICHE_H3_EVENT_DATA:
      if(!stream->firstbody) {
        /* add a header-body separator CRLF */
        buf[0] = '\r';
775
776
777
778
779
780
781
782



















783
                               NULL, 0, TRUE);
    if(sent < 0)
      return CURLE_SEND_ERROR;
  }

  return CURLE_OK;
}




















#endif








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

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
                               NULL, 0, TRUE);
    if(sent < 0)
      return CURLE_SEND_ERROR;
  }

  return CURLE_OK;
}

/*
 * Called from http.c:Curl_http_done when a request completes.
 */
void Curl_quic_done(struct Curl_easy *data, bool premature)
{
  (void)data;
  (void)premature;
}

/*
 * Called from transfer.c:data_pending to know if we should keep looping
 * to receive more data from the connection.
 */
bool Curl_quic_data_pending(const struct Curl_easy *data)
{
  (void)data;
  return FALSE;
}

#endif
Changes to jni/curl/lib/vssh/libssh.c.
93
94
95
96
97
98
99
100
101


102



103
104
105
106
107
108
109
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
#include "curl_path.h"

/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR
/* !checksrc! disable ASSIGNWITHINCONDITION 1 */
#define SSH_STRING_FREE_CHAR(x) \


    do { if((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0)



#endif

/* Local functions: */
static CURLcode myssh_connect(struct connectdata *conn, bool *done);
static CURLcode myssh_multi_statemach(struct connectdata *conn,
                                      bool *done);
static CURLcode myssh_do_it(struct connectdata *conn, bool *done);







<
|
>
>
|
>
>
>







93
94
95
96
97
98
99

100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
#include "curl_path.h"

/* A recent macro provided by libssh. Or make our own. */
#ifndef SSH_STRING_FREE_CHAR

#define SSH_STRING_FREE_CHAR(x)                 \
  do {                                          \
    if(x) {                                     \
      ssh_string_free_char(x);                  \
      x = NULL;                                 \
    }                                           \
  } while(0)
#endif

/* Local functions: */
static CURLcode myssh_connect(struct connectdata *conn, bool *done);
static CURLcode myssh_multi_statemach(struct connectdata *conn,
                                      bool *done);
static CURLcode myssh_do_it(struct connectdata *conn, bool *done);
Changes to jni/curl/lib/vssh/libssh2.c.
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
      enum curl_khmatch keymatch;
      curl_sshkeycallback func =
        data->set.ssh_keyfunc?data->set.ssh_keyfunc:sshkeycallback;
      struct curl_khkey knownkey;
      struct curl_khkey *knownkeyp = NULL;
      struct curl_khkey foundkey;


      keybit = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?



        LIBSSH2_KNOWNHOST_KEY_SSHRSA:LIBSSH2_KNOWNHOST_KEY_SSHDSS;






























#ifdef HAVE_LIBSSH2_KNOWNHOST_CHECKP
      keycheck = libssh2_knownhost_checkp(sshc->kh,
                                          conn->host.name,
                                          (conn->remote_port != PORT_SSH)?
                                          conn->remote_port:-1,
                                          remotekey, keylen,
                                          LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                          LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                          keybit,
                                          &host);
#else
      keycheck = libssh2_knownhost_check(sshc->kh,
                                         conn->host.name,
                                         remotekey, keylen,
                                         LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                         LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                         keybit,
                                         &host);
#endif

      infof(data, "SSH host check: %d, key: %s\n", keycheck,
            (keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
            host->key:"<none>");

      /* setup 'knownkey' */
      if(keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH) {
        knownkey.key = host->key;
        knownkey.len = 0;
        knownkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
          CURLKHTYPE_RSA : CURLKHTYPE_DSS;
        knownkeyp = &knownkey;
      }

      /* setup 'foundkey' */
      foundkey.key = remotekey;
      foundkey.len = keylen;
      foundkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
        CURLKHTYPE_RSA : CURLKHTYPE_DSS;

      /*
       * if any of the LIBSSH2_KNOWNHOST_CHECK_* defines and the
       * curl_khmatch enum are ever modified, we need to introduce a
       * translation table here!
       */
      keymatch = (enum curl_khmatch)keycheck;

      /* Ask the callback how to behave */
      Curl_set_in_callback(data, true);
      rc = func(data, knownkeyp, /* from the knownhosts file */
                &foundkey, /* from the remote host */
                keymatch, data->set.ssh_keyfunc_userp);
      Curl_set_in_callback(data, false);

    }
    else
      /* no remotekey means failure! */
      rc = CURLKHSTAT_REJECT;

    switch(rc) {
    default: /* unknown return codes will equal reject */







>
|
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>

|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|


|
|
|

|
|
|
|
|
|
|
|

|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
>







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
      enum curl_khmatch keymatch;
      curl_sshkeycallback func =
        data->set.ssh_keyfunc?data->set.ssh_keyfunc:sshkeycallback;
      struct curl_khkey knownkey;
      struct curl_khkey *knownkeyp = NULL;
      struct curl_khkey foundkey;

      switch(keytype) {
      case LIBSSH2_HOSTKEY_TYPE_RSA:
        keybit = LIBSSH2_KNOWNHOST_KEY_SSHRSA;
        break;
      case LIBSSH2_HOSTKEY_TYPE_DSS:
        keybit = LIBSSH2_KNOWNHOST_KEY_SSHDSS;
        break;
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
      case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
        keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_256;
        break;
#endif
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_384
      case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
        keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_384;
        break;
#endif
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_521
      case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
        keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_521;
        break;
#endif
#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
      case LIBSSH2_HOSTKEY_TYPE_ED25519:
        keybit = LIBSSH2_KNOWNHOST_KEY_ED25519;
        break;
#endif
      default:
        infof(data, "unsupported key type, can't check knownhosts!\n");
        keybit = 0;
        break;
      }
      if(!keybit)
        /* no check means failure! */
        rc = CURLKHSTAT_REJECT;
      else {
#ifdef HAVE_LIBSSH2_KNOWNHOST_CHECKP
        keycheck = libssh2_knownhost_checkp(sshc->kh,
                                            conn->host.name,
                                            (conn->remote_port != PORT_SSH)?
                                            conn->remote_port:-1,
                                            remotekey, keylen,
                                            LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                            LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                            keybit,
                                            &host);
#else
        keycheck = libssh2_knownhost_check(sshc->kh,
                                           conn->host.name,
                                           remotekey, keylen,
                                           LIBSSH2_KNOWNHOST_TYPE_PLAIN|
                                           LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                           keybit,
                                           &host);
#endif

        infof(data, "SSH host check: %d, key: %s\n", keycheck,
              (keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
              host->key:"<none>");

        /* setup 'knownkey' */
        if(keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH) {
          knownkey.key = host->key;
          knownkey.len = 0;
          knownkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
            CURLKHTYPE_RSA : CURLKHTYPE_DSS;
          knownkeyp = &knownkey;
        }

        /* setup 'foundkey' */
        foundkey.key = remotekey;
        foundkey.len = keylen;
        foundkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
          CURLKHTYPE_RSA : CURLKHTYPE_DSS;

        /*
         * if any of the LIBSSH2_KNOWNHOST_CHECK_* defines and the
         * curl_khmatch enum are ever modified, we need to introduce a
         * translation table here!
         */
        keymatch = (enum curl_khmatch)keycheck;

        /* Ask the callback how to behave */
        Curl_set_in_callback(data, true);
        rc = func(data, knownkeyp, /* from the knownhosts file */
                  &foundkey, /* from the remote host */
                  keymatch, data->set.ssh_keyfunc_userp);
        Curl_set_in_callback(data, false);
      }
    }
    else
      /* no remotekey means failure! */
      rc = CURLKHSTAT_REJECT;

    switch(rc) {
    default: /* unknown return codes will equal reject */
Added jni/curl/lib/vssh/ssh.h.




























































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
#ifndef HEADER_CURL_SSH_H
#define HEADER_CURL_SSH_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#if defined(HAVE_LIBSSH2_H)
#include <libssh2.h>
#include <libssh2_sftp.h>
#elif defined(HAVE_LIBSSH_LIBSSH_H)
#include <libssh/libssh.h>
#include <libssh/sftp.h>
#endif /* HAVE_LIBSSH2_H */

/****************************************************************************
 * SSH unique setup
 ***************************************************************************/
typedef enum {
  SSH_NO_STATE = -1,  /* Used for "nextState" so say there is none */
  SSH_STOP = 0,       /* do nothing state, stops the state machine */

  SSH_INIT,           /* First state in SSH-CONNECT */
  SSH_S_STARTUP,      /* Session startup */
  SSH_HOSTKEY,        /* verify hostkey */
  SSH_AUTHLIST,
  SSH_AUTH_PKEY_INIT,
  SSH_AUTH_PKEY,
  SSH_AUTH_PASS_INIT,
  SSH_AUTH_PASS,
  SSH_AUTH_AGENT_INIT, /* initialize then wait for connection to agent */
  SSH_AUTH_AGENT_LIST, /* ask for list then wait for entire list to come */
  SSH_AUTH_AGENT,      /* attempt one key at a time */
  SSH_AUTH_HOST_INIT,
  SSH_AUTH_HOST,
  SSH_AUTH_KEY_INIT,
  SSH_AUTH_KEY,
  SSH_AUTH_GSSAPI,
  SSH_AUTH_DONE,
  SSH_SFTP_INIT,
  SSH_SFTP_REALPATH,   /* Last state in SSH-CONNECT */

  SSH_SFTP_QUOTE_INIT, /* First state in SFTP-DO */
  SSH_SFTP_POSTQUOTE_INIT, /* (Possibly) First state in SFTP-DONE */
  SSH_SFTP_QUOTE,
  SSH_SFTP_NEXT_QUOTE,
  SSH_SFTP_QUOTE_STAT,
  SSH_SFTP_QUOTE_SETSTAT,
  SSH_SFTP_QUOTE_SYMLINK,
  SSH_SFTP_QUOTE_MKDIR,
  SSH_SFTP_QUOTE_RENAME,
  SSH_SFTP_QUOTE_RMDIR,
  SSH_SFTP_QUOTE_UNLINK,
  SSH_SFTP_QUOTE_STATVFS,
  SSH_SFTP_GETINFO,
  SSH_SFTP_FILETIME,
  SSH_SFTP_TRANS_INIT,
  SSH_SFTP_UPLOAD_INIT,
  SSH_SFTP_CREATE_DIRS_INIT,
  SSH_SFTP_CREATE_DIRS,
  SSH_SFTP_CREATE_DIRS_MKDIR,
  SSH_SFTP_READDIR_INIT,
  SSH_SFTP_READDIR,
  SSH_SFTP_READDIR_LINK,
  SSH_SFTP_READDIR_BOTTOM,
  SSH_SFTP_READDIR_DONE,
  SSH_SFTP_DOWNLOAD_INIT,
  SSH_SFTP_DOWNLOAD_STAT, /* Last state in SFTP-DO */
  SSH_SFTP_CLOSE,    /* Last state in SFTP-DONE */
  SSH_SFTP_SHUTDOWN, /* First state in SFTP-DISCONNECT */
  SSH_SCP_TRANS_INIT, /* First state in SCP-DO */
  SSH_SCP_UPLOAD_INIT,
  SSH_SCP_DOWNLOAD_INIT,
  SSH_SCP_DOWNLOAD,
  SSH_SCP_DONE,
  SSH_SCP_SEND_EOF,
  SSH_SCP_WAIT_EOF,
  SSH_SCP_WAIT_CLOSE,
  SSH_SCP_CHANNEL_FREE,   /* Last state in SCP-DONE */
  SSH_SESSION_DISCONNECT, /* First state in SCP-DISCONNECT */
  SSH_SESSION_FREE,       /* Last state in SCP/SFTP-DISCONNECT */
  SSH_QUIT,
  SSH_LAST  /* never used */
} sshstate;

/* this struct is used in the HandleData struct which is part of the
   Curl_easy, which means this is used on a per-easy handle basis.
   Everything that is strictly related to a connection is banned from this
   struct. */
struct SSHPROTO {
  char *path;                  /* the path we operate on */
};

/* ssh_conn is used for struct connection-oriented data in the connectdata
   struct */
struct ssh_conn {
  const char *authlist;       /* List of auth. methods, managed by libssh2 */

  /* common */
  const char *passphrase;     /* pass-phrase to use */
  char *rsa_pub;              /* path name */
  char *rsa;                  /* path name */
  bool authed;                /* the connection has been authenticated fine */
  sshstate state;             /* always use ssh.c:state() to change state! */
  sshstate nextstate;         /* the state to goto after stopping */
  CURLcode actualcode;        /* the actual error code */
  struct curl_slist *quote_item; /* for the quote option */
  char *quote_path1;          /* two generic pointers for the QUOTE stuff */
  char *quote_path2;

  bool acceptfail;            /* used by the SFTP_QUOTE (continue if
                                 quote command fails) */
  char *homedir;              /* when doing SFTP we figure out home dir in the
                                 connect phase */
  size_t readdir_len, readdir_totalLen, readdir_currLen;
  char *readdir_line;
  char *readdir_linkPath;
  /* end of READDIR stuff */

  int secondCreateDirs;         /* counter use by the code to see if the
                                   second attempt has been made to change
                                   to/create a directory */
  char *slash_pos;              /* used by the SFTP_CREATE_DIRS state */

  int orig_waitfor;             /* default READ/WRITE bits wait for */

#if defined(USE_LIBSSH)
/* our variables */
  unsigned kbd_state; /* 0 or 1 */
  ssh_key privkey;
  ssh_key pubkey;
  int auth_methods;
  ssh_session ssh_session;
  ssh_scp scp_session;
  sftp_session sftp_session;
  sftp_file sftp_file;
  sftp_dir sftp_dir;

  unsigned sftp_recv_state; /* 0 or 1 */
  int sftp_file_index; /* for async read */
  sftp_attributes readdir_attrs; /* used by the SFTP readdir actions */
  sftp_attributes readdir_link_attrs; /* used by the SFTP readdir actions */
  sftp_attributes quote_attrs; /* used by the SFTP_QUOTE state */

  const char *readdir_filename; /* points within readdir_attrs */
  const char *readdir_longentry;
  char *readdir_tmp;
#elif defined(USE_LIBSSH2)
  char *readdir_filename;
  char *readdir_longentry;

  LIBSSH2_SFTP_ATTRIBUTES quote_attrs; /* used by the SFTP_QUOTE state */

  /* Here's a set of struct members used by the SFTP_READDIR state */
  LIBSSH2_SFTP_ATTRIBUTES readdir_attrs;
  LIBSSH2_SESSION *ssh_session; /* Secure Shell session */
  LIBSSH2_CHANNEL *ssh_channel; /* Secure Shell channel handle */
  LIBSSH2_SFTP *sftp_session;   /* SFTP handle */
  LIBSSH2_SFTP_HANDLE *sftp_handle;

#ifdef HAVE_LIBSSH2_AGENT_API
  LIBSSH2_AGENT *ssh_agent;     /* proxy to ssh-agent/pageant */
  struct libssh2_agent_publickey *sshagent_identity,
                                 *sshagent_prev_identity;
#endif

  /* note that HAVE_LIBSSH2_KNOWNHOST_API is a define set in the libssh2.h
     header */
#ifdef HAVE_LIBSSH2_KNOWNHOST_API
  LIBSSH2_KNOWNHOSTS *kh;
#endif
#endif /* USE_LIBSSH */
};

#if defined(USE_LIBSSH)

#define CURL_LIBSSH_VERSION ssh_version(0)

extern const struct Curl_handler Curl_handler_scp;
extern const struct Curl_handler Curl_handler_sftp;

#elif defined(USE_LIBSSH2)

/* Feature detection based on version numbers to better work with
   non-configure platforms */

#if !defined(LIBSSH2_VERSION_NUM) || (LIBSSH2_VERSION_NUM < 0x001000)
#  error "SCP/SFTP protocols require libssh2 0.16 or later"
#endif

#if LIBSSH2_VERSION_NUM >= 0x010000
#define HAVE_LIBSSH2_SFTP_SEEK64 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010100
#define HAVE_LIBSSH2_VERSION 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010205
#define HAVE_LIBSSH2_INIT 1
#define HAVE_LIBSSH2_EXIT 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010206
#define HAVE_LIBSSH2_KNOWNHOST_CHECKP 1
#define HAVE_LIBSSH2_SCP_SEND64 1
#endif

#if LIBSSH2_VERSION_NUM >= 0x010208
#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1
#endif

#ifdef HAVE_LIBSSH2_VERSION
/* get it run-time if possible */
#define CURL_LIBSSH2_VERSION libssh2_version(0)
#else
/* use build-time if run-time not possible */
#define CURL_LIBSSH2_VERSION LIBSSH2_VERSION
#endif

extern const struct Curl_handler Curl_handler_scp;
extern const struct Curl_handler Curl_handler_sftp;
#endif /* USE_LIBSSH2 */

#ifdef USE_SSH
/* generic SSH backend functions */
CURLcode Curl_ssh_init(void);
void Curl_ssh_cleanup(void);
size_t Curl_ssh_version(char *buffer, size_t buflen);
#else
/* for non-SSH builds */
#define Curl_ssh_cleanup()
#endif

#endif /* HEADER_CURL_SSH_H */
Added jni/curl/lib/vtls/bearssl.c.




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Michael Forney, <mforney@mforney.org>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "curl_setup.h"

#ifdef USE_BEARSSL

#include <bearssl.h>

#include "bearssl.h"
#include "urldata.h"
#include "sendf.h"
#include "inet_pton.h"
#include "vtls.h"
#include "connect.h"
#include "select.h"
#include "multiif.h"
#include "curl_printf.h"
#include "curl_memory.h"

struct x509_context {
  const br_x509_class *vtable;
  br_x509_minimal_context minimal;
  bool verifyhost;
  bool verifypeer;
};

struct ssl_backend_data {
  br_ssl_client_context ctx;
  struct x509_context x509;
  unsigned char buf[BR_SSL_BUFSIZE_BIDI];
  br_x509_trust_anchor *anchors;
  size_t anchors_len;
  const char *protocols[2];
  /* SSL client context is active */
  bool active;
  /* size of pending write, yet to be flushed */
  size_t pending_write;
};

#define BACKEND connssl->backend

struct cafile_parser {
  CURLcode err;
  bool in_cert;
  br_x509_decoder_context xc;
  /* array of trust anchors loaded from CAfile */
  br_x509_trust_anchor *anchors;
  size_t anchors_len;
  /* buffer for DN data */
  unsigned char dn[1024];
  size_t dn_len;
};

static void append_dn(void *ctx, const void *buf, size_t len)
{
  struct cafile_parser *ca = ctx;

  if(ca->err != CURLE_OK || !ca->in_cert)
    return;
  if(sizeof(ca->dn) - ca->dn_len < len) {
    ca->err = CURLE_FAILED_INIT;
    return;
  }
  memcpy(ca->dn + ca->dn_len, buf, len);
  ca->dn_len += len;
}

static void x509_push(void *ctx, const void *buf, size_t len)
{
  struct cafile_parser *ca = ctx;

  if(ca->in_cert)
    br_x509_decoder_push(&ca->xc, buf, len);
}

static CURLcode load_cafile(const char *path, br_x509_trust_anchor **anchors,
                            size_t *anchors_len)
{
  struct cafile_parser ca;
  br_pem_decoder_context pc;
  br_x509_trust_anchor *ta;
  size_t ta_size;
  br_x509_trust_anchor *new_anchors;
  size_t new_anchors_len;
  br_x509_pkey *pkey;
  FILE *fp;
  unsigned char buf[BUFSIZ], *p;
  const char *name;
  size_t n, i, pushed;

  fp = fopen(path, "rb");
  if(!fp)
    return CURLE_SSL_CACERT_BADFILE;

  ca.err = CURLE_OK;
  ca.in_cert = FALSE;
  ca.anchors = NULL;
  ca.anchors_len = 0;
  br_pem_decoder_init(&pc);
  br_pem_decoder_setdest(&pc, x509_push, &ca);
  for(;;) {
    n = fread(buf, 1, sizeof(buf), fp);
    if(n == 0)
      break;
    p = buf;
    while(n) {
      pushed = br_pem_decoder_push(&pc, p, n);
      if(ca.err)
        goto fail;
      p += pushed;
      n -= pushed;

      switch(br_pem_decoder_event(&pc)) {
      case 0:
        break;
      case BR_PEM_BEGIN_OBJ:
        name = br_pem_decoder_name(&pc);
        if(strcmp(name, "CERTIFICATE") && strcmp(name, "X509 CERTIFICATE"))
          break;
        br_x509_decoder_init(&ca.xc, append_dn, &ca);
        if(ca.anchors_len == SIZE_MAX / sizeof(ca.anchors[0])) {
          ca.err = CURLE_OUT_OF_MEMORY;
          goto fail;
        }
        new_anchors_len = ca.anchors_len + 1;
        new_anchors = realloc(ca.anchors,
                              new_anchors_len * sizeof(ca.anchors[0]));
        if(!new_anchors) {
          ca.err = CURLE_OUT_OF_MEMORY;
          goto fail;
        }
        ca.anchors = new_anchors;
        ca.anchors_len = new_anchors_len;
        ca.in_cert = TRUE;
        ca.dn_len = 0;
        ta = &ca.anchors[ca.anchors_len - 1];
        ta->dn.data = NULL;
        break;
      case BR_PEM_END_OBJ:
        if(!ca.in_cert)
          break;
        ca.in_cert = FALSE;
        if(br_x509_decoder_last_error(&ca.xc)) {
          ca.err = CURLE_SSL_CACERT_BADFILE;
          goto fail;
        }
        ta->flags = 0;
        if(br_x509_decoder_isCA(&ca.xc))
          ta->flags |= BR_X509_TA_CA;
        pkey = br_x509_decoder_get_pkey(&ca.xc);
        if(!pkey) {
          ca.err = CURLE_SSL_CACERT_BADFILE;
          goto fail;
        }
        ta->pkey = *pkey;

        /* calculate space needed for trust anchor data */
        ta_size = ca.dn_len;
        switch(pkey->key_type) {
        case BR_KEYTYPE_RSA:
          ta_size += pkey->key.rsa.nlen + pkey->key.rsa.elen;
          break;
        case BR_KEYTYPE_EC:
          ta_size += pkey->key.ec.qlen;
          break;
        default:
          ca.err = CURLE_FAILED_INIT;
          goto fail;
        }

        /* fill in trust anchor DN and public key data */
        ta->dn.data = malloc(ta_size);
        if(!ta->dn.data) {
          ca.err = CURLE_OUT_OF_MEMORY;
          goto fail;
        }
        memcpy(ta->dn.data, ca.dn, ca.dn_len);
        ta->dn.len = ca.dn_len;
        switch(pkey->key_type) {
        case BR_KEYTYPE_RSA:
          ta->pkey.key.rsa.n = ta->dn.data + ta->dn.len;
          memcpy(ta->pkey.key.rsa.n, pkey->key.rsa.n, pkey->key.rsa.nlen);
          ta->pkey.key.rsa.e = ta->pkey.key.rsa.n + ta->pkey.key.rsa.nlen;
          memcpy(ta->pkey.key.rsa.e, pkey->key.rsa.e, pkey->key.rsa.elen);
          break;
        case BR_KEYTYPE_EC:
          ta->pkey.key.ec.q = ta->dn.data + ta->dn.len;
          memcpy(ta->pkey.key.ec.q, pkey->key.ec.q, pkey->key.ec.qlen);
          break;
        }
        break;
      default:
        ca.err = CURLE_SSL_CACERT_BADFILE;
        goto fail;
      }
    }
  }
  if(ferror(fp))
    ca.err = CURLE_READ_ERROR;

fail:
  fclose(fp);
  if(ca.err == CURLE_OK) {
    *anchors = ca.anchors;
    *anchors_len = ca.anchors_len;
  }
  else {
    for(i = 0; i < ca.anchors_len; ++i)
      free(ca.anchors[i].dn.data);
    free(ca.anchors);
  }

  return ca.err;
}

static void x509_start_chain(const br_x509_class **ctx,
                             const char *server_name)
{
  struct x509_context *x509 = (struct x509_context *)ctx;

  if(!x509->verifyhost)
    server_name = NULL;
  x509->minimal.vtable->start_chain(&x509->minimal.vtable, server_name);
}

static void x509_start_cert(const br_x509_class **ctx, uint32_t length)
{
  struct x509_context *x509 = (struct x509_context *)ctx;

  x509->minimal.vtable->start_cert(&x509->minimal.vtable, length);
}

static void x509_append(const br_x509_class **ctx, const unsigned char *buf,
                        size_t len)
{
  struct x509_context *x509 = (struct x509_context *)ctx;

  x509->minimal.vtable->append(&x509->minimal.vtable, buf, len);
}

static void x509_end_cert(const br_x509_class **ctx)
{
  struct x509_context *x509 = (struct x509_context *)ctx;

  x509->minimal.vtable->end_cert(&x509->minimal.vtable);
}

static unsigned x509_end_chain(const br_x509_class **ctx)
{
  struct x509_context *x509 = (struct x509_context *)ctx;
  unsigned err;

  err = x509->minimal.vtable->end_chain(&x509->minimal.vtable);
  if(err && !x509->verifypeer) {
    /* ignore any X.509 errors */
    err = BR_ERR_OK;
  }

  return err;
}

static const br_x509_pkey *x509_get_pkey(const br_x509_class *const *ctx,
                                         unsigned *usages)
{
  struct x509_context *x509 = (struct x509_context *)ctx;

  return x509->minimal.vtable->get_pkey(&x509->minimal.vtable, usages);
}

static const br_x509_class x509_vtable = {
  sizeof(struct x509_context),
  x509_start_chain,
  x509_start_cert,
  x509_append,
  x509_end_cert,
  x509_end_chain,
  x509_get_pkey
};

static CURLcode bearssl_connect_step1(struct connectdata *conn, int sockindex)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  const char * const ssl_cafile = SSL_CONN_CONFIG(CAfile);
  const char *hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
    conn->host.name;
  const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
  const bool verifyhost = SSL_CONN_CONFIG(verifyhost);
  CURLcode ret;
  unsigned version_min, version_max;
#ifdef ENABLE_IPV6
  struct in6_addr addr;
#else
  struct in_addr addr;
#endif

  switch(SSL_CONN_CONFIG(version)) {
  case CURL_SSLVERSION_SSLv2:
    failf(data, "BearSSL does not support SSLv2");
    return CURLE_SSL_CONNECT_ERROR;
  case CURL_SSLVERSION_SSLv3:
    failf(data, "BearSSL does not support SSLv3");
    return CURLE_SSL_CONNECT_ERROR;
  case CURL_SSLVERSION_TLSv1_0:
    version_min = BR_TLS10;
    version_max = BR_TLS10;
    break;
  case CURL_SSLVERSION_TLSv1_1:
    version_min = BR_TLS11;
    version_max = BR_TLS11;
    break;
  case CURL_SSLVERSION_TLSv1_2:
    version_min = BR_TLS12;
    version_max = BR_TLS12;
    break;
  case CURL_SSLVERSION_DEFAULT:
  case CURL_SSLVERSION_TLSv1:
    version_min = BR_TLS10;
    version_max = BR_TLS12;
    break;
  default:
    failf(data, "BearSSL: unknown CURLOPT_SSLVERSION");
    return CURLE_SSL_CONNECT_ERROR;
  }

  if(ssl_cafile) {
    ret = load_cafile(ssl_cafile, &BACKEND->anchors, &BACKEND->anchors_len);
    if(ret != CURLE_OK) {
      if(verifypeer) {
        failf(data, "error setting certificate verify locations:\n"
              "  CAfile: %s\n", ssl_cafile);
        return ret;
      }
      infof(data, "error setting certificate verify locations,"
            " continuing anyway:\n");
    }
  }

  /* initialize SSL context */
  br_ssl_client_init_full(&BACKEND->ctx, &BACKEND->x509.minimal,
                          BACKEND->anchors, BACKEND->anchors_len);
  br_ssl_engine_set_versions(&BACKEND->ctx.eng, version_min, version_max);
  br_ssl_engine_set_buffer(&BACKEND->ctx.eng, BACKEND->buf,
                           sizeof(BACKEND->buf), 1);

  /* initialize X.509 context */
  BACKEND->x509.vtable = &x509_vtable;
  BACKEND->x509.verifypeer = verifypeer;
  BACKEND->x509.verifyhost = verifyhost;
  br_ssl_engine_set_x509(&BACKEND->ctx.eng, &BACKEND->x509.vtable);

  if(SSL_SET_OPTION(primary.sessionid)) {
    void *session;

    Curl_ssl_sessionid_lock(conn);
    if(!Curl_ssl_getsessionid(conn, &session, NULL, sockindex)) {
      br_ssl_engine_set_session_parameters(&BACKEND->ctx.eng, session);
      infof(data, "BearSSL: re-using session ID\n");
    }
    Curl_ssl_sessionid_unlock(conn);
  }

  if(conn->bits.tls_enable_alpn) {
    int cur = 0;

    /* NOTE: when adding more protocols here, increase the size of the
     * protocols array in `struct ssl_backend_data`.
     */

#ifdef USE_NGHTTP2
    if(data->set.httpversion >= CURL_HTTP_VERSION_2 &&
       (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)) {
      BACKEND->protocols[cur++] = NGHTTP2_PROTO_VERSION_ID;
      infof(data, "ALPN, offering %s\n", NGHTTP2_PROTO_VERSION_ID);
    }
#endif

    BACKEND->protocols[cur++] = ALPN_HTTP_1_1;
    infof(data, "ALPN, offering %s\n", ALPN_HTTP_1_1);

    br_ssl_engine_set_protocol_names(&BACKEND->ctx.eng,
                                     BACKEND->protocols, cur);
  }

  if((1 == Curl_inet_pton(AF_INET, hostname, &addr))
#ifdef ENABLE_IPV6
      || (1 == Curl_inet_pton(AF_INET6, hostname, &addr))
#endif
     ) {
    if(verifyhost) {
      failf(data, "BearSSL: "
            "host verification of IP address is not supported");
      return CURLE_PEER_FAILED_VERIFICATION;
    }
    hostname = NULL;
  }

  if(!br_ssl_client_reset(&BACKEND->ctx, hostname, 0))
    return CURLE_FAILED_INIT;
  BACKEND->active = TRUE;

  connssl->connecting_state = ssl_connect_2;

  return CURLE_OK;
}

static CURLcode bearssl_run_until(struct connectdata *conn, int sockindex,
                                  unsigned target)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  unsigned state;
  unsigned char *buf;
  size_t len;
  ssize_t ret;
  int err;

  for(;;) {
    state = br_ssl_engine_current_state(&BACKEND->ctx.eng);
    if(state & BR_SSL_CLOSED) {
      err = br_ssl_engine_last_error(&BACKEND->ctx.eng);
      switch(err) {
      case BR_ERR_OK:
        /* TLS close notify */
        if(connssl->state != ssl_connection_complete) {
          failf(data, "SSL: connection closed during handshake");
          return CURLE_SSL_CONNECT_ERROR;
        }
        return CURLE_OK;
      case BR_ERR_X509_EXPIRED:
        failf(data, "SSL: X.509 verification: "
              "certificate is expired or not yet valid");
        return CURLE_PEER_FAILED_VERIFICATION;
      case BR_ERR_X509_BAD_SERVER_NAME:
        failf(data, "SSL: X.509 verification: "
              "expected server name was not found in the chain");
        return CURLE_PEER_FAILED_VERIFICATION;
      case BR_ERR_X509_NOT_TRUSTED:
        failf(data, "SSL: X.509 verification: "
              "chain could not be linked to a trust anchor");
        return CURLE_PEER_FAILED_VERIFICATION;
      }
      /* X.509 errors are documented to have the range 32..63 */
      if(err >= 32 && err < 64)
        return CURLE_PEER_FAILED_VERIFICATION;
      return CURLE_SSL_CONNECT_ERROR;
    }
    if(state & target)
      return CURLE_OK;
    if(state & BR_SSL_SENDREC) {
      buf = br_ssl_engine_sendrec_buf(&BACKEND->ctx.eng, &len);
      ret = swrite(sockfd, buf, len);
      if(ret == -1) {
        if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
          if(connssl->state != ssl_connection_complete)
            connssl->connecting_state = ssl_connect_2_writing;
          return CURLE_AGAIN;
        }
        return CURLE_WRITE_ERROR;
      }
      br_ssl_engine_sendrec_ack(&BACKEND->ctx.eng, ret);
    }
    else if(state & BR_SSL_RECVREC) {
      buf = br_ssl_engine_recvrec_buf(&BACKEND->ctx.eng, &len);
      ret = sread(sockfd, buf, len);
      if(ret == 0) {
        failf(data, "SSL: EOF without close notify");
        return CURLE_READ_ERROR;
      }
      if(ret == -1) {
        if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
          if(connssl->state != ssl_connection_complete)
            connssl->connecting_state = ssl_connect_2_reading;
          return CURLE_AGAIN;
        }
        return CURLE_READ_ERROR;
      }
      br_ssl_engine_recvrec_ack(&BACKEND->ctx.eng, ret);
    }
  }
}

static CURLcode bearssl_connect_step2(struct connectdata *conn, int sockindex)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  CURLcode ret;

  ret = bearssl_run_until(conn, sockindex, BR_SSL_SENDAPP | BR_SSL_RECVAPP);
  if(ret == CURLE_AGAIN)
    return CURLE_OK;
  if(ret == CURLE_OK) {
    if(br_ssl_engine_current_state(&BACKEND->ctx.eng) == BR_SSL_CLOSED) {
      failf(data, "SSL: connection closed during handshake");
      return CURLE_SSL_CONNECT_ERROR;
    }
    connssl->connecting_state = ssl_connect_3;
  }
  return ret;
}

static CURLcode bearssl_connect_step3(struct connectdata *conn, int sockindex)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  CURLcode ret;

  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);

  if(conn->bits.tls_enable_alpn) {
    const char *protocol;

    protocol = br_ssl_engine_get_selected_protocol(&BACKEND->ctx.eng);
    if(protocol) {
      infof(data, "ALPN, server accepted to use %s\n", protocol);

#ifdef USE_NGHTTP2
      if(!strcmp(protocol, NGHTTP2_PROTO_VERSION_ID))
        conn->negnpn = CURL_HTTP_VERSION_2;
      else
#endif
      if(!strcmp(protocol, ALPN_HTTP_1_1))
        conn->negnpn = CURL_HTTP_VERSION_1_1;
      else
        infof(data, "ALPN, unrecognized protocol %s\n", protocol);
      Curl_multiuse_state(conn, conn->negnpn == CURL_HTTP_VERSION_2 ?
                          BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
    }
    else
      infof(data, "ALPN, server did not agree to a protocol\n");
  }

  if(SSL_SET_OPTION(primary.sessionid)) {
    bool incache;
    void *oldsession;
    br_ssl_session_parameters *session;

    session = malloc(sizeof(*session));
    if(!session)
      return CURLE_OUT_OF_MEMORY;
    br_ssl_engine_get_session_parameters(&BACKEND->ctx.eng, session);
    Curl_ssl_sessionid_lock(conn);
    incache = !(Curl_ssl_getsessionid(conn, &oldsession, NULL, sockindex));
    if(incache)
      Curl_ssl_delsessionid(conn, oldsession);
    ret = Curl_ssl_addsessionid(conn, session, 0, sockindex);
    Curl_ssl_sessionid_unlock(conn);
    if(ret) {
      free(session);
      return CURLE_OUT_OF_MEMORY;
    }
  }

  connssl->connecting_state = ssl_connect_done;

  return CURLE_OK;
}

static ssize_t bearssl_send(struct connectdata *conn, int sockindex,
                            const void *buf, size_t len, CURLcode *err)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  unsigned char *app;
  size_t applen;

  for(;;) {
    *err = bearssl_run_until(conn, sockindex, BR_SSL_SENDAPP);
    if (*err != CURLE_OK)
      return -1;
    app = br_ssl_engine_sendapp_buf(&BACKEND->ctx.eng, &applen);
    if(!app) {
      failf(data, "SSL: connection closed during write");
      *err = CURLE_SEND_ERROR;
      return -1;
    }
    if(BACKEND->pending_write) {
      applen = BACKEND->pending_write;
      BACKEND->pending_write = 0;
      return applen;
    }
    if(applen > len)
      applen = len;
    memcpy(app, buf, applen);
    br_ssl_engine_sendapp_ack(&BACKEND->ctx.eng, applen);
    br_ssl_engine_flush(&BACKEND->ctx.eng, 0);
    BACKEND->pending_write = applen;
  }
}

static ssize_t bearssl_recv(struct connectdata *conn, int sockindex,
                            char *buf, size_t len, CURLcode *err)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  unsigned char *app;
  size_t applen;

  *err = bearssl_run_until(conn, sockindex, BR_SSL_RECVAPP);
  if(*err != CURLE_OK)
    return -1;
  app = br_ssl_engine_recvapp_buf(&BACKEND->ctx.eng, &applen);
  if(!app)
    return 0;
  if(applen > len)
    applen = len;
  memcpy(buf, app, applen);
  br_ssl_engine_recvapp_ack(&BACKEND->ctx.eng, applen);

  return applen;
}

static CURLcode bearssl_connect_common(struct connectdata *conn,
                                       int sockindex,
                                       bool nonblocking,
                                       bool *done)
{
  CURLcode ret;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  time_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }

  if(ssl_connect_1 == connssl->connecting_state) {
    ret = bearssl_connect_step1(conn, sockindex);
    if(ret)
      return ret;
  }

  while(ssl_connect_2 == connssl->connecting_state ||
        ssl_connect_2_reading == connssl->connecting_state ||
        ssl_connect_2_writing == connssl->connecting_state) {
    /* check allowed time left */
    timeout_ms = Curl_timeleft(data, NULL, TRUE);

    if(timeout_ms < 0) {
      /* no need to continue if time already is up */
      failf(data, "SSL connection timeout");
      return CURLE_OPERATION_TIMEDOUT;
    }

    /* if ssl is expecting something, check if it's available. */
    if(ssl_connect_2_reading == connssl->connecting_state ||
       ssl_connect_2_writing == connssl->connecting_state) {

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
          *done = FALSE;
          return CURLE_OK;
        }
        else {
          /* timeout */
          failf(data, "SSL connection timeout");
          return CURLE_OPERATION_TIMEDOUT;
        }
      }
      /* socket is readable or writable */
    }

    /* Run transaction, and return to the caller if it failed or if this
     * connection is done nonblocking and this loop would execute again. This
     * permits the owner of a multi handle to abort a connection attempt
     * before step2 has completed while ensuring that a client using select()
     * or epoll() will always have a valid fdset to wait on.
     */
    ret = bearssl_connect_step2(conn, sockindex);
    if(ret || (nonblocking &&
               (ssl_connect_2 == connssl->connecting_state ||
                ssl_connect_2_reading == connssl->connecting_state ||
                ssl_connect_2_writing == connssl->connecting_state)))
      return ret;
  }

  if(ssl_connect_3 == connssl->connecting_state) {
    ret = bearssl_connect_step3(conn, sockindex);
    if(ret)
      return ret;
  }

  if(ssl_connect_done == connssl->connecting_state) {
    connssl->state = ssl_connection_complete;
    conn->recv[sockindex] = bearssl_recv;
    conn->send[sockindex] = bearssl_send;
    *done = TRUE;
  }
  else
    *done = FALSE;

  /* Reset our connect state machine */
  connssl->connecting_state = ssl_connect_1;

  return CURLE_OK;
}

static size_t Curl_bearssl_version(char *buffer, size_t size)
{
  return msnprintf(buffer, size, "BearSSL");
}

static bool Curl_bearssl_data_pending(const struct connectdata *conn,
                                      int connindex)
{
  const struct ssl_connect_data *connssl = &conn->ssl[connindex];

  return br_ssl_engine_current_state(&BACKEND->ctx.eng) & BR_SSL_RECVAPP;
}

static CURLcode Curl_bearssl_random(struct Curl_easy *data UNUSED_PARAM,
                                    unsigned char *entropy, size_t length)
{
  static br_hmac_drbg_context ctx;
  static bool seeded = FALSE;

  if(!seeded) {
    br_prng_seeder seeder;

    br_hmac_drbg_init(&ctx, &br_sha256_vtable, NULL, 0);
    seeder = br_prng_seeder_system(NULL);
    if(!seeder || !seeder(&ctx.vtable))
      return CURLE_FAILED_INIT;
    seeded = TRUE;
  }
  br_hmac_drbg_generate(&ctx, entropy, length);

  return CURLE_OK;
}

static CURLcode Curl_bearssl_connect(struct connectdata *conn, int sockindex)
{
  CURLcode ret;
  bool done = FALSE;

  ret = bearssl_connect_common(conn, sockindex, FALSE, &done);
  if(ret)
    return ret;

  DEBUGASSERT(done);

  return CURLE_OK;
}

static CURLcode Curl_bearssl_connect_nonblocking(struct connectdata *conn,
                                                 int sockindex, bool *done)
{
  return bearssl_connect_common(conn, sockindex, TRUE, done);
}

static void *Curl_bearssl_get_internals(struct ssl_connect_data *connssl,
                                        CURLINFO info UNUSED_PARAM)
{
  return &BACKEND->ctx;
}

static void Curl_bearssl_close(struct connectdata *conn, int sockindex)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  size_t i;

  if(BACKEND->active) {
    br_ssl_engine_close(&BACKEND->ctx.eng);
    (void)bearssl_run_until(conn, sockindex, BR_SSL_CLOSED);
  }
  for(i = 0; i < BACKEND->anchors_len; ++i)
    free(BACKEND->anchors[i].dn.data);
  free(BACKEND->anchors);
}

static void Curl_bearssl_session_free(void *ptr)
{
  free(ptr);
}

static CURLcode Curl_bearssl_md5sum(unsigned char *input,
                                    size_t inputlen,
                                    unsigned char *md5sum,
                                    size_t md5len UNUSED_PARAM)
{
  br_md5_context ctx;

  br_md5_init(&ctx);
  br_md5_update(&ctx, input, inputlen);
  br_md5_out(&ctx, md5sum);
  return CURLE_OK;
}

static CURLcode Curl_bearssl_sha256sum(const unsigned char *input,
                                       size_t inputlen,
                                       unsigned char *sha256sum,
                                       size_t sha256len UNUSED_PARAM)
{
  br_sha256_context ctx;

  br_sha256_init(&ctx);
  br_sha256_update(&ctx, input, inputlen);
  br_sha256_out(&ctx, sha256sum);
  return CURLE_OK;
}

const struct Curl_ssl Curl_ssl_bearssl = {
  { CURLSSLBACKEND_BEARSSL, "bearssl" },

  0,

  sizeof(struct ssl_backend_data),

  Curl_none_init,
  Curl_none_cleanup,
  Curl_bearssl_version,
  Curl_none_check_cxn,
  Curl_none_shutdown,
  Curl_bearssl_data_pending,
  Curl_bearssl_random,
  Curl_none_cert_status_request,
  Curl_bearssl_connect,
  Curl_bearssl_connect_nonblocking,
  Curl_bearssl_get_internals,
  Curl_bearssl_close,
  Curl_none_close_all,
  Curl_bearssl_session_free,
  Curl_none_set_engine,
  Curl_none_set_engine_default,
  Curl_none_engines_list,
  Curl_none_false_start,
  Curl_bearssl_md5sum,
  Curl_bearssl_sha256sum
};

#endif /* USE_BEARSSL */
Added jni/curl/lib/vtls/bearssl.h.
































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
#ifndef HEADER_CURL_BEARSSL_H
#define HEADER_CURL_BEARSSL_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Michael Forney, <mforney@mforney.org>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_BEARSSL

extern const struct Curl_ssl Curl_ssl_bearssl;

#endif /* USE_BEARSSL */
#endif /* HEADER_CURL_BEARSSL_H */
Changes to jni/curl/lib/vtls/gskit.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GSKIT_H
#define HEADER_CURL_GSKIT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_GSKIT_H
#define HEADER_CURL_GSKIT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/vtls/mbedtls.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MBEDTLS_H
#define HEADER_CURL_MBEDTLS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_MBEDTLS_H
#define HEADER_CURL_MBEDTLS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
Changes to jni/curl/lib/vtls/nss.c.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
} cipher_s;

#define PK11_SETATTRS(_attr, _idx, _type, _val, _len) do {  \
  CK_ATTRIBUTE *ptr = (_attr) + ((_idx)++);                 \
  ptr->type = (_type);                                      \
  ptr->pValue = (_val);                                     \
  ptr->ulValueLen = (_len);                                 \
} WHILE_FALSE

#define CERT_NewTempCertificate __CERT_NewTempCertificate

#define NUM_OF_CIPHERS sizeof(cipherlist)/sizeof(cipherlist[0])
static const cipher_s cipherlist[] = {
  /* SSL2 cipher suites */
  {"rc4",                        SSL_EN_RC4_128_WITH_MD5},







|







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
} cipher_s;

#define PK11_SETATTRS(_attr, _idx, _type, _val, _len) do {  \
  CK_ATTRIBUTE *ptr = (_attr) + ((_idx)++);                 \
  ptr->type = (_type);                                      \
  ptr->pValue = (_val);                                     \
  ptr->ulValueLen = (_len);                                 \
} while(0)

#define CERT_NewTempCertificate __CERT_NewTempCertificate

#define NUM_OF_CIPHERS sizeof(cipherlist)/sizeof(cipherlist[0])
static const cipher_s cipherlist[] = {
  /* SSL2 cipher suites */
  {"rc4",                        SSL_EN_RC4_128_WITH_MD5},
Changes to jni/curl/lib/vtls/openssl.c.
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#define X509_get0_notAfter(x) X509_get_notAfter(x)
#define CONST_EXTS /* nope */
#ifndef LIBRESSL_VERSION_NUMBER
#define OpenSSL_version_num() SSLeay()
#endif
#endif

#ifdef LIBRESSL_VERSION_NUMBER
#define OpenSSL_version_num() LIBRESSL_VERSION_NUMBER
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x1000200fL) && /* 1.0.2 or later */ \
    !(defined(LIBRESSL_VERSION_NUMBER) && \
      LIBRESSL_VERSION_NUMBER < 0x20700000L)
#define HAVE_X509_GET0_SIGNATURE 1
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x1000200fL) /* 1.0.2 or later */







<
<
<
<







138
139
140
141
142
143
144




145
146
147
148
149
150
151
#define X509_get0_notAfter(x) X509_get_notAfter(x)
#define CONST_EXTS /* nope */
#ifndef LIBRESSL_VERSION_NUMBER
#define OpenSSL_version_num() SSLeay()
#endif
#endif





#if (OPENSSL_VERSION_NUMBER >= 0x1000200fL) && /* 1.0.2 or later */ \
    !(defined(LIBRESSL_VERSION_NUMBER) && \
      LIBRESSL_VERSION_NUMBER < 0x20700000L)
#define HAVE_X509_GET0_SIGNATURE 1
#endif

#if (OPENSSL_VERSION_NUMBER >= 0x1000200fL) /* 1.0.2 or later */
388
389
390
391
392
393
394



395
396
397
398
399






400
401
402
403
404
405
406
  }
}

/* Return error string for last OpenSSL error
 */
static char *ossl_strerror(unsigned long error, char *buf, size_t size)
{



#ifdef OPENSSL_IS_BORINGSSL
  ERR_error_string_n((uint32_t)error, buf, size);
#else
  ERR_error_string_n(error, buf, size);
#endif






  return buf;
}

/* Return an extra data index for the connection data.
 * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
 */
static int ossl_get_ssl_conn_index(void)







>
>
>





>
>
>
>
>
>







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
  }
}

/* Return error string for last OpenSSL error
 */
static char *ossl_strerror(unsigned long error, char *buf, size_t size)
{
  if(size)
    *buf = '\0';

#ifdef OPENSSL_IS_BORINGSSL
  ERR_error_string_n((uint32_t)error, buf, size);
#else
  ERR_error_string_n(error, buf, size);
#endif

  if(size > 1 && !*buf) {
    strncpy(buf, (error ? "Unknown error" : "No error"), size);
    buf[size - 1] = '\0';
  }

  return buf;
}

/* Return an extra data index for the connection data.
 * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
 */
static int ossl_get_ssl_conn_index(void)
2764
2765
2766
2767
2768
2769
2770

2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781









2782
2783

2784
2785
2786
2787
2788
2789
2790
    infof(data, "successfully load CRL file:\n");
    X509_STORE_set_flags(SSL_CTX_get_cert_store(BACKEND->ctx),
                         X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL);

    infof(data, "  CRLfile: %s\n", ssl_crlfile);
  }


  /* Try building a chain using issuers in the trusted store first to avoid
     problems with server-sent legacy intermediates.  Newer versions of
     OpenSSL do alternate chain checking by default which gives us the same
     fix without as much of a performance hit (slight), so we prefer that if
     available.
     https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
  */
#if defined(X509_V_FLAG_TRUSTED_FIRST) && !defined(X509_V_FLAG_NO_ALT_CHAINS)
  if(verifypeer) {
    X509_STORE_set_flags(SSL_CTX_get_cert_store(BACKEND->ctx),
                         X509_V_FLAG_TRUSTED_FIRST);









  }
#endif


  /* SSL always tries to verify the peer, this only says whether it should
   * fail to connect if the verification fails, or if it should continue
   * anyway. In the latter case the result of the verification is checked with
   * SSL_get_verify_result() below. */
  SSL_CTX_set_verify(BACKEND->ctx,
                     verifypeer ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);







>
|
|
|
|
|
|
|

<


>
>
>
>
>
>
>
>
>
|

>







2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784

2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
    infof(data, "successfully load CRL file:\n");
    X509_STORE_set_flags(SSL_CTX_get_cert_store(BACKEND->ctx),
                         X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL);

    infof(data, "  CRLfile: %s\n", ssl_crlfile);
  }

  if(verifypeer) {
    /* Try building a chain using issuers in the trusted store first to avoid
       problems with server-sent legacy intermediates.  Newer versions of
       OpenSSL do alternate chain checking by default which gives us the same
       fix without as much of a performance hit (slight), so we prefer that if
       available.
       https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
    */
#if defined(X509_V_FLAG_TRUSTED_FIRST) && !defined(X509_V_FLAG_NO_ALT_CHAINS)

    X509_STORE_set_flags(SSL_CTX_get_cert_store(BACKEND->ctx),
                         X509_V_FLAG_TRUSTED_FIRST);
#endif
#ifdef X509_V_FLAG_PARTIAL_CHAIN
    if(!SSL_SET_OPTION(no_partialchain)) {
      /* Have intermediate certificates in the trust store be treated as
         trust-anchors, in the same way as self-signed root CA certificates
         are. This allows users to verify servers using the intermediate cert
         only, instead of needing the whole chain. */
      X509_STORE_set_flags(SSL_CTX_get_cert_store(BACKEND->ctx),
                           X509_V_FLAG_PARTIAL_CHAIN);
    }
#endif
  }

  /* SSL always tries to verify the peer, this only says whether it should
   * fail to connect if the verification fails, or if it should continue
   * anyway. In the latter case the result of the verification is checked with
   * SSL_get_verify_result() below. */
  SSL_CTX_set_verify(BACKEND->ctx,
                     verifypeer ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);
2802
2803
2804
2805
2806
2807
2808

2809
2810

2811
2812
2813
2814
2815
2816
2817
   */
  SSL_CTX_set_session_cache_mode(BACKEND->ctx,
      SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_NO_INTERNAL);
  SSL_CTX_sess_set_new_cb(BACKEND->ctx, ossl_new_session_cb);

  /* give application a chance to interfere with SSL set up. */
  if(data->set.ssl.fsslctx) {

    result = (*data->set.ssl.fsslctx)(data, BACKEND->ctx,
                                      data->set.ssl.fsslctxp);

    if(result) {
      failf(data, "error signaled by ssl ctx callback");
      return result;
    }
  }

  /* Lets make an SSL structure */







>


>







2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
   */
  SSL_CTX_set_session_cache_mode(BACKEND->ctx,
      SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_NO_INTERNAL);
  SSL_CTX_sess_set_new_cb(BACKEND->ctx, ossl_new_session_cb);

  /* give application a chance to interfere with SSL set up. */
  if(data->set.ssl.fsslctx) {
    Curl_set_in_callback(data, true);
    result = (*data->set.ssl.fsslctx)(data, BACKEND->ctx,
                                      data->set.ssl.fsslctxp);
    Curl_set_in_callback(data, false);
    if(result) {
      failf(data, "error signaled by ssl ctx callback");
      return result;
    }
  }

  /* Lets make an SSL structure */
2984
2985
2986
2987
2988
2989
2990




2991

2992
2993
2994
2995
2996
2997
2998
2999
       * (RST connection etc.), OpenSSL gives no explanation whatsoever and
       * the SO_ERROR is also lost.
       */
      if(CURLE_SSL_CONNECT_ERROR == result && errdetail == 0) {
        const char * const hostname = SSL_IS_PROXY() ?
          conn->http_proxy.host.name : conn->host.name;
        const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port;




        failf(data, OSSL_PACKAGE " SSL_connect: %s in connection to %s:%ld ",

              SSL_ERROR_to_str(detail), hostname, port);
        return result;
      }

      /* Could be a CERT problem */
      failf(data, "%s", error_buffer);

      return result;







>
>
>
>

>
|







3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
       * (RST connection etc.), OpenSSL gives no explanation whatsoever and
       * the SO_ERROR is also lost.
       */
      if(CURLE_SSL_CONNECT_ERROR == result && errdetail == 0) {
        const char * const hostname = SSL_IS_PROXY() ?
          conn->http_proxy.host.name : conn->host.name;
        const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port;
        char extramsg[80]="";
        int sockerr = SOCKERRNO;
        if(sockerr && detail == SSL_ERROR_SYSCALL)
          Curl_strerror(sockerr, extramsg, sizeof(extramsg));
        failf(data, OSSL_PACKAGE " SSL_connect: %s in connection to %s:%ld ",
              extramsg[0] ? extramsg : SSL_ERROR_to_str(detail),
              hostname, port);
        return result;
      }

      /* Could be a CERT problem */
      failf(data, "%s", error_buffer);

      return result;
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075

#define push_certinfo(_label, _num) \
do {                              \
  long info_len = BIO_get_mem_data(mem, &ptr); \
  Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
  if(1 != BIO_reset(mem))                                        \
    break;                                                       \
} WHILE_FALSE

static void pubkey_show(struct Curl_easy *data,
                        BIO *mem,
                        int num,
                        const char *type,
                        const char *name,
#ifdef HAVE_OPAQUE_RSA_DSA_DH







|







3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097

#define push_certinfo(_label, _num) \
do {                              \
  long info_len = BIO_get_mem_data(mem, &ptr); \
  Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
  if(1 != BIO_reset(mem))                                        \
    break;                                                       \
} while(0)

static void pubkey_show(struct Curl_easy *data,
                        BIO *mem,
                        int num,
                        const char *type,
                        const char *name,
#ifdef HAVE_OPAQUE_RSA_DSA_DH
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107

#else
#define print_pubkey_BN(_type, _name, _num)    \
do {                              \
  if(_type->_name) { \
    pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
  } \
} WHILE_FALSE
#endif

static int X509V3_ext(struct Curl_easy *data,
                      int certnum,
                      CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
{
  int i;







|







3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129

#else
#define print_pubkey_BN(_type, _name, _num)    \
do {                              \
  if(_type->_name) { \
    pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
  } \
} while(0)
#endif

static int X509V3_ext(struct Curl_easy *data,
                      int certnum,
                      CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
{
  int i;
3822
3823
3824
3825
3826
3827
3828




3829






3830

3831
3832

3833
3834
3835
3836
3837
3838
3839
    case SSL_ERROR_WANT_WRITE:
      /* The operation did not complete; the same TLS/SSL I/O function
         should be called again later. This is basically an EWOULDBLOCK
         equivalent. */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:




      Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer));






      failf(conn->data, OSSL_PACKAGE " SSL_write: %s", error_buffer);

      *curlcode = CURLE_SEND_ERROR;
      return -1;

    case SSL_ERROR_SSL:
      /*  A failure in the SSL library occurred, usually a protocol error.
          The OpenSSL error queue contains more information on the error. */
      sslerror = ERR_get_error();
      if(ERR_GET_LIB(sslerror) == ERR_LIB_SSL &&
         ERR_GET_REASON(sslerror) == SSL_R_BIO_NOT_SET &&
         conn->ssl[sockindex].state == ssl_connection_complete &&







>
>
>
>
|
>
>
>
>
>
>
|
>
|
|
>







3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
    case SSL_ERROR_WANT_WRITE:
      /* The operation did not complete; the same TLS/SSL I/O function
         should be called again later. This is basically an EWOULDBLOCK
         equivalent. */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:
      {
        int sockerr = SOCKERRNO;
        sslerror = ERR_get_error();
        if(sslerror)
          ossl_strerror(sslerror, error_buffer, sizeof(error_buffer));
        else if(sockerr)
          Curl_strerror(sockerr, error_buffer, sizeof(error_buffer));
        else {
          strncpy(error_buffer, SSL_ERROR_to_str(err), sizeof(error_buffer));
          error_buffer[sizeof(error_buffer) - 1] = '\0';
        }
        failf(conn->data, OSSL_PACKAGE " SSL_write: %s, errno %d",
              error_buffer, sockerr);
        *curlcode = CURLE_SEND_ERROR;
        return -1;
      }
    case SSL_ERROR_SSL:
      /*  A failure in the SSL library occurred, usually a protocol error.
          The OpenSSL error queue contains more information on the error. */
      sslerror = ERR_get_error();
      if(ERR_GET_LIB(sslerror) == ERR_LIB_SSL &&
         ERR_GET_REASON(sslerror) == SSL_R_BIO_NOT_SET &&
         conn->ssl[sockindex].state == ssl_connection_complete &&
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912



3913

















3914









3915
3916
3917

3918
3919
3920
3921
3922
3923
3924






















3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
        connclose(conn, "TLS close_notify");
      break;
    case SSL_ERROR_WANT_READ:
    case SSL_ERROR_WANT_WRITE:
      /* there's data pending, re-invoke SSL_read() */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:
      Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer));
      failf(conn->data, OSSL_PACKAGE " SSL_read: %s", error_buffer);
      *curlcode = CURLE_RECV_ERROR;
      return -1;
    default:
      /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
         value/errno" */
      /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
      sslerror = ERR_get_error();
      if((nread < 0) || sslerror) {
        /* If the return code was negative or there actually is an error in the
           queue */
        failf(conn->data, OSSL_PACKAGE " SSL_read: %s, errno %d",
              (sslerror ?
               ossl_strerror(sslerror, error_buffer, sizeof(error_buffer)) :



               SSL_ERROR_to_str(err)),

















              SOCKERRNO);









        *curlcode = CURLE_RECV_ERROR;
        return -1;
      }

    }
  }
  return nread;
}

static size_t Curl_ossl_version(char *buffer, size_t size)
{






















#ifdef OPENSSL_IS_BORINGSSL
  return msnprintf(buffer, size, OSSL_PACKAGE);
#elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
  return msnprintf(buffer, size, "%s/%s",
                   OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
#else
  /* not BoringSSL and not using OpenSSL_version */

  char sub[3];
  unsigned long ssleay_value;
  sub[2]='\0';
  sub[1]='\0';
  ssleay_value = OpenSSL_version_num();
  if(ssleay_value < 0x906000) {







<
<
<
<
<








|
|
|
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>



>







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|





|







3924
3925
3926
3927
3928
3929
3930





3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
        connclose(conn, "TLS close_notify");
      break;
    case SSL_ERROR_WANT_READ:
    case SSL_ERROR_WANT_WRITE:
      /* there's data pending, re-invoke SSL_read() */
      *curlcode = CURLE_AGAIN;
      return -1;





    default:
      /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
         value/errno" */
      /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
      sslerror = ERR_get_error();
      if((nread < 0) || sslerror) {
        /* If the return code was negative or there actually is an error in the
           queue */
        int sockerr = SOCKERRNO;
        if(sslerror)
          ossl_strerror(sslerror, error_buffer, sizeof(error_buffer));
        else if(sockerr && err == SSL_ERROR_SYSCALL)
          Curl_strerror(sockerr, error_buffer, sizeof(error_buffer));
        else {
          strncpy(error_buffer, SSL_ERROR_to_str(err), sizeof(error_buffer));
          error_buffer[sizeof(error_buffer) - 1] = '\0';
        }
        failf(conn->data, OSSL_PACKAGE " SSL_read: %s, errno %d",
              error_buffer, sockerr);
        *curlcode = CURLE_RECV_ERROR;
        return -1;
      }
      /* For debug builds be a little stricter and error on any
         SSL_ERROR_SYSCALL. For example a server may have closed the connection
         abruptly without a close_notify alert. For compatibility with older
         peers we don't do this by default. #4624

         We can use this to gauge how many users may be affected, and
         if it goes ok eventually transition to allow in dev and release with
         the newest OpenSSL: #if (OPENSSL_VERSION_NUMBER >= 0x10101000L) */
#ifdef DEBUGBUILD
      if(err == SSL_ERROR_SYSCALL) {
        int sockerr = SOCKERRNO;
        if(sockerr)
          Curl_strerror(sockerr, error_buffer, sizeof(error_buffer));
        else {
          msnprintf(error_buffer, sizeof(error_buffer),
                    "Connection closed abruptly");
        }
        failf(conn->data, OSSL_PACKAGE " SSL_read: %s, errno %d"
              " (Fatal because this is a curl debug build)",
              error_buffer, sockerr);
        *curlcode = CURLE_RECV_ERROR;
        return -1;
      }
#endif
    }
  }
  return nread;
}

static size_t Curl_ossl_version(char *buffer, size_t size)
{
#ifdef LIBRESSL_VERSION_NUMBER
#if LIBRESSL_VERSION_NUMBER < 0x2070100fL
  return msnprintf(buffer, size, "%s/%lx.%lx.%lx",
                   OSSL_PACKAGE,
                   (LIBRESSL_VERSION_NUMBER>>28)&0xf,
                   (LIBRESSL_VERSION_NUMBER>>20)&0xff,
                   (LIBRESSL_VERSION_NUMBER>>12)&0xff);
#else /* OpenSSL_version() first appeared in LibreSSL 2.7.1 */
  char *p;
  int count;
  const char *ver = OpenSSL_version(OPENSSL_VERSION);
  const char expected[] = OSSL_PACKAGE " "; /* ie "LibreSSL " */
  if(Curl_strncasecompare(ver, expected, sizeof(expected) - 1)) {
    ver += sizeof(expected) - 1;
  }
  count = msnprintf(buffer, size, "%s/%s", OSSL_PACKAGE, ver);
  for(p = buffer; *p; ++p) {
    if(ISSPACE(*p))
      *p = '_';
  }
  return count;
#endif
#elif defined(OPENSSL_IS_BORINGSSL)
  return msnprintf(buffer, size, OSSL_PACKAGE);
#elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
  return msnprintf(buffer, size, "%s/%s",
                   OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
#else
  /* not LibreSSL, BoringSSL and not using OpenSSL_version */

  char sub[3];
  unsigned long ssleay_value;
  sub[2]='\0';
  sub[1]='\0';
  ssleay_value = OpenSSL_version_num();
  if(ssleay_value < 0x906000) {
Changes to jni/curl/lib/vtls/polarssl.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POLARSSL_H
#define HEADER_CURL_POLARSSL_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POLARSSL_H
#define HEADER_CURL_POLARSSL_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
Changes to jni/curl/lib/vtls/polarssl_threadlock.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013-2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
Changes to jni/curl/lib/vtls/polarssl_threadlock.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POLARSSL_THREADLOCK_H
#define HEADER_CURL_POLARSSL_THREADLOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013-2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_POLARSSL_THREADLOCK_H
#define HEADER_CURL_POLARSSL_THREADLOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
Changes to jni/curl/lib/vtls/schannel.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
 * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
 * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
 * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
 * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
                   "comparing the supplied target name with the subject "
                   "names in server certificates.\n"));
    }

    switch(conn->ssl_config.version) {
    case CURL_SSLVERSION_DEFAULT:
    case CURL_SSLVERSION_TLSv1:
      schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
        SP_PROT_TLS1_1_CLIENT |
        SP_PROT_TLS1_2_CLIENT;
      break;
    case CURL_SSLVERSION_TLSv1_0:
    case CURL_SSLVERSION_TLSv1_1:
    case CURL_SSLVERSION_TLSv1_2:
    case CURL_SSLVERSION_TLSv1_3:
      {
        result = set_ssl_version_min_max(&schannel_cred, conn);
        if(result != CURLE_OK)







<
<
<
<







550
551
552
553
554
555
556




557
558
559
560
561
562
563
                   "comparing the supplied target name with the subject "
                   "names in server certificates.\n"));
    }

    switch(conn->ssl_config.version) {
    case CURL_SSLVERSION_DEFAULT:
    case CURL_SSLVERSION_TLSv1:




    case CURL_SSLVERSION_TLSv1_0:
    case CURL_SSLVERSION_TLSv1_1:
    case CURL_SSLVERSION_TLSv1_2:
    case CURL_SSLVERSION_TLSv1_3:
      {
        result = set_ssl_version_min_max(&schannel_cred, conn);
        if(result != CURLE_OK)
1855
1856
1857
1858
1859
1860
1861

1862

1863
1864
1865
1866
1867
1868
1869
      BACKEND->encdata_is_incomplete = true;
      if(!*err)
        *err = CURLE_AGAIN;
      infof(data, "schannel: failed to decrypt data, need more data\n");
      goto cleanup;
    }
    else {

      char buffer[STRERROR_LEN];

      *err = CURLE_RECV_ERROR;
      infof(data, "schannel: failed to read data from server: %s\n",
            Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
      goto cleanup;
    }
  }








>

>







1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
      BACKEND->encdata_is_incomplete = true;
      if(!*err)
        *err = CURLE_AGAIN;
      infof(data, "schannel: failed to decrypt data, need more data\n");
      goto cleanup;
    }
    else {
#ifndef CURL_DISABLE_VERBOSE_STRINGS
      char buffer[STRERROR_LEN];
#endif
      *err = CURLE_RECV_ERROR;
      infof(data, "schannel: failed to read data from server: %s\n",
            Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
      goto cleanup;
    }
  }

Changes to jni/curl/lib/vtls/schannel_verify.c.
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
  size_t END_CERT_LEN;

  ca_file_tstr = Curl_convert_UTF8_to_tchar((char *)ca_file);
  if(!ca_file_tstr) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: invalid path name for CA file '%s': %s",

          ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  /*
   * Read the CA file completely into memory before parsing it. This
   * optimizes for the common case where the CA file will be relatively
   * small ( < 1 MiB ).
   */
  ca_file_handle = CreateFile(ca_file_tstr,
                              GENERIC_READ,
                              FILE_SHARE_READ,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);
  if(ca_file_handle == INVALID_HANDLE_VALUE) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: failed to open CA file '%s': %s",

          ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  if(!GetFileSizeEx(ca_file_handle, &file_size)) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: failed to determine size of CA file '%s': %s",

          ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  if(file_size.QuadPart > MAX_CAFILE_SIZE) {
    failf(data,
          "schannel: CA file exceeds max size of %u bytes",







>
|




















>
|








>
|







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
  size_t END_CERT_LEN;

  ca_file_tstr = Curl_convert_UTF8_to_tchar((char *)ca_file);
  if(!ca_file_tstr) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: invalid path name for CA file '%s': %s",
          ca_file,
          Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  /*
   * Read the CA file completely into memory before parsing it. This
   * optimizes for the common case where the CA file will be relatively
   * small ( < 1 MiB ).
   */
  ca_file_handle = CreateFile(ca_file_tstr,
                              GENERIC_READ,
                              FILE_SHARE_READ,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);
  if(ca_file_handle == INVALID_HANDLE_VALUE) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: failed to open CA file '%s': %s",
          ca_file,
          Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  if(!GetFileSizeEx(ca_file_handle, &file_size)) {
    char buffer[STRERROR_LEN];
    failf(data,
          "schannel: failed to determine size of CA file '%s': %s",
          ca_file,
          Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
    result = CURLE_SSL_CACERT_BADFILE;
    goto cleanup;
  }

  if(file_size.QuadPart > MAX_CAFILE_SIZE) {
    failf(data,
          "schannel: CA file exceeds max size of %u bytes",
155
156
157
158
159
160
161

162
163
164
165
166
167
168
169
    DWORD bytes_read = 0;

    if(!ReadFile(ca_file_handle, ca_file_buffer + total_bytes_read,
                 bytes_to_read, &bytes_read, NULL)) {
      char buffer[STRERROR_LEN];
      failf(data,
            "schannel: failed to read from CA file '%s': %s",

            ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
      result = CURLE_SSL_CACERT_BADFILE;
      goto cleanup;
    }
    if(bytes_read == 0) {
      /* Premature EOF -- adjust the bufsize to the new value */
      ca_file_bufsize = total_bytes_read;
    }







>
|







158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
    DWORD bytes_read = 0;

    if(!ReadFile(ca_file_handle, ca_file_buffer + total_bytes_read,
                 bytes_to_read, &bytes_read, NULL)) {
      char buffer[STRERROR_LEN];
      failf(data,
            "schannel: failed to read from CA file '%s': %s",
            ca_file,
            Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
      result = CURLE_SSL_CACERT_BADFILE;
      goto cleanup;
    }
    if(bytes_read == 0) {
      /* Premature EOF -- adjust the bufsize to the new value */
      ca_file_bufsize = total_bytes_read;
    }
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
                             NULL,
                             (const void **)&cert_context)) {
          char buffer[STRERROR_LEN];
          failf(data,
                "schannel: failed to extract certificate from CA file "
                "'%s': %s",
                ca_file,
                Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
          result = CURLE_SSL_CACERT_BADFILE;
          more_certs = 0;
        }
        else {
          current_ca_file_ptr = begin_cert_ptr + cert_size;

          /* Sanity check that the cert_context object is the right type */







|







223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
                             NULL,
                             (const void **)&cert_context)) {
          char buffer[STRERROR_LEN];
          failf(data,
                "schannel: failed to extract certificate from CA file "
                "'%s': %s",
                ca_file,
                Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
          result = CURLE_SSL_CACERT_BADFILE;
          more_certs = 0;
        }
        else {
          current_ca_file_ptr = begin_cert_ptr + cert_size;

          /* Sanity check that the cert_context object is the right type */
248
249
250
251
252
253
254
255

256
257
258
259
260
261
262
            CertFreeCertificateContext(cert_context);
            if(!add_cert_result) {
              char buffer[STRERROR_LEN];
              failf(data,
                    "schannel: failed to add certificate from CA file '%s' "
                    "to certificate store: %s",
                    ca_file,
                    Curl_strerror(GetLastError(), buffer, sizeof(buffer)));

              result = CURLE_SSL_CACERT_BADFILE;
              more_certs = 0;
            }
            else {
              num_certs++;
            }
          }







|
>







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
            CertFreeCertificateContext(cert_context);
            if(!add_cert_result) {
              char buffer[STRERROR_LEN];
              failf(data,
                    "schannel: failed to add certificate from CA file '%s' "
                    "to certificate store: %s",
                    ca_file,
                    Curl_winapi_strerror(GetLastError(), buffer,
                                         sizeof(buffer)));
              result = CURLE_SSL_CACERT_BADFILE;
              more_certs = 0;
            }
            else {
              num_certs++;
            }
          }
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
                                  0,
                                  (HCRYPTPROV)NULL,
                                  CERT_STORE_CREATE_NEW_FLAG,
                                  NULL);
      if(!trust_store) {
        char buffer[STRERROR_LEN];
        failf(data, "schannel: failed to create certificate store: %s",
              Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
        result = CURLE_SSL_CACERT_BADFILE;
      }
      else {
        result = add_certs_to_store(trust_store, SSL_CONN_CONFIG(CAfile),
                                    conn);
      }
    }







|







461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
                                  0,
                                  (HCRYPTPROV)NULL,
                                  CERT_STORE_CREATE_NEW_FLAG,
                                  NULL);
      if(!trust_store) {
        char buffer[STRERROR_LEN];
        failf(data, "schannel: failed to create certificate store: %s",
              Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
        result = CURLE_SSL_CACERT_BADFILE;
      }
      else {
        result = add_certs_to_store(trust_store, SSL_CONN_CONFIG(CAfile),
                                    conn);
      }
    }
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
      create_engine_result =
        CertCreateCertificateChainEngine(
          (CERT_CHAIN_ENGINE_CONFIG *)&engine_config, &cert_chain_engine);
      if(!create_engine_result) {
        char buffer[STRERROR_LEN];
        failf(data,
              "schannel: failed to create certificate chain engine: %s",
              Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
        result = CURLE_SSL_CACERT_BADFILE;
      }
    }
  }

  if(result == CURLE_OK) {
    CERT_CHAIN_PARA ChainPara;







|







490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
      create_engine_result =
        CertCreateCertificateChainEngine(
          (CERT_CHAIN_ENGINE_CONFIG *)&engine_config, &cert_chain_engine);
      if(!create_engine_result) {
        char buffer[STRERROR_LEN];
        failf(data,
              "schannel: failed to create certificate chain engine: %s",
              Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
        result = CURLE_SSL_CACERT_BADFILE;
      }
    }
  }

  if(result == CURLE_OK) {
    CERT_CHAIN_PARA ChainPara;
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
                                &ChainPara,
                                (data->set.ssl.no_revoke ? 0 :
                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
                                NULL,
                                &pChainContext)) {
      char buffer[STRERROR_LEN];
      failf(data, "schannel: CertGetCertificateChain failed: %s",
            Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
      pChainContext = NULL;
      result = CURLE_PEER_FAILED_VERIFICATION;
    }

    if(result == CURLE_OK) {
      CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);







|







513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
                                &ChainPara,
                                (data->set.ssl.no_revoke ? 0 :
                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
                                NULL,
                                &pChainContext)) {
      char buffer[STRERROR_LEN];
      failf(data, "schannel: CertGetCertificateChain failed: %s",
            Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer)));
      pChainContext = NULL;
      result = CURLE_PEER_FAILED_VERIFICATION;
    }

    if(result == CURLE_OK) {
      CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
Changes to jni/curl/lib/vtls/vtls.c.
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
  }

  Curl_ssl->close_all(data);
}

#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
  defined(USE_SECTRANSP) || defined(USE_POLARSSL) || defined(USE_NSS) || \
  defined(USE_MBEDTLS) || defined(USE_WOLFSSL)
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];

  if(connssl->connecting_state == ssl_connect_2_writing) {
    /* write mode */
    socks[0] = conn->sock[FIRSTSOCKET];







|







513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
  }

  Curl_ssl->close_all(data);
}

#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
  defined(USE_SECTRANSP) || defined(USE_POLARSSL) || defined(USE_NSS) || \
  defined(USE_MBEDTLS) || defined(USE_WOLFSSL) || defined(USE_BEARSSL)
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
  struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];

  if(connssl->connecting_state == ssl_connect_2_writing) {
    /* write mode */
    socks[0] = conn->sock[FIRSTSOCKET];
1185
1186
1187
1188
1189
1190
1191


1192
1193
1194
1195
1196
1197
1198
  &Curl_ssl_openssl;
#elif defined(USE_POLARSSL)
  &Curl_ssl_polarssl;
#elif defined(USE_SCHANNEL)
  &Curl_ssl_schannel;
#elif defined(USE_MESALINK)
  &Curl_ssl_mesalink;


#else
#error "Missing struct Curl_ssl for selected SSL backend"
#endif

static const struct Curl_ssl *available_backends[] = {
#if defined(USE_WOLFSSL)
  &Curl_ssl_wolfssl,







>
>







1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
  &Curl_ssl_openssl;
#elif defined(USE_POLARSSL)
  &Curl_ssl_polarssl;
#elif defined(USE_SCHANNEL)
  &Curl_ssl_schannel;
#elif defined(USE_MESALINK)
  &Curl_ssl_mesalink;
#elif defined(USE_BEARSSL)
  &Curl_ssl_bearssl;
#else
#error "Missing struct Curl_ssl for selected SSL backend"
#endif

static const struct Curl_ssl *available_backends[] = {
#if defined(USE_WOLFSSL)
  &Curl_ssl_wolfssl,
1219
1220
1221
1222
1223
1224
1225



1226
1227
1228
1229
1230
1231
1232
  &Curl_ssl_polarssl,
#endif
#if defined(USE_SCHANNEL)
  &Curl_ssl_schannel,
#endif
#if defined(USE_MESALINK)
  &Curl_ssl_mesalink,



#endif
  NULL
};

static size_t Curl_multissl_version(char *buffer, size_t size)
{
  static const struct Curl_ssl *selected;







>
>
>







1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
  &Curl_ssl_polarssl,
#endif
#if defined(USE_SCHANNEL)
  &Curl_ssl_schannel,
#endif
#if defined(USE_MESALINK)
  &Curl_ssl_mesalink,
#endif
#if defined(USE_BEARSSL)
  &Curl_ssl_bearssl,
#endif
  NULL
};

static size_t Curl_multissl_version(char *buffer, size_t size)
{
  static const struct Curl_ssl *selected;
Changes to jni/curl/lib/vtls/vtls.h.
104
105
106
107
108
109
110

111
112
113
114
115
116
117
#include "gskit.h"          /* Global Secure ToolKit versions */
#include "polarssl.h"       /* PolarSSL versions */
#include "wolfssl.h"        /* wolfSSL versions */
#include "schannel.h"       /* Schannel SSPI version */
#include "sectransp.h"      /* SecureTransport (Darwin) version */
#include "mbedtls.h"        /* mbedTLS versions */
#include "mesalink.h"       /* MesaLink versions */


#ifndef MAX_PINNED_PUBKEY_SIZE
#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
#endif

#ifndef MD5_DIGEST_LENGTH
#ifndef LIBWOLFSSL_VERSION_HEX /* because WolfSSL borks this */







>







104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "gskit.h"          /* Global Secure ToolKit versions */
#include "polarssl.h"       /* PolarSSL versions */
#include "wolfssl.h"        /* wolfSSL versions */
#include "schannel.h"       /* Schannel SSPI version */
#include "sectransp.h"      /* SecureTransport (Darwin) version */
#include "mbedtls.h"        /* mbedTLS versions */
#include "mesalink.h"       /* MesaLink versions */
#include "bearssl.h"        /* BearSSL versions */

#ifndef MAX_PINNED_PUBKEY_SIZE
#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
#endif

#ifndef MD5_DIGEST_LENGTH
#ifndef LIBWOLFSSL_VERSION_HEX /* because WolfSSL borks this */
Changes to jni/curl/packages/Makefile.in.
317
318
319
320
321
322
323

324
325
326
327
328
329
330
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/packages/OS400/curl.inc.in.
592
593
594
595
596
597
598






599
600
601
602
603
604
605
     d                 c                   89
     d  CURLE_SSL_PINNEDPUBKEYNOTMATCH...
     d                 c                   90
     d  CURLE_SSL_INVALIDCERTSTATUS...
     d                 c                   91
     d  CURLE_HTTP2_STREAM...
     d                 c                   92






      *
      /if not defined(CURL_NO_OLDIES)
     d  CURLE_URL_MALFORMAT_USER...
     d                 c                   4
     d  CURLE_FTP_ACCESS_DENIED...
     d                 c                   9
     d  CURLE_FTP_USER_PASSWORD_INCORRECT...







>
>
>
>
>
>







592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
     d                 c                   89
     d  CURLE_SSL_PINNEDPUBKEYNOTMATCH...
     d                 c                   90
     d  CURLE_SSL_INVALIDCERTSTATUS...
     d                 c                   91
     d  CURLE_HTTP2_STREAM...
     d                 c                   92
     d  CURLE_RECURSIVE_API_CALL...
     d                 c                   93
     d  CURLE_AUTH_ERROR...
     d                 c                   94
     d  CURLE_HTTP3...
     d                 c                   95
      *
      /if not defined(CURL_NO_OLDIES)
     d  CURLE_URL_MALFORMAT_USER...
     d                 c                   4
     d  CURLE_FTP_ACCESS_DENIED...
     d                 c                   9
     d  CURLE_FTP_USER_PASSWORD_INCORRECT...
756
757
758
759
760
761
762


763
764
765
766
767
768
769
     d  CURLUSESSL_ALL...
     d                 c                   3
      *
     d CURLSSLOPT_ALLOW_BEAST...
     d                 c                   X'0001'
     d CURLSSLOPT_NO_REVOKE...
     d                 c                   X'0002'


      *
     d CURL_HET_DEFAULT...
     d                 c                   200
      *
     d CURL_UPKEEP_INTERVAL_DEFAULT...
     d                 c                   60000
      *







>
>







762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
     d  CURLUSESSL_ALL...
     d                 c                   3
      *
     d CURLSSLOPT_ALLOW_BEAST...
     d                 c                   X'0001'
     d CURLSSLOPT_NO_REVOKE...
     d                 c                   X'0002'
     d CURLSSLOPT_NO_PARTIALCHAIN...
     d                 c                   X'0004'
      *
     d CURL_HET_DEFAULT...
     d                 c                   200
      *
     d CURL_UPKEEP_INTERVAL_DEFAULT...
     d                 c                   60000
      *
1800
1801
1802
1803
1804
1805
1806




1807
1808
1809
1810
1811
1812
1813
1814
     d                 c                   4
     d  CURLM_BAD_SOCKET...
     d                 c                   5
     d  CURLM_UNKNOWN_OPTION...
     d                 c                   6
     d  CURLM_ADDED_ALREADY...
     d                 c                   7




     d  CURLM_LAST     c                   8
      *
     d CURLMSG         s             10i 0 based(######ptr######)               Enum
     d  CURLMSG_NONE   c                   0
     d  CURLMSG_DONE   c                   1
      *
     d CURLMoption     s             10i 0 based(######ptr######)               Enum
     d  CURLMOPT_SOCKETFUNCTION...







>
>
>
>
|







1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
     d                 c                   4
     d  CURLM_BAD_SOCKET...
     d                 c                   5
     d  CURLM_UNKNOWN_OPTION...
     d                 c                   6
     d  CURLM_ADDED_ALREADY...
     d                 c                   7
     d  CURLM_RECURSIVE_API_CALL...
     d                 c                   8
     d  CURLM_WAKEUP_FAILURE...
     d                 c                   9
     d  CURLM_LAST     c                   10
      *
     d CURLMSG         s             10i 0 based(######ptr######)               Enum
     d  CURLMSG_NONE   c                   0
     d  CURLMSG_DONE   c                   1
      *
     d CURLMoption     s             10i 0 based(######ptr######)               Enum
     d  CURLMOPT_SOCKETFUNCTION...
Changes to jni/curl/packages/vms/Makefile.in.
257
258
259
260
261
262
263

264
265
266
267
268
269
270
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/packages/vms/config_h.com.
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
$	endif
$!
$	if key2 .eqs. "HAVE_LIBDL"
$	then
$	    write tf "#ifndef ''key2'"
$	    write tf "#define ''key2' 1"
$	    write tf "#endif"
$	    goto cfgh_in_loop1
$	endif
$!
$	if key2 .eqs. "HAVE_ENGINE_LOAD_BUILTIN_ENGINES"
$	then
$	    if f$search("''ssl_header_dir'engine.h") .nes. ""
$	    then
$		search_key = key2 - "HAVE_"
$		define/user sys$output nl:
$		define/user sys$error nl:
$		search/output=nl: 'ssl_header_dir'engine.h 'search_key'
$		if '$severity' .eq. 1
$		then
$		    write tf "#ifndef ''key2'"
$		    write tf "#define ''key2' 1"
$		    write tf "#endif"
$		else
$		    write tf "/* #undef ''key2' */"
$		endif
$	    else
$		write tf "/* #undef ''key2' */"
$	    endif
$	    goto cfgh_in_loop1
$	endif
$!
$	if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
$	then
$	    if (key2c .eqs. "EGD") .or. -
	       (key2c .eqs. "STATUS") .or. -







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







796
797
798
799
800
801
802






















803
804
805
806
807
808
809
$	endif
$!
$	if key2 .eqs. "HAVE_LIBDL"
$	then
$	    write tf "#ifndef ''key2'"
$	    write tf "#define ''key2' 1"
$	    write tf "#endif"






















$	    goto cfgh_in_loop1
$	endif
$!
$	if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
$	then
$	    if (key2c .eqs. "EGD") .or. -
	       (key2c .eqs. "STATUS") .or. -
Changes to jni/curl/packages/vms/generate_config_vms_h_curl.com.
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
$write cvh "#undef CURL_DISABLE_VERBOSE_STRINGS"
$write cvh "#endif"
$!
$! configure defaults to USE_*, a real configure on VMS chooses different.
$write cvh "#ifdef USE_ARES"
$write cvh "#undef USE_ARES"
$write cvh "#endif"
$write cvh "#ifdef USE_CYASSL"
$write cvh "#undef USE_CYASSL"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS"
$write cvh "#undef USE_GNUTLS"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS_NETTLE"
$write cvh "#undef USE_GNUTLS_NETTLE"
$write cvh "#endif"







|
|







321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
$write cvh "#undef CURL_DISABLE_VERBOSE_STRINGS"
$write cvh "#endif"
$!
$! configure defaults to USE_*, a real configure on VMS chooses different.
$write cvh "#ifdef USE_ARES"
$write cvh "#undef USE_ARES"
$write cvh "#endif"
$write cvh "#ifdef USE_WOLFSSL"
$write cvh "#undef USE_WOLFSSL"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS"
$write cvh "#undef USE_GNUTLS"
$write cvh "#endif"
$write cvh "#ifdef USE_GNUTLS_NETTLE"
$write cvh "#undef USE_GNUTLS_NETTLE"
$write cvh "#endif"
Changes to jni/curl/projects/Windows/VC10/curl-all.sln.
Changes to jni/curl/projects/Windows/VC10/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC10/lib/libcurl.vcxproj.
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
2442
2443
2444
2445
2446
2447
2448





2449
2450
2451
2452
2453
2454
2455
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />





    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />







>
>
>
>
>







2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578




2579
2580
2581
2582
2583
2584
2585
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />




    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />







<



















>
>
>
>







2557
2558
2559
2560
2561
2562
2563

2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />

    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
Changes to jni/curl/projects/Windows/VC10/src/curl.sln.
Changes to jni/curl/projects/Windows/VC11/curl-all.sln.
Changes to jni/curl/projects/Windows/VC11/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC11/lib/libcurl.vcxproj.
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
2498
2499
2500
2501
2502
2503
2504





2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />





    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />







>
>
>
>
>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634




2635
2636
2637
2638
2639
2640
2641
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />




    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />







<



















>
>
>
>







2613
2614
2615
2616
2617
2618
2619

2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />

    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
Changes to jni/curl/projects/Windows/VC11/src/curl.sln.
Changes to jni/curl/projects/Windows/VC12/curl-all.sln.
Changes to jni/curl/projects/Windows/VC12/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC12/lib/libcurl.vcxproj.
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
2498
2499
2500
2501
2502
2503
2504





2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />





    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />







>
>
>
>
>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634




2635
2636
2637
2638
2639
2640
2641
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />




    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />







<



















>
>
>
>







2613
2614
2615
2616
2617
2618
2619

2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />

    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
Changes to jni/curl/projects/Windows/VC12/src/curl.sln.
Changes to jni/curl/projects/Windows/VC14/curl-all.sln.
Changes to jni/curl/projects/Windows/VC14/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC14/lib/libcurl.vcxproj.
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>







|







1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
2498
2499
2500
2501
2502
2503
2504





2505
2506
2507
2508
2509
2510
2511
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />





    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />







>
>
>
>
>







2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634




2635
2636
2637
2638
2639
2640
2641
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />




    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />







<



















>
>
>
>







2613
2614
2615
2616
2617
2618
2619

2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />

    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
Changes to jni/curl/projects/Windows/VC14/src/curl.sln.
Changes to jni/curl/projects/Windows/VC15/lib/libcurl.vcxproj.
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
      <HeaderFileName>
      </HeaderFileName>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
      <TargetMachine>MachineX86</TargetMachine>
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
      <WarningLevel>Level4</WarningLevel>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
    </Lib>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;USE_IPV6;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>







|







1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
    <Midl>
      <TargetEnvironment>X64</TargetEnvironment>
    </Midl>
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <StringPooling>true</StringPooling>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <WarningLevel>Level4</WarningLevel>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
2470
2471
2472
2473
2474
2475
2476





2477
2478
2479
2480
2481
2482
2483
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />





    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />







>
>
>
>
>







2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />
    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />
    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />
    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606




2607
2608
2609
2610
2611
2612
2613
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />




    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />







<



















>
>
>
>







2585
2586
2587
2588
2589
2590
2591

2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />

    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
    <ClInclude Include="..\..\..\..\lib\strtok.h" />
    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />
    <ClInclude Include="..\..\..\..\lib\system_win32.h" />
    <ClInclude Include="..\..\..\..\lib\telnet.h" />
    <ClInclude Include="..\..\..\..\lib\tftp.h" />
    <ClInclude Include="..\..\..\..\lib\timeval.h" />
    <ClInclude Include="..\..\..\..\lib\transfer.h" />
    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />
    <ClInclude Include="..\..\..\..\lib\urldata.h" />
    <ClInclude Include="..\..\..\..\lib\url.h" />
    <ClInclude Include="..\..\..\..\lib\warnless.h" />
    <ClInclude Include="..\..\..\..\lib\wildcard.h" />
    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />
    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />
    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />
    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
Changes to jni/curl/projects/Windows/VC6/lib/libcurl.dsp.
1217
1218
1219
1220
1221
1222
1223




















1224
1225
1226
1227
1228
1229
1230
SOURCE=..\..\..\..\lib\vauth\spnego_sspi.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\vauth.c
# End Source File
# Begin Source File





















SOURCE=..\..\..\..\lib\vtls\gskit.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gtls.c
# End Source File







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
SOURCE=..\..\..\..\lib\vauth\spnego_sspi.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\vauth.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vquic\ngtcp2.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vquic\quiche.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vssh\libssh2.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vssh\libssh.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\bearssl.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gskit.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gtls.c
# End Source File
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\splay.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\ssh.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\strcase.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\strdup.h
# End Source File
# Begin Source File







<
<
<
<







1674
1675
1676
1677
1678
1679
1680




1681
1682
1683
1684
1685
1686
1687
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\splay.h
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\strcase.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\strdup.h
# End Source File
# Begin Source File
1733
1734
1735
1736
1737
1738
1739
















1740
1741
1742
1743
1744
1745
1746
SOURCE=..\..\..\..\lib\vauth\ntlm.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\vauth.h
# End Source File
# Begin Source File

















SOURCE=..\..\..\..\lib\vtls\gskit.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gtls.h
# End Source File







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
SOURCE=..\..\..\..\lib\vauth\ntlm.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vauth\vauth.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vquic\ngtcp2.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vquic\quiche.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vssh\ssh.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\bearssl.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gskit.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\vtls\gtls.h
# End Source File
Changes to jni/curl/projects/Windows/VC7.1/curl-all.sln.
Changes to jni/curl/projects/Windows/VC7.1/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC7.1/lib/libcurl.vcproj.
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\ssh.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strerror.h">







<
<
<







1874
1875
1876
1877
1878
1879
1880



1881
1882
1883
1884
1885
1886
1887
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h">
			</File>
			<File



				RelativePath="..\..\..\..\lib\strcase.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strerror.h">
1989
1990
1991
1992
1993
1994
1995
1996













































1997
1998
1999
2000
2001



2002
2003
2004
2005
2006
2007
2008
					RelativePath="..\..\..\..\lib\vauth\ntlm.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h">
				</File>
			</Filter>
		</Filter>
		<Filter













































			Name="vtls"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">



				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c">
				</File>
				<File








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>







1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
					RelativePath="..\..\..\..\lib\vauth\ntlm.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vquic"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vssh"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh2.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vssh\ssh.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vtls"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c">
				</File>
				<File
2038
2039
2040
2041
2042
2043
2044



2045
2046
2047
2048
2049
2050
2051
				<File
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">



				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h">
				</File>
				<File







>
>
>







2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
				<File
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h">
				</File>
				<File
Changes to jni/curl/projects/Windows/VC7.1/src/curl.sln.
Changes to jni/curl/projects/Windows/VC7/curl-all.sln.
Changes to jni/curl/projects/Windows/VC7/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC7/lib/libcurl.vcproj.
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\ssh.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strerror.h">







<
<
<







1728
1729
1730
1731
1732
1733
1734



1735
1736
1737
1738
1739
1740
1741
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h">
			</File>
			<File



				RelativePath="..\..\..\..\lib\strcase.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\strerror.h">
1843
1844
1845
1846
1847
1848
1849
1850













































1851
1852
1853
1854
1855



1856
1857
1858
1859
1860
1861
1862
					RelativePath="..\..\..\..\lib\vauth\ntlm.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h">
				</File>
			</Filter>
		</Filter>
		<Filter













































			Name="vtls"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">



				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c">
				</File>
				<File








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>







1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
					RelativePath="..\..\..\..\lib\vauth\ntlm.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vquic"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vssh"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh2.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vssh\ssh.h">
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vtls"
			Filter="">
			<Filter
				Name="Source Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c">
				</File>
				<File
1892
1893
1894
1895
1896
1897
1898



1899
1900
1901
1902
1903
1904
1905
				<File
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">



				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h">
				</File>
				<File







>
>
>







1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
				<File
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c">
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				Filter="">
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h">
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h">
				</File>
				<File
Changes to jni/curl/projects/Windows/VC7/src/curl.sln.
Changes to jni/curl/projects/Windows/VC8/curl-all.sln.
Changes to jni/curl/projects/Windows/VC8/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC8/lib/libcurl.vcproj.
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\ssh.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h"







<
<
<
<







4439
4440
4441
4442
4443
4444
4445




4446
4447
4448
4449
4450
4451
4452
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h"
4589
4590
4591
4592
4593
4594
4595
4596




















































4597
4598
4599
4600
4601




4602
4603
4604
4605
4606
4607
4608
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter




















































			Name="vtls"
			>
			<Filter
				Name="Source Files"
				>




				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c"
				>








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>
>







4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vquic"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vssh"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh2.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vssh\ssh.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vtls"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c"
				>
4651
4652
4653
4654
4655
4656
4657




4658
4659
4660
4661
4662
4663
4664
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>




				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h"
				>







>
>
>
>







4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h"
				>
Changes to jni/curl/projects/Windows/VC8/src/curl.sln.
Changes to jni/curl/projects/Windows/VC9/curl-all.sln.
Changes to jni/curl/projects/Windows/VC9/lib/libcurl.sln.
Changes to jni/curl/projects/Windows/VC9/lib/libcurl.vcproj.
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\ssh.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h"







<
<
<
<







4380
4381
4382
4383
4384
4385
4386




4387
4388
4389
4390
4391
4392
4393
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\splay.h"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\strcase.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\strdup.h"
4530
4531
4532
4533
4534
4535
4536
4537




















































4538
4539
4540
4541
4542




4543
4544
4545
4546
4547
4548
4549
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter




















































			Name="vtls"
			>
			<Filter
				Name="Source Files"
				>




				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c"
				>








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>
>







4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
				</File>
				<File
					RelativePath="..\..\..\..\lib\vauth\vauth.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vquic"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vquic\quiche.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vssh"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh2.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vssh\libssh.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vssh\ssh.h"
				>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="vtls"
			>
			<Filter
				Name="Source Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.c"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.c"
				>
4592
4593
4594
4595
4596
4597
4598




4599
4600
4601
4602
4603
4604
4605
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>




				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h"
				>







>
>
>
>







4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
					RelativePath="..\..\..\..\lib\vtls\wolfssl.c"
				>
				</File>
			</Filter>
			<Filter
				Name="Header Files"
				>
				<File
					RelativePath="..\..\..\..\lib\vtls\bearssl.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gskit.h"
				>
				</File>
				<File
					RelativePath="..\..\..\..\lib\vtls\gtls.h"
				>
Changes to jni/curl/projects/Windows/VC9/src/curl.sln.
Changes to jni/curl/projects/checksrc.bat.
108
109
110
111
112
113
114












115
116
117
118
119
120
121
    )

    rem Check the lib\vauth directory
    if exist %SRC_DIR%\lib\vauth (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
    )













    rem Check the lib\vtls directory
    if exist %SRC_DIR%\lib\vtls (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
    )
  )







>
>
>
>
>
>
>
>
>
>
>
>







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
    )

    rem Check the lib\vauth directory
    if exist %SRC_DIR%\lib\vauth (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"
    )

    rem Check the lib\vquic directory
    if exist %SRC_DIR%\lib\vquic (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"
    )

    rem Check the lib\vssh directory
    if exist %SRC_DIR%\lib\vssh (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"
    )

    rem Check the lib\vtls directory
    if exist %SRC_DIR%\lib\vtls (
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"
    )
  )
Changes to jni/curl/projects/generate.bat.
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
      for /f "delims=" %%h in ('dir /b ..\lib\*.h') do call :element %1 lib "%%h" %3
    ) else if "!var!" == "CURL_LIB_RC_FILES" (
      for /f "delims=" %%r in ('dir /b ..\lib\*.rc') do call :element %1 lib "%%r" %3
    ) else if "!var!" == "CURL_LIB_VAUTH_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vauth\*.c') do call :element %1 lib\vauth "%%c" %3
    ) else if "!var!" == "CURL_LIB_VAUTH_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vauth\*.h') do call :element %1 lib\vauth "%%h" %3








    ) else if "!var!" == "CURL_LIB_VTLS_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vtls\*.c') do call :element %1 lib\vtls "%%c" %3
    ) else if "!var!" == "CURL_LIB_VTLS_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vtls\*.h') do call :element %1 lib\vtls "%%h" %3
    ) else (
      echo.!var!>> %3
    )

    endlocal
  )
  exit /B

rem Generates a single file xml element.
rem
rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)
rem %2 - Directory (src, lib, lib\vauth or lib\vtls)
rem %3 - Source filename
rem %4 - Output project file
rem
:element
  set "SPACES=    "
  if "%2" == "lib\vauth" (




    set "TABS=				"
  ) else if "%2" == "lib\vtls" (
    set "TABS=				"
  ) else (
    set "TABS=			"
  )








>
>
>
>
>
>
>
>
















|






>
>
>
>







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
      for /f "delims=" %%h in ('dir /b ..\lib\*.h') do call :element %1 lib "%%h" %3
    ) else if "!var!" == "CURL_LIB_RC_FILES" (
      for /f "delims=" %%r in ('dir /b ..\lib\*.rc') do call :element %1 lib "%%r" %3
    ) else if "!var!" == "CURL_LIB_VAUTH_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vauth\*.c') do call :element %1 lib\vauth "%%c" %3
    ) else if "!var!" == "CURL_LIB_VAUTH_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vauth\*.h') do call :element %1 lib\vauth "%%h" %3
    ) else if "!var!" == "CURL_LIB_VQUIC_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vquic\*.c') do call :element %1 lib\vquic "%%c" %3
    ) else if "!var!" == "CURL_LIB_VQUIC_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vquic\*.h') do call :element %1 lib\vquic "%%h" %3
    ) else if "!var!" == "CURL_LIB_VSSH_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vssh\*.c') do call :element %1 lib\vssh "%%c" %3
    ) else if "!var!" == "CURL_LIB_VSSH_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vssh\*.h') do call :element %1 lib\vssh "%%h" %3
    ) else if "!var!" == "CURL_LIB_VTLS_C_FILES" (
      for /f "delims=" %%c in ('dir /b ..\lib\vtls\*.c') do call :element %1 lib\vtls "%%c" %3
    ) else if "!var!" == "CURL_LIB_VTLS_H_FILES" (
      for /f "delims=" %%h in ('dir /b ..\lib\vtls\*.h') do call :element %1 lib\vtls "%%h" %3
    ) else (
      echo.!var!>> %3
    )

    endlocal
  )
  exit /B

rem Generates a single file xml element.
rem
rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)
rem %2 - Directory (src, lib, lib\vauth, lib\vquic, lib\vssh, lib\vtls)
rem %3 - Source filename
rem %4 - Output project file
rem
:element
  set "SPACES=    "
  if "%2" == "lib\vauth" (
    set "TABS=				"
  ) else if "%2" == "lib\vquic" (
    set "TABS=				"
  ) else if "%2" == "lib\vssh" (
    set "TABS=				"
  ) else if "%2" == "lib\vtls" (
    set "TABS=				"
  ) else (
    set "TABS=			"
  )

Changes to jni/curl/scripts/Makefile.in.
257
258
259
260
261
262
263

264
265
266
267
268
269
270
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/src/Makefile.in.
540
541
542
543
544
545
546

547
548
549
550
551
552
553
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/src/slist_wc.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/slist_wc.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SLIST_WC_H
#define HEADER_CURL_SLIST_WC_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SLIST_WC_H
#define HEADER_CURL_SLIST_WC_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_binmode.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_binmode.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_BINMODE_H
#define HEADER_CURL_TOOL_BINMODE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_BINMODE_H
#define HEADER_CURL_TOOL_BINMODE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_bname.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_bname.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_BNAME_H
#define HEADER_CURL_TOOL_BNAME_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_BNAME_H
#define HEADER_CURL_TOOL_BNAME_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_cb_dbg.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_DBG_H
#define HEADER_CURL_TOOL_CB_DBG_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_DBG_H
#define HEADER_CURL_TOOL_CB_DBG_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_cb_hdr.c.
55
56
57
58
59
60
61

62
63
64
65
66
67
68

size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{
  struct per_transfer *per = userdata;
  struct HdrCbData *hdrcbdata = &per->hdrcbdata;
  struct OutStruct *outs = &per->outs;
  struct OutStruct *heads = &per->heads;

  const char *str = ptr;
  const size_t cb = size * nmemb;
  const char *end = (char *)ptr + cb;
  long protocol = 0;

  /*
   * Once that libcurl has called back tool_header_cb() the returned value







>







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{
  struct per_transfer *per = userdata;
  struct HdrCbData *hdrcbdata = &per->hdrcbdata;
  struct OutStruct *outs = &per->outs;
  struct OutStruct *heads = &per->heads;
  struct OutStruct *etag_save = &per->etag_save;
  const char *str = ptr;
  const size_t cb = size * nmemb;
  const char *end = (char *)ptr + cb;
  long protocol = 0;

  /*
   * Once that libcurl has called back tool_header_cb() the returned value
90
91
92
93
94
95
96





















































97
98
99
100
101
102
103
  if(heads->config->headerfile && heads->stream) {
    size_t rc = fwrite(ptr, size, nmemb, heads->stream);
    if(rc != cb)
      return rc;
    /* flush the stream to send off what we got earlier */
    (void)fflush(heads->stream);
  }






















































  /*
   * This callback sets the filename where output shall be written when
   * curl options --remote-name (-O) and --remote-header-name (-J) have
   * been simultaneously given and additionally server returns an HTTP
   * Content-Disposition header specifying a filename property.
   */







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
  if(heads->config->headerfile && heads->stream) {
    size_t rc = fwrite(ptr, size, nmemb, heads->stream);
    if(rc != cb)
      return rc;
    /* flush the stream to send off what we got earlier */
    (void)fflush(heads->stream);
  }

  /*
   * Write etag to file when --etag-save option is given.
   * etag string that we want is enveloped in double quotes
   */
  if(etag_save->config->etag_save_file && etag_save->stream) {
    /* match only header that start with etag (case insensitive) */
    if(curl_strnequal(str, "etag:", 5)) {
      char *etag_h = NULL;
      char *first = NULL;
      char *last = NULL;
      size_t etag_length = 0;

      etag_h = ptr;
      /* point to first occurence of double quote */
      first = memchr(etag_h, '\"', cb);

      /*
       * if server side messed with the etag header and doesn't include
       * double quotes around the etag, kindly exit with a warning
       */

      if(!first) {
        warnf(
          etag_save->config->global,
          "\nReceived header etag is missing double quote/s\n");
        return 1;
      }
      else {
        /* discard first double quote */
        first++;
      }

      /* point to last occurence of double quote */
      last = memchr(first, '\"', cb);

      if(!last) {
        warnf(
          etag_save->config->global,
          "\nReceived header etag is missing double quote/s\n");
        return 1;
      }

      /* get length of desired etag */
      etag_length = (size_t)last - (size_t)first;

      fwrite(first, size, etag_length, etag_save->stream);
      /* terminate with new line */
      fputc('\n', etag_save->stream);
    }

    (void)fflush(etag_save->stream);
  }

  /*
   * This callback sets the filename where output shall be written when
   * curl options --remote-name (-O) and --remote-header-name (-J) have
   * been simultaneously given and additionally server returns an HTTP
   * Content-Disposition header specifying a filename property.
   */
Changes to jni/curl/src/tool_cb_hdr.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_HDR_H
#define HEADER_CURL_TOOL_CB_HDR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_HDR_H
#define HEADER_CURL_TOOL_CB_HDR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55
 */

struct HdrCbData {
  struct GlobalConfig *global;
  struct OperationConfig *config;
  struct OutStruct *outs;
  struct OutStruct *heads;

  bool honor_cd_filename;
};

/*
** callback for CURLOPT_HEADERFUNCTION
*/

size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata);

#endif /* HEADER_CURL_TOOL_CB_HDR_H */







>










39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 */

struct HdrCbData {
  struct GlobalConfig *global;
  struct OperationConfig *config;
  struct OutStruct *outs;
  struct OutStruct *heads;
  struct OutStruct *etag_save;
  bool honor_cd_filename;
};

/*
** callback for CURLOPT_HEADERFUNCTION
*/

size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata);

#endif /* HEADER_CURL_TOOL_CB_HDR_H */
Changes to jni/curl/src/tool_cb_prg.c.
28
29
30
31
32
33
34

35
36
37
38
39
40
41
#define ENABLE_CURLX_PRINTF
/* use our own printf() functions */
#include "curlx.h"

#include "tool_cfgable.h"
#include "tool_cb_prg.h"
#include "tool_util.h"


#include "memdebug.h" /* keep this as LAST include */

#ifdef HAVE_TERMIOS_H
#  include <termios.h>
#elif defined(HAVE_TERMIO_H)
#  include <termio.h>







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#define ENABLE_CURLX_PRINTF
/* use our own printf() functions */
#include "curlx.h"

#include "tool_cfgable.h"
#include "tool_cb_prg.h"
#include "tool_util.h"
#include "tool_operate.h"

#include "memdebug.h" /* keep this as LAST include */

#ifdef HAVE_TERMIOS_H
#  include <termios.h>
#elif defined(HAVE_TERMIO_H)
#  include <termio.h>
117
118
119
120
121
122
123



124
125
126
127
128
129
130
131
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow)
{
  /* The original progress-bar source code was written for curl by Lars Aas,
     and this new edition inherits some of his concepts. */

  struct timeval now = tvnow();



  struct ProgressData *bar = (struct ProgressData *)clientp;
  curl_off_t total;
  curl_off_t point;

  /* Calculate expected transfer size. initial_size can be less than zero
     when indicating that we are expecting to get the filesize from the
     remote */
  if(bar->initial_size < 0 ||







>
>
>
|







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow)
{
  /* The original progress-bar source code was written for curl by Lars Aas,
     and this new edition inherits some of his concepts. */

  struct timeval now = tvnow();
  struct per_transfer *per = clientp;
  struct OutStruct *outs = &per->outs;
  struct OperationConfig *config = outs->config;
  struct ProgressData *bar = &per->progressbar;
  curl_off_t total;
  curl_off_t point;

  /* Calculate expected transfer size. initial_size can be less than zero
     when indicating that we are expecting to get the filesize from the
     remote */
  if(bar->initial_size < 0 ||
186
187
188
189
190
191
192





193
194
195
196
197
198
199
    line[num] = '\0';
    msnprintf(format, sizeof(format), "\r%%-%ds %%5.1f%%%%", barwidth);
    fprintf(bar->out, format, line, percent);
  }
  fflush(bar->out);
  bar->prev = point;
  bar->prevtime = now;






  return 0;
}

void progressbarinit(struct ProgressData *bar,
                     struct OperationConfig *config)
{







>
>
>
>
>







190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
    line[num] = '\0';
    msnprintf(format, sizeof(format), "\r%%-%ds %%5.1f%%%%", barwidth);
    fprintf(bar->out, format, line, percent);
  }
  fflush(bar->out);
  bar->prev = point;
  bar->prevtime = now;

  if(config->readbusy) {
    config->readbusy = FALSE;
    curl_easy_pause(per->curl, CURLPAUSE_CONT);
  }

  return 0;
}

void progressbarinit(struct ProgressData *bar,
                     struct OperationConfig *config)
{
Changes to jni/curl/src/tool_cb_rea.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
23
24
25
26
27
28
29

30
31
32
33
34
35
36

#define ENABLE_CURLX_PRINTF
/* use our own printf() functions */
#include "curlx.h"

#include "tool_cfgable.h"
#include "tool_cb_rea.h"


#include "memdebug.h" /* keep this as LAST include */

/*
** callback for CURLOPT_READFUNCTION
*/








>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

#define ENABLE_CURLX_PRINTF
/* use our own printf() functions */
#include "curlx.h"

#include "tool_cfgable.h"
#include "tool_cb_rea.h"
#include "tool_operate.h"

#include "memdebug.h" /* keep this as LAST include */

/*
** callback for CURLOPT_READFUNCTION
*/

48
49
50
51
52
53
54

























    }
    /* since size_t is unsigned we can't return negative values fine */
    rc = 0;
  }
  in->config->readbusy = FALSE;
  return (size_t)rc;
}
































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
    }
    /* since size_t is unsigned we can't return negative values fine */
    rc = 0;
  }
  in->config->readbusy = FALSE;
  return (size_t)rc;
}

/*
** callback for CURLOPT_XFERINFOFUNCTION used to unpause busy reads
*/

int tool_readbusy_cb(void *clientp,
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow)
{
  struct per_transfer *per = clientp;
  struct OutStruct *outs = &per->outs;
  struct OperationConfig *config = outs->config;

  (void)dltotal;  /* unused */
  (void)dlnow;  /* unused */
  (void)ultotal;  /* unused */
  (void)ulnow;  /* unused */

  if(config->readbusy) {
    config->readbusy = FALSE;
    curl_easy_pause(per->curl, CURLPAUSE_CONT);
  }

  return per->noprogress? 0 : CURL_PROGRESSFUNC_CONTINUE;
}
Changes to jni/curl/src/tool_cb_rea.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_REA_H
#define HEADER_CURL_TOOL_CB_REA_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_REA_H
#define HEADER_CURL_TOOL_CB_REA_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
25
26
27
28
29
30
31








32

/*
** callback for CURLOPT_READFUNCTION
*/

size_t tool_read_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);









#endif /* HEADER_CURL_TOOL_CB_REA_H */







>
>
>
>
>
>
>
>

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

/*
** callback for CURLOPT_READFUNCTION
*/

size_t tool_read_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);

/*
** callback for CURLOPT_XFERINFOFUNCTION used to unpause busy reads
*/

int tool_readbusy_cb(void *clientp,
                     curl_off_t dltotal, curl_off_t dlnow,
                     curl_off_t ultotal, curl_off_t ulnow);

#endif /* HEADER_CURL_TOOL_CB_REA_H */
Changes to jni/curl/src/tool_cb_see.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_cb_see.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_SEE_H
#define HEADER_CURL_TOOL_CB_SEE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CB_SEE_H
#define HEADER_CURL_TOOL_CB_SEE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_cfgable.c.
124
125
126
127
128
129
130


131
132
133
134
135
136
137
  Curl_safefree(config->key_type);
  Curl_safefree(config->proxy_key_type);
  Curl_safefree(config->key_passwd);
  Curl_safefree(config->proxy_key_passwd);
  Curl_safefree(config->pubkey);
  Curl_safefree(config->hostpubmd5);
  Curl_safefree(config->engine);


  Curl_safefree(config->request_target);
  Curl_safefree(config->customrequest);
  Curl_safefree(config->krblevel);

  Curl_safefree(config->oauth_bearer);
  Curl_safefree(config->sasl_authzid);








>
>







124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  Curl_safefree(config->key_type);
  Curl_safefree(config->proxy_key_type);
  Curl_safefree(config->key_passwd);
  Curl_safefree(config->proxy_key_passwd);
  Curl_safefree(config->pubkey);
  Curl_safefree(config->hostpubmd5);
  Curl_safefree(config->engine);
  Curl_safefree(config->etag_save_file);
  Curl_safefree(config->etag_compare_file);
  Curl_safefree(config->request_target);
  Curl_safefree(config->customrequest);
  Curl_safefree(config->krblevel);

  Curl_safefree(config->oauth_bearer);
  Curl_safefree(config->sasl_authzid);

Changes to jni/curl/src/tool_cfgable.h.
152
153
154
155
156
157
158


159
160
161
162
163
164
165
  char *key_type;
  char *proxy_key_type;
  char *key_passwd;
  char *proxy_key_passwd;
  char *pubkey;
  char *hostpubmd5;
  char *engine;


  bool crlf;
  char *customrequest;
  char *krblevel;
  char *request_target;
  long httpversion;
  bool http09_allowed;
  bool nobuffer;







>
>







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
  char *key_type;
  char *proxy_key_type;
  char *key_passwd;
  char *proxy_key_passwd;
  char *pubkey;
  char *hostpubmd5;
  char *engine;
  char *etag_save_file;
  char *etag_compare_file;
  bool crlf;
  char *customrequest;
  char *krblevel;
  char *request_target;
  long httpversion;
  bool http09_allowed;
  bool nobuffer;
296
297
298
299
300
301
302

303
304
305
306
307
308
309
310
311
  bool fail_early;                /* exit on first transfer error */
  bool styled_output;             /* enable fancy output style detection */
#ifdef CURLDEBUG
  bool test_event_based;
#endif
  bool parallel;
  long parallel_max;

  struct OperationConfig *first;
  struct OperationConfig *current;
  struct OperationConfig *last;   /* Always last in the struct */
};

void config_init(struct OperationConfig *config);
void config_free(struct OperationConfig *config);

#endif /* HEADER_CURL_TOOL_CFGABLE_H */







>









298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
  bool fail_early;                /* exit on first transfer error */
  bool styled_output;             /* enable fancy output style detection */
#ifdef CURLDEBUG
  bool test_event_based;
#endif
  bool parallel;
  long parallel_max;
  bool parallel_connect;
  struct OperationConfig *first;
  struct OperationConfig *current;
  struct OperationConfig *last;   /* Always last in the struct */
};

void config_init(struct OperationConfig *config);
void config_free(struct OperationConfig *config);

#endif /* HEADER_CURL_TOOL_CFGABLE_H */
Changes to jni/curl/src/tool_convert.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CONVERT_H
#define HEADER_CURL_TOOL_CONVERT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_CONVERT_H
#define HEADER_CURL_TOOL_CONVERT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_dirhie.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_DIRHIE_H
#define HEADER_CURL_TOOL_DIRHIE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_DIRHIE_H
#define HEADER_CURL_TOOL_DIRHIE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_doswin.c.
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
#endif

#include "tool_bname.h"
#include "tool_doswin.h"

#include "memdebug.h" /* keep this as LAST include */

/*
 * Macros ALWAYS_TRUE and ALWAYS_FALSE are used to avoid compiler warnings.
 */

#define ALWAYS_TRUE   (1)
#define ALWAYS_FALSE  (0)

#if defined(_MSC_VER) && !defined(__POCC__)
#  undef ALWAYS_TRUE
#  undef ALWAYS_FALSE
#  if (_MSC_VER < 1500)
#    define ALWAYS_TRUE   (0, 1)
#    define ALWAYS_FALSE  (1, 0)
#  else
#    define ALWAYS_TRUE \
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
(1) \
__pragma(warning(pop))
#    define ALWAYS_FALSE \
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
(0) \
__pragma(warning(pop))
#  endif
#endif

#ifdef WIN32
#  undef  PATH_MAX
#  define PATH_MAX MAX_PATH
#endif

#ifndef S_ISCHR
#  ifdef S_IFCHR
#    define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#  else
#    define S_ISCHR(m) (0) /* cannot tell if file is a device */
#  endif
#endif

#ifdef WIN32
#  define _use_lfn(f) ALWAYS_TRUE   /* long file names always available */
#elif !defined(__DJGPP__) || (__DJGPP__ < 2)  /* DJGPP 2.0 has _use_lfn() */
#  define _use_lfn(f) ALWAYS_FALSE  /* long file names never available */
#elif defined(__DJGPP__)
#  include <fcntl.h>                /* _use_lfn(f) prototype */
#endif

#ifndef UNITTESTS
static SANITIZEcode truncate_dryrun(const char *path,
                                    const size_t truncate_pos);







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<














|

|







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
#endif

#include "tool_bname.h"
#include "tool_doswin.h"

#include "memdebug.h" /* keep this as LAST include */




























#ifdef WIN32
#  undef  PATH_MAX
#  define PATH_MAX MAX_PATH
#endif

#ifndef S_ISCHR
#  ifdef S_IFCHR
#    define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#  else
#    define S_ISCHR(m) (0) /* cannot tell if file is a device */
#  endif
#endif

#ifdef WIN32
#  define _use_lfn(f) (1)   /* long file names always available */
#elif !defined(__DJGPP__) || (__DJGPP__ < 2)  /* DJGPP 2.0 has _use_lfn() */
#  define _use_lfn(f) (0)  /* long file names never available */
#elif defined(__DJGPP__)
#  include <fcntl.h>                /* _use_lfn(f) prototype */
#endif

#ifndef UNITTESTS
static SANITIZEcode truncate_dryrun(const char *path,
                                    const size_t truncate_pos);
Changes to jni/curl/src/tool_doswin.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_DOSWIN_H
#define HEADER_CURL_TOOL_DOSWIN_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_DOSWIN_H
#define HEADER_CURL_TOOL_DOSWIN_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_easysrc.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
  else {
    ret = easysrc_add(plist, bufp);
    curl_free(bufp);
  }
  return ret;
}

#define CHKRET(v) do {CURLcode ret = (v); if(ret) return ret;} WHILE_FALSE

CURLcode easysrc_init(void)
{
  CHKRET(easysrc_add(&easysrc_code,
                     "hnd = curl_easy_init();"));
  return CURLE_OK;
}







|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
  else {
    ret = easysrc_add(plist, bufp);
    curl_free(bufp);
  }
  return ret;
}

#define CHKRET(v) do {CURLcode ret = (v); if(ret) return ret;} while(0)

CURLcode easysrc_init(void)
{
  CHKRET(easysrc_add(&easysrc_code,
                     "hnd = curl_easy_init();"));
  return CURLE_OK;
}
Changes to jni/curl/src/tool_getparam.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    *(str) = NULL; \
  } \
  if((val)) {              \
    *(str) = strdup((val)); \
    if(!(*(str)))          \
      return PARAM_NO_MEM; \
  } \
} WHILE_FALSE

struct LongShort {
  const char *letter; /* short name option */
  const char *lname;  /* long name option */
  enum {
    ARG_NONE,   /* stand-alone but not a boolean */
    ARG_BOOL,   /* accepts a --no-[name] prefix */







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    *(str) = NULL; \
  } \
  if((val)) {              \
    *(str) = strdup((val)); \
    if(!(*(str)))          \
      return PARAM_NO_MEM; \
  } \
} while(0)

struct LongShort {
  const char *letter; /* short name option */
  const char *lname;  /* long name option */
  enum {
    ARG_NONE,   /* stand-alone but not a boolean */
    ARG_BOOL,   /* accepts a --no-[name] prefix */
264
265
266
267
268
269
270


271
272
273
274
275
276
277
  {"E5", "login-options",            ARG_STRING},
  {"E6", "proxy-cacert",             ARG_FILENAME},
  {"E7", "proxy-capath",             ARG_FILENAME},
  {"E8", "proxy-insecure",           ARG_BOOL},
  {"E9", "proxy-tlsv1",              ARG_NONE},
  {"EA", "socks5-basic",             ARG_BOOL},
  {"EB", "socks5-gssapi",            ARG_BOOL},


  {"f",  "fail",                     ARG_BOOL},
  {"fa", "fail-early",               ARG_BOOL},
  {"fb", "styled-output",            ARG_BOOL},
  {"F",  "form",                     ARG_STRING},
  {"Fs", "form-string",              ARG_STRING},
  {"g",  "globoff",                  ARG_BOOL},
  {"G",  "get",                      ARG_NONE},







>
>







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
  {"E5", "login-options",            ARG_STRING},
  {"E6", "proxy-cacert",             ARG_FILENAME},
  {"E7", "proxy-capath",             ARG_FILENAME},
  {"E8", "proxy-insecure",           ARG_BOOL},
  {"E9", "proxy-tlsv1",              ARG_NONE},
  {"EA", "socks5-basic",             ARG_BOOL},
  {"EB", "socks5-gssapi",            ARG_BOOL},
  {"EC", "etag-save",                ARG_FILENAME},
  {"ED", "etag-compare",             ARG_FILENAME},
  {"f",  "fail",                     ARG_BOOL},
  {"fa", "fail-early",               ARG_BOOL},
  {"fb", "styled-output",            ARG_BOOL},
  {"F",  "form",                     ARG_STRING},
  {"Fs", "form-string",              ARG_STRING},
  {"g",  "globoff",                  ARG_BOOL},
  {"G",  "get",                      ARG_NONE},
317
318
319
320
321
322
323

324
325
326
327
328
329
330
  {"xa", "preproxy",                 ARG_STRING},
  {"X",  "request",                  ARG_STRING},
  {"Y",  "speed-limit",              ARG_STRING},
  {"y",  "speed-time",               ARG_STRING},
  {"z",  "time-cond",                ARG_STRING},
  {"Z",  "parallel",                 ARG_BOOL},
  {"Zb", "parallel-max",             ARG_STRING},

  {"#",  "progress-bar",             ARG_BOOL},
  {"#m", "progress-meter",           ARG_BOOL},
  {":",  "next",                     ARG_NONE},
};

/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
 * We allow ':' and '\' to be escaped by '\' so that we can use certificate







>







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
  {"xa", "preproxy",                 ARG_STRING},
  {"X",  "request",                  ARG_STRING},
  {"Y",  "speed-limit",              ARG_STRING},
  {"y",  "speed-time",               ARG_STRING},
  {"z",  "time-cond",                ARG_STRING},
  {"Z",  "parallel",                 ARG_BOOL},
  {"Zb", "parallel-max",             ARG_STRING},
  {"Zc", "parallel-immediate",       ARG_BOOL},
  {"#",  "progress-bar",             ARG_BOOL},
  {"#m", "progress-meter",           ARG_BOOL},
  {":",  "next",                     ARG_NONE},
};

/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
 * We allow ':' and '\' to be escaped by '\' so that we can use certificate
1202
1203
1204
1205
1206
1207
1208

1209


1210
1211
1212
1213
1214
1215
1216
        break;
      case '3': /* --http2-prior-knowledge */
        /* HTTP version 2.0 over clean TCP*/
        config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
        break;
      case '4': /* --http3 */
        /* HTTP version 3 go over QUIC - at once */

        config->httpversion = CURL_HTTP_VERSION_3;


        break;
      case '9':
        /* Allow HTTP/0.9 responses! */
        config->http09_allowed = toggle;
        break;
      }
      break;







>
|
>
>







1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
        break;
      case '3': /* --http2-prior-knowledge */
        /* HTTP version 2.0 over clean TCP*/
        config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
        break;
      case '4': /* --http3 */
        /* HTTP version 3 go over QUIC - at once */
        if(curlinfo->features & CURL_VERSION_HTTP3)
          config->httpversion = CURL_HTTP_VERSION_3;
        else
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        break;
      case '9':
        /* Allow HTTP/0.9 responses! */
        config->http09_allowed = toggle;
        break;
      }
      break;
1691
1692
1693
1694
1695
1696
1697








1698
1699
1700
1701
1702
1703
1704
      case 'B':
        /* --socks5-gssapi */
        if(toggle)
          config->socks5_auth |= CURLAUTH_GSSAPI;
        else
          config->socks5_auth &= ~CURLAUTH_GSSAPI;
        break;









      default: /* unknown flag */
        return PARAM_OPTION_UNKNOWN;
      }
      break;
    case 'f':
      switch(subletter) {







>
>
>
>
>
>
>
>







1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
      case 'B':
        /* --socks5-gssapi */
        if(toggle)
          config->socks5_auth |= CURLAUTH_GSSAPI;
        else
          config->socks5_auth &= ~CURLAUTH_GSSAPI;
        break;

      case 'C':
        GetStr(&config->etag_save_file, nextarg);
        break;

      case 'D':
        GetStr(&config->etag_compare_file, nextarg);
        break;

      default: /* unknown flag */
        return PARAM_OPTION_UNKNOWN;
      }
      break;
    case 'f':
      switch(subletter) {
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
        Curl_safefree(config->range);
        config->range = strdup(buffer);
        if(!config->range)
          return PARAM_NO_MEM;
      }
      {
        /* byte range requested */
        char *tmp_range;
        tmp_range = nextarg;
        while(*tmp_range != '\0') {
          if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
            warnf(global, "Invalid character is found in given range. "
                  "A specified range MUST have only digits in "
                  "\'start\'-\'stop\'. The server's response to this "
                  "request is uncertain.\n");
            break;







<
|







1984
1985
1986
1987
1988
1989
1990

1991
1992
1993
1994
1995
1996
1997
1998
        Curl_safefree(config->range);
        config->range = strdup(buffer);
        if(!config->range)
          return PARAM_NO_MEM;
      }
      {
        /* byte range requested */

        const char *tmp_range = nextarg;
        while(*tmp_range != '\0') {
          if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
            warnf(global, "Invalid character is found in given range. "
                  "A specified range MUST have only digits in "
                  "\'start\'-\'stop\'. The server's response to this "
                  "request is uncertain.\n");
            break;
2149
2150
2151
2152
2153
2154
2155



2156
2157
2158
2159
2160
2161
2162
      case 'b':   /* --parallel-max */
        err = str2unum(&global->parallel_max, nextarg);
        if(err)
          return err;
        if((global->parallel_max > MAX_PARALLEL) ||
           (global->parallel_max < 1))
          global->parallel_max = PARALLEL_DEFAULT;



        break;
      }
      break;
    case 'z': /* time condition coming up */
      switch(*nextarg) {
      case '+':
        nextarg++;







>
>
>







2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
      case 'b':   /* --parallel-max */
        err = str2unum(&global->parallel_max, nextarg);
        if(err)
          return err;
        if((global->parallel_max > MAX_PARALLEL) ||
           (global->parallel_max < 1))
          global->parallel_max = PARALLEL_DEFAULT;
        break;
      case 'c':   /* --parallel-connect */
        global->parallel_connect = toggle;
        break;
      }
      break;
    case 'z': /* time condition coming up */
      switch(*nextarg) {
      case '+':
        nextarg++;
Changes to jni/curl/src/tool_help.c.
127
128
129
130
131
132
133




134
135
136
137
138
139
140
   "Resolve host names over DOH"},
  {"-D, --dump-header <filename>",
   "Write the received headers to <filename>"},
  {"    --egd-file <file>",
   "EGD socket path for random data"},
  {"    --engine <name>",
   "Crypto engine to use"},




  {"    --expect100-timeout <seconds>",
   "How long to wait for 100-continue"},
  {"-f, --fail",
   "Fail silently (no output at all) on HTTP errors"},
  {"    --fail-early",
   "Fail on first transfer error, do not continue"},
  {"    --false-start",







>
>
>
>







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
   "Resolve host names over DOH"},
  {"-D, --dump-header <filename>",
   "Write the received headers to <filename>"},
  {"    --egd-file <file>",
   "EGD socket path for random data"},
  {"    --engine <name>",
   "Crypto engine to use"},
  {"    --etag-save <file>",
   "Get an ETag from response header and save it to a FILE"},
  {"    --etag-compare <file>",
   "Get an ETag from a file and send a conditional request"},
  {"    --expect100-timeout <seconds>",
   "How long to wait for 100-continue"},
  {"-f, --fail",
   "Fail silently (no output at all) on HTTP errors"},
  {"    --fail-early",
   "Fail on first transfer error, do not continue"},
  {"    --false-start",
275
276
277
278
279
280
281


282
283
284
285
286
287
288
   "Use HTTP NTLM authentication with winbind"},
  {"    --oauth2-bearer <token>",
   "OAuth 2 Bearer Token"},
  {"-o, --output <file>",
   "Write to file instead of stdout"},
  {"-Z, --parallel",
   "Perform transfers in parallel"},


  {"    --parallel-max",
   "Maximum concurrency for parallel transfers"},
  {"    --pass <phrase>",
   "Pass phrase for the private key"},
  {"    --path-as-is",
   "Do not squash .. sequences in URL path"},
  {"    --pinnedpubkey <hashes>",







>
>







279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
   "Use HTTP NTLM authentication with winbind"},
  {"    --oauth2-bearer <token>",
   "OAuth 2 Bearer Token"},
  {"-o, --output <file>",
   "Write to file instead of stdout"},
  {"-Z, --parallel",
   "Perform transfers in parallel"},
  {"    --parallel-immediate",
   "Do not wait for multiplexing (with --parallel)"},
  {"    --parallel-max",
   "Maximum concurrency for parallel transfers"},
  {"    --pass <phrase>",
   "Pass phrase for the private key"},
  {"    --path-as-is",
   "Do not squash .. sequences in URL path"},
  {"    --pinnedpubkey <hashes>",
Changes to jni/curl/src/tool_helpers.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HELPERS_H
#define HEADER_CURL_TOOL_HELPERS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HELPERS_H
#define HEADER_CURL_TOOL_HELPERS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_homedir.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_homedir.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HOMEDIR_H
#define HEADER_CURL_TOOL_HOMEDIR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HOMEDIR_H
#define HEADER_CURL_TOOL_HOMEDIR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_hugehelp.c.
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
 fputs(
"              stract  socket  prefixed  with  '@', however the <path> argument\n"
"              should not have this leading character.\n"
"\n"
"              Added in 7.53.0.\n"
"\n"
"       --alt-svc <file name>\n"
"              (HTTPS) WARNING: this option is experiemental.  Do  not  use  in\n"
"              production.\n"
"\n"
"              This option enables the alt-svc parser in curl. If the file name\n"
"              points to an existing alt-svc cache file, that will be used. Af-\n"
, stdout);
 fputs(
"              ter  a  completed  transfer, the cache will be saved to the file\n"
"              name again if it has been modified.\n"







|
|







169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
 fputs(
"              stract  socket  prefixed  with  '@', however the <path> argument\n"
"              should not have this leading character.\n"
"\n"
"              Added in 7.53.0.\n"
"\n"
"       --alt-svc <file name>\n"
"              (HTTPS) WARNING: this option is experimental. Do not use in pro-\n"
"              duction.\n"
"\n"
"              This option enables the alt-svc parser in curl. If the file name\n"
"              points to an existing alt-svc cache file, that will be used. Af-\n"
, stdout);
 fputs(
"              ter  a  completed  transfer, the cache will be saved to the file\n"
"              name again if it has been modified.\n"
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
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018


1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029


1030
1031
1032
1033
1034
1035
1036
1037
1038
1039


1040
1041
1042
1043


1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056


1057
1058
1059
1060
1061
1062
1063


1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076


1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092


1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107


1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121


1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137


1138
1139
1140
1141
1142
1143
1144
1145
1146
1147


1148
1149
1150
1151
1152
1153
1154
1155
1156
1157


1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172


1173
1174
1175
1176
1177


1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192


1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204


1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215


1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233


1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244


1245
1246
1247
1248
1249
1250
1251


1252
1253
1254
1255
1256
1257
1258
1259
1260
1261


1262
1263
1264
1265
1266
1267
1268
1269
1270
1271


1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286


1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297


1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309


1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322


1323
1324
1325
1326
1327
1328
1329
1330

1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345


1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356

1357
1358
1359
1360
1361
1362
1363
1364
1365

1366
1367
1368
1369
1370
1371
1372
1373
1374
1375

1376
1377
1378
1379
1380
1381
1382
1383
1384

1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398


1399
1400
1401
1402
1403
1404
1405
1406

1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419

1420
1421
1422
1423
1424
1425
1426
1427

1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439


1440
1441
1442
1443
1444
1445

1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459

1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470

1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
"              (TLS)  Select the OpenSSL crypto engine to use for cipher opera-\n"
"              tions. Use --engine list to print a list of build-time supported\n"
"              engines.  Note  that  not  all  (or  none) of the engines may be\n"
, stdout);
 fputs(
"              available at run-time.\n"
"\n"








































"       --expect100-timeout <seconds>\n"
"              (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
"              100-continue  response  when curl emits an Expects: 100-continue\n"
"              header in its request. By default curl  will  wait  one  second.\n"


"              This  option accepts decimal values! When curl stops waiting, it\n"
"              will continue as if the response has been received.\n"
"\n"
, stdout);
 fputs(
"              See also --connect-timeout. Added in 7.47.0.\n"
"\n"
"       --fail-early\n"
"              Fail and exit on the first detected transfer error.\n"
"\n"
"              When curl is used to do multiple transfers on the command  line,\n"
"              it will attempt to operate on each given URL, one by one. By de-\n"
"              fault, it will ignore errors if there are more  URLs  given  and\n"
"              the  last  URL's  success will determine the error code curl re-\n"
, stdout);
 fputs(


"              turns. So early failures will be \"hidden\" by subsequent success-\n"
"              ful transfers.\n"
"\n"
"              Using  this  option,  curl  will  instead return an error on the\n"
"              first transfer that fails, independent of  the  amount  of  URLs\n"


"              that  are given on the command line. This way, no transfer fail-\n"
"              ures go undetected by scripts and similar.\n"
"\n"
"              This option is global and does not need to be specified for each\n"
, stdout);
 fputs(
"              use of -:, --next.\n"
"\n"
"              This option does not imply -f, --fail, which causes transfers to\n"
"              fail due to the server's HTTP status code. You can  combine  the\n"
"              two options, however note -f, --fail is not global and is there-\n"


"              fore contained by -:, --next.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -f, --fail\n"
"              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
, stdout);
 fputs(
"              is  mostly done to better enable scripts etc to better deal with\n"
"              failed attempts. In normal cases when an HTTP  server  fails  to\n"
"              deliver  a  document,  it  returns  an  HTML document stating so\n"
"              (which often also describes why and more). This flag  will  pre-\n"


"              vent curl from outputting that and return error 22.\n"
"\n"
"              This  method is not fail-safe and there are occasions where non-\n"
, stdout);
 fputs(
"              successful response codes will slip through, especially when au-\n"
"              thentication is involved (response codes 401 and 407).\n"
"\n"
"       --false-start\n"
"              (TLS)  Tells  curl  to use false start during the TLS handshake.\n"
"              False start is a mode where a TLS client will start sending  ap-\n"


"              plication  data  before verifying the server's Finished message,\n"
"              thus saving a round trip when performing a full handshake.\n"
"\n"
, stdout);
 fputs(
"              This is currently only implemented in the NSS and Secure  Trans-\n"
"              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --form-string <name=string>\n"
"              (HTTP  SMTP  IMAP)  Similar  to -F, --form except that the value\n"
"              string for the named parameter is used  literally.  Leading  '@'\n"
"              and '<' characters, and the ';type=' string in the value have no\n"
, stdout);
 fputs(


"              special meaning. Use this in preference to -F, --form if there's\n"
"              any  possibility  that the string value may accidentally trigger\n"
"              the '@' or '<' features of -F, --form.\n"
"\n"
"              See also -F, --form.\n"
"\n"
"       -F, --form <name=content>\n"
"              (HTTP SMTP IMAP) For HTTP protocol family, this lets  curl  emu-\n"
"              late  a  filled-in  form  in which a user has pressed the submit\n"
, stdout);
 fputs(


"              button. This causes curl to POST  data  using  the  Content-Type\n"
"              multipart/form-data according to RFC 2388.\n"
"\n"
"              For  SMTP and IMAP protocols, this is the mean to compose a mul-\n"
"              tipart mail message to transmit.\n"
"\n"
"              This enables uploading of binary files etc. To force  the  'con-\n"
"              tent' part to be a file, prefix the file name with an @ sign. To\n"
, stdout);
 fputs(


"              just get the content part from a file, prefix the file name with\n"
"              the  symbol  <.  The  difference  between @ and < is then that @\n"
"              makes a file get attached in the post as a  file  upload,  while\n"
"              the < makes a text field and just get the contents for that text\n"


"              field from a file.\n"
"\n"
"              Tell curl to read content from stdin instead of a file by  using\n"
, stdout);
 fputs(
"              - as filename. This goes for both @ and < constructs. When stdin\n"
"              is used, the contents is buffered in memory first by curl to de-\n"
"              termine its size and allow a possible resend.  Defining a part's\n"
"              data from a named non-regular file (such as a named pipe or sim-\n"
"              ilar)  is unfortunately not subject to buffering and will be ef-\n"
"              fectively read at transmission time; since the full size is  un-\n"
, stdout);
 fputs(


"              known before the transfer starts, such data is sent as chunks by\n"
"              HTTP and rejected by IMAP.\n"
"\n"
"              Example: send an image to an HTTP server, where 'profile' is the\n"
"              name  of  the  form-field to which the file portrait.jpg will be\n"
"              the input:\n"
"\n"


"               curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
"\n"
"              Example: send a your name and shoe size in two  text  fields  to\n"
"              the server:\n"
"\n"
, stdout);
 fputs(
"               curl -F name=John -F shoesize=11 https://example.com/\n"
"\n"
"              Example:  send  a your essay in a text field to the server. Send\n"
"              it as a plain text field, but get the contents for it from a lo-\n"
"              cal file:\n"
"\n"


"               curl -F \"story=<hugefile.txt\" https://example.com/\n"
"\n"
"              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
"              'type=', in a manner similar to:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"web=@index.html;type=text/html\" example.com\n"
"\n"
"              or\n"
"\n"
"               curl -F \"name=daniel;type=text/foo\" example.com\n"
"\n"
"              You can also explicitly change the name field of a  file  upload\n"
"              part by setting filename=, like this:\n"
"\n"


"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
"\n"
"              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
"              ble-quotes like:\n"
"\n"
, stdout);
 fputs(
"               curl  -F  \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"   exam-\n"
"              ple.com\n"
"\n"
"              or\n"
"\n"
"               curl -F 'file=@\"localfile\";filename=\"nameinpost\"' example.com\n"
"\n"
"              Note  that  if  a  filename/path is quoted by double-quotes, any\n"


"              double-quote or backslash within the filename must be escaped by\n"
"              backslash.\n"
"\n"
"              Quoting  must  also  be  applied to non-file data if it contains\n"
, stdout);
 fputs(
"              semicolons, leading/trailing spaces or leading double quotes:\n"
"\n"
"               curl -F  'colors=\"red;  green;  blue\";type=text/x-myapp'  exam-\n"
"              ple.com\n"
"\n"
"              You  can  add  custom  headers to the field by setting headers=,\n"
"              like\n"
"\n"


"                curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
"\n"
"              or\n"
"\n"
"                curl -F \"submit=OK;headers=@headerfile\" example.com\n"
"\n"
, stdout);
 fputs(
"              The headers= keyword may appear more that once and  above  notes\n"
"              about  quoting  apply.  When headers are read from a file, Empty\n"
"              lines and lines starting with '#' are comments and ignored; each\n"
"              header can be folded by splitting between two words and starting\n"
"              the continuation line with a  space;  embedded  carriage-returns\n"
"              and  trailing  spaces  are  stripped.   Here  is an example of a\n"
, stdout);
 fputs(


"              header file contents:\n"
"\n"
"                # This file contain two headers.\n"
"                X-header-1: this is a header\n"
"\n"
"                # The following header is folded.\n"
"                X-header-2: this is\n"
"                 another header\n"
"\n"
"              To support sending multipart mail messages, the  syntax  is  ex-\n"


"              tended as follows:\n"
"              -  name can be omitted: the equal sign is the first character of\n"
"              the argument,\n"
, stdout);
 fputs(
"              - if data starts with '(', this signals to start  a  new  multi-\n"
"              part: it can be followed by a content type specification.\n"
"              - a multipart can be terminated with a '=)' argument.\n"
"\n"
"              Example:  the  following  command sends an SMTP mime e-mail con-\n"


"              sisting in an inline part in two alternative formats: plain text\n"
"              and HTML. It attaches a text file:\n"
"\n"
"               curl -F '=(;type=multipart/alternative' \\\n"
, stdout);
 fputs(
"                       -F '=plain text message' \\\n"
"                       -F '= <body>HTML message</body>;type=text/html' \\\n"
"                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com\n"
"\n"
"              Data  can  be encoded for transfer using encoder=. Available en-\n"
"              codings are binary and 8bit that do nothing else than adding the\n"
"              corresponding  Content-Transfer-Encoding  header, 7bit that only\n"
, stdout);
 fputs(


"              rejects 8-bit characters with a transfer error, quoted-printable\n"
"              and  base64  that  encodes  data  according to the corresponding\n"
"              schemes, limiting lines length to 76 characters.\n"
"\n"
"              Example: send multipart mail with a quoted-printable  text  mes-\n"


"              sage and a base64 attached file:\n"
"\n"
"               curl -F '=text message;encoder=quoted-printable' \\\n"
"                    -F '=@localfile;encoder=base64' ... smtp://example.com\n"
"\n"
, stdout);
 fputs(
"              See further examples and details in the MANUAL.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              This  option  overrides  -d, --data and -I, --head and -T, --up-\n"
"              load-file.\n"
"\n"
"       --ftp-account <data>\n"


"              (FTP) When an FTP server asks for \"account data\" after user name\n"
"              and  password has been provided, this data is sent off using the\n"
"              ACCT command.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.13.0.\n"
"\n"
"       --ftp-alternative-to-user <command>\n"
"              (FTP) If authenticating with the USER and PASS  commands  fails,\n"


"              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
"              Transport server over FTPS using  a  client  certificate,  using\n"
"              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
, stdout);
 fputs(
"              the certificate.\n"
"              Added in 7.15.5.\n"
"\n"
"       --ftp-create-dirs\n"
"              (FTP SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
"              doesn't  currently exist on the server, the standard behavior of\n"


"              curl is to fail. Using this option, curl will instead attempt to\n"
"              create missing directories.\n"
"\n"
"              See also --create-dirs.\n"
"\n"
"       --ftp-method <method>\n"
, stdout);
 fputs(
"              (FTP)  Control what method curl should use to reach a file on an\n"
"              FTP(S) server. The method argument should be one of the  follow-\n"
"              ing alternatives:\n"
"\n"
"              multicwd\n"
"                     curl  does  a  single CWD operation for each path part in\n"
"                     the given URL. For deep hierarchies this means very  many\n"
"                     commands.  This  is  how RFC 1738 says it should be done.\n"
, stdout);
 fputs(


"                     This is the default but the slowest behavior.\n"
"\n"
"              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
"                     etc and give a full path to the server for all these com-\n"
"                     mands. This is the fastest behavior.\n"
"\n"
"              singlecwd\n"
"                     curl does one CWD with the full target directory and then\n"
"                     operates  on  the  file  \"normally\" (like in the multicwd\n"
, stdout);
 fputs(


"                     case). This is somewhat  more  standards  compliant  than\n"
"                     'nocwd' but without the full penalty of 'multicwd'.\n"
"\n"
"       Added in 7.15.1.\n"
"\n"
"       --ftp-pasv\n"
"              (FTP)  Use  passive mode for the data connection. Passive is the\n"


"              internal default behavior, but using this option can be used  to\n"
"              override a previous -P, --ftp-port option.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"
, stdout);
 fputs(
"              used. Undoing an enforced passive really isn't  doable  but  you\n"
"              must then instead enforce the correct -P, --ftp-port again.\n"
"\n"
"              Passive mode means that curl will try the EPSV command first and\n"


"              then PASV, unless --disable-epsv is used.\n"
"              See also --disable-epsv. Added in 7.11.0.\n"
"\n"
"       -P, --ftp-port <address>\n"
"              (FTP) Reverses the default initiator/listener  roles  when  con-\n"
, stdout);
 fputs(
"              necting  with  FTP. This option makes curl use active mode. curl\n"
"              then tells the server to connect back to the client's  specified\n"
"              address and port, while passive mode asks the server to setup an\n"


"              IP address and port for it to connect to.  <address>  should  be\n"
"              one of:\n"
"\n"
"              interface\n"
"                     e.g.  \"eth0\"  to specify which interface's IP address you\n"
"                     want to use (Unix only)\n"
"\n"
, stdout);
 fputs(
"              IP address\n"
"                     e.g. \"192.168.10.1\" to specify the exact IP address\n"
"\n"
"              host name\n"
"                     e.g. \"my.host.domain\" to specify the machine\n"
"\n"


"              -      make curl pick the same IP address that is  already  used\n"
"                     for the control connection\n"
"\n"
"       If  this  option is used several times, the last one will be used. Dis-\n"
"       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the\n"
, stdout);
 fputs(
"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
"       PORT++.\n"
"\n"
"       Since 7.19.5, you can append \":[start]-[end]\" to the right of  the  ad-\n"


"       dress,  to tell curl what TCP port range to use. That means you specify\n"
"       a port range, from a lower to a higher number. A single number works as\n"
"       well,  but do note that it increases the risk of failure since the port\n"
"       may not be available.\n"
"\n"
"       See also --ftp-pasv and --disable-eprt.\n"
"\n"
, stdout);
 fputs(
"       --ftp-pret\n"
"              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
"              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"


"              command for directory listings as well as up  and  downloads  in\n"
"              PASV mode.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
"       --ftp-skip-pasv-ip\n"
"              (FTP) Tell curl to not use the IP address the server suggests in\n"
"              its response to curl's PASV command when curl connects the  data\n"
, stdout);
 fputs(
"              connection.  Instead curl will re-use the same IP address it al-\n"
"              ready uses for the control connection.\n"
"\n"


"              This option has no effect if PORT, EPRT or EPSV is used  instead\n"
"              of PASV.\n"
"\n"
"              See also --ftp-pasv. Added in 7.14.2.\n"
"\n"
"       --ftp-ssl-ccc-mode <active/passive>\n"
"              (FTP)  Sets the CCC mode. The passive mode will not initiate the\n"
"              shutdown, but instead wait for the server to do it, and will not\n"

, stdout);
 fputs(
"              reply to the shutdown from the server. The active mode initiates\n"
"              the shutdown and waits for a reply from the server.\n"
"\n"
"              See also --ftp-ssl-ccc. Added in 7.16.2.\n"
"\n"
"       --ftp-ssl-ccc\n"
"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
"              layer after authenticating. The rest of the control channel com-\n"
"              munication will be unencrypted. This allows NAT routers to  fol-\n"
, stdout);
 fputs(
"              low the FTP transaction. The default mode is passive.\n"
"\n"


"              See also --ssl and --ftp-ssl-ccc-mode. Added in 7.16.1.\n"
"\n"
"       --ftp-ssl-control\n"
"              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
"              Allows secure authentication, but non-encrypted  data  transfers\n"
"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
"              port SSL/TLS.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       -G, --get\n"

, stdout);
 fputs(
"              When used, this option will make all  data  specified  with  -d,\n"
"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
"              GET request instead of the POST request that otherwise would  be\n"
"              used. The data will be appended to the URL with a '?' separator.\n"
"              If  used  in combination with -I, --head, the POST data will in-\n"
"              stead be appended to the URL with a HEAD request.\n"
"\n"

, stdout);
 fputs(
"              If this option is used several times,  only  the  first  one  is\n"
"              used.  This is because undoing a GET doesn't make sense, but you\n"
"              should then instead enforce the alternative method you prefer.\n"
"\n"
"       -g, --globoff\n"
"              This option switches off the \"URL globbing parser\". When you set\n"
"              this  option, you can specify URLs that contain the letters {}[]\n"
"              without having them being interpreted by curl itself. Note  that\n"

, stdout);
 fputs(
"              these  letters are not normal legal URL contents but they should\n"
"              be encoded according to the URI standard.\n"
"\n"
"       --happy-eyeballs-timeout-ms <milliseconds>\n"
"              Happy eyeballs is an algorithm that attempts to connect to  both\n"
"              IPv4  and  IPv6  addresses for dual-stack hosts, preferring IPv6\n"
"              first for the number of milliseconds. If the IPv6 address cannot\n"

, stdout);
 fputs(
"              be  connected  to  within that time then a connection attempt is\n"
"              made to the IPv4 address in parallel. The first connection to be\n"
"              established is the one that is used.\n"
"\n"
"              The  range of suggested useful values is limited. Happy Eyeballs\n"
"              RFC 6555 says \"It is RECOMMENDED  that  connection  attempts  be\n"
"              paced  150-250 ms apart to balance human factors against network\n"
, stdout);
 fputs(
"              load.\" libcurl currently defaults to 200 ms. Firefox and  Chrome\n"
"              currently default to 300 ms.\n"
"\n"


"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.59.0.\n"
"\n"
"       --haproxy-protocol\n"
"              (HTTP)  Send a HAProxy PROXY protocol v1 header at the beginning\n"
"              of the connection. This is used by some load balancers  and  re-\n"
"              verse proxies to indicate the client's true IP address and port.\n"

, stdout);
 fputs(
"              This  option is primarily useful when sending test requests to a\n"
"              service that expects this header.\n"
"\n"
"              Added in 7.60.0.\n"
"\n"
"       -I, --head\n"
"              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
"              command  HEAD which this uses to get nothing but the header of a\n"
"              document. When used on an FTP or FILE file,  curl  displays  the\n"
"              file size and last modification time only.\n"
"\n"

, stdout);
 fputs(
"       -H, --header <header/@file>\n"
"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a server. You may specify any number of extra  headers.  Note\n"
"              that if you should add a custom header that has the same name as\n"
"              one of the internal ones curl would  use,  your  externally  set\n"
"              header will be used instead of the internal one. This allows you\n"

, stdout);
 fputs(
"              to make even trickier stuff than curl  would  normally  do.  You\n"
"              should  not  replace internally set headers without knowing per-\n"
"              fectly well what you're doing. Remove an internal header by giv-\n"
"              ing  a  replacement  without  content  on  the right side of the\n"
"              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
"              value  then its header must be terminated with a semicolon, such\n"
, stdout);
 fputs(
"              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"


"              curl will make sure that each header  you  add/replace  is  sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
"              Starting  in  7.55.0, this option can take an argument in @file-\n"

, stdout);
 fputs(
"              name style, which then adds a header for each line in the  input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              See also the -A, --user-agent and -e, --referer options.\n"
"\n"
"              Starting in 7.37.0, you need --proxy-header to send custom head-\n"
"              ers intended for a proxy.\n"
"\n"
"              Example:\n"
"\n"
"               curl -H \"X-First-Name: Joe\" http://example.com/\n"
"\n"

, stdout);
 fputs(
"              WARNING: headers set with this option will be  set  in  all  re-\n"
"              quests  - even after redirects are followed, like when told with\n"
"              -L, --location. This can lead to the header being sent to  other\n"
"              hosts  than  the  original  host, so sensitive headers should be\n"
"              used with caution combined with following redirects.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"

, stdout);
 fputs(
"       -h, --help\n"
"              Usage  help.  This lists all current command line options with a\n"
"              short description.\n"
"       --hostpubmd5 <md5>\n"
"              (SFTP SCP) Pass a string containing 32 hexadecimal  digits.  The\n"
"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
"              public key, curl will refuse the connection with the host unless\n"
"              the md5sums match.\n"







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




>
>



<
<







<
<


>
>





>
>




<
<





>
>






<
<




>
>



<
<






>
>



<
<







<
<


>
>







<
<


>
>






<
<


>
>




>
>



<
<




<
<


>
>







>
>





<
<






>
>





<
<









>
>





<
<








>
>




<
<








>
>






<
<




<
<


>
>










>
>



<
<





>
>




<
<





<
<


>
>





>
>





<
<








>
>




<
<






>
>



<
<






>
>






<
<






<
<


>
>







<
<


>
>







>
>




<
<




>
>





<
<



>
>







<
<






>
>





<
<




>
>







<
<



>
>








<
<



>
>








>


<








<
<


>
>











>


<






>


<







>


<






>


<






<
<



>
>








>


<










>


<





>


<





<
<


>
>






>


<











>


<








>


<







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
1007
1008
1009
1010
1011
1012
1013
1014


1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027


1028
1029
1030
1031
1032
1033
1034
1035
1036


1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047


1048
1049
1050
1051
1052
1053
1054


1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065


1066
1067
1068
1069
1070
1071
1072
1073
1074
1075


1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088


1089
1090
1091
1092


1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110


1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123


1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139


1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153


1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169


1170
1171
1172
1173


1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192


1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203


1204
1205
1206
1207
1208


1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224


1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238


1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249


1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263


1264
1265
1266
1267
1268
1269


1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280


1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297


1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308


1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320


1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333


1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346


1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359


1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375

1376
1377
1378
1379
1380
1381
1382
1383


1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401

1402
1403
1404
1405
1406
1407
1408
1409
1410

1411
1412
1413
1414
1415
1416
1417
1418
1419
1420

1421
1422
1423
1424
1425
1426
1427
1428
1429

1430
1431
1432
1433
1434
1435


1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451

1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464

1465
1466
1467
1468
1469
1470
1471
1472

1473
1474
1475
1476
1477


1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490

1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515

1516
1517
1518
1519
1520
1521
1522
"              (TLS)  Select the OpenSSL crypto engine to use for cipher opera-\n"
"              tions. Use --engine list to print a list of build-time supported\n"
"              engines.  Note  that  not  all  (or  none) of the engines may be\n"
, stdout);
 fputs(
"              available at run-time.\n"
"\n"
"       --etag-compare <file>\n"
"              (HTTP) This option makes a conditional HTTP request for the spe-\n"
"              cific ETag read from the given file by sending a custom If-None-\n"
"              Match header using the extracted ETag.\n"
"\n"
"              For correct results, make sure that specified file contains only\n"
"              a single line with a desired ETag. An empty file is parsed as an\n"
"              empty ETag.\n"
"\n"
, stdout);
 fputs(
"              Use the option --etag-save to first save the  ETag  from  a  re-\n"
"              sponse, and then use this option to compare using the saved ETag\n"
"              in a subsequent request.\n"
"\n"
"              OMPARISON: There are 2 types of comparison or  ETags,  Weak  and\n"
"              Strong.  This option expects, and uses a strong comparison.\n"
"\n"
"              Added in 7.68.0.\n"
"\n"
"       --etag-save <file>\n"
"              (HTTP)  This  option  saves  an HTTP ETag to the specified file.\n"
, stdout);
 fputs(
"              Etag is usually part of headers  returned  by  a  request.  When\n"
"              server  sends  an  ETag, it must be enveloped by a double quote.\n"
"              This option extracts the ETag  without  the  double  quotes  and\n"
"              saves it into the <file>.\n"
"\n"
"              A  server  can  send a week ETag which is prefixed by \"W/\". This\n"
"              identifier is not considered, and  only  relevant  ETag  between\n"
"              quotation marks is parsed.\n"
"\n"
, stdout);
 fputs(
"              It an ETag wasn't send by the server or it cannot be parsed, and\n"
"              empty file is created.\n"
"\n"
"              Added in 7.68.0.\n"
"\n"
"       --expect100-timeout <seconds>\n"
"              (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
"              100-continue  response  when curl emits an Expects: 100-continue\n"
"              header in its request. By default curl  will  wait  one  second.\n"
, stdout);
 fputs(
"              This  option accepts decimal values! When curl stops waiting, it\n"
"              will continue as if the response has been received.\n"
"\n"


"              See also --connect-timeout. Added in 7.47.0.\n"
"\n"
"       --fail-early\n"
"              Fail and exit on the first detected transfer error.\n"
"\n"
"              When curl is used to do multiple transfers on the command  line,\n"
"              it will attempt to operate on each given URL, one by one. By de-\n"


, stdout);
 fputs(
"              fault, it will ignore errors if there are more  URLs  given  and\n"
"              the  last  URL's  success will determine the error code curl re-\n"
"              turns. So early failures will be \"hidden\" by subsequent success-\n"
"              ful transfers.\n"
"\n"
"              Using  this  option,  curl  will  instead return an error on the\n"
"              first transfer that fails, independent of  the  amount  of  URLs\n"
, stdout);
 fputs(
"              that  are given on the command line. This way, no transfer fail-\n"
"              ures go undetected by scripts and similar.\n"
"\n"
"              This option is global and does not need to be specified for each\n"


"              use of -:, --next.\n"
"\n"
"              This option does not imply -f, --fail, which causes transfers to\n"
"              fail due to the server's HTTP status code. You can  combine  the\n"
"              two options, however note -f, --fail is not global and is there-\n"
, stdout);
 fputs(
"              fore contained by -:, --next.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -f, --fail\n"
"              (HTTP) Fail silently (no output at all) on server  errors.  This\n"


"              is  mostly done to better enable scripts etc to better deal with\n"
"              failed attempts. In normal cases when an HTTP  server  fails  to\n"
"              deliver  a  document,  it  returns  an  HTML document stating so\n"
"              (which often also describes why and more). This flag  will  pre-\n"
, stdout);
 fputs(
"              vent curl from outputting that and return error 22.\n"
"\n"
"              This  method is not fail-safe and there are occasions where non-\n"


"              successful response codes will slip through, especially when au-\n"
"              thentication is involved (response codes 401 and 407).\n"
"\n"
"       --false-start\n"
"              (TLS)  Tells  curl  to use false start during the TLS handshake.\n"
"              False start is a mode where a TLS client will start sending  ap-\n"
, stdout);
 fputs(
"              plication  data  before verifying the server's Finished message,\n"
"              thus saving a round trip when performing a full handshake.\n"
"\n"


"              This is currently only implemented in the NSS and Secure  Trans-\n"
"              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --form-string <name=string>\n"
"              (HTTP  SMTP  IMAP)  Similar  to -F, --form except that the value\n"


, stdout);
 fputs(
"              string for the named parameter is used  literally.  Leading  '@'\n"
"              and '<' characters, and the ';type=' string in the value have no\n"
"              special meaning. Use this in preference to -F, --form if there's\n"
"              any  possibility  that the string value may accidentally trigger\n"
"              the '@' or '<' features of -F, --form.\n"
"\n"
"              See also -F, --form.\n"
"\n"
"       -F, --form <name=content>\n"


, stdout);
 fputs(
"              (HTTP SMTP IMAP) For HTTP protocol family, this lets  curl  emu-\n"
"              late  a  filled-in  form  in which a user has pressed the submit\n"
"              button. This causes curl to POST  data  using  the  Content-Type\n"
"              multipart/form-data according to RFC 2388.\n"
"\n"
"              For  SMTP and IMAP protocols, this is the mean to compose a mul-\n"
"              tipart mail message to transmit.\n"
"\n"


, stdout);
 fputs(
"              This enables uploading of binary files etc. To force  the  'con-\n"
"              tent' part to be a file, prefix the file name with an @ sign. To\n"
"              just get the content part from a file, prefix the file name with\n"
"              the  symbol  <.  The  difference  between @ and < is then that @\n"
"              makes a file get attached in the post as a  file  upload,  while\n"
"              the < makes a text field and just get the contents for that text\n"
, stdout);
 fputs(
"              field from a file.\n"
"\n"
"              Tell curl to read content from stdin instead of a file by  using\n"


"              - as filename. This goes for both @ and < constructs. When stdin\n"
"              is used, the contents is buffered in memory first by curl to de-\n"
"              termine its size and allow a possible resend.  Defining a part's\n"
"              data from a named non-regular file (such as a named pipe or sim-\n"


, stdout);
 fputs(
"              ilar)  is unfortunately not subject to buffering and will be ef-\n"
"              fectively read at transmission time; since the full size is  un-\n"
"              known before the transfer starts, such data is sent as chunks by\n"
"              HTTP and rejected by IMAP.\n"
"\n"
"              Example: send an image to an HTTP server, where 'profile' is the\n"
"              name  of  the  form-field to which the file portrait.jpg will be\n"
"              the input:\n"
"\n"
, stdout);
 fputs(
"               curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
"\n"
"              Example: send a your name and shoe size in two  text  fields  to\n"
"              the server:\n"
"\n"


"               curl -F name=John -F shoesize=11 https://example.com/\n"
"\n"
"              Example:  send  a your essay in a text field to the server. Send\n"
"              it as a plain text field, but get the contents for it from a lo-\n"
"              cal file:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"story=<hugefile.txt\" https://example.com/\n"
"\n"
"              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
"              'type=', in a manner similar to:\n"
"\n"


"               curl -F \"web=@index.html;type=text/html\" example.com\n"
"\n"
"              or\n"
"\n"
"               curl -F \"name=daniel;type=text/foo\" example.com\n"
"\n"
"              You can also explicitly change the name field of a  file  upload\n"
"              part by setting filename=, like this:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
"\n"
"              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
"              ble-quotes like:\n"
"\n"


"               curl  -F  \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"   exam-\n"
"              ple.com\n"
"\n"
"              or\n"
"\n"
"               curl -F 'file=@\"localfile\";filename=\"nameinpost\"' example.com\n"
"\n"
"              Note  that  if  a  filename/path is quoted by double-quotes, any\n"
, stdout);
 fputs(
"              double-quote or backslash within the filename must be escaped by\n"
"              backslash.\n"
"\n"
"              Quoting  must  also  be  applied to non-file data if it contains\n"


"              semicolons, leading/trailing spaces or leading double quotes:\n"
"\n"
"               curl -F  'colors=\"red;  green;  blue\";type=text/x-myapp'  exam-\n"
"              ple.com\n"
"\n"
"              You  can  add  custom  headers to the field by setting headers=,\n"
"              like\n"
"\n"
, stdout);
 fputs(
"                curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
"\n"
"              or\n"
"\n"
"                curl -F \"submit=OK;headers=@headerfile\" example.com\n"
"\n"


"              The headers= keyword may appear more that once and  above  notes\n"
"              about  quoting  apply.  When headers are read from a file, Empty\n"
"              lines and lines starting with '#' are comments and ignored; each\n"
"              header can be folded by splitting between two words and starting\n"


, stdout);
 fputs(
"              the continuation line with a  space;  embedded  carriage-returns\n"
"              and  trailing  spaces  are  stripped.   Here  is an example of a\n"
"              header file contents:\n"
"\n"
"                # This file contain two headers.\n"
"                X-header-1: this is a header\n"
"\n"
"                # The following header is folded.\n"
"                X-header-2: this is\n"
"                 another header\n"
"\n"
"              To support sending multipart mail messages, the  syntax  is  ex-\n"
, stdout);
 fputs(
"              tended as follows:\n"
"              -  name can be omitted: the equal sign is the first character of\n"
"              the argument,\n"


"              - if data starts with '(', this signals to start  a  new  multi-\n"
"              part: it can be followed by a content type specification.\n"
"              - a multipart can be terminated with a '=)' argument.\n"
"\n"
"              Example:  the  following  command sends an SMTP mime e-mail con-\n"
, stdout);
 fputs(
"              sisting in an inline part in two alternative formats: plain text\n"
"              and HTML. It attaches a text file:\n"
"\n"
"               curl -F '=(;type=multipart/alternative' \\\n"


"                       -F '=plain text message' \\\n"
"                       -F '= <body>HTML message</body>;type=text/html' \\\n"
"                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com\n"
"\n"
"              Data  can  be encoded for transfer using encoder=. Available en-\n"


, stdout);
 fputs(
"              codings are binary and 8bit that do nothing else than adding the\n"
"              corresponding  Content-Transfer-Encoding  header, 7bit that only\n"
"              rejects 8-bit characters with a transfer error, quoted-printable\n"
"              and  base64  that  encodes  data  according to the corresponding\n"
"              schemes, limiting lines length to 76 characters.\n"
"\n"
"              Example: send multipart mail with a quoted-printable  text  mes-\n"
, stdout);
 fputs(
"              sage and a base64 attached file:\n"
"\n"
"               curl -F '=text message;encoder=quoted-printable' \\\n"
"                    -F '=@localfile;encoder=base64' ... smtp://example.com\n"
"\n"


"              See further examples and details in the MANUAL.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              This  option  overrides  -d, --data and -I, --head and -T, --up-\n"
"              load-file.\n"
"\n"
"       --ftp-account <data>\n"
, stdout);
 fputs(
"              (FTP) When an FTP server asks for \"account data\" after user name\n"
"              and  password has been provided, this data is sent off using the\n"
"              ACCT command.\n"
"\n"


"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.13.0.\n"
"\n"
"       --ftp-alternative-to-user <command>\n"
"              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
, stdout);
 fputs(
"              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
"              Transport server over FTPS using  a  client  certificate,  using\n"
"              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"


"              the certificate.\n"
"              Added in 7.15.5.\n"
"\n"
"       --ftp-create-dirs\n"
"              (FTP SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
"              doesn't  currently exist on the server, the standard behavior of\n"
, stdout);
 fputs(
"              curl is to fail. Using this option, curl will instead attempt to\n"
"              create missing directories.\n"
"\n"
"              See also --create-dirs.\n"
"\n"
"       --ftp-method <method>\n"


"              (FTP)  Control what method curl should use to reach a file on an\n"
"              FTP(S) server. The method argument should be one of the  follow-\n"
"              ing alternatives:\n"
"\n"
"              multicwd\n"
"                     curl  does  a  single CWD operation for each path part in\n"


, stdout);
 fputs(
"                     the given URL. For deep hierarchies this means very  many\n"
"                     commands.  This  is  how RFC 1738 says it should be done.\n"
"                     This is the default but the slowest behavior.\n"
"\n"
"              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
"                     etc and give a full path to the server for all these com-\n"
"                     mands. This is the fastest behavior.\n"
"\n"
"              singlecwd\n"


, stdout);
 fputs(
"                     curl does one CWD with the full target directory and then\n"
"                     operates  on  the  file  \"normally\" (like in the multicwd\n"
"                     case). This is somewhat  more  standards  compliant  than\n"
"                     'nocwd' but without the full penalty of 'multicwd'.\n"
"\n"
"       Added in 7.15.1.\n"
"\n"
"       --ftp-pasv\n"
"              (FTP)  Use  passive mode for the data connection. Passive is the\n"
, stdout);
 fputs(
"              internal default behavior, but using this option can be used  to\n"
"              override a previous -P, --ftp-port option.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"


"              used. Undoing an enforced passive really isn't  doable  but  you\n"
"              must then instead enforce the correct -P, --ftp-port again.\n"
"\n"
"              Passive mode means that curl will try the EPSV command first and\n"
, stdout);
 fputs(
"              then PASV, unless --disable-epsv is used.\n"
"              See also --disable-epsv. Added in 7.11.0.\n"
"\n"
"       -P, --ftp-port <address>\n"
"              (FTP) Reverses the default initiator/listener  roles  when  con-\n"


"              necting  with  FTP. This option makes curl use active mode. curl\n"
"              then tells the server to connect back to the client's  specified\n"
"              address and port, while passive mode asks the server to setup an\n"
, stdout);
 fputs(
"              IP address and port for it to connect to.  <address>  should  be\n"
"              one of:\n"
"\n"
"              interface\n"
"                     e.g.  \"eth0\"  to specify which interface's IP address you\n"
"                     want to use (Unix only)\n"
"\n"


"              IP address\n"
"                     e.g. \"192.168.10.1\" to specify the exact IP address\n"
"\n"
"              host name\n"
"                     e.g. \"my.host.domain\" to specify the machine\n"
"\n"
, stdout);
 fputs(
"              -      make curl pick the same IP address that is  already  used\n"
"                     for the control connection\n"
"\n"
"       If  this  option is used several times, the last one will be used. Dis-\n"
"       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the\n"


"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
"       PORT++.\n"
"\n"
"       Since 7.19.5, you can append \":[start]-[end]\" to the right of  the  ad-\n"
, stdout);
 fputs(
"       dress,  to tell curl what TCP port range to use. That means you specify\n"
"       a port range, from a lower to a higher number. A single number works as\n"
"       well,  but do note that it increases the risk of failure since the port\n"
"       may not be available.\n"
"\n"
"       See also --ftp-pasv and --disable-eprt.\n"
"\n"


"       --ftp-pret\n"
"              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
"              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
, stdout);
 fputs(
"              command for directory listings as well as up  and  downloads  in\n"
"              PASV mode.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
"       --ftp-skip-pasv-ip\n"
"              (FTP) Tell curl to not use the IP address the server suggests in\n"
"              its response to curl's PASV command when curl connects the  data\n"


"              connection.  Instead curl will re-use the same IP address it al-\n"
"              ready uses for the control connection.\n"
"\n"
, stdout);
 fputs(
"              This option has no effect if PORT, EPRT or EPSV is used  instead\n"
"              of PASV.\n"
"\n"
"              See also --ftp-pasv. Added in 7.14.2.\n"
"\n"
"       --ftp-ssl-ccc-mode <active/passive>\n"
"              (FTP)  Sets the CCC mode. The passive mode will not initiate the\n"
"              shutdown, but instead wait for the server to do it, and will not\n"
"              reply to the shutdown from the server. The active mode initiates\n"
, stdout);
 fputs(

"              the shutdown and waits for a reply from the server.\n"
"\n"
"              See also --ftp-ssl-ccc. Added in 7.16.2.\n"
"\n"
"       --ftp-ssl-ccc\n"
"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
"              layer after authenticating. The rest of the control channel com-\n"
"              munication will be unencrypted. This allows NAT routers to  fol-\n"


"              low the FTP transaction. The default mode is passive.\n"
"\n"
, stdout);
 fputs(
"              See also --ssl and --ftp-ssl-ccc-mode. Added in 7.16.1.\n"
"\n"
"       --ftp-ssl-control\n"
"              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
"              Allows secure authentication, but non-encrypted  data  transfers\n"
"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
"              port SSL/TLS.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       -G, --get\n"
"              When used, this option will make all  data  specified  with  -d,\n"
, stdout);
 fputs(

"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
"              GET request instead of the POST request that otherwise would  be\n"
"              used. The data will be appended to the URL with a '?' separator.\n"
"              If  used  in combination with -I, --head, the POST data will in-\n"
"              stead be appended to the URL with a HEAD request.\n"
"\n"
"              If this option is used several times,  only  the  first  one  is\n"
, stdout);
 fputs(

"              used.  This is because undoing a GET doesn't make sense, but you\n"
"              should then instead enforce the alternative method you prefer.\n"
"\n"
"       -g, --globoff\n"
"              This option switches off the \"URL globbing parser\". When you set\n"
"              this  option, you can specify URLs that contain the letters {}[]\n"
"              without having them being interpreted by curl itself. Note  that\n"
"              these  letters are not normal legal URL contents but they should\n"
, stdout);
 fputs(

"              be encoded according to the URI standard.\n"
"\n"
"       --happy-eyeballs-timeout-ms <milliseconds>\n"
"              Happy eyeballs is an algorithm that attempts to connect to  both\n"
"              IPv4  and  IPv6  addresses for dual-stack hosts, preferring IPv6\n"
"              first for the number of milliseconds. If the IPv6 address cannot\n"
"              be  connected  to  within that time then a connection attempt is\n"
, stdout);
 fputs(

"              made to the IPv4 address in parallel. The first connection to be\n"
"              established is the one that is used.\n"
"\n"
"              The  range of suggested useful values is limited. Happy Eyeballs\n"
"              RFC 6555 says \"It is RECOMMENDED  that  connection  attempts  be\n"
"              paced  150-250 ms apart to balance human factors against network\n"


"              load.\" libcurl currently defaults to 200 ms. Firefox and  Chrome\n"
"              currently default to 300 ms.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.59.0.\n"
"\n"
"       --haproxy-protocol\n"
"              (HTTP)  Send a HAProxy PROXY protocol v1 header at the beginning\n"
"              of the connection. This is used by some load balancers  and  re-\n"
"              verse proxies to indicate the client's true IP address and port.\n"
"              This  option is primarily useful when sending test requests to a\n"
, stdout);
 fputs(

"              service that expects this header.\n"
"\n"
"              Added in 7.60.0.\n"
"\n"
"       -I, --head\n"
"              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
"              command  HEAD which this uses to get nothing but the header of a\n"
"              document. When used on an FTP or FILE file,  curl  displays  the\n"
"              file size and last modification time only.\n"
"\n"
"       -H, --header <header/@file>\n"
, stdout);
 fputs(

"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a server. You may specify any number of extra  headers.  Note\n"
"              that if you should add a custom header that has the same name as\n"
"              one of the internal ones curl would  use,  your  externally  set\n"
"              header will be used instead of the internal one. This allows you\n"
"              to make even trickier stuff than curl  would  normally  do.  You\n"
, stdout);
 fputs(

"              should  not  replace internally set headers without knowing per-\n"
"              fectly well what you're doing. Remove an internal header by giv-\n"
"              ing  a  replacement  without  content  on  the right side of the\n"
"              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
"              value  then its header must be terminated with a semicolon, such\n"


"              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"
, stdout);
 fputs(
"              curl will make sure that each header  you  add/replace  is  sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
"              Starting  in  7.55.0, this option can take an argument in @file-\n"
"              name style, which then adds a header for each line in the  input\n"
, stdout);
 fputs(

"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              See also the -A, --user-agent and -e, --referer options.\n"
"\n"
"              Starting in 7.37.0, you need --proxy-header to send custom head-\n"
"              ers intended for a proxy.\n"
"\n"
"              Example:\n"
"\n"
"               curl -H \"X-First-Name: Joe\" http://example.com/\n"
"\n"
"              WARNING: headers set with this option will be  set  in  all  re-\n"
, stdout);
 fputs(

"              quests  - even after redirects are followed, like when told with\n"
"              -L, --location. This can lead to the header being sent to  other\n"
"              hosts  than  the  original  host, so sensitive headers should be\n"
"              used with caution combined with following redirects.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"
"       -h, --help\n"
, stdout);
 fputs(

"              Usage  help.  This lists all current command line options with a\n"
"              short description.\n"
"       --hostpubmd5 <md5>\n"
"              (SFTP SCP) Pass a string containing 32 hexadecimal  digits.  The\n"
"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
"              public key, curl will refuse the connection with the host unless\n"
"              the md5sums match.\n"
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
"\n"
"              See also --http1.1 and --http3. --http2 requires that the under-\n"
"              lying libcurl was built to support HTTP/2. This option overrides\n"
"              --http1.1 and -0, --http1.0 and  --http2-prior-knowledge.  Added\n"
"              in 7.33.0.\n"
"\n"
"       --http3\n"
"              (HTTP) WARNING: this option is experiemental. Do not use in pro-\n"
"              duction.\n"
"\n"
, stdout);
 fputs(
"              Tells curl to use HTTP version 3 directly to the host  and  port\n"
"              number used in the URL. A normal HTTP/3 transaction will be done\n"
"              to a host and then get redirected via Alt-SVc, but  this  option\n"







|







1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
"\n"
"              See also --http1.1 and --http3. --http2 requires that the under-\n"
"              lying libcurl was built to support HTTP/2. This option overrides\n"
"              --http1.1 and -0, --http1.0 and  --http2-prior-knowledge.  Added\n"
"              in 7.33.0.\n"
"\n"
"       --http3\n"
"              (HTTP)  WARNING: this option is experimental. Do not use in pro-\n"
"              duction.\n"
"\n"
, stdout);
 fputs(
"              Tells curl to use HTTP version 3 directly to the host  and  port\n"
"              number used in the URL. A normal HTTP/3 transaction will be done\n"
"              to a host and then get redirected via Alt-SVc, but  this  option\n"
2184
2185
2186
2187
2188
2189
2190










2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
, stdout);
 fputs(
"              will force the output to be done to stdout.\n"
"\n"
"              See also -O, --remote-name and --remote-name-all and  -J,  --re-\n"
"              mote-header-name.\n"
"\n"










"       --parallel-max\n"
"              When  asked to do parallel transfers, using -Z, --parallel, this\n"
"              option controls the maximum amount of transfers to do simultane-\n"
"              ously.\n"
"\n"
"              The default is 50.\n"
"\n"
"              See also -Z, --parallel. Added in 7.66.0.\n"
"\n"
"       -Z, --parallel\n"
, stdout);
 fputs(
"              Makes  curl perform its transfers in parallel as compared to the\n"
"              regular serial manner.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --path-as-is\n"
"              Tell curl to not handle sequences of /../ or /./  in  the  given\n"
"              URL  path.  Normally curl will squash or merge them according to\n"
, stdout);
 fputs(
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
"              hashes)  to  verify the peer. This can be a path to a file which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
, stdout);
 fputs(
"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
"              certificate  indicating  its identity. A public key is extracted\n"
"              from this certificate and if it does not exactly match the  pub-\n"
"              lic  key provided to this option, curl will abort the connection\n"
"              before sending or receiving any data.\n"
"\n"
"              PEM/DER support:\n"
"                7.39.0: OpenSSL, GnuTLS and GSKit\n"
"                7.43.0: NSS and wolfSSL\n"
, stdout);
 fputs(
"                7.47.0: mbedtls sha256 support:\n"
"                7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
"                7.47.0: mbedtls Other SSL backends not supported.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --post301\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
, stdout);
 fputs(
"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
"              the  conversion  by  default to maintain consistency. However, a\n"
"              server may require a POST to remain a POST after  such  a  redi-\n"
"              rection.  This  option is meaningful only when using -L, --loca-\n"
"              tion.\n"
"\n"
"              See also --post302 and --post303 and -L,  --location.  Added  in\n"
"              7.17.1.\n"
"\n"
"       --post302\n"
, stdout);
 fputs(
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
, stdout);
 fputs(
"              See  also  --post301  and --post303 and -L, --location. Added in\n"
"              7.19.1.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
"              requests  into  GET  requests when following 303 redirections. A\n"
"              server may require a POST to remain a POST after a 303 redirect-\n"
"              ion. This option is meaningful only when using -L, --location.\n"
"\n"
, stdout);
 fputs(
"              See  also  --post302  and --post301 and -L, --location. Added in\n"
"              7.26.0.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
"              Use the specified SOCKS proxy before connecting to  an  HTTP  or\n"
"              HTTPS  -x,  --proxy.  In  such a case curl first connects to the\n"
"              SOCKS proxy and then connects (through SOCKS)  to  the  HTTP  or\n"
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
, stdout);
 fputs(
"              The pre proxy string should be specified with a protocol:// pre-\n"
"              fix to  specify  alternative  proxy  protocols.  Use  socks4://,\n"
"              socks4a://,  socks5://  or  socks5h://  to  request the specific\n"
"              SOCKS version to be used. No protocol specified will  make  curl\n"
"              default to SOCKS4.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
, stdout);
 fputs(
"              User and password that might be provided in the proxy string are\n"
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as a simple progress bar in-\n"
, stdout);
 fputs(
"              stead of the standard, more informational, meter.\n"
"\n"
"              This  progress  bar draws a single line of '#' characters across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
"              For  transfers  without  a  known size, there will be space ship\n"
"              (-=o=-) that moves back and forth but only while data  is  being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
"       --proto-default <protocol>\n"
, stdout);
 fputs(
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
"              Example:\n"
"\n"
"               curl --proto-default https ftp.mozilla.org\n"
"\n"
"              An  unknown  or  unsupported  protocol causes error CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without this option curl would make a guess based on  the  host,\n"
"              see --url for details.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
"              Tells  curl to limit what protocols it may use on redirect. Pro-\n"
"              tocols denied by --proto are not overridden by this option.  See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
"              By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect\n"
, stdout);
 fputs(
"              (7.65.2).  Older versions of curl allowed all protocols on redi-\n"
"              rect  except several disabled for security reasons: Since 7.19.4\n"
"              FILE and SCP are disabled, and since 7.40.0  SMB  and  SMBS  are\n"
"              also  disabled.  Specifying all or +all enables all protocols on\n"
"              redirect, including those disabled for security.\n"
"\n"
"              Added in 7.20.2.\n"
"\n"
"       --proto <protocols>\n"
, stdout);
 fputs(
"              Tells curl to limit what protocols it may use in  the  transfer.\n"
"              Protocols  are evaluated left to right, are comma separated, and\n"
"              are each a protocol name or 'all', optionally prefixed  by  zero\n"
"              or more modifiers. Available modifiers are:\n"
"\n"
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
, stdout);
 fputs(
"              -  Deny this protocol, removing it from the  list  of  protocols\n"
"                 already permitted.\n"
"\n"
"              =  Permit  only this protocol (ignoring the list already permit-\n"
"                 ted), though subject to later modification by subsequent  en-\n"
"                 tries in the comma separated list.\n"
"\n"
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
"              --proto -all,https,+http\n"
, stdout);
 fputs(
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
"       Unknown protocols produce a warning. This allows scripts to safely rely\n"
"       on being able to disable potentially dangerous protocols, without rely-\n"
"       ing  upon  support  for that protocol being built into curl to avoid an\n"
"       error.\n"
"\n"
"       This option can be used multiple times, in which case the effect is the\n"
, stdout);
 fputs(
"       same as concatenating the protocols into one instance of the option.\n"
"\n"
"       See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
"       --proxy-anyauth\n"
"              Tells  curl to pick a suitable authentication method when commu-\n"
"              nicating with the given HTTP proxy. This might  cause  an  extra\n"
"              request/response round-trip.\n"
"\n"
"              See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
"              in 7.13.2.\n"
"\n"
"       --proxy-basic\n"
, stdout);
 fputs(
"              Tells curl to use HTTP Basic authentication  when  communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
"              remote host. Basic is the  default  authentication  method  curl\n"
"              uses with proxies.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
, stdout);
 fputs(
"              See  also  --proxy-capath  and  --cacert  and  --capath  and -x,\n"
"              --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
"              See also --proxy-cacert and -x, --proxy and --capath.  Added  in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"







>
>
>
>
>
>
>
>
>
>

|










|










|
|







|
|






|
|
|
|


















|
|
|
|


|







|
|
|
|




|




|





|



|
|
|





|
|
|


|





|












|

|
|











|




|







|
|










|
|
|







|
|
|







|


|
|
















|










|
|








|

|









|





|







2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
, stdout);
 fputs(
"              will force the output to be done to stdout.\n"
"\n"
"              See also -O, --remote-name and --remote-name-all and  -J,  --re-\n"
"              mote-header-name.\n"
"\n"
"       --parallel-immediate\n"
"              When  doing  parallel  transfers, this option will instruct curl\n"
"              that it should rather prefer opening up more connections in par-\n"
"              allel at once rather than waiting to see if new transfers can be\n"
, stdout);
 fputs(
"              added as multiplexed streams on another connection.\n"
"\n"
"              See also -Z, --parallel and --parallel-max. Added in 7.68.0.\n"
"\n"
"       --parallel-max\n"
"              When asked to do parallel transfers, using -Z, --parallel,  this\n"
"              option controls the maximum amount of transfers to do simultane-\n"
"              ously.\n"
"\n"
"              The default is 50.\n"
"\n"
"              See also -Z, --parallel. Added in 7.66.0.\n"
"\n"
"       -Z, --parallel\n"
, stdout);
 fputs(
"              Makes curl perform its transfers in parallel as compared to  the\n"
"              regular serial manner.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --path-as-is\n"
"              Tell  curl  to  not handle sequences of /../ or /./ in the given\n"
"              URL path. Normally curl will squash or merge them  according  to\n"
, stdout);
 fputs(
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
"              hashes) to verify the peer. This can be a path to a  file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
, stdout);
 fputs(
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
"              certificate indicating its identity. A public key  is  extracted\n"
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              PEM/DER support:\n"
"                7.39.0: OpenSSL, GnuTLS and GSKit\n"
"                7.43.0: NSS and wolfSSL\n"
, stdout);
 fputs(
"                7.47.0: mbedtls sha256 support:\n"
"                7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
"                7.47.0: mbedtls Other SSL backends not supported.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --post301\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
, stdout);
 fputs(
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
"              See  also  --post302  and --post303 and -L, --location. Added in\n"
"              7.17.1.\n"
"\n"
"       --post302\n"
, stdout);
 fputs(
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
"              the  conversion  by  default to maintain consistency. However, a\n"
"              server may require a POST to remain a POST after  such  a  redi-\n"
"              rection.  This  option is meaningful only when using -L, --loca-\n"
"              tion.\n"
"\n"
, stdout);
 fputs(
"              See also --post301 and --post303 and -L,  --location.  Added  in\n"
"              7.19.1.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
"              requests into GET requests when following  303  redirections.  A\n"
"              server may require a POST to remain a POST after a 303 redirect-\n"
"              ion. This option is meaningful only when using -L, --location.\n"
"\n"
, stdout);
 fputs(
"              See also --post302 and --post301 and -L,  --location.  Added  in\n"
"              7.26.0.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
"              Use  the  specified  SOCKS proxy before connecting to an HTTP or\n"
"              HTTPS -x, --proxy. In such a case curl  first  connects  to  the\n"
"              SOCKS  proxy  and  then  connects (through SOCKS) to the HTTP or\n"
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
, stdout);
 fputs(
"              The pre proxy string should be specified with a protocol:// pre-\n"
"              fix  to  specify  alternative  proxy  protocols.  Use socks4://,\n"
"              socks4a://, socks5:// or  socks5h://  to  request  the  specific\n"
"              SOCKS  version  to be used. No protocol specified will make curl\n"
"              default to SOCKS4.\n"
"\n"
"              If the port number is not specified in the proxy string,  it  is\n"
"              assumed to be 1080.\n"
"\n"
, stdout);
 fputs(
"              User and password that might be provided in the proxy string are\n"
"              URL decoded by curl. This allows you to pass in special  charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as a simple progress bar in-\n"
, stdout);
 fputs(
"              stead of the standard, more informational, meter.\n"
"\n"
"              This progress bar draws a single line of '#'  characters  across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
"              For transfers without a known size, there  will  be  space  ship\n"
"              (-=o=-)  that  moves back and forth but only while data is being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
"       --proto-default <protocol>\n"
, stdout);
 fputs(
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
"              Example:\n"
"\n"
"               curl --proto-default https ftp.mozilla.org\n"
"\n"
"              An unknown or unsupported  protocol  causes  error  CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without  this  option curl would make a guess based on the host,\n"
"              see --url for details.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
"              Tells curl to limit what protocols it may use on redirect.  Pro-\n"
"              tocols  denied by --proto are not overridden by this option. See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
"              By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect\n"
, stdout);
 fputs(
"              (7.65.2).  Older versions of curl allowed all protocols on redi-\n"
"              rect except several disabled for security reasons: Since  7.19.4\n"
"              FILE  and  SCP  are  disabled, and since 7.40.0 SMB and SMBS are\n"
"              also disabled. Specifying all or +all enables all  protocols  on\n"
"              redirect, including those disabled for security.\n"
"\n"
"              Added in 7.20.2.\n"
"\n"
"       --proto <protocols>\n"
, stdout);
 fputs(
"              Tells  curl  to limit what protocols it may use in the transfer.\n"
"              Protocols are evaluated left to right, are comma separated,  and\n"
"              are  each  a protocol name or 'all', optionally prefixed by zero\n"
"              or more modifiers. Available modifiers are:\n"
"\n"
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
, stdout);
 fputs(
"              -  Deny  this  protocol,  removing it from the list of protocols\n"
"                 already permitted.\n"
"\n"
"              =  Permit only this protocol (ignoring the list already  permit-\n"
"                 ted),  though subject to later modification by subsequent en-\n"
"                 tries in the comma separated list.\n"
"\n"
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
"              --proto -all,https,+http\n"
, stdout);
 fputs(
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
"       Unknown protocols produce a warning. This allows scripts to safely rely\n"
"       on being able to disable potentially dangerous protocols, without rely-\n"
"       ing upon support for that protocol being built into curl  to  avoid  an\n"
"       error.\n"
"\n"
"       This option can be used multiple times, in which case the effect is the\n"
, stdout);
 fputs(
"       same as concatenating the protocols into one instance of the option.\n"
"\n"
"       See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
"       --proxy-anyauth\n"
"              Tells curl to pick a suitable authentication method when  commu-\n"
"              nicating  with  the  given HTTP proxy. This might cause an extra\n"
"              request/response round-trip.\n"
"\n"
"              See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
"              in 7.13.2.\n"
"\n"
"       --proxy-basic\n"
, stdout);
 fputs(
"              Tells  curl  to use HTTP Basic authentication when communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
"              remote  host.  Basic  is  the default authentication method curl\n"
"              uses with proxies.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
, stdout);
 fputs(
"              See also  --proxy-capath  and  --cacert  and  --capath  and  -x,\n"
"              --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
"              See  also  --proxy-cacert and -x, --proxy and --capath. Added in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
"\n"
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
"              Tells  curl to use HTTP Digest authentication when communicating\n"
, stdout);
 fputs(
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
"              a remote host.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-header <header/@file>\n"
"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a proxy. You may specify any number of extra headers. This is\n"
"              the  equivalent option to -H, --header but is for proxy communi-\n"
, stdout);
 fputs(
"              cation only like in CONNECT requests when you  want  a  separate\n"
"              header  sent  to  the proxy to what is sent to the actual remote\n"
"              host.\n"
"\n"
"              curl will make sure that each header  you  add/replace  is  sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
, stdout);
 fputs(
"              Headers  specified  with this option will not be included in re-\n"
"              quests that curl knows will not be sent to a proxy.\n"
"\n"
"              Starting in 7.55.0, this option can take an argument  in  @file-\n"
"              name  style, which then adds a header for each line in the input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.37.0.\n"
"       --proxy-insecure\n"
"              Same as -k, --insecure but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key-type <type>\n"
"              Same as --key-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key <key>\n"
"              Same as --key but used in HTTPS proxy context.\n"
"\n"
"       --proxy-negotiate\n"
"              Tells  curl  to  use HTTP Negotiate (SPNEGO) authentication when\n"
, stdout);
 fputs(
"              communicating with the given proxy. Use --negotiate for enabling\n"
"              HTTP Negotiate (SPNEGO) with a remote host.\n"
"\n"
"              See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
"       --proxy-ntlm\n"
"              Tells  curl  to  use HTTP NTLM authentication when communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
"              See also --proxy-negotiate and --proxy-anyauth.\n"
"\n"
, stdout);
 fputs(
"       --proxy-pass <phrase>\n"
"              Same as --pass but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-pinnedpubkey <hashes>\n"
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
"              hashes) to verify the proxy. This can be a path to a file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
, stdout);
 fputs(
"              rated by ';'\n"
"\n"
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
"              certificate indicating its identity. A public key  is  extracted\n"
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"       --proxy-service-name <name>\n"
"              This  option allows you to change the service name for proxy ne-\n"
"              gotiation.\n"
"\n"
"              Added in 7.43.0.\n"
"\n"
"       --proxy-ssl-allow-beast\n"
"              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tls13-ciphers <ciphersuite list>\n"
"              (TLS) Specifies which cipher suites to use in the connection  to\n"
, stdout);
 fputs(
"              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
"              suites must specify valid ciphers. Read up  on  TLS  1.3  cipher\n"
"              suite details on this URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This  option  is  currently  used only when curl is built to use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you  can try setting TLS 1.3 cipher suites by using the --proxy-\n"
, stdout);
 fputs(
"              ciphers option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"







|








|

|


|
|


|






|


|
|


|



















|








|













|
|






|
|
|
|







|










|



|




|

|







2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
"\n"
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
"              Tells curl to use HTTP Digest authentication when  communicating\n"
, stdout);
 fputs(
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
"              a remote host.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-header <header/@file>\n"
"              (HTTP) Extra header to include in the request when sending  HTTP\n"
"              to a proxy. You may specify any number of extra headers. This is\n"
"              the equivalent option to -H, --header but is for proxy  communi-\n"
, stdout);
 fputs(
"              cation  only  like  in CONNECT requests when you want a separate\n"
"              header sent to the proxy to what is sent to  the  actual  remote\n"
"              host.\n"
"\n"
"              curl  will  make  sure  that each header you add/replace is sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
, stdout);
 fputs(
"              Headers specified with this option will not be included  in  re-\n"
"              quests that curl knows will not be sent to a proxy.\n"
"\n"
"              Starting  in  7.55.0, this option can take an argument in @file-\n"
"              name style, which then adds a header for each line in the  input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              This  option  can  be  used multiple times to add/replace/remove\n"
"              multiple headers.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.37.0.\n"
"       --proxy-insecure\n"
"              Same as -k, --insecure but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key-type <type>\n"
"              Same as --key-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key <key>\n"
"              Same as --key but used in HTTPS proxy context.\n"
"\n"
"       --proxy-negotiate\n"
"              Tells curl to use HTTP Negotiate  (SPNEGO)  authentication  when\n"
, stdout);
 fputs(
"              communicating with the given proxy. Use --negotiate for enabling\n"
"              HTTP Negotiate (SPNEGO) with a remote host.\n"
"\n"
"              See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
"       --proxy-ntlm\n"
"              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
"              See also --proxy-negotiate and --proxy-anyauth.\n"
"\n"
, stdout);
 fputs(
"       --proxy-pass <phrase>\n"
"              Same as --pass but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-pinnedpubkey <hashes>\n"
"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
"              hashes)  to verify the proxy. This can be a path to a file which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
, stdout);
 fputs(
"              rated by ';'\n"
"\n"
"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
"              certificate  indicating  its identity. A public key is extracted\n"
"              from this certificate and if it does not exactly match the  pub-\n"
"              lic  key provided to this option, curl will abort the connection\n"
"              before sending or receiving any data.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"       --proxy-service-name <name>\n"
"              This option allows you to change the service name for proxy  ne-\n"
"              gotiation.\n"
"\n"
"              Added in 7.43.0.\n"
"\n"
"       --proxy-ssl-allow-beast\n"
"              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tls13-ciphers <ciphersuite list>\n"
"              (TLS)  Specifies which cipher suites to use in the connection to\n"
, stdout);
 fputs(
"              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
"              suites  must  specify  valid  ciphers. Read up on TLS 1.3 cipher\n"
"              suite details on this URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This option is currently used only when curl  is  built  to  use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the  --proxy-\n"
, stdout);
 fputs(
"              ciphers option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
"\n"
"       --proxy-tlsv1\n"
"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
"              Specify the user name and password to use for proxy  authentica-\n"
"              tion.\n"
"\n"
"              If  you use a Windows SSPI-enabled curl binary and do either Ne-\n"
"              gotiate or NTLM authentication then you can tell curl to  select\n"
, stdout);
 fputs(
"              the user name and password from your environment by specifying a\n"
"              single colon with this option: \"-U :\".\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
"              ment  from  process listings. This is not enough to protect cre-\n"
"              dentials from possibly getting seen by other users on  the  same\n"
"              system  as  they will still be visible for a brief moment before\n"
, stdout);
 fputs(
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -x, --proxy [protocol://]host[:port]\n"
"              Use the specified proxy.\n"
"\n"
"              The  proxy string can be specified with a protocol:// prefix. No\n"
"              protocol specified or http:// will be treated as HTTP proxy. Use\n"
, stdout);
 fputs(
"              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
"              cific SOCKS version to be used.  (The protocol support was added\n"
"              in curl 7.21.7)\n"
"\n"
"              HTTPS  proxy  support  via https:// protocol prefix was added in\n"
"              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
"              Unrecognized and unsupported  proxy  protocols  cause  an  error\n"
"              since  7.52.0.   Prior  versions may ignore the protocol and use\n"
, stdout);
 fputs(
"              http:// instead.\n"
"\n"
"              If the port number is not specified in the proxy string,  it  is\n"
"              assumed to be 1080.\n"
"\n"
"              This  option  overrides  existing environment variables that set\n"
"              the proxy to use. If there's an environment variable  setting  a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
"              All operations that are performed over an HTTP proxy will trans-\n"
, stdout);
 fputs(
"              parently be converted to HTTP. It means  that  certain  protocol\n"
"              specific operations might not be available. This is not the case\n"
"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
"              ytunnel option.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL decoded by curl. This allows you to pass in special  charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
, stdout);
 fputs(
"              The  proxy host can be specified the exact same way as the proxy\n"
"              environment variables, including the protocol  prefix  (http://)\n"
"              and the embedded user + password.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy1.0 <host[:port]>\n"
"              Use  the  specified  HTTP  1.0  proxy. If the port number is not\n"
"              specified, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              The only difference between this and the HTTP proxy  option  -x,\n"
"              --proxy,  is that attempts to use CONNECT through the proxy will\n"
"              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
"       -p, --proxytunnel\n"
"              When an HTTP proxy is used -x, --proxy, this  option  will  make\n"
"              curl  tunnel through the proxy. The tunnel approach is made with\n"
"              the HTTP proxy CONNECT request and requires that the  proxy  al-\n"
, stdout);
 fputs(
"              lows direct connect to the remote port number curl wants to tun-\n"
"              nel through to.\n"
"\n"
"              To suppress proxy CONNECT response headers when curl is  set  to\n"
"              output headers use --suppress-connect-headers.\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --pubkey <key>\n"
"              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
"              lic key in this separate file.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
"              key  from the private key file, so passing this option is gener-\n"
"              ally not required. Note that this public key extraction requires\n"
"              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher\n"
"              that is itself linked against OpenSSL.)\n"
"\n"
"       -Q, --quote\n"
, stdout);
 fputs(
"              (FTP SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
"              server.  Quote commands are sent BEFORE the transfer takes place\n"
"              (just after the initial PWD command in an FTP  transfer,  to  be\n"
"              exact). To make commands take place after a successful transfer,\n"
"              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
"              curl has changed the working directory, just before the transfer\n"
, stdout);
 fputs(
"              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
"              ported for FTP). You may specify any number of commands.\n"
"\n"
"              If  the  server returns failure for one of the commands, the en-\n"
"              tire operation will be aborted. You must send syntactically cor-\n"
"              rect  FTP  commands as RFC 959 defines to FTP servers, or one of\n"
"              the commands listed below to SFTP servers.\n"
"\n"
, stdout);
 fputs(
"              Prefix the command with an asterisk (*) to  make  curl  continue\n"
"              even  if the command fails as by default curl will stop at first\n"
"              failure.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
"              quote  commands  itself before sending them to the server.  File\n"
"              names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
 fputs(
"              acters.   Following is the list of all supported SFTP quote com-\n"
"              mands:\n"
"\n"
"              chgrp group file\n"
"                     The chgrp command sets the group ID of the file named  by\n"
"                     the  file  operand to the group ID specified by the group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The chmod command modifies the  file  mode  bits  of  the\n"
, stdout);
 fputs(
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
"                     The chown command sets the owner of the file named by the\n"
"                     file  operand  to the user ID specified by the user oper-\n"
"                     and. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
, stdout);
 fputs(
"                     target_file  location  pointing  to the source_file loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
"                     The mkdir command creates the directory named by the  di-\n"
"                     rectory_name operand.\n"
"\n"
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
, stdout);
 fputs(
"                     The rename command renames the file or directory named by\n"
"                     the  source  operand to the destination path named by the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
"                     The rm command removes the file specified by the file op-\n"
"                     erand.\n"
"\n"
"              rmdir directory\n"
"                     The  rmdir  command removes the directory entry specified\n"
, stdout);
 fputs(
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
"       --random-file <file>\n"
"              Specify the path name to file containing what will be considered\n"
"              as  random  data. The data may be used to seed the random engine\n"
"              for SSL connections.  See also the --egd-file option.\n"
"\n"
"       -r, --range <range>\n"
, stdout);
 fputs(
"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
"              ment)  from  an  HTTP/1.1,  FTP  or SFTP server or a local FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
"              500-999   specifies the second 500 bytes\n"
"\n"
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
"\n"
, stdout);
 fputs(
"              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
"\n"
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
"              (*) = NOTE that this will cause the server to reply with a  mul-\n"
"              tipart response!\n"
"\n"
"              Only  digit characters (0-9) are valid in the 'start' and 'stop'\n"
"              fields of the 'start-stop' range syntax. If a non-digit  charac-\n"
, stdout);
 fputs(
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
"              You should also be aware that many HTTP/1.1 servers do not  have\n"
"              this  feature  enabled, so that when you attempt to get a range,\n"
"              you'll instead get the whole document.\n"
"\n"
"              FTP and SFTP range downloads only  support  the  simple  'start-\n"
, stdout);
 fputs(
"              stop'  syntax  (optionally with one of the numbers omitted). FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
"              tent  or transfer encodings and instead makes them passed on un-\n"
"              altered, raw.\n"
"\n"
"              Added in 7.16.2.\n"
"\n"
"       -e, --referer <URL>\n"
, stdout);
 fputs(
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
"              This can also be set with the -H, --header flag of course.  When\n"
"              used with -L, --location you  can  append  \";auto\"  to  the  -e,\n"
"              --referer  URL  to  make curl automatically set the previous URL\n"
"              when it follows a Location: header. The \";auto\"  string  can  be\n"
"              used alone, even if you don't set an initial -e, --referer.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified Content-Disposition  filename  instead  of  ex-\n"
"              tracting a filename from the URL.\n"
"\n"
"              If  the  server  specifies a file name and a file with that name\n"
, stdout);
 fputs(
"              already exists in the current working directory it will  not  be\n"
"              overwritten and an error will occur. If the server doesn't spec-\n"
"              ify a file name then this option has no effect.\n"
"\n"
"              There's no attempt to decode %-sequences (yet) in  the  provided\n"
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              WARNING: Exercise judicious use of this  option,  especially  on\n"
, stdout);
 fputs(
"              Windows.  A  rogue  server  could  send you the name of a DLL or\n"
"              other file that could possibly be loaded automatically  by  Win-\n"
"              dows or some third party software.\n"
"\n"
"       --remote-name-all\n"
"              This  option changes the default action for all given URLs to be\n"
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
, stdout);
 fputs(
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
"              Added in 7.19.0.\n"
"\n"
"       -O, --remote-name\n"
"              Write output to a local file named like the remote file we  get.\n"
"              (Only  the file part of the remote file is used, the path is cut\n"
"              off.)\n"
"\n"
"              The file will be saved in the current working directory. If  you\n"
"              want  the  file  saved  in  a different directory, make sure you\n"
, stdout);
 fputs(
"              change the current working directory before invoking  curl  with\n"
"              this option.\n"
"\n"
"              The  remote  file  name  to use for saving is extracted from the\n"
"              given URL, nothing else, and if it already  exists  it  will  be\n"
"              overwritten.  If  you  want  the server to be able to choose the\n"
"              file name refer to -J, --remote-header-name which can be used in\n"
, stdout);
 fputs(
"              addition  to  this option. If the server chooses a file name and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
"              other  URL  encoded parts of the name, they will end up as-is as\n"
"              file name.\n"
"\n"
"              You may use this option as many times as the number of URLs  you\n"
"              have.\n"
"\n"
"       -R, --remote-time\n"
, stdout);
 fputs(
"              When  used,  this will make curl attempt to figure out the time-\n"
"              stamp of the remote file, and if that is available make the  lo-\n"
"              cal file get that same timestamp.\n"
"\n"
"       --request-target\n"
"              (HTTP)  Tells curl to use an alternative \"target\" (path) instead\n"
"              of using the path as provided in the  URL.  Particularly  useful\n"
"              when  wanting  to  issue  HTTP requests without leading slash or\n"
, stdout);
 fputs(
"              other data that doesn't follow the  regular  URL  pattern,  like\n"
"              \"OPTIONS *\".\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       -X, --request <command>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing with the HTTP server.  The specified request method will  be\n"
"              used  instead  of  the  method otherwise used (which defaults to\n"
"              GET). Read the HTTP 1.1 specification for details  and  explana-\n"
, stdout);
 fputs(
"              tions.  Common  additional HTTP requests include PUT and DELETE,\n"
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
"              Normally  you  don't  need  this option. All sorts of GET, HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
"              mand line options.\n"
"\n"
"              This  option  only  changes the actual word used in the HTTP re-\n"
, stdout);
 fputs(
"              quest, it does not alter the way curl behaves. So for example if\n"
"              you  want  to make a proper HEAD request, using -X HEAD will not\n"
"              suffice. You need to use the -I, --head option.\n"
"\n"
"              The method string you set with -X, --request will  be  used  for\n"
"              all  requests,  which  if you for example use -L, --location may\n"
"              cause unintended side-effects when curl doesn't  change  request\n"
, stdout);
 fputs(
"              method according to the HTTP 30x response codes - and similar.\n"
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR. (Added in 7.26.0)\n"
"\n"
"              (IMAP)  Specifies  a custom IMAP command to use instead of LIST.\n"
"              (Added in 7.30.0)\n"
"\n"
, stdout);
 fputs(
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --resolve <host:port:address[,address]...>\n"
"              Provide  a custom address for a specific host and port pair. Us-\n"
"              ing this, you can make the curl requests(s) use a specified  ad-\n"
"              dress  and prevent the otherwise normally resolved address to be\n"
, stdout);
 fputs(
"              used. Consider it a sort of /etc/hosts alternative  provided  on\n"
"              the  command line. The port number should be the number used for\n"
"              the specific protocol the host will be used for.  It  means  you\n"
"              need several entries if you want to provide address for the same\n"
"              host but different ports.\n"
"\n"
"              By specifying '*' as host you can tell curl to resolve any  host\n"
, stdout);
 fputs(
"              and specific port pair to the specified address. Wildcard is re-\n"
"              solved last so any --resolve with a specific host and port  will\n"
"              be used first.\n"
"\n"
"              The provided address set by this option will be used even if -4,\n"
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
, stdout);
 fputs(
"              Support  for providing multiple IP addresses per entry was added\n"
"              in 7.59.0.\n"
"\n"
"              Support for resolving with wildcard was added in 7.64.0.\n"
"\n"
"              This option can be used many times to add many host names to re-\n"
"              solve.\n"
"\n"
"              Added in 7.21.3.\n"
"\n"
"       --retry-connrefused\n"
"              In  addition to the other conditions, consider ECONNREFUSED as a\n"
"              transient error too for --retry. This option  is  used  together\n"
, stdout);
 fputs(
"              with --retry.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --retry-delay <seconds>\n"
"              Make  curl  sleep  this  amount of time before each retry when a\n"
"              transfer has failed with a transient error (it changes  the  de-\n"
"              fault  backoff  time  algorithm between retries). This option is\n"
"              only interesting if --retry is also used. Setting this delay  to\n"
"              zero will make curl use the default backoff time.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry-max-time <seconds>\n"
"              The  retry timer is reset before the first transfer attempt. Re-\n"
"              tries will be done as usual (see --retry) as long as  the  timer\n"
"              hasn't reached this given limit. Notice that if the timer hasn't\n"
"              reached the limit, the request will be made and  while  perform-\n"
, stdout);
 fputs(
"              ing,  it may take longer than this given time period. To limit a\n"
"              single request's maximum time, use -m, --max-time.  Set this op-\n"
"              tion to zero to not timeout retries.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry <num>\n"
"              If  a  transient  error is returned when curl tries to perform a\n"
, stdout);
 fputs(
"              transfer, it will retry this number of times before  giving  up.\n"
"              Setting  the  number to 0 makes curl do no retries (which is the\n"
"              default). Transient error means either: a timeout,  an  FTP  4xx\n"
"              response code or an HTTP 408 or 5xx response code.\n"
"\n"
"              When  curl  is about to retry a transfer, it will first wait one\n"
"              second and then for all forthcoming retries it will  double  the\n"
, stdout);
 fputs(
"              waiting  time until it reaches 10 minutes which then will be the\n"
"              delay between the rest of the retries.  By  using  --retry-delay\n"
"              you   disable  this  exponential  backoff  algorithm.  See  also\n"
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
"              Since curl 7.66.0, curl will comply with  the  Retry-After:  re-\n"
"              sponse  header if one was present to know when to issue the next\n"
"              retry.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --sasl-authzid\n"
"              Use this authorisation identity (authzid), during SASL PLAIN au-\n"
"              thentication,  in addition to the authentication identity (auth-\n"
"              cid) as specified by -u, --user.\n"
"\n"
"              If the option isn't specified, the server will  derive  the  au-\n"
"              thzid  from  the authcid, but if specified, and depending on the\n"
, stdout);
 fputs(
"              server implementation, it may be used to access  another  user's\n"
"              inbox,  that  the  user  has been granted access to, or a shared\n"
"              mailbox for example.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --sasl-ir\n"
"              Enable initial response in SASL authentication.\n"
"\n"
"              Added in 7.31.0.\n"
"\n"
"       --service-name <name>\n"
"              This option allows you to change the service name for SPNEGO.\n"
"\n"
, stdout);
 fputs(
"              Examples:   --negotiate   --service-name   sockd    would    use\n"
"              sockd/server-name.\n"
"\n"
"              Added in 7.43.0.\n"
"       -S, --show-error\n"
"              When used with -s, --silent, it makes curl show an error message\n"
"              if it fails.\n"
"       -s, --silent\n"
"              Silent or quiet mode. Don't show progress meter  or  error  mes-\n"
"              sages.   Makes  Curl mute. It will still output the data you ask\n"
, stdout);
 fputs(
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
"              Use  -S,  --show-error  in  addition  to  this option to disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              See also -v, --verbose and --stderr.\n"
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
"              fied, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --socks4a <host[:port]>\n"
"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
"              ified, it is assumed at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
, stdout);
 fputs(
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre-\n"
"              fix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
, stdout);
 fputs(
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5-basic\n"
"              Tells curl to use username/password authentication when connect-\n"
"              ing to a SOCKS5 proxy.  The username/password authentication  is\n"
"              enabled  by  default.   Use --socks5-gssapi to force GSS-API au-\n"
"              thentication to SOCKS5 proxies.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.55.0.\n"
"\n"
"       --socks5-gssapi-nec\n"
"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
"              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
"              but the NEC  reference  implementation  does  not.   The  option\n"
"              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
"              tection mode negotiation.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi-service <name>\n"
, stdout);
 fputs(
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi\n"
, stdout);
 fputs(
"              Tells curl to use GSS-API authentication when  connecting  to  a\n"
"              SOCKS5  proxy.  The GSS-API authentication is enabled by default\n"
"              (if curl is compiled with GSS-API support).  Use  --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
, stdout);
 fputs(
"              host name). If the port number is not specified, it  is  assumed\n"
"              at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
"              col prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5 <host[:port]>\n"
"              Use  the  specified SOCKS5 proxy - but resolve the host name lo-\n"
, stdout);
 fputs(
"              cally. If the port number is not specified,  it  is  assumed  at\n"
"              port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
"              or LDAP.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       -Y, --speed-limit <speed>\n"
, stdout);
 fputs(
"              If a download is slower than this given speed (in bytes per sec-\n"
"              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
"              with -y, --speed-time and is 30 if not set.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -y, --speed-time <seconds>\n"
"              If a download is slower than speed-limit bytes per second during\n"
"              a speed-time period, the download gets aborted. If speed-time is\n"
, stdout);
 fputs(
"              used,  the  default  speed-limit  will  be 1 unless set with -Y,\n"
"              --speed-limit.\n"
"\n"
"              This option controls transfers and thus  will  not  affect  slow\n"
"              connects  etc.  If this is a concern for you, try the --connect-\n"
"              timeout option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --ssl-allow-beast\n"
"              This option tells curl to not work around a security flaw in the\n"
, stdout);
 fputs(
"              SSL3  and TLS1.0 protocols known as BEAST.  If this option isn't\n"
"              used, the SSL layer may use workarounds known to cause  interop-\n"
"              erability problems with some older SSL implementations. WARNING:\n"
"              this option loosens the SSL security, and by using this flag you\n"
"              ask for exactly that.\n"
"\n"
"              Added in 7.25.0.\n"
"\n"
"       --ssl-no-revoke\n"







|


|
|






|
|
|









|







|


|
|




|


|
|





|





|




|
|





|




|
|



|
|
|





|












|

|





|
|
|

|



|


|

|




|
|




|
|



|



|
|



|







|






|



|









|







|









|






|

















|


|
|





|
|


|


|





|









|
|
|










|


|


|



|



|


|
|



|









|
|


|
|


|


|
|
|



|



|


|





|
|



|
|
|


|






|
|
|


|



|



|



|


|
|
|










|










|
|
|


|
|
|



|



|









|










|
|







|
|
|
|









|
|

|


|








|


|
|
|


|
|


|
|
|


|
|










|


|
|


|
|














|







|
|





|










|





|













|





|



|











|
|







|
|
|
|










|
|
|







|
|
|





|


|


|









|








|


|


|







|




|








|









|


|
|








|
|







2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
"\n"
"       --proxy-tlsv1\n"
"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
"              Specify  the user name and password to use for proxy authentica-\n"
"              tion.\n"
"\n"
"              If you use a Windows SSPI-enabled curl binary and do either  Ne-\n"
"              gotiate  or NTLM authentication then you can tell curl to select\n"
, stdout);
 fputs(
"              the user name and password from your environment by specifying a\n"
"              single colon with this option: \"-U :\".\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
"              ment from process listings. This is not enough to  protect  cre-\n"
"              dentials  from  possibly getting seen by other users on the same\n"
"              system as they will still be visible for a brief  moment  before\n"
, stdout);
 fputs(
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -x, --proxy [protocol://]host[:port]\n"
"              Use the specified proxy.\n"
"\n"
"              The proxy string can be specified with a protocol:// prefix.  No\n"
"              protocol specified or http:// will be treated as HTTP proxy. Use\n"
, stdout);
 fputs(
"              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
"              cific SOCKS version to be used.  (The protocol support was added\n"
"              in curl 7.21.7)\n"
"\n"
"              HTTPS proxy support via https:// protocol prefix  was  added  in\n"
"              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
"              Unrecognized  and  unsupported  proxy  protocols  cause an error\n"
"              since 7.52.0.  Prior versions may ignore the  protocol  and  use\n"
, stdout);
 fputs(
"              http:// instead.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
"              This option overrides existing environment  variables  that  set\n"
"              the  proxy  to use. If there's an environment variable setting a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
"              All operations that are performed over an HTTP proxy will trans-\n"
, stdout);
 fputs(
"              parently  be  converted  to HTTP. It means that certain protocol\n"
"              specific operations might not be available. This is not the case\n"
"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
"              ytunnel option.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
, stdout);
 fputs(
"              The proxy host can be specified the exact same way as the  proxy\n"
"              environment  variables,  including the protocol prefix (http://)\n"
"              and the embedded user + password.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy1.0 <host[:port]>\n"
"              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not\n"
"              specified, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              The  only  difference between this and the HTTP proxy option -x,\n"
"              --proxy, is that attempts to use CONNECT through the proxy  will\n"
"              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
"       -p, --proxytunnel\n"
"              When  an  HTTP  proxy is used -x, --proxy, this option will make\n"
"              curl tunnel through the proxy. The tunnel approach is made  with\n"
"              the  HTTP  proxy CONNECT request and requires that the proxy al-\n"
, stdout);
 fputs(
"              lows direct connect to the remote port number curl wants to tun-\n"
"              nel through to.\n"
"\n"
"              To  suppress  proxy CONNECT response headers when curl is set to\n"
"              output headers use --suppress-connect-headers.\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --pubkey <key>\n"
"              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
"              lic key in this separate file.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
"              key from the private key file, so passing this option is  gener-\n"
"              ally not required. Note that this public key extraction requires\n"
"              libcurl to be linked against a copy of libssh2 1.2.8  or  higher\n"
"              that is itself linked against OpenSSL.)\n"
"\n"
"       -Q, --quote\n"
, stdout);
 fputs(
"              (FTP  SFTP)  Send an arbitrary command to the remote FTP or SFTP\n"
"              server. Quote commands are sent BEFORE the transfer takes  place\n"
"              (just  after  the  initial PWD command in an FTP transfer, to be\n"
"              exact). To make commands take place after a successful transfer,\n"
"              prefix  them  with  a  dash '-'.  To make commands be sent after\n"
"              curl has changed the working directory, just before the transfer\n"
, stdout);
 fputs(
"              command(s),  prefix  the  command  with a '+' (this is only sup-\n"
"              ported for FTP). You may specify any number of commands.\n"
"\n"
"              If the server returns failure for one of the commands,  the  en-\n"
"              tire operation will be aborted. You must send syntactically cor-\n"
"              rect FTP commands as RFC 959 defines to FTP servers, or  one  of\n"
"              the commands listed below to SFTP servers.\n"
"\n"
, stdout);
 fputs(
"              Prefix  the  command  with an asterisk (*) to make curl continue\n"
"              even if the command fails as by default curl will stop at  first\n"
"              failure.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              SFTP  is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
"              quote commands itself before sending them to the  server.   File\n"
"              names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
 fputs(
"              acters.  Following is the list of all supported SFTP quote  com-\n"
"              mands:\n"
"\n"
"              chgrp group file\n"
"                     The  chgrp command sets the group ID of the file named by\n"
"                     the file operand to the group ID specified by  the  group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The  chmod  command  modifies  the  file mode bits of the\n"
, stdout);
 fputs(
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
"                     The chown command sets the owner of the file named by the\n"
"                     file operand to the user ID specified by the  user  oper-\n"
"                     and. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
, stdout);
 fputs(
"                     target_file location pointing to  the  source_file  loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
"                     The  mkdir command creates the directory named by the di-\n"
"                     rectory_name operand.\n"
"\n"
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
, stdout);
 fputs(
"                     The rename command renames the file or directory named by\n"
"                     the source operand to the destination path named  by  the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
"                     The rm command removes the file specified by the file op-\n"
"                     erand.\n"
"\n"
"              rmdir directory\n"
"                     The rmdir command removes the directory  entry  specified\n"
, stdout);
 fputs(
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
"       --random-file <file>\n"
"              Specify the path name to file containing what will be considered\n"
"              as random data. The data may be used to seed the  random  engine\n"
"              for SSL connections.  See also the --egd-file option.\n"
"\n"
"       -r, --range <range>\n"
, stdout);
 fputs(
"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
"              ment) from an HTTP/1.1, FTP or SFTP  server  or  a  local  FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
"              500-999   specifies the second 500 bytes\n"
"\n"
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
"\n"
, stdout);
 fputs(
"              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
"\n"
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
"              (*)  = NOTE that this will cause the server to reply with a mul-\n"
"              tipart response!\n"
"\n"
"              Only digit characters (0-9) are valid in the 'start' and  'stop'\n"
"              fields  of the 'start-stop' range syntax. If a non-digit charac-\n"
, stdout);
 fputs(
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
"              You  should also be aware that many HTTP/1.1 servers do not have\n"
"              this feature enabled, so that when you attempt to get  a  range,\n"
"              you'll instead get the whole document.\n"
"\n"
"              FTP  and  SFTP  range  downloads only support the simple 'start-\n"
, stdout);
 fputs(
"              stop' syntax (optionally with one of the numbers  omitted).  FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
"              tent or transfer encodings and instead makes them passed on  un-\n"
"              altered, raw.\n"
"\n"
"              Added in 7.16.2.\n"
"\n"
"       -e, --referer <URL>\n"
, stdout);
 fputs(
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
"              This can also be set with the -H, --header flag of course.  When\n"
"              used  with  -L,  --location  you  can  append \";auto\" to the -e,\n"
"              --referer URL to make curl automatically set  the  previous  URL\n"
"              when  it  follows  a Location: header. The \";auto\" string can be\n"
"              used alone, even if you don't set an initial -e, --referer.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified  Content-Disposition  filename  instead  of ex-\n"
"              tracting a filename from the URL.\n"
"\n"
"              If the server specifies a file name and a file  with  that  name\n"
, stdout);
 fputs(
"              already  exists  in the current working directory it will not be\n"
"              overwritten and an error will occur. If the server doesn't spec-\n"
"              ify a file name then this option has no effect.\n"
"\n"
"              There's  no  attempt to decode %-sequences (yet) in the provided\n"
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              WARNING:  Exercise  judicious  use of this option, especially on\n"
, stdout);
 fputs(
"              Windows. A rogue server could send you the  name  of  a  DLL  or\n"
"              other  file  that could possibly be loaded automatically by Win-\n"
"              dows or some third party software.\n"
"\n"
"       --remote-name-all\n"
"              This option changes the default action for all given URLs to  be\n"
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
, stdout);
 fputs(
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
"              Added in 7.19.0.\n"
"\n"
"       -O, --remote-name\n"
"              Write  output to a local file named like the remote file we get.\n"
"              (Only the file part of the remote file is used, the path is  cut\n"
"              off.)\n"
"\n"
"              The  file will be saved in the current working directory. If you\n"
"              want the file saved in a  different  directory,  make  sure  you\n"
, stdout);
 fputs(
"              change  the  current working directory before invoking curl with\n"
"              this option.\n"
"\n"
"              The remote file name to use for saving  is  extracted  from  the\n"
"              given  URL,  nothing  else,  and if it already exists it will be\n"
"              overwritten. If you want the server to be  able  to  choose  the\n"
"              file name refer to -J, --remote-header-name which can be used in\n"
, stdout);
 fputs(
"              addition to this option. If the server chooses a file  name  and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
"              other URL encoded parts of the name, they will end up  as-is  as\n"
"              file name.\n"
"\n"
"              You  may use this option as many times as the number of URLs you\n"
"              have.\n"
"\n"
"       -R, --remote-time\n"
, stdout);
 fputs(
"              When used, this will make curl attempt to figure out  the  time-\n"
"              stamp  of the remote file, and if that is available make the lo-\n"
"              cal file get that same timestamp.\n"
"\n"
"       --request-target\n"
"              (HTTP) Tells curl to use an alternative \"target\" (path)  instead\n"
"              of  using  the  path as provided in the URL. Particularly useful\n"
"              when wanting to issue HTTP requests  without  leading  slash  or\n"
, stdout);
 fputs(
"              other  data  that  doesn't  follow the regular URL pattern, like\n"
"              \"OPTIONS *\".\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       -X, --request <command>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing  with the HTTP server.  The specified request method will be\n"
"              used instead of the method otherwise  used  (which  defaults  to\n"
"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
, stdout);
 fputs(
"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
"              Normally you don't need this option. All  sorts  of  GET,  HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
"              mand line options.\n"
"\n"
"              This option only changes the actual word used in  the  HTTP  re-\n"
, stdout);
 fputs(
"              quest, it does not alter the way curl behaves. So for example if\n"
"              you want to make a proper HEAD request, using -X HEAD  will  not\n"
"              suffice. You need to use the -I, --head option.\n"
"\n"
"              The  method  string  you set with -X, --request will be used for\n"
"              all requests, which if you for example use  -L,  --location  may\n"
"              cause  unintended  side-effects when curl doesn't change request\n"
, stdout);
 fputs(
"              method according to the HTTP 30x response codes - and similar.\n"
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR. (Added in 7.26.0)\n"
"\n"
"              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
"              (Added in 7.30.0)\n"
"\n"
, stdout);
 fputs(
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --resolve <host:port:address[,address]...>\n"
"              Provide a custom address for a specific host and port pair.  Us-\n"
"              ing  this, you can make the curl requests(s) use a specified ad-\n"
"              dress and prevent the otherwise normally resolved address to  be\n"
, stdout);
 fputs(
"              used.  Consider  it a sort of /etc/hosts alternative provided on\n"
"              the command line. The port number should be the number used  for\n"
"              the  specific  protocol  the host will be used for. It means you\n"
"              need several entries if you want to provide address for the same\n"
"              host but different ports.\n"
"\n"
"              By  specifying '*' as host you can tell curl to resolve any host\n"
, stdout);
 fputs(
"              and specific port pair to the specified address. Wildcard is re-\n"
"              solved  last so any --resolve with a specific host and port will\n"
"              be used first.\n"
"\n"
"              The provided address set by this option will be used even if -4,\n"
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
, stdout);
 fputs(
"              Support for providing multiple IP addresses per entry was  added\n"
"              in 7.59.0.\n"
"\n"
"              Support for resolving with wildcard was added in 7.64.0.\n"
"\n"
"              This option can be used many times to add many host names to re-\n"
"              solve.\n"
"\n"
"              Added in 7.21.3.\n"
"\n"
"       --retry-connrefused\n"
"              In addition to the other conditions, consider ECONNREFUSED as  a\n"
"              transient  error  too  for --retry. This option is used together\n"
, stdout);
 fputs(
"              with --retry.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --retry-delay <seconds>\n"
"              Make curl sleep this amount of time before  each  retry  when  a\n"
"              transfer  has  failed with a transient error (it changes the de-\n"
"              fault backoff time algorithm between retries).  This  option  is\n"
"              only  interesting if --retry is also used. Setting this delay to\n"
"              zero will make curl use the default backoff time.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry-max-time <seconds>\n"
"              The retry timer is reset before the first transfer attempt.  Re-\n"
"              tries  will  be done as usual (see --retry) as long as the timer\n"
"              hasn't reached this given limit. Notice that if the timer hasn't\n"
"              reached  the  limit, the request will be made and while perform-\n"
, stdout);
 fputs(
"              ing, it may take longer than this given time period. To limit  a\n"
"              single request's maximum time, use -m, --max-time.  Set this op-\n"
"              tion to zero to not timeout retries.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry <num>\n"
"              If a transient error is returned when curl tries  to  perform  a\n"
, stdout);
 fputs(
"              transfer,  it  will retry this number of times before giving up.\n"
"              Setting the number to 0 makes curl do no retries (which  is  the\n"
"              default).  Transient  error  means either: a timeout, an FTP 4xx\n"
"              response code or an HTTP 408 or 5xx response code.\n"
"\n"
"              When curl is about to retry a transfer, it will first  wait  one\n"
"              second  and  then for all forthcoming retries it will double the\n"
, stdout);
 fputs(
"              waiting time until it reaches 10 minutes which then will be  the\n"
"              delay  between  the rest of the retries.  By using --retry-delay\n"
"              you  disable  this  exponential  backoff  algorithm.  See   also\n"
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
"              Since  curl  7.66.0,  curl will comply with the Retry-After: re-\n"
"              sponse header if one was present to know when to issue the  next\n"
"              retry.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --sasl-authzid\n"
"              Use this authorisation identity (authzid), during SASL PLAIN au-\n"
"              thentication, in addition to the authentication identity  (auth-\n"
"              cid) as specified by -u, --user.\n"
"\n"
"              If  the  option  isn't specified, the server will derive the au-\n"
"              thzid from the authcid, but if specified, and depending  on  the\n"
, stdout);
 fputs(
"              server  implementation,  it may be used to access another user's\n"
"              inbox, that the user has been granted access  to,  or  a  shared\n"
"              mailbox for example.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --sasl-ir\n"
"              Enable initial response in SASL authentication.\n"
"\n"
"              Added in 7.31.0.\n"
"\n"
"       --service-name <name>\n"
"              This option allows you to change the service name for SPNEGO.\n"
"\n"
, stdout);
 fputs(
"              Examples:    --negotiate    --service-name   sockd   would   use\n"
"              sockd/server-name.\n"
"\n"
"              Added in 7.43.0.\n"
"       -S, --show-error\n"
"              When used with -s, --silent, it makes curl show an error message\n"
"              if it fails.\n"
"       -s, --silent\n"
"              Silent  or  quiet  mode. Don't show progress meter or error mes-\n"
"              sages.  Makes Curl mute. It will still output the data  you  ask\n"
, stdout);
 fputs(
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
"              Use -S, --show-error in  addition  to  this  option  to  disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              See also -v, --verbose and --stderr.\n"
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
"              fied, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --socks4a <host[:port]>\n"
"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
"              ified, it is assumed at port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
, stdout);
 fputs(
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
"              fix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
, stdout);
 fputs(
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5-basic\n"
"              Tells curl to use username/password authentication when connect-\n"
"              ing  to a SOCKS5 proxy.  The username/password authentication is\n"
"              enabled by default.  Use --socks5-gssapi to  force  GSS-API  au-\n"
"              thentication to SOCKS5 proxies.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.55.0.\n"
"\n"
"       --socks5-gssapi-nec\n"
"              As  part of the GSS-API negotiation a protection mode is negoti-\n"
"              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,\n"
"              but  the  NEC  reference  implementation  does  not.  The option\n"
"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
"              tection mode negotiation.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi-service <name>\n"
, stdout);
 fputs(
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
"              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi\n"
, stdout);
 fputs(
"              Tells  curl  to  use GSS-API authentication when connecting to a\n"
"              SOCKS5 proxy.  The GSS-API authentication is enabled by  default\n"
"              (if  curl is compiled with GSS-API support).  Use --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
"              Use the specified SOCKS5 proxy (and let the  proxy  resolve  the\n"
, stdout);
 fputs(
"              host  name).  If the port number is not specified, it is assumed\n"
"              at port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
"              col prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5 <host[:port]>\n"
"              Use the specified SOCKS5 proxy - but resolve the host  name  lo-\n"
, stdout);
 fputs(
"              cally.  If  the  port  number is not specified, it is assumed at\n"
"              port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              This  option (as well as --socks4) does not work with IPV6, FTPS\n"
"              or LDAP.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       -Y, --speed-limit <speed>\n"
, stdout);
 fputs(
"              If a download is slower than this given speed (in bytes per sec-\n"
"              ond)  for  speed-time seconds it gets aborted. speed-time is set\n"
"              with -y, --speed-time and is 30 if not set.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -y, --speed-time <seconds>\n"
"              If a download is slower than speed-limit bytes per second during\n"
"              a speed-time period, the download gets aborted. If speed-time is\n"
, stdout);
 fputs(
"              used, the default speed-limit will be  1  unless  set  with  -Y,\n"
"              --speed-limit.\n"
"\n"
"              This  option  controls  transfers  and thus will not affect slow\n"
"              connects etc. If this is a concern for you, try  the  --connect-\n"
"              timeout option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --ssl-allow-beast\n"
"              This option tells curl to not work around a security flaw in the\n"
, stdout);
 fputs(
"              SSL3 and TLS1.0 protocols known as BEAST.  If this option  isn't\n"
"              used,  the SSL layer may use workarounds known to cause interop-\n"
"              erability problems with some older SSL implementations. WARNING:\n"
"              this option loosens the SSL security, and by using this flag you\n"
"              ask for exactly that.\n"
"\n"
"              Added in 7.25.0.\n"
"\n"
"       --ssl-no-revoke\n"
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       --ssl  (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection.  Re-\n"
"              verts  to  a non-secure connection if the server doesn't support\n"
"              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
"              ent levels of encryption required.\n"
"\n"
"              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
"              That option name can still be used but will be removed in a  fu-\n"
"              ture version.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.20.0.\n"
"\n"
"       -2, --sslv2\n"
"              (SSL)  Forces  curl to use SSL version 2 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv2  sup-\n"
"              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(
"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
"              (SSL)  Forces  curl to use SSL version 3 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv3  sup-\n"
"              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
"              See  also  --http1.1  and --http2. -3, --sslv3 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(
"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       --stderr\n"
"              Redirect  all writes to stderr to the specified file instead. If\n"
"              the file name is a plain '-', it is instead written to stdout.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -v, --verbose and -s, --silent.\n"
"\n"
"       --styled-output\n"
"              Enables the automatic use of bold font styles when writing  HTTP\n"
, stdout);
 fputs(
"              headers  to  the terminal. Use --no-styled-output to switch them\n"
"              off.\n"
"\n"
"              Added in 7.61.0.\n"
"\n"
"       --suppress-connect-headers\n"
"              When -p, --proxytunnel is used and a  CONNECT  request  is  made\n"
"              don't  output  proxy  CONNECT  response  headers. This option is\n"
"              meant to be used with -D, --dump-header or -i,  --include  which\n"
"              are  used  to show protocol headers in the output. It has no ef-\n"
, stdout);
 fputs(
"              fect on debug options such as -v, --verbose or --trace,  or  any\n"
"              statistics.\n"
"\n"
"              See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
"              nel.\n"
"\n"
"       --tcp-fastopen\n"
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
"              Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
"              page for details about this option.\n"
"\n"
, stdout);
 fputs(
"              Since  7.50.2,  curl sets this option by default and you need to\n"
"              explicitly switch it off if you don't want it on.\n"
"\n"
"              Added in 7.11.2.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"







|
|


|
|







|
|


|
|





|
|


|
|





|







|


|





|
|
|
|


|











|




|







3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       --ssl  (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection.  Re-\n"
"              verts to a non-secure connection if the server  doesn't  support\n"
"              SSL/TLS.   See also --ftp-ssl-control and --ssl-reqd for differ-\n"
"              ent levels of encryption required.\n"
"\n"
"              This option was formerly known as --ftp-ssl (Added  in  7.11.0).\n"
"              That  option name can still be used but will be removed in a fu-\n"
"              ture version.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.20.0.\n"
"\n"
"       -2, --sslv2\n"
"              (SSL) Forces curl to use SSL version 2 when negotiating  with  a\n"
"              remote  SSL  server.  Sometimes curl is built without SSLv2 sup-\n"
"              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
"              See also --http1.1 and --http2. -2, --sslv2  requires  that  the\n"
"              underlying  libcurl  was built to support TLS. This option over-\n"
, stdout);
 fputs(
"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
"              (SSL) Forces curl to use SSL version 3 when negotiating  with  a\n"
"              remote  SSL  server.  Sometimes curl is built without SSLv3 sup-\n"
"              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
"              See also --http1.1 and --http2. -3, --sslv3  requires  that  the\n"
"              underlying  libcurl  was built to support TLS. This option over-\n"
, stdout);
 fputs(
"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       --stderr\n"
"              Redirect all writes to stderr to the specified file instead.  If\n"
"              the file name is a plain '-', it is instead written to stdout.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -v, --verbose and -s, --silent.\n"
"\n"
"       --styled-output\n"
"              Enables  the automatic use of bold font styles when writing HTTP\n"
, stdout);
 fputs(
"              headers to the terminal. Use --no-styled-output to  switch  them\n"
"              off.\n"
"\n"
"              Added in 7.61.0.\n"
"\n"
"       --suppress-connect-headers\n"
"              When  -p,  --proxytunnel  is  used and a CONNECT request is made\n"
"              don't output proxy CONNECT  response  headers.  This  option  is\n"
"              meant  to  be used with -D, --dump-header or -i, --include which\n"
"              are used to show protocol headers in the output. It has  no  ef-\n"
, stdout);
 fputs(
"              fect  on  debug options such as -v, --verbose or --trace, or any\n"
"              statistics.\n"
"\n"
"              See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
"              nel.\n"
"\n"
"       --tcp-fastopen\n"
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
"              Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
"              Turn  on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
"              page for details about this option.\n"
"\n"
, stdout);
 fputs(
"              Since 7.50.2, curl sets this option by default and you  need  to\n"
"              explicitly switch it off if you don't want it on.\n"
"\n"
"              Added in 7.11.2.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520


3521
3522
3523
3524
3525
3526

3527
3528


3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539

3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552

3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565

3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578

3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591

3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605

3606
3607
3608
3609
3610
3611
3612
3613


3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631


3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
"              Added in 7.20.0.\n"
"\n"
"       --tftp-no-options\n"
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
, stdout);
 fputs(
"              This option improves interop with some legacy  servers  that  do\n"
"              not  acknowledge  or  properly implement TFTP options. When this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
"              Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
"              (HTTP FTP) Request a file that has been modified later than  the\n"
"              given  time  and date, or one that has been modified before that\n"
, stdout);
 fputs(
"              time. The <date expression> can be all sorts of date strings  or\n"
"              if it doesn't match any internal ones, it is taken as a filename\n"
"              and tries to get the modification date (mtime) from  <file>  in-\n"
"              stead. See the curl_getdate(3) man pages for date expression de-\n"
"              tails.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
"              a  document that is older than the given date/time, default is a\n"
, stdout);
 fputs(
"              document that is newer than the specified date/time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tls-max <VERSION>\n"
"              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
"              acceptable  version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2 or\n"
"              tlsv1.3.\n"
"\n"
"              default\n"
"                     Use up to recommended TLS version.\n"
"\n"
"              1.0    Use up to TLSv1.0.\n"
, stdout);
 fputs(
"              1.1    Use up to TLSv1.1.\n"
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
"       See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2 and --tlsv1.3. --tls-max\n"
"       requires that the underlying libcurl was built to support TLS. Added in\n"
"       7.54.0.\n"
"\n"
"       --tls13-ciphers <list of TLS 1.3 ciphersuites>\n"
"              (TLS) Specifies which cipher suites to use in the connection  if\n"
, stdout);
 fputs(
"              it  negotiates  TLS 1.3. The list of ciphers suites must specify\n"
"              valid ciphers. Read up on TLS 1.3 cipher suite details  on  this\n"
"              URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This  option  is  currently  used only when curl is built to use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
"              option.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tlsauthtype <type>\n"
"              Set TLS authentication type. Currently, the only  supported  op-\n"
"              tion  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
"              option  defaults to \"SRP\".  This option works only if the under-\n"
, stdout);
 fputs(
"              lying libcurl is built  with  TLS-SRP  support,  which  requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlspassword\n"
"              Set  password  for use with the TLS authentication method speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"


"\n"
"              Added in 7.21.4.\n"
"       --tlsuser <name>\n"
"              Set username for use with the TLS authentication  method  speci-\n"
, stdout);
 fputs(

"              fied  with  --tlsauthtype.  Requires  that --tlspassword also is\n"
"              set.\n"


"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlsv1.0\n"
"              (TLS) Forces curl to use TLS version 1.0 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.0, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(

"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
"              (TLS) Forces curl to use TLS version 1.1 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.1, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(

"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
"              (TLS) Forces curl to use TLS version 1.2 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.2, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(

"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
"              (TLS) Forces curl to use TLS version 1.3 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
, stdout);
 fputs(

"              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
"              (SSL)  Tells curl to use at least TLS version 1.x when negotiat-\n"
"              ing with a remote TLS server. That  means  TLS  version  1.0  or\n"
"              higher\n"
"\n"
"              See  also  --http1.1  and --http2. -1, --tlsv1 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(

"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
"              of the algorithms curl supports, and uncompress the  data  while\n"
"              receiving it.\n"
"\n"
"              Added in 7.21.6.\n"
"\n"
"       --trace-ascii <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding descriptive information, to the given output  file.  Use\n"
, stdout);
 fputs(

"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is very similar to --trace, but leaves out the hex part and\n"
"              only shows the ASCII part of the dump. It makes  smaller  output\n"
"              that might be easier to read for untrained humans.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"


"              This option overrides --trace and -v, --verbose.\n"
"\n"
"       --trace-time\n"
, stdout);
 fputs(
"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
"              displays.\n"
"\n"
"              Added in 7.14.0.\n"
"\n"
"       --trace <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding  descriptive  information, to the given output file. Use\n"
"              \"-\" as filename to have the output sent to stdout.  Use  \"%\"  as\n"
"              filename to have the output sent to stderr.\n"
"\n"
, stdout);
 fputs(


"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
"              Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
"              This transfers the specified local file to the  remote  URL.  If\n"
, stdout);
 fputs(
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
"              directory  to really prove to Curl that there is no file name or\n"
"              curl will think that your last directory name is the remote file\n"
"              name to use. That will most likely cause the upload operation to\n"
"              fail. If this is used on an HTTP(S) server, the PUT command will\n"
"              be used.\n"
"\n"
, stdout);
 fputs(
"              Use  the file name \"-\" (a single dash) to use stdin instead of a\n"
"              given file.  Alternately, the file name \".\"  (a  single  period)\n"
"              may  be  specified  instead  of \"-\" to use stdin in non-blocking\n"
"              mode to allow reading server output while  stdin  is  being  up-\n"
"              loaded.\n"
"\n"
"              You  can  specify one -T, --upload-file for each URL on the com-\n"
"              mand line. Each -T, --upload-file + URL pair specifies  what  to\n"
, stdout);
 fputs(
"              upload  and  to  where. curl also supports \"globbing\" of the -T,\n"
"              --upload-file argument, meaning that  you  can  upload  multiple\n"
"              files  to a single URL by using the same URL globbing style sup-\n"
"              ported in the URL, like this:\n"
"\n"
"               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
"              or even\n"
"\n"
"               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
, stdout);
 fputs(
"              When uploading to an SMTP server: the uploaded data  is  assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
"              headers and mail body formatted correctly by the  user  as  curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"       --url <url>\n"
"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
"              want to specify URL(s) in a config file.\n"
"\n"
, stdout);
 fputs(
"              If the given URL is missing a scheme name (such as \"http://\"  or\n"
"              \"ftp://\"  etc) then curl will make a guess based on the host. If\n"
"              the outermost sub-domain name matches  DICT,  FTP,  IMAP,  LDAP,\n"
"              POP3  or  SMTP  then  that protocol will be used, otherwise HTTP\n"
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
, stdout);
 fputs(
"              This  option  may  be used any number of times. To control where\n"
"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
"              name options.\n"
"\n"
"       -B, --use-ascii\n"
"              (FTP  LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
"              forced by using a URL that  ends  with  \";type=A\".  This  option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
"       -A, --user-agent <name>\n"
, stdout);
 fputs(
"              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
"              To encode blanks in the string, surround the string with  single\n"
"              quote  marks.  This header can also be set with the -H, --header\n"
"              or the --proxy-header options.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -u, --user <user:password>\n"
"              Specify the user name and password to use for server authentica-\n"
, stdout);
 fputs(
"              tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
"              If  you  simply  specify  the  user name, curl will prompt for a\n"
"              password.\n"
"\n"
"              The user name and passwords are split up  on  the  first  colon,\n"
"              which  makes  it impossible to use a colon in the user name with\n"
"              this option. The password can, still.\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
, stdout);
 fputs(
"              ment  from  process listings. This is not enough to protect cre-\n"
"              dentials from possibly getting seen by other users on  the  same\n"
"              system  as  they will still be visible for a brief moment before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              When  using  Kerberos  V5 with a Windows based server you should\n"
, stdout);
 fputs(
"              include the Windows domain name in the user name, in  order  for\n"
"              the  server  to  successfully  obtain  a Kerberos Ticket. If you\n"
"              don't then the initial authentication handshake may fail.\n"
"\n"
"              When using NTLM, the user name can be specified  simply  as  the\n"
"              user  name,  without the domain, if there is a single domain and\n"
"              forest in your setup for example.\n"
"\n"
, stdout);
 fputs(
"              To specify the domain name use either Down-Level Logon  Name  or\n"
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
"              user@example.com respectively.\n"
"\n"
"              If you use a Windows SSPI-enabled curl binary and  perform  Ker-\n"
"              beros  V5, Negotiate, NTLM or Digest authentication then you can\n"
"              tell curl to select the user name and password from  your  envi-\n"
, stdout);
 fputs(
"              ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -v, --verbose\n"
"              Makes  curl  verbose  during the operation. Useful for debugging\n"
"              and seeing what's going on \"under the  hood\".  A  line  starting\n"
"              with  '>'  means  \"header  data\" sent by curl, '<' means \"header\n"
"              data\" received by curl that is hidden in  normal  cases,  and  a\n"
, stdout);
 fputs(
"              line starting with '*' means additional info provided by curl.\n"
"\n"
"              If you only want HTTP headers in the output, -i, --include might\n"
"              be the option you're looking for.\n"
"\n"
"              If you think this option still doesn't give you enough  details,\n"
"              consider using --trace or --trace-ascii instead.\n"
"\n"
"              Use -s, --silent to make curl really quiet.\n"
"\n"
"              See  also  -i,  --include.  This  option  overrides  --trace and\n"
, stdout);
 fputs(
"              --trace-ascii.\n"
"\n"
"       -V, --version\n"
"              Displays information about curl and the libcurl version it uses.\n"
"              The first line includes the full version of  curl,  libcurl  and\n"
"              other 3rd party libraries linked with the executable.\n"
"\n"
"              The  second  line (starts with \"Protocols:\") shows all protocols\n"
"              that libcurl reports to support.\n"
"\n"
"              The third line (starts with \"Features:\") shows specific features\n"
, stdout);
 fputs(
"              libcurl reports to offer. Available features include:\n"
"\n"
"              IPv6   You can use IPv6 with this.\n"
"\n"
"              krb4   Krb4 for FTP is supported.\n"
"\n"
"              SSL    SSL  versions of various protocols are supported, such as\n"
"                     HTTPS, FTPS, POP3S and so on.\n"
"\n"
"              libz   Automatic decompression of compressed files over HTTP  is\n"
"                     supported.\n"
"\n"
"              NTLM   NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
"                     more error-tracking and memory debugging etc.  For  curl-\n"
"                     developers only!\n"
"\n"
"              AsynchDNS\n"
"                     This  curl  uses asynchronous name resolves. Asynchronous\n"
"                     name resolves can be done using either the c-ares or  the\n"
"                     threaded resolver backends.\n"
"\n"
"              SPNEGO SPNEGO authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Largefile\n"
"                     This curl supports transfers of large files, files larger\n"
"                     than 2GB.\n"
"\n"
"              IDN    This curl supports IDN - international domain names.\n"
"\n"
"              GSS-API\n"
"                     GSS-API is supported.\n"
"\n"
"              SSPI   SSPI is supported.\n"
"\n"
"              TLS-SRP\n"
"                     SRP (Secure Remote Password) authentication is  supported\n"
"                     for TLS.\n"
"\n"
, stdout);
 fputs(
"              HTTP2  HTTP/2 support has been built-in.\n"
"\n"
"              UnixSockets\n"
"                     Unix sockets support is provided.\n"
"\n"
"              HTTPS-proxy\n"
"                     This curl is built to support HTTPS proxy.\n"
"\n"
"              Metalink\n"
"                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
"                     5854)), which describes mirrors and  hashes.   curl  will\n"
"                     use mirrors for failover if there are errors (such as the\n"
, stdout);
 fputs(
"                     file or server not being available).\n"
"\n"
"              PSL    PSL is short for Public Suffix List and means  that  this\n"
"                     curl  has  been  built  with knowledge about \"public suf-\n"
"                     fixes\".\n"
"\n"
"              MultiSSL\n"
"                     This curl supports multiple TLS backends.\n"
"\n"
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
, stdout);
 fputs(
"              fer.  The  format  is a string that may contain plain text mixed\n"
"              with any number of variables. The format can be specified  as  a\n"
"              literal  \"string\",  or  you can have curl read the format from a\n"
"              file with \"@filename\" and to tell curl to read the  format  from\n"
"              stdin you write \"@-\".\n"
"\n"
"              The  variables  present in the output format will be substituted\n"
, stdout);
 fputs(
"              by the value or text that curl thinks fit, as  described  below.\n"
"              All  variables are specified as %{variable_name} and to output a\n"
"              normal % you just write them as %%. You can output a newline  by\n"
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
"              The  output  will be written to standard output, but this can be\n"
"              switched to standard error by using %{stderr}.\n"
"\n"
, stdout);
 fputs(
"              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
"              where  all  occurrences of % must be doubled when using this op-\n"
"              tion.\n"
"\n"
"              The variables available are:\n"
"\n"
"              content_type   The Content-Type of the  requested  document,  if\n"
"                             there was any.\n"
"\n"
"              filename_effective\n"
"                             The  ultimate  filename  that curl writes out to.\n"
, stdout);
 fputs(
"                             This is only meaningful if curl is told to  write\n"
"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
"                             --output option. It's most useful in  combination\n"
"                             with  the -J, --remote-header-name option. (Added\n"
"                             in 7.26.0)\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
, stdout);
 fputs(
"                             to the remote FTP server. (Added in 7.15.4)\n"
"\n"
"              http_code      The numerical response code that was found in the\n"
"                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In\n"
"                             7.18.2  the alias response_code was added to show\n"
"                             the same info.\n"
"\n"
"              http_connect   The numerical code that was found in the last re-\n"
, stdout);
 fputs(
"                             sponse  (from a proxy) to a curl CONNECT request.\n"
"                             (Added in 7.12.4)\n"
"\n"
"              http_version   The  http  version  that  was  effectively  used.\n"
"                             (Added in 7.50.0)\n"
"\n"
"              local_ip       The  IP  address of the local end of the most re-\n"
"                             cently done connection - can be  either  IPv4  or\n"
"                             IPv6 (Added in 7.29.0)\n"
"\n"
, stdout);
 fputs(
"              local_port     The  local  port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              num_connects   Number of new connects made in the recent  trans-\n"
"                             fer. (Added in 7.12.3)\n"
"\n"
"              num_redirects  Number of redirects that were followed in the re-\n"
"                             quest. (Added in 7.12.3)\n"
"\n"
"              proxy_ssl_verify_result\n"
, stdout);
 fputs(
"                             The result of the HTTPS proxy's SSL peer certifi-\n"
"                             cate verification that was requested. 0 means the\n"
"                             verification was successful. (Added in 7.52.0)\n"
"\n"
"              redirect_url   When an HTTP request was made without -L, --loca-\n"
"                             tion  to follow redirects (or when --max-redir is\n"
"                             met), this variable will show the  actual  URL  a\n"
, stdout);
 fputs(
"                             redirect would have gone to. (Added in 7.18.2)\n"
"\n"
"              remote_ip      The  remote  IP address of the most recently done\n"
"                             connection - can be either IPv4 or IPv6 (Added in\n"
"                             7.29.0)\n"
"\n"
"              remote_port    The  remote port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              scheme         The URL scheme (sometimes called  protocol)  that\n"
, stdout);
 fputs(
"                             was effectively used (Added in 7.52.0)\n"
"\n"
"              size_download  The total amount of bytes that were downloaded.\n"
"\n"
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
"              size_request   The total amount of bytes that were sent  in  the\n"
"                             HTTP request.\n"
"\n"
"              size_upload    The total amount of bytes that were uploaded.\n"
"\n"
, stdout);
 fputs(
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
"              speed_upload   The average upload speed that curl  measured  for\n"
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
"                             The  result of the SSL peer certificate verifica-\n"
"                             tion that was requested. 0 means the verification\n"
, stdout);
 fputs(
"                             was successful. (Added in 7.19.0)\n"
"\n"
"              stderr         From  this  point  on, the -w, --write-out output\n"
"                             will be written  to  standard  error.  (Added  in\n"
"                             7.63.0)\n"
"\n"
"              stdout         From  this  point  on, the -w, --write-out output\n"
"                             will be written to standard output.  This is  the\n"
"                             default,  but  can  be  used to switch back after\n"
, stdout);
 fputs(
"                             switching to stderr.  (Added in 7.63.0)\n"
"\n"
"              time_appconnect\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the SSL/SSH/etc connect/handshake to the re-\n"
"                             mote host was completed. (Added in 7.19.0)\n"
"\n"
"              time_connect   The time, in seconds, it took from the start  un-\n"
"                             til the TCP connect to the remote host (or proxy)\n"
, stdout);
 fputs(
"                             was completed.\n"
"\n"
"              time_namelookup\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the file transfer was just  about  to  begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
, stdout);
 fputs(
"                             tiations that are specific to the particular pro-\n"
"                             tocol(s) involved.\n"
"\n"
"              time_redirect  The time, in seconds, it took for all redirection\n"
"                             steps including name lookup, connect, pretransfer\n"
"                             and  transfer  before  the  final transaction was\n"
"                             started. time_redirect shows the complete  execu-\n"
, stdout);
 fputs(
"                             tion  time  for  multiple redirections. (Added in\n"
"                             7.12.3)\n"
"\n"
"              time_starttransfer\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the  first  byte was just about to be trans-\n"
"                             ferred. This includes time_pretransfer  and  also\n"
"                             the  time  the server needed to calculate the re-\n"
, stdout);
 fputs(
"                             sult.\n"
"\n"
"              time_total     The total time, in seconds, that the full  opera-\n"
"                             tion lasted.\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
"                             ingful if you've told curl  to  follow  location:\n"
"                             headers.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --xattr\n"
, stdout);
 fputs(
"              When  saving  output  to a file, this option tells curl to store\n"
"              certain file metadata in extended  file  attributes.  Currently,\n"
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the content type is stored in the mime_type  attribute.  If  the\n"
"              file  system  does not support extended attributes, a warning is\n"
"              issued.\n"
"\n"
"FILES\n"
"       ~/.curlrc\n"
, stdout);
 fputs(
"              Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
"       The environment variables can be specified in lower case or upper case.\n"
"       The lower case version has precedence. http_proxy is an exception as it\n"
"       is only available in lower case.\n"
"\n"
"       Using an environment variable to set the proxy has the same  effect  as\n"
"       using the -x, --proxy option.\n"
"\n"
"       http_proxy [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTP.\n"
, stdout);
 fputs(
"       HTTPS_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTPS.\n"
"\n"
"       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
"              tocol is a protocol that curl supports and  as  specified  in  a\n"
"              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
"       ALL_PROXY [protocol://]<host>[:port]\n"
"              Sets  the  proxy  server to use if no protocol-specific proxy is\n"
, stdout);
 fputs(
"              set.\n"
"\n"
"       NO_PROXY <comma-separated list of hosts/domains>\n"
"              list of host names that shouldn't go through any proxy.  If  set\n"
"              to an asterisk '*' only, it matches all hosts. Each name in this\n"
"              list is matched as either a domain name which contains the host-\n"
"              name, or the hostname itself.\n"
"\n"
"              This  environment  variable  disables use of the proxy even when\n"
, stdout);
 fputs(
"              specified with the -x,  --proxy  option.  That  is  NO_PROXY=di-\n"
"              rect.example.com  curl  -x  http://proxy.example.com  http://di-\n"
"              rect.example.com  accesses  the   target   URL   directly,   and\n"
"              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com\n"
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
"              The  list  of  host  names  can also be include numerical IP ad-\n"
, stdout);
 fputs(
"              dresses, and IPv6 versions should then be given without  enclos-\n"
"              ing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
"       Since  curl  version  7.21.7,  the proxy string may be specified with a\n"
"       protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
"       If no protocol is specified in  the  proxy  string  or  if  the  string\n"
"       doesn't  match  a  supported  one, the proxy will be treated as an HTTP\n"
"       proxy.\n"
"\n"
, stdout);
 fputs(
"       The supported proxy protocol prefixes are as follows:\n"
"\n"
"       http://\n"
"              Makes it use it as an HTTP proxy. The default if no scheme  pre-\n"
"              fix is used.\n"
"\n"
"       https://\n"
"              Makes it treated as an HTTPS proxy.\n"
"\n"
"       socks4://\n"
"              Makes it the equivalent of --socks4\n"
"\n"
"       socks4a://\n"
"              Makes it the equivalent of --socks4a\n"
"\n"
"       socks5://\n"
"              Makes it the equivalent of --socks5\n"
"\n"
"       socks5h://\n"
, stdout);
 fputs(
"              Makes it the equivalent of --socks5-hostname\n"
"\n"
"EXIT CODES\n"
"       There  are a bunch of different error codes and their corresponding er-\n"
"       ror messages that may appear during bad conditions. At the time of this\n"
"       writing, the exit codes are:\n"
"\n"
"       1      Unsupported protocol. This build of curl has no support for this\n"
"              protocol.\n"
"\n"
"       2      Failed to initialize.\n"
"\n"
"       3      URL malformed. The syntax was not correct.\n"
"\n"
, stdout);
 fputs(
"       4      A feature or option that was needed to perform the  desired  re-\n"
"              quest  was not enabled or was explicitly disabled at build-time.\n"
"              To make curl able to do this, you probably need another build of\n"
"              libcurl!\n"
"\n"
"       5      Couldn't  resolve  proxy.  The given proxy host could not be re-\n"
"              solved.\n"
"\n"
"       6      Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
"       7      Failed to connect to host.\n"
"\n"
, stdout);
 fputs(
"       8      Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
"       9      FTP access denied. The server denied login or denied  access  to\n"
"              the  particular  resource or directory you wanted to reach. Most\n"
"              often you tried to change to a directory that doesn't  exist  on\n"
"              the server.\n"
"\n"
"       10     FTP  accept failed. While waiting for the server to connect back\n"
"              when an active FTP session is used, an error code was sent  over\n"
, stdout);
 fputs(
"              the control connection or similar.\n"
"\n"
"       11     FTP  weird PASS reply. Curl couldn't parse the reply sent to the\n"
"              PASS request.\n"
"\n"
"       12     During an active FTP session while waiting  for  the  server  to\n"
"              connect back to curl, the timeout expired.\n"
"\n"
"       13     FTP  weird PASV reply, Curl couldn't parse the reply sent to the\n"
"              PASV request.\n"
"\n"
"       14     FTP weird 227 format.  Curl  couldn't  parse  the  227-line  the\n"
, stdout);
 fputs(
"              server sent.\n"
"\n"
"       15     FTP  can't  get host. Couldn't resolve the host IP we got in the\n"
"              227-line.\n"
"\n"
"       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
"              This is somewhat generic and can be one out of several problems,\n"
"              see the error message for details.\n"
"\n"
"       17     FTP couldn't set binary. Couldn't change transfer method to  bi-\n"
"              nary.\n"
"\n"
, stdout);
 fputs(
"       18     Partial file. Only a part of the file was transferred.\n"
"\n"
"       19     FTP  couldn't download/access the given file, the RETR (or simi-\n"
"              lar) command failed.\n"
"\n"
"       21     FTP quote error. A quote command returned error from the server.\n"
"       22     HTTP page not retrieved. The requested url was not found or  re-\n"
"              turned  another  error  with  the  HTTP  error code being 400 or\n"
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
, stdout);
 fputs(
"       23     Write error. Curl couldn't write data to a local  filesystem  or\n"
"              similar.\n"
"\n"
"       25     FTP  couldn't  STOR  file. The server denied the STOR operation,\n"
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
"\n"
"       27     Out of memory. A memory allocation request failed.\n"
"\n"
"       28     Operation timeout. The specified time-out period was reached ac-\n"
"              cording to the conditions.\n"
"\n"
, stdout);
 fputs(
"       30     FTP  PORT  failed.  The PORT command failed. Not all FTP servers\n"
"              support the PORT command, try doing a transfer  using  PASV  in-\n"
"              stead!\n"
"\n"
"       31     FTP  couldn't use REST. The REST command failed. This command is\n"
"              used for resumed FTP transfers.\n"
"\n"
"       33     HTTP range error. The range \"command\" didn't work.\n"
"\n"
"       34     HTTP post error. Internal post-request generation error.\n"
"\n"
, stdout);
 fputs(
"       35     SSL connect error. The SSL handshaking failed.\n"
"\n"
"       36     Bad download resume. Couldn't continue an earlier aborted  down-\n"
"              load.\n"
"\n"
"       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
"       38     LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
"       39     LDAP search failed.\n"
"\n"
"       41     Function not found. A required LDAP function was not found.\n"
"\n"
"       42     Aborted by callback. An application told curl to abort the oper-\n"
, stdout);
 fputs(
"              ation.\n"
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
"       45     Interface error. A specified outgoing  interface  could  not  be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
"              mum amount.\n"
"\n"
"       48     Unknown option specified to libcurl.  This  indicates  that  you\n"
"              passed  a weird option to curl that was passed on to libcurl and\n"
, stdout);
 fputs(
"              rejected. Read up in the manual!\n"
"\n"
"       49     Malformed telnet option.\n"
"\n"
"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
"       52     The server didn't reply anything, which here  is  considered  an\n"
"              error.\n"
"\n"
"       53     SSL crypto engine not found.\n"
"\n"
"       54     Cannot set SSL crypto engine as default.\n"
"\n"
"       55     Failed sending network data.\n"
"\n"
"       56     Failure in receiving network data.\n"
"\n"
, stdout);
 fputs(
"       58     Problem with the local certificate.\n"
"\n"
"       59     Couldn't use specified SSL cipher.\n"
"\n"
"       60     Peer  certificate cannot be authenticated with known CA certifi-\n"
"              cates.\n"
"\n"
"       61     Unrecognized transfer encoding.\n"
"\n"
"       62     Invalid LDAP URL.\n"
"\n"
"       63     Maximum file size exceeded.\n"
"\n"
"       64     Requested FTP SSL level failed.\n"
"\n"
"       65     Sending the data requires a rewind that failed.\n"
"\n"
"       66     Failed to initialise SSL Engine.\n"
"\n"
, stdout);
 fputs(
"       67     The user name, password, or similar was not  accepted  and  curl\n"
"              failed to log in.\n"
"\n"
"       68     File not found on TFTP server.\n"
"\n"
"       69     Permission problem on TFTP server.\n"
"\n"
"       70     Out of disk space on TFTP server.\n"







|
|





|
|


|

|




|








|

















|


|
|




|









|

|
|


|





|

>
>



<


>
|

>
>




|


|
<


>






|


|
<


>






|


|
<


>






|



<


>





|
|


|
<


>




|






<


>



|




>
>



<
<
|






|
<
|
<


>
>











|




|







|
|
|
|


|
|


|
|
|










|

|



|




|
|
|
|





|
|



|
|






|
|










|


|
|





|
|
|


|


|
|


|
|




|



|
|
|







|
|
|
|







|




|






|


|











|


|






|
|



|
|


















|













|
|





|
|









|
|
|
|


|


|
|
|


|





|




|



|


|
|
|
|








|
|





|





|
|




|


|













|
|




|



|


|









|









|



|





|
|


|
|
|





|
|


|






|



|
|








|
|


|



|
|
|
|




|



|







|
|

|
|













|










|
|



|





|




|


|

|
|



|


|



|


|
|







|




















|












|
|



|










|
|
|


|
|




|


|


|


|




|






|






|



|
|




|


|











|
|


|










|

















|





|
|








|
















|
















|







3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577

3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592

3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605

3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618

3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631

3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644

3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658

3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674


3675
3676
3677
3678
3679
3680
3681
3682

3683

3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
"              Added in 7.20.0.\n"
"\n"
"       --tftp-no-options\n"
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
, stdout);
 fputs(
"              This  option  improves  interop with some legacy servers that do\n"
"              not acknowledge or properly implement TFTP  options.  When  this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
"              Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
"              (HTTP  FTP) Request a file that has been modified later than the\n"
"              given time and date, or one that has been modified  before  that\n"
, stdout);
 fputs(
"              time.  The <date expression> can be all sorts of date strings or\n"
"              if it doesn't match any internal ones, it is taken as a filename\n"
"              and  tries  to get the modification date (mtime) from <file> in-\n"
"              stead. See the curl_getdate(3) man pages for date expression de-\n"
"              tails.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
"              a document that is older than the given date/time, default is  a\n"
, stdout);
 fputs(
"              document that is newer than the specified date/time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tls-max <VERSION>\n"
"              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
"              acceptable version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2  or\n"
"              tlsv1.3.\n"
"\n"
"              default\n"
"                     Use up to recommended TLS version.\n"
"\n"
"              1.0    Use up to TLSv1.0.\n"
, stdout);
 fputs(
"              1.1    Use up to TLSv1.1.\n"
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
"       See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2 and --tlsv1.3. --tls-max\n"
"       requires that the underlying libcurl was built to support TLS. Added in\n"
"       7.54.0.\n"
"\n"
"       --tls13-ciphers <list of TLS 1.3 ciphersuites>\n"
"              (TLS)  Specifies which cipher suites to use in the connection if\n"
, stdout);
 fputs(
"              it negotiates TLS 1.3. The list of ciphers suites  must  specify\n"
"              valid  ciphers.  Read up on TLS 1.3 cipher suite details on this\n"
"              URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This option is currently used only when curl  is  built  to  use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
"              option.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tlsauthtype <type>\n"
"              Set  TLS  authentication type. Currently, the only supported op-\n"
"              tion  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
"              --tlspassword  are specified but --tlsauthtype is not, then this\n"
"              option defaults to \"SRP\".  This option works only if the  under-\n"
, stdout);
 fputs(
"              lying  libcurl  is  built  with  TLS-SRP support, which requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlspassword\n"
"              Set password for use with the TLS authentication  method  speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
"              This doesn't work with TLS 1.3.\n"
"\n"
"              Added in 7.21.4.\n"
"       --tlsuser <name>\n"

, stdout);
 fputs(
"              Set  username  for use with the TLS authentication method speci-\n"
"              fied with --tlsauthtype. Requires  that  --tlspassword  also  is\n"
"              set.\n"
"\n"
"              This doesn't work with TLS 1.3.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlsv1.0\n"
"              (TLS)  Forces curl to use TLS version 1.0 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"

, stdout);
 fputs(
"              _only_  TLS  1.0, but behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
"              (TLS)  Forces curl to use TLS version 1.1 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"

, stdout);
 fputs(
"              _only_  TLS  1.1, but behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
"              (TLS)  Forces curl to use TLS version 1.2 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"

, stdout);
 fputs(
"              _only_  TLS  1.2, but behavior was inconsistent depending on the\n"
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
"              (TLS)  Forces curl to use TLS version 1.3 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"

, stdout);
 fputs(
"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
"              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
"              (SSL) Tells curl to use at least TLS version 1.x when  negotiat-\n"
"              ing  with  a  remote  TLS  server. That means TLS version 1.0 or\n"
"              higher\n"
"\n"
"              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the\n"

, stdout);
 fputs(
"              underlying  libcurl  was built to support TLS. This option over-\n"
"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
"              of  the  algorithms curl supports, and uncompress the data while\n"
"              receiving it.\n"
"\n"
"              Added in 7.21.6.\n"
"\n"
"       --trace-ascii <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"

, stdout);
 fputs(
"              cluding  descriptive  information, to the given output file. Use\n"
"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is very similar to --trace, but leaves out the hex part and\n"
"              only  shows  the ASCII part of the dump. It makes smaller output\n"
"              that might be easier to read for untrained humans.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"              This option overrides --trace and -v, --verbose.\n"
"\n"
"       --trace-time\n"


"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
"              displays.\n"
"\n"
"              Added in 7.14.0.\n"
"\n"
"       --trace <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding descriptive information, to the given output  file.  Use\n"

"              \"-\"  as  filename  to have the output sent to stdout. Use \"%\" as\n"

, stdout);
 fputs(
"              filename to have the output sent to stderr.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
"              Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
"              This  transfers  the  specified local file to the remote URL. If\n"
, stdout);
 fputs(
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
"              directory to really prove to Curl that there is no file name  or\n"
"              curl will think that your last directory name is the remote file\n"
"              name to use. That will most likely cause the upload operation to\n"
"              fail. If this is used on an HTTP(S) server, the PUT command will\n"
"              be used.\n"
"\n"
, stdout);
 fputs(
"              Use the file name \"-\" (a single dash) to use stdin instead of  a\n"
"              given  file.   Alternately,  the file name \".\" (a single period)\n"
"              may be specified instead of \"-\" to  use  stdin  in  non-blocking\n"
"              mode  to  allow  reading  server output while stdin is being up-\n"
"              loaded.\n"
"\n"
"              You can specify one -T, --upload-file for each URL on  the  com-\n"
"              mand  line.  Each -T, --upload-file + URL pair specifies what to\n"
, stdout);
 fputs(
"              upload and to where. curl also supports \"globbing\"  of  the  -T,\n"
"              --upload-file  argument,  meaning  that  you can upload multiple\n"
"              files to a single URL by using the same URL globbing style  sup-\n"
"              ported in the URL, like this:\n"
"\n"
"               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
"              or even\n"
"\n"
"               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
, stdout);
 fputs(
"              When  uploading  to an SMTP server: the uploaded data is assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
"              headers  and  mail  body formatted correctly by the user as curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"       --url <url>\n"
"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
"              want to specify URL(s) in a config file.\n"
"\n"
, stdout);
 fputs(
"              If  the given URL is missing a scheme name (such as \"http://\" or\n"
"              \"ftp://\" etc) then curl will make a guess based on the host.  If\n"
"              the  outermost  sub-domain  name  matches DICT, FTP, IMAP, LDAP,\n"
"              POP3 or SMTP then that protocol will  be  used,  otherwise  HTTP\n"
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
, stdout);
 fputs(
"              This option may be used any number of times.  To  control  where\n"
"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
"              name options.\n"
"\n"
"       -B, --use-ascii\n"
"              (FTP LDAP) Enable ASCII transfer. For FTP, this can also be  en-\n"
"              forced  by  using  a  URL  that ends with \";type=A\". This option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
"       -A, --user-agent <name>\n"
, stdout);
 fputs(
"              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
"              To  encode blanks in the string, surround the string with single\n"
"              quote marks. This header can also be set with the  -H,  --header\n"
"              or the --proxy-header options.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -u, --user <user:password>\n"
"              Specify the user name and password to use for server authentica-\n"
, stdout);
 fputs(
"              tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
"              If you simply specify the user name,  curl  will  prompt  for  a\n"
"              password.\n"
"\n"
"              The  user  name  and  passwords are split up on the first colon,\n"
"              which makes it impossible to use a colon in the user  name  with\n"
"              this option. The password can, still.\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
, stdout);
 fputs(
"              ment from process listings. This is not enough to  protect  cre-\n"
"              dentials  from  possibly getting seen by other users on the same\n"
"              system as they will still be visible for a brief  moment  before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              When using Kerberos V5 with a Windows based  server  you  should\n"
, stdout);
 fputs(
"              include  the  Windows domain name in the user name, in order for\n"
"              the server to successfully obtain  a  Kerberos  Ticket.  If  you\n"
"              don't then the initial authentication handshake may fail.\n"
"\n"
"              When  using  NTLM,  the user name can be specified simply as the\n"
"              user name, without the domain, if there is a single  domain  and\n"
"              forest in your setup for example.\n"
"\n"
, stdout);
 fputs(
"              To  specify  the domain name use either Down-Level Logon Name or\n"
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
"              user@example.com respectively.\n"
"\n"
"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
"              tell  curl  to select the user name and password from your envi-\n"
, stdout);
 fputs(
"              ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -v, --verbose\n"
"              Makes curl verbose during the operation.  Useful  for  debugging\n"
"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\n"
"              data\"  received  by  curl  that is hidden in normal cases, and a\n"
, stdout);
 fputs(
"              line starting with '*' means additional info provided by curl.\n"
"\n"
"              If you only want HTTP headers in the output, -i, --include might\n"
"              be the option you're looking for.\n"
"\n"
"              If  you think this option still doesn't give you enough details,\n"
"              consider using --trace or --trace-ascii instead.\n"
"\n"
"              Use -s, --silent to make curl really quiet.\n"
"\n"
"              See also  -i,  --include.  This  option  overrides  --trace  and\n"
, stdout);
 fputs(
"              --trace-ascii.\n"
"\n"
"       -V, --version\n"
"              Displays information about curl and the libcurl version it uses.\n"
"              The  first  line  includes the full version of curl, libcurl and\n"
"              other 3rd party libraries linked with the executable.\n"
"\n"
"              The second line (starts with \"Protocols:\") shows  all  protocols\n"
"              that libcurl reports to support.\n"
"\n"
"              The third line (starts with \"Features:\") shows specific features\n"
, stdout);
 fputs(
"              libcurl reports to offer. Available features include:\n"
"\n"
"              IPv6   You can use IPv6 with this.\n"
"\n"
"              krb4   Krb4 for FTP is supported.\n"
"\n"
"              SSL    SSL versions of various protocols are supported, such  as\n"
"                     HTTPS, FTPS, POP3S and so on.\n"
"\n"
"              libz   Automatic  decompression of compressed files over HTTP is\n"
"                     supported.\n"
"\n"
"              NTLM   NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Debug  This curl uses a libcurl built with Debug.  This  enables\n"
"                     more  error-tracking  and memory debugging etc. For curl-\n"
"                     developers only!\n"
"\n"
"              AsynchDNS\n"
"                     This curl uses asynchronous name  resolves.  Asynchronous\n"
"                     name  resolves can be done using either the c-ares or the\n"
"                     threaded resolver backends.\n"
"\n"
"              SPNEGO SPNEGO authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Largefile\n"
"                     This curl supports transfers of large files, files larger\n"
"                     than 2GB.\n"
"\n"
"              IDN    This curl supports IDN - international domain names.\n"
"\n"
"              GSS-API\n"
"                     GSS-API is supported.\n"
"\n"
"              SSPI   SSPI is supported.\n"
"\n"
"              TLS-SRP\n"
"                     SRP  (Secure Remote Password) authentication is supported\n"
"                     for TLS.\n"
"\n"
, stdout);
 fputs(
"              HTTP2  HTTP/2 support has been built-in.\n"
"\n"
"              UnixSockets\n"
"                     Unix sockets support is provided.\n"
"\n"
"              HTTPS-proxy\n"
"                     This curl is built to support HTTPS proxy.\n"
"\n"
"              Metalink\n"
"                     This curl supports Metalink (both version 3  and  4  (RFC\n"
"                     5854)),  which  describes  mirrors and hashes.  curl will\n"
"                     use mirrors for failover if there are errors (such as the\n"
, stdout);
 fputs(
"                     file or server not being available).\n"
"\n"
"              PSL    PSL  is  short for Public Suffix List and means that this\n"
"                     curl has been built with  knowledge  about  \"public  suf-\n"
"                     fixes\".\n"
"\n"
"              MultiSSL\n"
"                     This curl supports multiple TLS backends.\n"
"\n"
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
, stdout);
 fputs(
"              fer. The format is a string that may contain  plain  text  mixed\n"
"              with  any  number of variables. The format can be specified as a\n"
"              literal \"string\", or you can have curl read the  format  from  a\n"
"              file  with  \"@filename\" and to tell curl to read the format from\n"
"              stdin you write \"@-\".\n"
"\n"
"              The variables present in the output format will  be  substituted\n"
, stdout);
 fputs(
"              by  the  value or text that curl thinks fit, as described below.\n"
"              All variables are specified as %{variable_name} and to output  a\n"
"              normal  % you just write them as %%. You can output a newline by\n"
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
"              The output will be written to standard output, but this  can  be\n"
"              switched to standard error by using %{stderr}.\n"
"\n"
, stdout);
 fputs(
"              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
"              where all occurrences of % must be doubled when using  this  op-\n"
"              tion.\n"
"\n"
"              The variables available are:\n"
"\n"
"              content_type   The  Content-Type  of  the requested document, if\n"
"                             there was any.\n"
"\n"
"              filename_effective\n"
"                             The ultimate filename that curl  writes  out  to.\n"
, stdout);
 fputs(
"                             This  is only meaningful if curl is told to write\n"
"                             to a file  with  the  -O,  --remote-name  or  -o,\n"
"                             --output  option. It's most useful in combination\n"
"                             with the -J, --remote-header-name option.  (Added\n"
"                             in 7.26.0)\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
, stdout);
 fputs(
"                             to the remote FTP server. (Added in 7.15.4)\n"
"\n"
"              http_code      The numerical response code that was found in the\n"
"                             last  retrieved  HTTP(S)  or  FTP(s) transfer. In\n"
"                             7.18.2 the alias response_code was added to  show\n"
"                             the same info.\n"
"\n"
"              http_connect   The numerical code that was found in the last re-\n"
, stdout);
 fputs(
"                             sponse (from a proxy) to a curl CONNECT  request.\n"
"                             (Added in 7.12.4)\n"
"\n"
"              http_version   The  http  version  that  was  effectively  used.\n"
"                             (Added in 7.50.0)\n"
"\n"
"              local_ip       The IP address of the local end of the  most  re-\n"
"                             cently  done  connection  - can be either IPv4 or\n"
"                             IPv6 (Added in 7.29.0)\n"
"\n"
, stdout);
 fputs(
"              local_port     The local port number of the most  recently  done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              num_connects   Number  of new connects made in the recent trans-\n"
"                             fer. (Added in 7.12.3)\n"
"\n"
"              num_redirects  Number of redirects that were followed in the re-\n"
"                             quest. (Added in 7.12.3)\n"
"\n"
"              proxy_ssl_verify_result\n"
, stdout);
 fputs(
"                             The result of the HTTPS proxy's SSL peer certifi-\n"
"                             cate verification that was requested. 0 means the\n"
"                             verification was successful. (Added in 7.52.0)\n"
"\n"
"              redirect_url   When an HTTP request was made without -L, --loca-\n"
"                             tion to follow redirects (or when --max-redir  is\n"
"                             met),  this  variable  will show the actual URL a\n"
, stdout);
 fputs(
"                             redirect would have gone to. (Added in 7.18.2)\n"
"\n"
"              remote_ip      The remote IP address of the most  recently  done\n"
"                             connection - can be either IPv4 or IPv6 (Added in\n"
"                             7.29.0)\n"
"\n"
"              remote_port    The remote port number of the most recently  done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              scheme         The  URL  scheme (sometimes called protocol) that\n"
, stdout);
 fputs(
"                             was effectively used (Added in 7.52.0)\n"
"\n"
"              size_download  The total amount of bytes that were downloaded.\n"
"\n"
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
"              size_request   The  total  amount of bytes that were sent in the\n"
"                             HTTP request.\n"
"\n"
"              size_upload    The total amount of bytes that were uploaded.\n"
"\n"
, stdout);
 fputs(
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
"              speed_upload   The  average  upload speed that curl measured for\n"
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
"                             The result of the SSL peer certificate  verifica-\n"
"                             tion that was requested. 0 means the verification\n"
, stdout);
 fputs(
"                             was successful. (Added in 7.19.0)\n"
"\n"
"              stderr         From this point on, the  -w,  --write-out  output\n"
"                             will  be  written  to  standard  error. (Added in\n"
"                             7.63.0)\n"
"\n"
"              stdout         From this point on, the  -w,  --write-out  output\n"
"                             will  be written to standard output.  This is the\n"
"                             default, but can be used  to  switch  back  after\n"
, stdout);
 fputs(
"                             switching to stderr.  (Added in 7.63.0)\n"
"\n"
"              time_appconnect\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the SSL/SSH/etc connect/handshake to the  re-\n"
"                             mote host was completed. (Added in 7.19.0)\n"
"\n"
"              time_connect   The  time, in seconds, it took from the start un-\n"
"                             til the TCP connect to the remote host (or proxy)\n"
, stdout);
 fputs(
"                             was completed.\n"
"\n"
"              time_namelookup\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the  file  transfer was just about to begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
, stdout);
 fputs(
"                             tiations that are specific to the particular pro-\n"
"                             tocol(s) involved.\n"
"\n"
"              time_redirect  The time, in seconds, it took for all redirection\n"
"                             steps including name lookup, connect, pretransfer\n"
"                             and transfer before  the  final  transaction  was\n"
"                             started.  time_redirect shows the complete execu-\n"
, stdout);
 fputs(
"                             tion time for multiple  redirections.  (Added  in\n"
"                             7.12.3)\n"
"\n"
"              time_starttransfer\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the first byte was just about  to  be  trans-\n"
"                             ferred.  This  includes time_pretransfer and also\n"
"                             the time the server needed to calculate  the  re-\n"
, stdout);
 fputs(
"                             sult.\n"
"\n"
"              time_total     The  total time, in seconds, that the full opera-\n"
"                             tion lasted.\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
"                             ingful  if  you've  told curl to follow location:\n"
"                             headers.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --xattr\n"
, stdout);
 fputs(
"              When saving output to a file, this option tells  curl  to  store\n"
"              certain  file  metadata  in extended file attributes. Currently,\n"
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the  content  type  is stored in the mime_type attribute. If the\n"
"              file system does not support extended attributes, a  warning  is\n"
"              issued.\n"
"\n"
"FILES\n"
"       ~/.curlrc\n"
, stdout);
 fputs(
"              Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
"       The environment variables can be specified in lower case or upper case.\n"
"       The lower case version has precedence. http_proxy is an exception as it\n"
"       is only available in lower case.\n"
"\n"
"       Using  an  environment variable to set the proxy has the same effect as\n"
"       using the -x, --proxy option.\n"
"\n"
"       http_proxy [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTP.\n"
, stdout);
 fputs(
"       HTTPS_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTPS.\n"
"\n"
"       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for [url-protocol], where the  pro-\n"
"              tocol  is  a  protocol  that curl supports and as specified in a\n"
"              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
"       ALL_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use if no  protocol-specific  proxy  is\n"
, stdout);
 fputs(
"              set.\n"
"\n"
"       NO_PROXY <comma-separated list of hosts/domains>\n"
"              list  of  host names that shouldn't go through any proxy. If set\n"
"              to an asterisk '*' only, it matches all hosts. Each name in this\n"
"              list is matched as either a domain name which contains the host-\n"
"              name, or the hostname itself.\n"
"\n"
"              This environment variable disables use of the  proxy  even  when\n"
, stdout);
 fputs(
"              specified  with  the  -x,  --proxy  option. That is NO_PROXY=di-\n"
"              rect.example.com  curl  -x  http://proxy.example.com  http://di-\n"
"              rect.example.com   accesses   the   target   URL  directly,  and\n"
"              NO_PROXY=direct.example.com  curl  -x   http://proxy.example.com\n"
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
"              The list of host names can also  be  include  numerical  IP  ad-\n"
, stdout);
 fputs(
"              dresses,  and IPv6 versions should then be given without enclos-\n"
"              ing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
"       Since curl version 7.21.7, the proxy string may  be  specified  with  a\n"
"       protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
"       If  no  protocol  is  specified  in  the  proxy string or if the string\n"
"       doesn't match a supported one, the proxy will be  treated  as  an  HTTP\n"
"       proxy.\n"
"\n"
, stdout);
 fputs(
"       The supported proxy protocol prefixes are as follows:\n"
"\n"
"       http://\n"
"              Makes  it use it as an HTTP proxy. The default if no scheme pre-\n"
"              fix is used.\n"
"\n"
"       https://\n"
"              Makes it treated as an HTTPS proxy.\n"
"\n"
"       socks4://\n"
"              Makes it the equivalent of --socks4\n"
"\n"
"       socks4a://\n"
"              Makes it the equivalent of --socks4a\n"
"\n"
"       socks5://\n"
"              Makes it the equivalent of --socks5\n"
"\n"
"       socks5h://\n"
, stdout);
 fputs(
"              Makes it the equivalent of --socks5-hostname\n"
"\n"
"EXIT CODES\n"
"       There are a bunch of different error codes and their corresponding  er-\n"
"       ror messages that may appear during bad conditions. At the time of this\n"
"       writing, the exit codes are:\n"
"\n"
"       1      Unsupported protocol. This build of curl has no support for this\n"
"              protocol.\n"
"\n"
"       2      Failed to initialize.\n"
"\n"
"       3      URL malformed. The syntax was not correct.\n"
"\n"
, stdout);
 fputs(
"       4      A  feature  or option that was needed to perform the desired re-\n"
"              quest was not enabled or was explicitly disabled at  build-time.\n"
"              To make curl able to do this, you probably need another build of\n"
"              libcurl!\n"
"\n"
"       5      Couldn't resolve proxy. The given proxy host could  not  be  re-\n"
"              solved.\n"
"\n"
"       6      Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
"       7      Failed to connect to host.\n"
"\n"
, stdout);
 fputs(
"       8      Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
"       9      FTP  access  denied. The server denied login or denied access to\n"
"              the particular resource or directory you wanted to  reach.  Most\n"
"              often  you  tried to change to a directory that doesn't exist on\n"
"              the server.\n"
"\n"
"       10     FTP accept failed. While waiting for the server to connect  back\n"
"              when  an active FTP session is used, an error code was sent over\n"
, stdout);
 fputs(
"              the control connection or similar.\n"
"\n"
"       11     FTP weird PASS reply. Curl couldn't parse the reply sent to  the\n"
"              PASS request.\n"
"\n"
"       12     During  an  active  FTP  session while waiting for the server to\n"
"              connect back to curl, the timeout expired.\n"
"\n"
"       13     FTP weird PASV reply, Curl couldn't parse the reply sent to  the\n"
"              PASV request.\n"
"\n"
"       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the\n"
, stdout);
 fputs(
"              server sent.\n"
"\n"
"       15     FTP can't get host. Couldn't resolve the host IP we got  in  the\n"
"              227-line.\n"
"\n"
"       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
"              This is somewhat generic and can be one out of several problems,\n"
"              see the error message for details.\n"
"\n"
"       17     FTP  couldn't set binary. Couldn't change transfer method to bi-\n"
"              nary.\n"
"\n"
, stdout);
 fputs(
"       18     Partial file. Only a part of the file was transferred.\n"
"\n"
"       19     FTP couldn't download/access the given file, the RETR (or  simi-\n"
"              lar) command failed.\n"
"\n"
"       21     FTP quote error. A quote command returned error from the server.\n"
"       22     HTTP  page not retrieved. The requested url was not found or re-\n"
"              turned another error with the  HTTP  error  code  being  400  or\n"
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
, stdout);
 fputs(
"       23     Write  error.  Curl couldn't write data to a local filesystem or\n"
"              similar.\n"
"\n"
"       25     FTP couldn't STOR file. The server denied  the  STOR  operation,\n"
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
"\n"
"       27     Out of memory. A memory allocation request failed.\n"
"\n"
"       28     Operation timeout. The specified time-out period was reached ac-\n"
"              cording to the conditions.\n"
"\n"
, stdout);
 fputs(
"       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers\n"
"              support  the  PORT  command, try doing a transfer using PASV in-\n"
"              stead!\n"
"\n"
"       31     FTP couldn't use REST. The REST command failed. This command  is\n"
"              used for resumed FTP transfers.\n"
"\n"
"       33     HTTP range error. The range \"command\" didn't work.\n"
"\n"
"       34     HTTP post error. Internal post-request generation error.\n"
"\n"
, stdout);
 fputs(
"       35     SSL connect error. The SSL handshaking failed.\n"
"\n"
"       36     Bad  download resume. Couldn't continue an earlier aborted down-\n"
"              load.\n"
"\n"
"       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
"       38     LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
"       39     LDAP search failed.\n"
"\n"
"       41     Function not found. A required LDAP function was not found.\n"
"\n"
"       42     Aborted by callback. An application told curl to abort the oper-\n"
, stdout);
 fputs(
"              ation.\n"
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
"       45     Interface  error.  A  specified  outgoing interface could not be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
"              mum amount.\n"
"\n"
"       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
"              passed a weird option to curl that was passed on to libcurl  and\n"
, stdout);
 fputs(
"              rejected. Read up in the manual!\n"
"\n"
"       49     Malformed telnet option.\n"
"\n"
"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
"       52     The  server  didn't  reply anything, which here is considered an\n"
"              error.\n"
"\n"
"       53     SSL crypto engine not found.\n"
"\n"
"       54     Cannot set SSL crypto engine as default.\n"
"\n"
"       55     Failed sending network data.\n"
"\n"
"       56     Failure in receiving network data.\n"
"\n"
, stdout);
 fputs(
"       58     Problem with the local certificate.\n"
"\n"
"       59     Couldn't use specified SSL cipher.\n"
"\n"
"       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
"              cates.\n"
"\n"
"       61     Unrecognized transfer encoding.\n"
"\n"
"       62     Invalid LDAP URL.\n"
"\n"
"       63     Maximum file size exceeded.\n"
"\n"
"       64     Requested FTP SSL level failed.\n"
"\n"
"       65     Sending the data requires a rewind that failed.\n"
"\n"
"       66     Failed to initialise SSL Engine.\n"
"\n"
, stdout);
 fputs(
"       67     The  user  name,  password, or similar was not accepted and curl\n"
"              failed to log in.\n"
"\n"
"       68     File not found on TFTP server.\n"
"\n"
"       69     Permission problem on TFTP server.\n"
"\n"
"       70     Out of disk space on TFTP server.\n"
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
"\n"
"       78     The resource referenced in the URL does not exist.\n"
"\n"
"       79     An unspecified error occurred during the SSH session.\n"
"\n"
"       80     Failed to shut down the SSL connection.\n"
"\n"
"       82     Could  not  load  CRL  file,  missing  or wrong format (added in\n"
"              7.19.0).\n"
"\n"
"       83     Issuer check failed (added in 7.19.0).\n"
"\n"
, stdout);
 fputs(
"       84     The FTP PRET command failed\n"







|







4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
"\n"
"       78     The resource referenced in the URL does not exist.\n"
"\n"
"       79     An unspecified error occurred during the SSH session.\n"
"\n"
"       80     Failed to shut down the SSL connection.\n"
"\n"
"       82     Could not load CRL file,  missing  or  wrong  format  (added  in\n"
"              7.19.0).\n"
"\n"
"       83     Issuer check failed (added in 7.19.0).\n"
"\n"
, stdout);
 fputs(
"       84     The FTP PRET command failed\n"
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
"\n"
, stdout);
 fputs(
"       XX     More error codes will appear here in future releases. The exist-\n"
"              ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
"       Daniel  Stenberg is the main author, but the whole list of contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
"       https://curl.haxx.se\n"
"\n"
"SEE ALSO\n"
"       ftp(1), wget(1)\n"







|







4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
"\n"
, stdout);
 fputs(
"       XX     More error codes will appear here in future releases. The exist-\n"
"              ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
"       Daniel Stenberg is the main author, but the whole list of  contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
"       https://curl.haxx.se\n"
"\n"
"SEE ALSO\n"
"       ftp(1), wget(1)\n"
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430

4431
4432

4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443

4444
4445
4446

4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475

4476
4477

4478
4479
4480
4481
4482
4483
4484
4485
4486
4487

4488
4489
4490
4491

4492


4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518

4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534

4535
4536
4537
4538
4539

4540

4541
4542
4543
4544
4545
4546
4547
4548

4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570

4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582


4583

4584
4585

4586


4587
4588
4589
4590

4591
4592
4593
4594
4595
4596

4597
4598

4599

4600
4601
4602
4603
4604
4605
4606
4607
4608



4609
4610

4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622

4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650

4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672


4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718


4719
4720
4721


4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733

4734
4735
4736
4737
4738

4739
4740

4741

4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759

4760
4761
4762
4763

4764
4765
4766
4767
4768
4769

4770
4771
4772
4773
4774
4775
4776
4777

4778
4779
4780
4781

4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794

4795
4796
4797
4798
4799
4800

4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834

4835
4836

4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850

4851
4852
4853




4854

4855
4856


4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878

4879

4880
4881
4882
4883
4884
4885
4886
4887
4888

4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917



4918
4919
4920
4921

4922
4923

4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958

4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982

4983
4984
4985
4986
4987
4988
4989
4990
4991
4992


4993
4994
4995

4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009

5010
5011
5012
5013
5014
5015
5016
5017
5018
5019

5020
5021
5022
5023
5024
5025

5026
5027


5028

5029

5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071


5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098



5099
5100
5101
5102
5103

5104










5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116

5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131

5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149

5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172

5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186

5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197

5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213

5214
5215
5216
5217
5218

5219


5220
5221
5222
5223

5224
5225
5226

5227
5228







5229



5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243

5244
5245
5246
5247
5248
5249

5250
5251
5252
5253
5254
5255
5256
5257
5258


5259







5260


5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272

5273
5274
5275
5276
5277

5278
5279
5280
5281
5282

5283
5284
5285
5286
5287
5288
5289
5290
5291

5292
5293
5294
5295
5296
5297
5298
5299


5300

5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321


5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369

5370
5371

5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384

5385
5386
5387

5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415

5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433


5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445

5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498

5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541

5542
5543
5544
5545
5546
5547
5548
5549

5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561


5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587

5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604

5605
5606
5607
5608

5609
5610
5611

5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640




5641
5642
5643

5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684

5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697

5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726


5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757

5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769

5770
5771
5772
5773
5774
5775
5776
5777

5778

5779
5780
5781
5782
5783
5784
5785
5786
5787
5788

5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804

5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820

5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849

5850

5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861

5862
5863

5864
5865
5866
5867
5868

5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899

5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924

5925
5926
5927
5928
5929
5930
5931
5932
5933
5934

5935
5936
5937

5938
5939
5940
5941
5942
5943
5944

5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969

5970
5971
5972
5973
5974
5975
5976
5977

5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005

6006
6007
6008
6009
6010
6011

6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035


6036

6037
6038
6039


6040
6041
6042
6043
6044
6045
6046
6047


6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061

6062
6063
6064
6065
6066

6067
6068
6069
6070
6071
6072
6073
6074
6075
6076


6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105

6106
6107
6108
6109
6110
6111

6112
6113
6114
6115
6116

6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161

6162
6163
6164
6165
6166
6167
6168
6169

6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193

6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207

6208
6209
6210

6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225



6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250

6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271


6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283


6284

6285
6286
6287
6288
6289
6290

6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303

6304
6305
6306

6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326

6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346

6347
6348
6349
6350
6351
6352
6353
6354
6355

6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377

6378
6379
6380
6381
6382
6383
6384
6385
6386
6387

6388
6389
6390

6391
6392
6393
6394

6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452

6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466

6467
6468
6469
6470
6471
6472
6473
6474
6475

6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491

6492
6493
6494
6495
6496

6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532


6533
6534
6535


6536


6537
6538
6539
6540



6541
6542






6543

6544
6545

6546
6547
6548
6549
6550

6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573

6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588

6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603

6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614

6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630

6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647

6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660

6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685



6686
6687
6688
6689
6690

6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707

6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731

6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742

6743
6744
6745
6746
6747
6748

6749
6750
6751
6752
6753
6754
6755
6756
6757
6758

6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777

6778
6779
6780
6781

6782
6783
6784
6785
6786
6787

6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820



6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837

6838
6839
6840
6841
6842

6843

6844
6845
6846
6847
6848
6849
6850
6851
6852

6853
6854
6855
6856
6857
6858

6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870

6871
6872
6873

6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888

6889
6890
6891
6892
6893

6894
6895
6896
6897
6898
6899
6900

6901
6902

6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920

6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933


6934

6935
6936
6937
6938

6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955

6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972

6973
6974
6975
6976
6977
6978

6979
6980
6981
6982
6983
6984

6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996

6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024

7025
7026
7027
7028
7029

7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044

7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063

7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091



7092
7093
7094
7095
7096
7097
7098

7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120

7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149

7150
7151
7152
7153

7154
7155
7156
7157
7158
7159
7160
7161
7162
7163

7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176

7177
7178

7179
7180

7181
7182
7183

7184
7185
7186
7187
7188
7189
7190
7191


7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216

7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239

7240
7241
7242
7243

7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270

7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307

7308
7309
7310

7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326

7327
7328
7329
7330
7331
7332
7333
7334
7335
7336

7337
7338
7339
7340


7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357

7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374

7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386

7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410

7411
7412

7413
7414
7415
7416
7417
7418
7419
7420
7421
7422


7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435

7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493




7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506


7507
7508
7509
7510
7511
7512
7513
7514

7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557

7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576

7577
7578
7579
7580
7581
7582
7583
7584
7585

7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598

7599
7600
7601
7602

7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617

7618


7619
7620
7621

7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681


7682


7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697

7698
7699
7700
7701
7702
7703
7704
7705
7706

7707
7708
7709
7710
7711
7712

7713
7714
7715
7716
7717
7718
7719
7720

7721

7722
7723

7724
7725
7726
7727
7728
7729
7730
7731


7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742

7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762

7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774

7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791


7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826

7827
7828
7829
7830
7831
7832
7833
7834
7835
7836

7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857


7858
7859
7860
7861
7862
7863
7864
7865


7866
7867
7868
7869
7870
7871
7872
7873
7874

7875



7876
7877
7878
7879
7880
7881
7882
7883
7884
7885

7886
7887
7888
7889
7890
7891
7892
7893
7894

7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912

7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953

7954
7955

7956
7957
7958
7959
7960
7961
7962

7963
7964
7965
7966

7967
7968
7969
7970
7971
7972
7973
7974

7975
7976

7977
7978
7979
7980
7981
7982

7983
7984

7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000


8001
8002

8003
8004




8005

8006
8007
8008

8009
8010
8011
8012
8013
8014
8015

8016
8017
8018
8019
8020
8021
8022
8023

8024
8025
8026
8027
8028
8029
8030
8031
8032
8033

8034





8035
8036
8037

8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076

8077

8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090

8091
8092
8093
8094
8095
8096

8097
8098
8099
8100
8101
8102
8103
8104

8105
8106
8107
8108
8109
8110

8111
8112
8113
8114
8115
8116

8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139

8140
8141
8142
8143
8144
8145
8146
8147


8148

8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160

8161
8162
8163

8164

8165


8166

8167
8168
8169
8170
8171

8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206

8207
8208



8209
8210
8211

8212
8213
8214
8215
8216


8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228

8229
8230
8231


8232
8233
8234
8235


8236

8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264

8265

8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289

8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304


8305
8306
8307
8308
8309
8310
8311
8312

8313
8314

8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327

8328
8329
8330
8331
8332
8333
8334
8335

8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346

8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359

8360
8361
8362
8363

8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
#include <zlib.h>
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
  /* This mumbo-jumbo is the huge help text compressed with gzip.
     Thanks to this operation, the size of this data shrank from 170223
     to 47691 bytes. You can disable the use of compressed help
     texts by NOT passing -c to the mkhelp.pl tool. */
  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
  0x6b, 0x77, 0xdc, 0xc6, 0xb1, 0x2e, 0xfc, 0xdd, 0xbf, 0x02, 0x9b, 0x59,
  0x39, 0x24, 0x4f, 0x66, 0x86, 0x37, 0x5d, 0x2c, 0x45, 0xce, 0xb6, 0x22,
  0x51, 0x36, 0xb7, 0x29, 0x91, 0x47, 0x43, 0xd9, 0xce, 0x89, 0xbd, 0xb4,
  0x30, 0x33, 0x18, 0x12, 0xd1, 0x0c, 0x30, 0x01, 0x30, 0xbc, 0x64, 0x9f,
  0x9c, 0xdf, 0xfe, 0x76, 0x3d, 0x55, 0xd5, 0xdd, 0x40, 0x37, 0x86, 0xb4,
  0x63, 0xfb, 0xdc, 0xde, 0xec, 0xb5, 0x2d, 0x89, 0x04, 0x1a, 0x7d, 0xa9,
  0xae, 0x7b, 0x3d, 0x95, 0x24, 0xf7, 0xfd, 0xef, 0x23, 0xfe, 0xff, 0xa3,
  0xf9, 0x9f, 0xf9, 0xf3, 0xb3, 0x24, 0x39, 0xaf, 0xca, 0xbf, 0x65, 0xd3,
  0x26, 0xfe, 0xec, 0xc7, 0x8f, 0xff, 0x23, 0xe1, 0xff, 0x33, 0xef, 0xfc,

  0x60, 0xfe, 0xfc, 0x6c, 0xe3, 0xd8, 0x7b, 0x89, 0x7b, 0xe1, 0x7f, 0x7c,
  0xdc, 0x4d, 0xee, 0x7b, 0xe1, 0x7f, 0x24, 0x3b, 0x78, 0xe1, 0xa3, 0x7c,

  0xe1, 0x05, 0xfd, 0xfd, 0xe3, 0xc7, 0xcd, 0x1f, 0xf9, 0x81, 0x66, 0x45,
  0xff, 0xd9, 0xa3, 0xf7, 0x7e, 0xf8, 0x48, 0x7f, 0x35, 0x3f, 0xf9, 0xec,
  0xb3, 0x77, 0x2f, 0xdf, 0x1e, 0xeb, 0xab, 0xd3, 0x75, 0xb5, 0x48, 0x86,
  0x49, 0x53, 0xa5, 0x45, 0x3d, 0xcf, 0xaa, 0x24, 0x4d, 0x3e, 0xbc, 0x3f,
  0xfd, 0xec, 0xb3, 0xf1, 0x5f, 0xde, 0x9d, 0x9d, 0x8f, 0x4f, 0xc6, 0xad,
  0xc7, 0xfe, 0x5a, 0xae, 0x9a, 0xbc, 0x2c, 0x6a, 0x33, 0x7d, 0xf3, 0x50,
  0xfd, 0xe3, 0x67, 0x9f, 0xbd, 0x3e, 0x1e, 0xbf, 0x7a, 0x7f, 0x72, 0x7e,
  0x71, 0x72, 0xf6, 0xae, 0xf5, 0x64, 0x92, 0xd7, 0x89, 0x19, 0xaa, 0x29,
  0xcb, 0x85, 0xf9, 0x8f, 0x1b, 0x7d, 0x96, 0x36, 0x69, 0x32, 0xaf, 0xca,
  0x65, 0x52, 0x56, 0xf4, 0x8b, 0x34, 0xa9, 0xb3, 0xea, 0x3a, 0xab, 0x06,
  0xc9, 0xba, 0xce, 0x8b, 0xcb, 0xa4, 0x2c, 0xb2, 0xa4, 0x9c, 0x27, 0xcd,

  0x55, 0xa6, 0xc3, 0xd5, 0xeb, 0xd5, 0xaa, 0xac, 0x9a, 0x6c, 0x96, 0xac,
  0xaa, 0xb2, 0x29, 0xa7, 0xe5, 0xa2, 0x4e, 0x76, 0x5e, 0x9f, 0xbc, 0xba,
  0x18, 0x24, 0x6f, 0x4e, 0x4e, 0x8f, 0xcd, 0x7f, 0x2f, 0xce, 0xf1, 0x9f,

  0xf1, 0x20, 0xf9, 0xea, 0xec, 0xfc, 0xeb, 0xe3, 0xf7, 0x83, 0xe4, 0xeb,
  0x0b, 0xfa, 0x19, 0xfd, 0xd7, 0xfc, 0x30, 0x39, 0x79, 0xfb, 0xf2, 0x7c,
  0xa0, 0xc3, 0xd1, 0x3f, 0xe8, 0x87, 0xa7, 0xaf, 0xcd, 0x0f, 0xf9, 0x0f,
  0xfa, 0xe7, 0xf9, 0xd9, 0xf9, 0x91, 0xfc, 0x41, 0xff, 0x7c, 0x7f, 0xf1,
  0xd6, 0xfc, 0xf6, 0xfd, 0xc5, 0xd8, 0xfc, 0x77, 0xfc, 0x8a, 0xfe, 0x83,
  0xaf, 0x8c, 0xdf, 0xfe, 0x19, 0xff, 0x19, 0xdb, 0xe1, 0xc6, 0x6f, 0xf9,
  0xe7, 0xf8, 0xd2, 0xc5, 0xf1, 0xe9, 0xbb, 0xe3, 0x8b, 0x24, 0x2d, 0x66,
  0xc9, 0x85, 0x79, 0x7e, 0x77, 0x94, 0x5c, 0x5c, 0x65, 0xc9, 0xb4, 0x5c,
  0x2e, 0xe9, 0x47, 0x66, 0x47, 0x66, 0x59, 0x9d, 0x5f, 0x16, 0x66, 0x29,
  0x66, 0xe5, 0x37, 0x65, 0xf5, 0x29, 0x49, 0x6e, 0xf2, 0xe6, 0xaa, 0x5c,
  0x37, 0x3a, 0xdc, 0xda, 0xec, 0x46, 0x92, 0x17, 0x4d, 0x56, 0xa5, 0x53,
  0xda, 0xe9, 0xd1, 0x67, 0xad, 0x5d, 0x2d, 0xe7, 0x66, 0x0f, 0x6b, 0xb3,
  0x69, 0x93, 0x75, 0xbd, 0x28, 0xd3, 0x19, 0x6d, 0x95, 0x79, 0x65, 0xbe,
  0x36, 0x9b, 0x5c, 0xe5, 0xd3, 0x4f, 0x75, 0xb2, 0xc8, 0x3f, 0x65, 0xb4,
  0x51, 0xb7, 0x77, 0xba, 0x71, 0x03, 0x1e, 0x34, 0x5d, 0x9b, 0x3d, 0x2d,
  0x86, 0x3a, 0x5c, 0x93, 0x4f, 0x53, 0xfa, 0x00, 0x76, 0x2e, 0x59, 0xaf,
  0x68, 0x34, 0xde, 0xb1, 0x64, 0x55, 0xd6, 0xe6, 0xa5, 0xf1, 0xf8, 0xd4,
  0xcc, 0xbc, 0x28, 0x32, 0xcc, 0xa3, 0x1e, 0x98, 0x7f, 0x94, 0x9f, 0xf2,
  0xcc, 0xfc, 0x65, 0x9e, 0x2f, 0xb2, 0x84, 0x4f, 0xd4, 0x0e, 0x47, 0x47,
  0x9b, 0x54, 0x59, 0xbd, 0x5e, 0x66, 0x66, 0xf7, 0xde, 0x66, 0x4d, 0xba,
  0xc8, 0x8b, 0x4f, 0xe6, 0xaf, 0xb4, 0xf0, 0x65, 0x59, 0x65, 0xa3, 0xe4,
  0x65, 0x9d, 0xdc, 0x95, 0x6b, 0xb3, 0xe0, 0xc5, 0xc2, 0x9c, 0x79, 0x96,
  0x4c, 0xb2, 0x45, 0x79, 0x33, 0xa0, 0x93, 0x4e, 0x8a, 0xf5, 0x72, 0x62,
  0x06, 0x28, 0xe7, 0x6e, 0xb8, 0xb4, 0x59, 0x9b, 0xe1, 0xf8, 0xe9, 0x65,
  0x6a, 0xd6, 0x64, 0xde, 0xad, 0x92, 0xab, 0xcc, 0xac, 0xb9, 0x5e, 0xe5,
  0xc5, 0xbf, 0xb5, 0xf7, 0xc5, 0x6c, 0xed, 0xaa, 0xbc, 0xc9, 0x2a, 0xb3,
  0xb3, 0x93, 0xbb, 0xc4, 0x6c, 0xc2, 0x84, 0x89, 0x70, 0x6e, 0x88, 0x2c,
  0x49, 0xcd, 0x10, 0x96, 0x00, 0x87, 0x55, 0xb6, 0x48, 0x89, 0x98, 0xec,
  0x37, 0x46, 0xe6, 0x10, 0x33, 0x4b, 0x6d, 0xf2, 0xea, 0xce, 0xd1, 0x2e,

  0x5e, 0x9e, 0x99, 0x95, 0xe4, 0x8b, 0xda, 0x1c, 0x03, 0x5d, 0x0a, 0x79,
  0x86, 0x0e, 0x95, 0xe8, 0xdf, 0xd0, 0xe6, 0x5d, 0xd1, 0xa4, 0xb7, 0xf8,

  0xbc, 0xd0, 0xe6, 0x70, 0x96, 0xad, 0xb2, 0x62, 0x96, 0x15, 0xcd, 0x28,
  0xf9, 0x4b, 0xb9, 0xde, 0x36, 0xdf, 0x9e, 0xe7, 0x66, 0x0f, 0x52, 0x19,
  0xca, 0x7c, 0xd9, 0x10, 0xc1, 0xb4, 0xca, 0x57, 0xde, 0x51, 0x94, 0x85,
  0x39, 0xf3, 0xe4, 0xfd, 0x9b, 0x57, 0xc9, 0xd1, 0xb3, 0xcf, 0x9f, 0xb8,
  0x33, 0x37, 0x03, 0x24, 0xd3, 0xb4, 0x30, 0x2b, 0xce, 0xa6, 0xf9, 0xfc,
  0x2e, 0x59, 0xae, 0x17, 0x4d, 0xbe, 0x32, 0xbb, 0x4f, 0x97, 0x8f, 0x2e,
  0xd0, 0x2a, 0xad, 0x9a, 0x9a, 0x88, 0x00, 0x3f, 0xc0, 0xda, 0x6f, 0xaa,
  0xbc, 0xa1, 0x8b, 0x84, 0xdf, 0x99, 0x19, 0x66, 0x4d, 0xad, 0xc3, 0x11,
  0xad, 0x99, 0xef, 0x4c, 0x0c, 0x6d, 0x99, 0xad, 0x4d, 0x6b, 0xf3, 0xd1,
  0xe7, 0x9f, 0x39, 0x0e, 0x72, 0xd5, 0x34, 0xab, 0xe7, 0x7b, 0x7b, 0x75,

  0xde, 0x64, 0xa3, 0xff, 0x34, 0xf7, 0x70, 0xd0, 0xdc, 0x94, 0x83, 0xe6,
  0xaa, 0xca, 0xb2, 0x7f, 0x8e, 0x0c, 0x0d, 0xdb, 0x27, 0xcd, 0x77, 0xef,
  0x64, 0x62, 0x97, 0x59, 0x63, 0xbe, 0xf0, 0xf7, 0x75, 0x56, 0xd0, 0x88,
  0x66, 0x1e, 0xe9, 0x62, 0x75, 0x95, 0x9a, 0xe3, 0xcc, 0x0c, 0x35, 0xd2,

  0xcd, 0x36, 0x04, 0x43, 0xb3, 0xe2, 0xbb, 0xfd, 0xd7, 0x1f, 0xc3, 0x8f,


  0xce, 0xf1, 0x4d, 0xf3, 0xdf, 0x51, 0x76, 0x9b, 0x2e, 0xcd, 0xda, 0xe8,
  0x53, 0x7b, 0x44, 0x62, 0x7f, 0x3d, 0x18, 0x1e, 0xec, 0xef, 0xff, 0x38,
  0x6a, 0x6e, 0x9b, 0x87, 0x3d, 0xbf, 0xbf, 0xef, 0xde, 0xa0, 0x47, 0x77,
  0x68, 0xbd, 0xc9, 0xc2, 0x90, 0x0c, 0x7d, 0xfc, 0x1f, 0x59, 0x55, 0xd6,
  0xbb, 0x0f, 0x1b, 0x29, 0x1d, 0xfe, 0xa3, 0xfd, 0xdd, 0x77, 0x59, 0x0d,
  0x9a, 0x71, 0x6b, 0x4d, 0xd2, 0xca, 0xd0, 0x6d, 0xd9, 0x38, 0xf6, 0x34,
  0x30, 0x97, 0xb2, 0xb1, 0x3b, 0x63, 0xee, 0x9c, 0x79, 0xda, 0x30, 0xb6,
  0x74, 0x41, 0x3c, 0xad, 0x4e, 0x8a, 0xec, 0xd6, 0xde, 0x72, 0x73, 0xfb,
  0xb3, 0x74, 0x7a, 0x95, 0x94, 0x86, 0xf8, 0xab, 0xc8, 0x11, 0xf8, 0x13,
  0x4a, 0xab, 0xe9, 0x55, 0x7e, 0x6d, 0x76, 0xe3, 0xd9, 0xb3, 0x27, 0x43,
  0xf3, 0x9f, 0x67, 0x3f, 0xee, 0x5d, 0x97, 0x0b, 0xb3, 0x39, 0x8f, 0x7e,
  0xdc, 0xa3, 0x23, 0xfe, 0xcf, 0x74, 0x30, 0x19, 0x4c, 0xff, 0x39, 0xba,
  0x6a, 0x96, 0x8b, 0x5e, 0xc2, 0x49, 0x0b, 0xf3, 0xff, 0xcb, 0x72, 0x5d,
  0x34, 0x96, 0x58, 0x0c, 0xcd, 0x35, 0x1e, 0x73, 0x32, 0xd7, 0xd5, 0xdc,
  0x51, 0x22, 0x6d, 0xa2, 0x21, 0xba, 0x75, 0xe6, 0x82, 0xba, 0xeb, 0xd8,
  0x4c, 0xaf, 0x68, 0xfd, 0x86, 0x7a, 0x52, 0xd9, 0x84, 0x26, 0x4f, 0xe9,
  0x66, 0x1a, 0x06, 0x41, 0x0c, 0x0b, 0x63, 0xf1, 0xd7, 0x72, 0xf3, 0x60,
  0x59, 0xcd, 0xb2, 0x6a, 0xd4, 0x9d, 0x86, 0xbd, 0xb2, 0xde, 0x37, 0x13,
  0x95, 0x28, 0xf4, 0x03, 0x4c, 0x6c, 0x99, 0xdf, 0x9a, 0x11, 0xc0, 0x30,
  0x0b, 0x4c, 0x9c, 0x47, 0x4b, 0x68, 0xc6, 0xf8, 0x8c, 0xbe, 0xef, 0xae,
  0xac, 0x99, 0x7a, 0x6b, 0xe9, 0xf8, 0xa8, 0x5b, 0x7c, 0x62, 0x0e, 0x6f,
  0x65, 0xde, 0x5a, 0x13, 0x5f, 0xc5, 0xb5, 0xa6, 0x61, 0x0c, 0x43, 0xb8,
  0x34, 0xe7, 0x62, 0xce, 0x82, 0xa8, 0x98, 0x8e, 0xea, 0x2e, 0x79, 0x67,
  0x08, 0x86, 0x99, 0x91, 0x47, 0xec, 0x8b, 0xac, 0x69, 0xee, 0x3d, 0x26,
  0x47, 0xb1, 0xcf, 0x0f, 0x02, 0xa2, 0xed, 0x7b, 0xde, 0xd0, 0xd9, 0xf3,
  0xc3, 0xf6, 0xc3, 0xdf, 0x19, 0x26, 0xed, 0xae, 0x8b, 0xf9, 0xfa, 0x7f,

  0xfe, 0xd3, 0xa3, 0xba, 0x1b, 0xfa, 0x6d, 0x5e, 0x5c, 0x97, 0x9f, 0xcc,
  0x16, 0x41, 0x8a, 0xa6, 0xed, 0xdd, 0x24, 0x3e, 0xb4, 0x5c, 0x35, 0x56,
  0x3c, 0x11, 0x39, 0x9a, 0x1f, 0x4d, 0xd2, 0xc9, 0xe2, 0x2e, 0xb9, 0x4a,
  0xaf, 0x33, 0x5a, 0xef, 0xca, 0xd0, 0x29, 0xed, 0x80, 0x11, 0x1b, 0x0b,
  0xf0, 0x31, 0x61, 0x0c, 0xb3, 0x72, 0x3d, 0x31, 0xcc, 0xe5, 0xef, 0xeb,
  0xb2, 0xe1, 0x8d, 0x49, 0xaf, 0xcb, 0x7c, 0xd6, 0x92, 0xc5, 0x57, 0x19,
  0x31, 0x34, 0xfa, 0x30, 0x84, 0x94, 0x61, 0xa8, 0x34, 0x53, 0x5c, 0xb4,
  0xbc, 0x21, 0x71, 0x67, 0x58, 0x61, 0xba, 0xa8, 0xcb, 0x24, 0xb9, 0x2c,
  0xe9, 0x96, 0x80, 0x01, 0x83, 0xcc, 0xcd, 0xa1, 0x5c, 0xa5, 0x24, 0xd5,
  0x8c, 0x00, 0xb3, 0xf7, 0xa0, 0xca, 0xc0, 0x8b, 0x71, 0x52, 0xe9, 0x62,
  0xc0, 0xd2, 0x8b, 0xde, 0x91, 0xad, 0x4a, 0xb6, 0xff, 0xcb, 0xf6, 0x20,
  0xd9, 0xfe, 0xf7, 0x6d, 0xd0, 0xc3, 0xf6, 0x7f, 0xdd, 0x76, 0xe7, 0x6c,
  0x94, 0xb1, 0xeb, 0x7c, 0x96, 0x31, 0x49, 0x9c, 0x9c, 0x5f, 0x3f, 0x49,
  0xfe, 0x41, 0xba, 0x83, 0xe1, 0xb5, 0xd9, 0xad, 0x12, 0xa4, 0xae, 0xcd,
  0xbc, 0x9d, 0x18, 0xa6, 0x9b, 0xae, 0x48, 0x89, 0xc8, 0xaa, 0xa9, 0xa1,
  0xde, 0xf4, 0xd2, 0xd0, 0xab, 0x91, 0xc5, 0x3a, 0x1c, 0x8d, 0x4f, 0xaf,

  0xf0, 0xb2, 0x0c, 0x83, 0x4c, 0x8a, 0x74, 0x69, 0x6e, 0xc4, 0x29, 0xcd,
  0x28, 0x2f, 0xc2, 0xc3, 0xfc, 0xeb, 0x3c, 0xfb, 0x7c, 0xff, 0xf9, 0xf3,
  0xa3, 0xdf, 0x1f, 0x3e, 0xce, 0x9a, 0xab, 0xfd, 0x1f, 0xf7, 0xec, 0x23,
  0x27, 0x73, 0x6c, 0xbb, 0x92, 0x9f, 0x4e, 0xc2, 0x48, 0x79, 0x2b, 0x25,
  0xcc, 0xfb, 0xe6, 0xef, 0xd9, 0x3c, 0xbf, 0x1d, 0xa8, 0xbe, 0xc4, 0x77,

  0x2e, 0x35, 0xa4, 0x66, 0xce, 0x8f, 0x58, 0x84, 0x0e, 0x77, 0xb9, 0xce,

  0x6a, 0xb3, 0x93, 0x37, 0x57, 0x69, 0x93, 0xd8, 0x01, 0xf8, 0x64, 0x97,
  0xf9, 0xe5, 0x55, 0x93, 0xdc, 0xa4, 0x24, 0x6c, 0x4e, 0x1a, 0x1e, 0x82,
  0xa4, 0xbc, 0x11, 0x31, 0xf3, 0xd4, 0xc8, 0x0a, 0x3a, 0x43, 0x88, 0xf4,
  0x89, 0xd3, 0x30, 0x1a, 0x43, 0xe6, 0x7c, 0x20, 0x4e, 0x9d, 0x9a, 0xa4,
  0x35, 0x5d, 0xda, 0xc2, 0x30, 0x87, 0xc6, 0xe8, 0x08, 0x6b, 0xfa, 0xd7,
  0x95, 0xd1, 0x02, 0xb0, 0x07, 0x32, 0x51, 0x08, 0xca, 0x37, 0x74, 0x9c,
  0x74, 0x36, 0x56, 0x78, 0x99, 0x43, 0x1a, 0xc8, 0x31, 0xdb, 0x37, 0x6a,
  0x73, 0xe1, 0x0c, 0x67, 0xb2, 0x94, 0xb1, 0x45, 0x4c, 0x76, 0x8b, 0xd7,

  0x89, 0x39, 0xa6, 0x35, 0x29, 0x0a, 0xac, 0x0e, 0x98, 0xc9, 0x7b, 0x8b,
  0x35, 0x9b, 0x96, 0x7e, 0x22, 0x95, 0xa4, 0xa3, 0xf8, 0xe0, 0xb5, 0x59,
  0x69, 0x88, 0xcc, 0xcc, 0xd6, 0x30, 0x63, 0x5a, 0x19, 0xb1, 0x58, 0xec,
  0x0a, 0x88, 0xdc, 0x8c, 0x49, 0x3f, 0xcc, 0x1b, 0x92, 0x31, 0xd0, 0x61,
  0xcd, 0x7c, 0xcd, 0xa6, 0x40, 0x11, 0x35, 0x8c, 0xda, 0x5b, 0x3f, 0xc4,
  0xa3, 0x79, 0x36, 0xb9, 0x36, 0x5a, 0x8a, 0x51, 0x48, 0x33, 0xfb, 0x16,
  0xe4, 0xf9, 0x94, 0x74, 0xa3, 0x85, 0xb9, 0x2f, 0xd3, 0xb2, 0xaa, 0x48,
  0xdf, 0xa7, 0x13, 0x9c, 0x30, 0x13, 0x5d, 0x66, 0x46, 0x8d, 0xf0, 0xb7,
  0x33, 0x27, 0x81, 0x66, 0xf8, 0x8b, 0xd1, 0x4b, 0xc0, 0x41, 0x8c, 0xfe,
  0x00, 0x9e, 0x8f, 0x85, 0x63, 0x76, 0x34, 0xf6, 0x74, 0x9a, 0xad, 0x9a,
  0x3a, 0xb6, 0x26, 0x3d, 0x70, 0x33, 0x9d, 0x2a, 0xa3, 0x9d, 0xf7, 0x95,
  0x2e, 0xec, 0xab, 0x15, 0xfa, 0xd0, 0xbb, 0x54, 0x8f, 0x31, 0x7a, 0x58,
  0x6d, 0x77, 0xad, 0x01, 0x6d, 0x18, 0x36, 0x86, 0x3d, 0x5f, 0xd2, 0x44,
  0xe9, 0xe1, 0x9a, 0x6f, 0x2a, 0x58, 0x33, 0x1d, 0x24, 0x6b, 0xda, 0xfc,
  0x5d, 0x12, 0x5d, 0x66, 0x3f, 0xed, 0xe0, 0xe6, 0xab, 0xf6, 0x4c, 0xe9,
  0xf3, 0xa4, 0xe2, 0x1b, 0x49, 0x3e, 0xab, 0xaf, 0x8c, 0xf2, 0x55, 0xcb,
  0xcd, 0xce, 0x97, 0x86, 0x66, 0xae, 0xe9, 0x7c, 0x57, 0x59, 0x36, 0x1b,
  0x25, 0x67, 0x73, 0xe2, 0xaa, 0x95, 0x99, 0x74, 0x83, 0x5f, 0x93, 0x54,
  0x31, 0xfb, 0x36, 0x83, 0x12, 0x6f, 0xaf, 0x16, 0x4f, 0xc5, 0x93, 0x0e,
  0xe0, 0xe4, 0xa9, 0xf9, 0x89, 0x99, 0xed, 0xa2, 0x2d, 0x82, 0x70, 0x0f,
  0x0d, 0xf7, 0xa6, 0xe9, 0x4d, 0xb2, 0x04, 0x94, 0x38, 0xc9, 0x9a, 0x9b,
  0x2c, 0xb3, 0xc3, 0xd5, 0x99, 0x11, 0x7b, 0x74, 0x68, 0xac, 0xf9, 0x81,

  0x19, 0xd2, 0xd6, 0x9e, 0xbf, 0x3f, 0xfb, 0xea, 0xfd, 0xf1, 0x78, 0x9c,
  0xbc, 0x3d, 0xbe, 0x38, 0x7e, 0xdf, 0xda, 0xe9, 0xa2, 0xac, 0x96, 0x38,
  0xd1, 0x59, 0x5e, 0xaf, 0x16, 0xe9, 0x1d, 0x1d, 0xb5, 0x59, 0xc9, 0x65,
  0x45, 0x37, 0x6b, 0x99, 0x91, 0x54, 0x98, 0xad, 0xc1, 0xc9, 0x8c, 0x38,
  0x32, 0xc7, 0x27, 0x1a, 0x2f, 0x31, 0x13, 0xa8, 0xc9, 0xc5, 0xa5, 0xdb,
  0x69, 0xc3, 0x71, 0x44, 0x92, 0x92, 0x28, 0xb5, 0xe7, 0x41, 0xaa, 0x27,
  0x8c, 0x9b, 0x81, 0xfb, 0x19, 0x6f, 0x13, 0x8b, 0x36, 0x43, 0xb3, 0xf9,
  0x12, 0xcc, 0xce, 0xfc, 0xe9, 0xb4, 0xcd, 0x6c, 0x6e, 0x54, 0x6d, 0x23,
  0x5d, 0xd9, 0x52, 0xe8, 0xce, 0x49, 0x67, 0x6b, 0xf5, 0x63, 0x43, 0x86,
  0xc4, 0x9a, 0x69, 0x40, 0x9e, 0x0a, 0x7f, 0xc1, 0x32, 0x31, 0xa3, 0x93,
  0x10, 0xef, 0x93, 0xc7, 0x56, 0x34, 0x85, 0xcc, 0x9c, 0xec, 0x8c, 0x87,
  0xaf, 0xd7, 0x73, 0x5c, 0xe4, 0x64, 0xc7, 0x68, 0xe6, 0x6f, 0x8d, 0xb5,


  0x64, 0x2c, 0x96, 0x41, 0x72, 0xbe, 0x8b, 0xf7, 0x0e, 0xf6, 0x0f, 0x1f,

  0x31, 0x23, 0x18, 0xe9, 0x70, 0x6f, 0x3c, 0x46, 0x7c, 0xf0, 0x89, 0x8e,
  0x97, 0x1f, 0xa2, 0xc1, 0x47, 0xc9, 0xc1, 0x5b, 0xfe, 0xc9, 0xa3, 0xcf,

  0x1f, 0x3f, 0x7d, 0x22, 0x3f, 0x6c, 0x13, 0xb8, 0x9d, 0x3f, 0xa8, 0x03,


  0x96, 0x1f, 0x99, 0x82, 0x66, 0x26, 0x66, 0x75, 0xcb, 0xbc, 0x30, 0xd7,
  0xc4, 0x5c, 0x2b, 0xe1, 0x55, 0x44, 0xcf, 0x66, 0xf2, 0x73, 0xe6, 0x6c,
  0x72, 0xae, 0x6d, 0x93, 0xd2, 0xbc, 0x6c, 0x48, 0xd6, 0xf0, 0x72, 0x7b,
  0x48, 0xac, 0x26, 0x34, 0x34, 0x91, 0x74, 0x42, 0x0c, 0x96, 0xec, 0x2a,

  0xa3, 0x00, 0x67, 0xd1, 0xaf, 0x59, 0xa9, 0x68, 0xde, 0x30, 0x73, 0x33,
  0x32, 0x91, 0xc4, 0x5c, 0xb8, 0xef, 0x86, 0x15, 0x80, 0x43, 0xde, 0xe4,
  0x35, 0x58, 0xc3, 0x4d, 0xb9, 0x5e, 0x18, 0x2b, 0x86, 0x1e, 0x58, 0xaf,
  0xf0, 0x82, 0xf9, 0xd4, 0xca, 0xf1, 0x00, 0xa3, 0xb1, 0x10, 0xed, 0x74,
  0x47, 0x31, 0x53, 0x33, 0xff, 0x5c, 0x19, 0x52, 0xe2, 0xe9, 0x8c, 0xba,
  0x12, 0x02, 0xbc, 0x2f, 0xa0, 0x44, 0xba, 0xf3, 0x60, 0xda, 0xe7, 0x67,

  0xe3, 0x0b, 0xd2, 0x00, 0xce, 0x3f, 0x5c, 0x98, 0x81, 0x8c, 0x0a, 0x50,
  0x37, 0x86, 0x28, 0xe9, 0xc5, 0x22, 0x83, 0x09, 0xa9, 0xc3, 0x19, 0xda,

  0xcb, 0xc1, 0xa8, 0xa0, 0xd6, 0xe8, 0x27, 0x79, 0x8e, 0x6c, 0x63, 0xd3,

  0x15, 0x54, 0x0b, 0x9b, 0x65, 0xb8, 0x7d, 0x27, 0xd9, 0xf9, 0xd3, 0xae,
  0xa1, 0xd9, 0x61, 0x69, 0x77, 0x67, 0x38, 0x94, 0x57, 0xcd, 0xb7, 0xeb,
  0x7c, 0x99, 0x2f, 0xd2, 0xca, 0x9b, 0x3a, 0x73, 0x54, 0xba, 0x9f, 0x96,
  0xaf, 0x4c, 0x0d, 0xd5, 0x60, 0xda, 0xce, 0x94, 0xa4, 0x3d, 0x04, 0x57,
  0x72, 0x47, 0x35, 0x23, 0x85, 0x00, 0x1a, 0xf3, 0x2a, 0xb7, 0x5b, 0x47,
  0x67, 0x46, 0xec, 0xaa, 0xb5, 0x51, 0xdd, 0x73, 0x0b, 0x36, 0x8e, 0x24,
  0x12, 0x3c, 0x15, 0x76, 0xeb, 0x92, 0xad, 0x49, 0x5a, 0x6d, 0x25, 0x96,
  0x17, 0xf3, 0xdd, 0xa4, 0x1b, 0x52, 0x65, 0x97, 0x6b, 0xb3, 0x82, 0x84,
  0x77, 0x97, 0x56, 0xfa, 0x3b, 0x6f, 0xa5, 0x3a, 0xc0, 0x70, 0x42, 0x8f,



  0xe4, 0x35, 0x9b, 0x99, 0x73, 0x63, 0xb7, 0xd0, 0xa5, 0x51, 0xfd, 0x15,
  0x1a, 0x8d, 0x50, 0x4c, 0x84, 0x60, 0x3c, 0xbd, 0xd6, 0x5c, 0x95, 0x26,

  0x33, 0x8c, 0x06, 0xec, 0x9f, 0x9e, 0x1c, 0x9a, 0x23, 0x1b, 0x0e, 0x6b,
  0xb3, 0xff, 0xa4, 0x7b, 0xaf, 0xc4, 0xa6, 0x3f, 0x83, 0xc3, 0xc4, 0xfa,
  0x56, 0xce, 0x44, 0x07, 0x86, 0xd8, 0xe4, 0x77, 0xc1, 0x42, 0x8d, 0xa2,
  0x7a, 0x63, 0x3e, 0x9c, 0x9a, 0x23, 0x33, 0x17, 0xee, 0x2d, 0x6d, 0x14,
  0xfb, 0x46, 0x12, 0xab, 0x36, 0x83, 0x32, 0x72, 0xba, 0xf7, 0xa9, 0xd3,
  0x65, 0x66, 0xb3, 0x9c, 0x7e, 0x6b, 0xee, 0x97, 0x91, 0x70, 0xeb, 0x0c,
  0xb6, 0x87, 0x6c, 0xea, 0xd2, 0x6d, 0x26, 0xcc, 0xd8, 0xfa, 0xaa, 0x24,
  0x33, 0x71, 0x8b, 0x79, 0xf1, 0x90, 0xbe, 0xb5, 0x05, 0x79, 0xbe, 0x4c,
  0xf4, 0x5b, 0xf2, 0x29, 0xb3, 0x8e, 0x99, 0xaf, 0x9b, 0x0d, 0x8c, 0xa0,
  0xb9, 0xf3, 0x8c, 0x04, 0xf0, 0x6a, 0x9e, 0x7b, 0x65, 0x15, 0x1e, 0x23,
  0x52, 0x57, 0xa4, 0x4c, 0x09, 0x0f, 0x87, 0x30, 0xc4, 0x95, 0xad, 0x79,
  0x6a, 0x03, 0xb3, 0xb7, 0xf4, 0xe4, 0xe5, 0x95, 0x3e, 0xea, 0x09, 0xd6,

  0xd4, 0x2c, 0x8e, 0x84, 0x03, 0xd9, 0xd3, 0x33, 0xe5, 0xfb, 0x65, 0xc5,
  0xcc, 0x6c, 0x51, 0x1a, 0x5a, 0xde, 0x62, 0x95, 0x55, 0xa6, 0x4d, 0xb3,
  0xa6, 0x59, 0xd2, 0x8e, 0xb3, 0x9f, 0xa9, 0xb4, 0x67, 0x63, 0x27, 0x2d,
  0xfb, 0x55, 0xdf, 0x3b, 0x35, 0xb7, 0x51, 0x63, 0xec, 0x91, 0x11, 0x9d,
  0x35, 0xd1, 0xb1, 0xee, 0x3c, 0xc8, 0xdb, 0x88, 0xba, 0xed, 0x86, 0xef,
  0x23, 0x6c, 0xac, 0xce, 0xce, 0xd7, 0x20, 0x1f, 0x11, 0x64, 0x76, 0x65,
  0x66, 0x45, 0xb3, 0x3c, 0x05, 0x9d, 0xf0, 0xd1, 0x40, 0x19, 0x71, 0x16,
  0x61, 0x44, 0x0f, 0xbe, 0xeb, 0x1a, 0x74, 0x8b, 0x85, 0x2f, 0x92, 0x74,
  0x4e, 0xc3, 0x33, 0xb3, 0xf6, 0x53, 0xac, 0x63, 0x78, 0x9d, 0xd0, 0xf5,
  0x33, 0x66, 0x03, 0xdd, 0xc5, 0xe1, 0xd9, 0xe9, 0xb5, 0x77, 0x8d, 0xc8,
  0x72, 0x2f, 0x48, 0x4f, 0x19, 0xc0, 0x3b, 0x32, 0x29, 0x4b, 0x63, 0x26,
  0xbb, 0xa5, 0x91, 0x3c, 0xc8, 0x0a, 0xa2, 0x76, 0x39, 0x51, 0xc3, 0x12,
  0x56, 0x96, 0xdf, 0xde, 0x19, 0x73, 0x29, 0xbd, 0x4c, 0x73, 0x4b, 0x6f,
  0x72, 0x33, 0x66, 0x89, 0x3e, 0x5c, 0x94, 0xf2, 0x3c, 0x1d, 0x15, 0xa9,
  0x40, 0xc2, 0xb7, 0xd6, 0x35, 0x5f, 0x1f, 0xb3, 0x2a, 0xc3, 0x79, 0xc0,
  0x3b, 0x64, 0x5c, 0x52, 0x1b, 0x75, 0xb8, 0x09, 0x14, 0x65, 0xd2, 0x39,
  0xc1, 0x7c, 0xa1, 0x41, 0x9a, 0x11, 0xb7, 0x46, 0xc9, 0xd7, 0xe5, 0x4d,
  0x06, 0x5f, 0x21, 0xf4, 0xfb, 0x9c, 0xbc, 0x5d, 0x46, 0x15, 0xbc, 0xc9,
  0x92, 0xa5, 0x51, 0x3d, 0xcd, 0x6e, 0x42, 0xfb, 0xc0, 0xcf, 0x3c, 0xf3,
  0xd0, 0x50, 0xf8, 0x0d, 0xef, 0x92, 0x5d, 0x85, 0x3d, 0xca, 0x39, 0x5f,
  0x89, 0x64, 0x07, 0xea, 0xcd, 0x94, 0x76, 0x6b, 0xd5, 0xb8, 0x55, 0xd8,
  0x0d, 0xb9, 0x49, 0x6b, 0xef, 0x72, 0x65, 0x30, 0x4d, 0x9f, 0x8e, 0x0e,
  0x9e, 0x8d, 0xf6, 0x47, 0xc6, 0x10, 0xc9, 0xae, 0xf3, 0x72, 0x5d, 0x9b,
  0x4f, 0xd3, 0x34, 0xdc, 0x3b, 0x19, 0xdd, 0xca, 0xa6, 0xbc, 0xbc, 0x5c,
  0xb0, 0xce, 0xb3, 0x57, 0xce, 0xe7, 0xac, 0xfb, 0x18, 0x4d, 0xcf, 0xea,
  0xcf, 0x6c, 0x01, 0xd1, 0xce, 0xc8, 0x75, 0x63, 0x96, 0x1a, 0x9a, 0xc8,
  0x23, 0xe7, 0xbc, 0x18, 0x0e, 0xd3, 0x49, 0xdd, 0x90, 0x31, 0x35, 0x5c,
  0x17, 0xf9, 0xed, 0xb0, 0x2e, 0xa7, 0x9f, 0xcc, 0xa1, 0xbc, 0x58, 0xa5,

  0xcd, 0xd5, 0x9f, 0x3a, 0x2e, 0xe1, 0x1d, 0x92, 0x25, 0xbb, 0x49, 0xf2,
  0x8a, 0xd5, 0x4a, 0xda, 0x89, 0x8a, 0xef, 0x9b, 0x39, 0x4d, 0x19, 0x25,
  0xf9, 0x60, 0x46, 0x31, 0xb4, 0xbc, 0x34, 0x87, 0x9a, 0xf0, 0x60, 0x03,
  0x65, 0xa5, 0x9d, 0xe1, 0xe0, 0x70, 0x24, 0x31, 0x02, 0xbf, 0x9d, 0xb9,
  0x3a, 0x65, 0xf5, 0xc9, 0x28, 0xda, 0xef, 0x8c, 0xc9, 0xf8, 0x9c, 0xfe,
  0x6d, 0x58, 0x58, 0x83, 0x2d, 0x17, 0xc9, 0x6a, 0x66, 0xc4, 0xcc, 0x98,
  0x2c, 0xf2, 0x74, 0x32, 0xec, 0x0c, 0x27, 0xdf, 0x97, 0x8f, 0x26, 0x6a,
  0x6b, 0x28, 0x29, 0x25, 0xdb, 0x5f, 0x1a, 0xfb, 0xef, 0x8a, 0x8f, 0x1d,
  0x03, 0xf2, 0x1a, 0x0d, 0x85, 0x5e, 0x1a, 0x0b, 0xa2, 0x68, 0xba, 0xc3,
  0x5d, 0x41, 0x54, 0x93, 0x94, 0x61, 0x63, 0x17, 0x44, 0x22, 0x1e, 0x20,
  0x6b, 0x7f, 0x8e, 0x3e, 0xeb, 0xbc, 0xf6, 0xd2, 0x9d, 0xe9, 0xe3, 0x23,
  0x73, 0xa6, 0xfe, 0x46, 0x2f, 0x9a, 0x61, 0x7d, 0x3d, 0x4d, 0x5e, 0x40,
  0xfb, 0x26, 0x32, 0x8d, 0x6e, 0xf0, 0x78, 0x37, 0xf9, 0xee, 0xe5, 0xfb,
  0x77, 0x27, 0xef, 0xbe, 0x7a, 0xce, 0x1f, 0x15, 0x4a, 0x33, 0x7f, 0xcb,
  0x6e, 0x57, 0xe4, 0x07, 0xa3, 0xd9, 0x1a, 0x51, 0x96, 0x24, 0xaf, 0x4b,
  0xd8, 0x23, 0x60, 0x98, 0x24, 0xb0, 0x3a, 0xc3, 0x19, 0xd1, 0x32, 0x5b,
  0x77, 0x7c, 0xbf, 0x96, 0x61, 0xbb, 0x81, 0xf9, 0x7a, 0xf2, 0x26, 0xeb,
  0x1c, 0x0d, 0x7f, 0x64, 0xf7, 0x31, 0xf4, 0xa5, 0x11, 0x49, 0x4b, 0x98,
  0xf9, 0x3a, 0xf3, 0xee, 0x97, 0x4a, 0x63, 0xec, 0xb2, 0x9d, 0x6f, 0xc6,
  0xbb, 0x35, 0xd7, 0x86, 0x76, 0x49, 0x07, 0x9b, 0x1a, 0x76, 0x94, 0x89,
  0xe2, 0x00, 0x56, 0x07, 0xb3, 0x41, 0x58, 0xd9, 0x28, 0x79, 0x39, 0xef,
  0x1e, 0x25, 0xe9, 0x2e, 0xa4, 0xd5, 0xab, 0x14, 0x9c, 0x39, 0x45, 0x98,


  0xbd, 0xbc, 0x3c, 0xa2, 0x0e, 0x53, 0x9b, 0xf3, 0x99, 0xa9, 0xa4, 0xa7,
  0xcf, 0x74, 0x86, 0x83, 0xe9, 0x09, 0x36, 0x43, 0x4a, 0x61, 0x4e, 0x07,
  0x4a, 0xa6, 0x9f, 0x61, 0xd4, 0xcb, 0x72, 0x06, 0x3b, 0x22, 0xd8, 0x9f,
  0xb1, 0x75, 0xf8, 0x6c, 0x6d, 0xb9, 0x55, 0x27, 0x3b, 0xe4, 0xfa, 0x33,
  0x54, 0x50, 0x5c, 0x36, 0x57, 0xbb, 0xce, 0xad, 0x41, 0x6a, 0x8a, 0x59,
  0xf0, 0x9e, 0x99, 0x08, 0xd6, 0x5d, 0x74, 0x49, 0x1d, 0x6e, 0x67, 0x68,
  0x9e, 0x7f, 0x5b, 0xd7, 0x0d, 0xac, 0x21, 0x11, 0xff, 0xbc, 0x12, 0x33,
  0xb3, 0x65, 0xb6, 0x2c, 0xab, 0xbb, 0x60, 0x22, 0x27, 0x50, 0x3e, 0xc8,
  0xf0, 0x94, 0xd3, 0x22, 0x3a, 0x80, 0x7c, 0x54, 0x97, 0x20, 0x19, 0x01,
  0xe4, 0x53, 0xb7, 0x76, 0x20, 0x94, 0x26, 0xc3, 0x80, 0x8c, 0xfd, 0xed,
  0x1c, 0xb6, 0x6a, 0x40, 0xc1, 0xd1, 0xc3, 0xb6, 0xbd, 0x58, 0x53, 0x13,
  0x71, 0xe1, 0xd0, 0xff, 0x2f, 0x52, 0xe2, 0x3a, 0x45, 0xd6, 0x3a, 0x21,
  0x48, 0x0f, 0x5e, 0xda, 0x26, 0x72, 0x7f, 0xf2, 0x68, 0x74, 0xd0, 0x22,
  0xf7, 0xe2, 0x8e, 0x02, 0x05, 0x71, 0x1e, 0x72, 0x61, 0x14, 0xc7, 0x9a,
  0xe7, 0x6c, 0x76, 0x71, 0x9e, 0x5f, 0xae, 0xab, 0x8c, 0x35, 0x38, 0xc4,
  0x16, 0x34, 0xa4, 0x40, 0x4a, 0xd1, 0x55, 0x09, 0x4f, 0xbc, 0x11, 0xa6,
  0xd9, 0x62, 0x3e, 0xe8, 0x0c, 0x07, 0xf3, 0x05, 0xd4, 0x4f, 0xd3, 0x07,
  0xd3, 0x34, 0x66, 0x0a, 0x06, 0x2b, 0x32, 0x51, 0x62, 0x97, 0x86, 0xa1,
  0x24, 0xe4, 0x8a, 0x4e, 0xa6, 0x8b, 0x34, 0x5f, 0x82, 0x4c, 0xc5, 0xd5,
  0x3a, 0x8a, 0x5d, 0x0b, 0x32, 0x30, 0xe8, 0xed, 0x09, 0x99, 0xbe, 0x55,
  0x4d, 0x92, 0x19, 0xa7, 0xaa, 0x9a, 0x33, 0x1b, 0x96, 0x57, 0xd9, 0xf4,
  0x93, 0x32, 0x2f, 0x55, 0x39, 0xbb, 0x74, 0x4c, 0x31, 0x06, 0xd8, 0xd7,
  0xe6, 0xa9, 0x75, 0x4d, 0xd7, 0xa4, 0xae, 0x73, 0x72, 0x9f, 0x91, 0x39,
  0xb8, 0x9e, 0xc2, 0x4a, 0xc4, 0x85, 0x31, 0xd4, 0xad, 0x1c, 0x30, 0x31,
  0x2c, 0xb5, 0x98, 0x0d, 0x9b, 0x2a, 0x5f, 0xf5, 0xcd, 0x8e, 0x4f, 0xa5,
  0xad, 0xa0, 0xd6, 0x62, 0xb1, 0xc3, 0x18, 0x66, 0xf3, 0x78, 0x9a, 0x74,
  0x76, 0xb3, 0x4b, 0x94, 0xd8, 0xdb, 0x01, 0xf9, 0x83, 0x72, 0xa3, 0x2f,
  0xb0, 0xb1, 0x04, 0x77, 0xa7, 0x31, 0x8d, 0x44, 0x70, 0x19, 0x2b, 0x2e,
  0x9f, 0x42, 0x09, 0xca, 0x2f, 0x33, 0x8a, 0xe5, 0x18, 0x59, 0xd6, 0x2c,
  0x8c, 0x6a, 0x14, 0xd2, 0xb8, 0xf9, 0x4d, 0x76, 0x59, 0x36, 0xa4, 0x8d,
  0x04, 0x64, 0xf2, 0x01, 0x7c, 0xde, 0xd2, 0x84, 0xaa, 0xfd, 0xbe, 0x4e,
  0x96, 0xb3, 0x3e, 0x6e, 0x3e, 0xcd, 0x6a, 0xbf, 0x78, 0x1c, 0xea, 0xc6,
  0xdc, 0xac, 0xee, 0xa9, 0x9b, 0xd1, 0xa6, 0x19, 0x6c, 0x2f, 0x28, 0x8e,
  0xaa, 0xb7, 0xaa, 0xc2, 0x4f, 0x2c, 0x81, 0x74, 0xe4, 0xe6, 0x26, 0x9f,
  0x66, 0xea, 0x8e, 0x13, 0x1f, 0xf5, 0x22, 0x0f, 0x59, 0xfd, 0x92, 0xee,
  0xa4, 0x79, 0x89, 0x75, 0x72, 0xf2, 0x9e, 0xdc, 0xe4, 0xa4, 0xb3, 0x0b,
  0xd3, 0x83, 0x4a, 0x26, 0xe2, 0x20, 0xad, 0x72, 0xb8, 0x8a, 0xcc, 0x70,
  0x32, 0x4f, 0xcf, 0xa2, 0xf7, 0xef, 0x18, 0xcf, 0x1b, 0xef, 0x8b, 0x19,
  0xe3, 0xcc, 0x17, 0x5c, 0xae, 0x79, 0x9a, 0x2f, 0x22, 0xfb, 0x04, 0x46,
  0x76, 0x99, 0xc1, 0xab, 0xc6, 0x67, 0xb0, 0xa6, 0x4d, 0xa7, 0xb8, 0x5b,
  0xc8, 0xa4, 0xb2, 0x8c, 0xed, 0x09, 0x18, 0x1f, 0xb7, 0x77, 0x76, 0x7b,
  0xa1, 0xb4, 0xf1, 0xd9, 0xc9, 0xdf, 0xf9, 0xf8, 0xbc, 0xeb, 0x99, 0xd2,
  0xa8, 0xe9, 0x8a, 0x02, 0x4c, 0xdd, 0x1b, 0x4a, 0xa6, 0x17, 0xc5, 0x28,
  0x77, 0xd5, 0x83, 0x9c, 0x89, 0xff, 0xdc, 0xc6, 0xf6, 0xc0, 0x90, 0x88,
  0xa7, 0xc9, 0x15, 0xe6, 0x71, 0x84, 0x03, 0x77, 0x79, 0xb9, 0x91, 0xaf,
  0x46, 0x1c, 0x83, 0x87, 0xb6, 0x28, 0xb6, 0x34, 0xec, 0xcb, 0x46, 0x98,


  0xc8, 0xe3, 0x2b, 0xbc, 0x0e, 0x86, 0x16, 0xee, 0x6c, 0x8c, 0x97, 0x93,
  0xe9, 0x47, 0x7a, 0x32, 0x4b, 0x99, 0x41, 0xc2, 0x7a, 0x1d, 0x33, 0xab,
  0x29, 0xfb, 0x80, 0x45, 0x87, 0x60, 0x51, 0x83, 0xa9, 0xce, 0x17, 0xe9,


  0x25, 0xdc, 0x6b, 0x97, 0xdd, 0x1b, 0x5a, 0x94, 0x12, 0xe8, 0xab, 0x4b,
  0xc3, 0xde, 0x69, 0xd5, 0xe2, 0xda, 0xaa, 0x93, 0x1d, 0x43, 0x64, 0x8b,
  0x35, 0xc4, 0xfd, 0x99, 0x59, 0xde, 0x78, 0xfc, 0xf5, 0xae, 0xcf, 0xde,
  0xb0, 0xbb, 0x0f, 0x61, 0x6e, 0xc4, 0x9d, 0x60, 0x84, 0xff, 0x99, 0xcf,
  0xa3, 0xcd, 0xe0, 0xac, 0x75, 0xe7, 0x6b, 0x72, 0x4a, 0x97, 0xb4, 0x0a,
  0x72, 0x85, 0x8e, 0xec, 0xd5, 0xa7, 0x27, 0xd5, 0x23, 0xcb, 0x84, 0xdd,
  0x52, 0x10, 0xd6, 0xf5, 0x1a, 0xce, 0x29, 0xc8, 0xe3, 0xee, 0x70, 0x86,
  0xd9, 0x1b, 0x56, 0xb4, 0x2e, 0xe8, 0x4f, 0xab, 0x43, 0xe7, 0xb0, 0xe6,
  0xe8, 0x2c, 0x2a, 0x72, 0x81, 0x93, 0x1d, 0x6c, 0x75, 0x50, 0xc3, 0x53,
  0x74, 0x6c, 0xda, 0xcb, 0xee, 0x25, 0x34, 0x1a, 0x1a, 0xd8, 0x8d, 0x11,
  0xa1, 0x46, 0x30, 0xd3, 0x85, 0xeb, 0xe1, 0xde, 0x3b, 0xf5, 0xda, 0xf0,
  0x17, 0x32, 0x1d, 0x84, 0x79, 0x10, 0x3d, 0x76, 0x67, 0xc7, 0xec, 0xc5,

  0x48, 0x1a, 0x8f, 0x8f, 0xec, 0xfe, 0xd2, 0x17, 0x04, 0x87, 0xe6, 0x9f,
  0xa2, 0x11, 0xbf, 0x99, 0x31, 0xc8, 0xa0, 0x92, 0x05, 0xda, 0xd8, 0xc5,
  0xe9, 0x38, 0x76, 0x98, 0xed, 0xf8, 0x14, 0xbd, 0x4f, 0xcc, 0x96, 0xdc,
  0x88, 0xec, 0x56, 0x2d, 0xc9, 0x28, 0xf0, 0x62, 0x54, 0xbe, 0xbf, 0x6f,
  0x95, 0x51, 0x30, 0x8b, 0xed, 0x65, 0x0e, 0x7e, 0x13, 0x03, 0x23, 0x61,

  0x4d, 0xda, 0x89, 0x75, 0xa1, 0xbe, 0x7a, 0xe9, 0x8f, 0x0b, 0x9f, 0x69,
  0xf7, 0x22, 0x78, 0xbf, 0xdf, 0xa9, 0x77, 0x2d, 0x0f, 0x33, 0xa3, 0x9c,

  0x1f, 0xbf, 0x85, 0xfd, 0x9a, 0x1a, 0xba, 0x79, 0xa7, 0xee, 0x4a, 0x8d,

  0x6d, 0x4f, 0xd6, 0xf9, 0xa2, 0x15, 0x13, 0x70, 0x26, 0x37, 0x02, 0xcb,
  0x4c, 0x5a, 0x98, 0x1a, 0x47, 0xb7, 0x72, 0xb8, 0x87, 0xbb, 0x84, 0xd6,
  0xdc, 0xad, 0xc4, 0xb3, 0xbd, 0xae, 0x5b, 0x0e, 0x24, 0x95, 0xcb, 0x8b,
  0x06, 0x5a, 0x36, 0xd9, 0xb5, 0xde, 0x98, 0xc1, 0x09, 0x61, 0x5a, 0x24,
  0x06, 0x2e, 0x8b, 0xfc, 0x1f, 0xa2, 0x83, 0x66, 0xc5, 0x75, 0x5e, 0x95,
  0x05, 0x69, 0xb9, 0xc6, 0xf4, 0xad, 0x72, 0xb0, 0x65, 0x52, 0xbf, 0x0c,
  0xe3, 0xd8, 0x7e, 0xf5, 0xe1, 0xfd, 0xe9, 0xc7, 0x57, 0x2f, 0x3f, 0xfe,
  0xf9, 0xc3, 0xbb, 0xd7, 0xa7, 0xc7, 0xdb, 0x9d, 0xe1, 0xc8, 0xe7, 0x97,
  0x8b, 0xa3, 0xbe, 0x26, 0xcb, 0x03, 0x97, 0xc4, 0x4c, 0x91, 0x47, 0xbe,
  0xcc, 0xaf, 0x0d, 0x43, 0x83, 0x21, 0x01, 0x1f, 0x3d, 0xfe, 0x06, 0xaf,
  0x96, 0x6c, 0x78, 0x67, 0xb8, 0xc9, 0x9a, 0xf4, 0xb4, 0x51, 0x4b, 0x5b,
  0xd6, 0xab, 0x22, 0x56, 0xbb, 0x4e, 0x30, 0xa2, 0x61, 0x93, 0x16, 0x55,
  0xcc, 0xc8, 0x7c, 0xf1, 0x8c, 0x44, 0xcf, 0x5d, 0xbf, 0x6e, 0x8c, 0x95,
  0xa4, 0x01, 0x02, 0xa3, 0xb5, 0x95, 0x9f, 0x34, 0xcb, 0xc0, 0x98, 0x58,
  0x2f, 0x23, 0xc7, 0x5d, 0x3b, 0x4d, 0x74, 0x96, 0x6c, 0xd3, 0x48, 0x86,
  0x7e, 0x87, 0x32, 0xc9, 0x69, 0xd5, 0x18, 0xfb, 0x26, 0xcb, 0x71, 0x31,
  0x34, 0x8a, 0x4a, 0x3a, 0x2b, 0x9c, 0x73, 0x81, 0x86, 0x6d, 0x74, 0x4d,
  0xda, 0x03, 0x68, 0xf7, 0xd9, 0x6d, 0x86, 0x9b, 0x27, 0x6f, 0xbd, 0x5a,

  0x57, 0xb8, 0xcd, 0xdf, 0x19, 0x6d, 0x84, 0xb8, 0xdf, 0x6b, 0x78, 0xf7,
  0xcc, 0x0b, 0xfa, 0x90, 0x11, 0x33, 0x5d, 0x91, 0x57, 0x2e, 0x28, 0xae,
  0x9a, 0xc2, 0x93, 0x02, 0xbf, 0xd7, 0xf9, 0xcb, 0x8b, 0xaf, 0xa3, 0xca,
  0xac, 0x4b, 0xe9, 0x11, 0x52, 0x84, 0x62, 0x5e, 0x37, 0x72, 0x41, 0xde,

  0x8d, 0xc7, 0x09, 0x12, 0x46, 0x16, 0xf9, 0xa4, 0x4a, 0xe9, 0x9b, 0xf4,
  0x63, 0xfa, 0xa9, 0x21, 0xeb, 0xce, 0x70, 0xe7, 0xdf, 0xbc, 0x1a, 0xff,
  0xee, 0xe0, 0x80, 0xb4, 0xf8, 0xb5, 0xd9, 0x97, 0x1d, 0xf3, 0x4a, 0x51,
  0x9b, 0x9b, 0xb9, 0x1c, 0xd5, 0xe5, 0x2e, 0xc4, 0x76, 0x2d, 0xea, 0x40,
  0x7a, 0x6d, 0xa4, 0x2d, 0xe8, 0x48, 0x89, 0xda, 0x1c, 0x67, 0xb0, 0x27,
  0x60, 0x74, 0x92, 0x4d, 0x63, 0xf8, 0x85, 0x91, 0xd7, 0x8b, 0x50, 0x21,

  0xdf, 0xc9, 0xcf, 0xc6, 0x92, 0x8b, 0x92, 0x4e, 0xcd, 0x5f, 0xc9, 0x51,
  0xb0, 0x4b, 0x2b, 0x6b, 0xdf, 0x30, 0x5d, 0xd5, 0x98, 0xb5, 0xd1, 0x0b,
  0x32, 0x5f, 0x90, 0x42, 0x13, 0x72, 0x85, 0xa2, 0x7b, 0xb9, 0x5c, 0x9a,
  0x12, 0xc8, 0x61, 0x92, 0x4e, 0x3f, 0xdd, 0xa4, 0xd5, 0x8c, 0xed, 0x21,
  0x43, 0x31, 0x93, 0x7c, 0x91, 0x37, 0x77, 0x6c, 0xd7, 0x76, 0x6d, 0x6a,
  0x8e, 0x8f, 0xd2, 0x06, 0x9a, 0x7b, 0x74, 0x69, 0x4c, 0x7e, 0xd2, 0x3e,
  0x49, 0xc5, 0xcf, 0x1b, 0xdf, 0xa4, 0x85, 0x8a, 0xd4, 0x58, 0x15, 0xc7,
  0x7e, 0x3b, 0x10, 0x8f, 0x0d, 0xdf, 0x23, 0x4c, 0xd3, 0xd1, 0xae, 0xb2,

  0x41, 0x9f, 0x49, 0x29, 0xf9, 0x24, 0xf5, 0x9d, 0x91, 0xf2, 0xcb, 0x24,
  0xa2, 0x22, 0x22, 0x7b, 0x28, 0xf9, 0x26, 0xbb, 0x33, 0xf6, 0x73, 0x5e,
  0x38, 0x4e, 0xc9, 0xf6, 0x7d, 0x46, 0xd6, 0x1d, 0xeb, 0xa2, 0xb9, 0x3a,
  0xd3, 0x33, 0x89, 0x87, 0xb0, 0x24, 0x09, 0x1d, 0x08, 0xfc, 0xbe, 0xea,

  0xe1, 0x34, 0xc4, 0x76, 0xdd, 0x62, 0xc9, 0xf8, 0x52, 0x78, 0x88, 0x63,
  0xf3, 0xf3, 0xa2, 0xc8, 0x16, 0x72, 0x7c, 0x17, 0x9b, 0x0e, 0xc0, 0x3e,
  0x6b, 0xa6, 0xfc, 0x1d, 0xdf, 0xe8, 0xce, 0x70, 0x4f, 0x39, 0xb8, 0x9f,
  0x36, 0x2a, 0x93, 0x34, 0x6b, 0xc8, 0x58, 0x45, 0xfb, 0xf6, 0x57, 0xa3,
  0xde, 0xcf, 0x04, 0xb7, 0xa9, 0x72, 0x87, 0xde, 0x3e, 0x73, 0x76, 0x8a,
  0xe2, 0x90, 0xe9, 0x8c, 0xe5, 0x88, 0xff, 0x68, 0x35, 0x2b, 0x04, 0x30,
  0x3a, 0xc3, 0xf9, 0x5a, 0xb6, 0xca, 0x30, 0x59, 0xc7, 0xb6, 0xd1, 0x53,
  0xcb, 0x0a, 0xfe, 0xa2, 0xaa, 0x34, 0x67, 0xdd, 0x3a, 0xcf, 0x1d, 0x56,
  0x36, 0xba, 0xd7, 0x44, 0xb8, 0xb9, 0xb7, 0x31, 0xbb, 0xb1, 0x8b, 0x1e,
  0x68, 0x26, 0xa1, 0xc9, 0xda, 0x6b, 0x71, 0xb6, 0x25, 0x34, 0xb8, 0xf4,
  0x0b, 0xc3, 0xc6, 0xfe, 0x75, 0x01, 0xcd, 0xcc, 0x10, 0xcc, 0x2f, 0x94,
  0x59, 0x42, 0x8b, 0x2d, 0x41, 0xfd, 0x56, 0x25, 0x32, 0x4d, 0xc2, 0xba,
  0x60, 0x57, 0x9c, 0x30, 0xc0, 0x8a, 0x23, 0xfb, 0x92, 0x43, 0x33, 0x80,

  0xdc, 0x81, 0xe2, 0x72, 0x7c, 0xbe, 0x95, 0xec, 0x64, 0xa3, 0x4b, 0x33,
  0xde, 0x16, 0x8d, 0x73, 0xf0, 0x9c, 0xfe, 0x7b, 0x88, 0xff, 0x1e, 0x6d,
  0x69, 0x6a, 0x9f, 0xbf, 0xf5, 0x24, 0xcd, 0xbb, 0xb2, 0x88, 0xe3, 0x71,
  0x4e, 0xb8, 0x0f, 0xd8, 0xc7, 0xdc, 0xc7, 0x78, 0x58, 0x67, 0x3d, 0xe5,
  0x5d, 0x0e, 0xd5, 0x2d, 0xdd, 0x86, 0x25, 0xfb, 0x23, 0xae, 0x33, 0x76,
  0x88, 0x98, 0x95, 0x4d, 0x8d, 0x7a, 0x08, 0x37, 0xa2, 0xde, 0xaa, 0xe9,

  0xc7, 0x2a, 0xbb, 0x4a, 0xeb, 0xab, 0x64, 0xdd, 0x30, 0x11, 0x1a, 0xba,
  0xed, 0x0e, 0xb7, 0x5a, 0xe4, 0xce, 0xd3, 0x26, 0x9f, 0x1e, 0xa9, 0xdd,
  0xe7, 0x4e, 0x91, 0x23, 0x20, 0x8b, 0xf2, 0x46, 0x9f, 0x19, 0x4a, 0xae,
  0x5d, 0x4c, 0x2d, 0x30, 0xa7, 0x09, 0xbf, 0x09, 0x3d, 0xe6, 0x47, 0xb2,
  0x97, 0xa4, 0x4d, 0x52, 0x22, 0xa0, 0x61, 0x71, 0x73, 0xb3, 0x63, 0x64,
  0xd1, 0x2d, 0x70, 0x6e, 0x64, 0xbb, 0x62, 0xde, 0x81, 0x69, 0x2a, 0x7a,
  0x5e, 0x3e, 0x17, 0xef, 0xad, 0xfc, 0x1b, 0xf2, 0x54, 0xb4, 0xaf, 0x9a,
  0xa3, 0xdd, 0x5d, 0xd5, 0xeb, 0x7e, 0xd2, 0x56, 0x06, 0x69, 0x35, 0x1d,
  0x59, 0x2c, 0x07, 0x4c, 0x94, 0xae, 0xf3, 0x4b, 0xd8, 0x1a, 0x31, 0x07,
  0x06, 0x3b, 0xa5, 0xfe, 0xa5, 0x4b, 0x62, 0x66, 0x3c, 0x24, 0x7f, 0xe9,
  0xba, 0x7e, 0xc0, 0x1d, 0xf1, 0x98, 0x2e, 0xbf, 0x63, 0xfd, 0xc5, 0x1c,
  0xd5, 0xf7, 0x37, 0xa0, 0x4b, 0x85, 0x77, 0x1e, 0x61, 0xbc, 0xf2, 0x6e,
  0xd6, 0x98, 0x07, 0x7a, 0x2f, 0x2e, 0x92, 0x9d, 0xf4, 0x53, 0x3a, 0x4a,
  0xce, 0x5e, 0x8d, 0xcf, 0xe9, 0x13, 0x86, 0x3a, 0x8a, 0x4b, 0x33, 0x8b,
  0xd3, 0x71, 0x67, 0xb8, 0xec, 0xb6, 0xc9, 0x8a, 0x3a, 0xe6, 0xa0, 0x0c,
  0xb7, 0x59, 0xa3, 0x08, 0x9a, 0x5e, 0x23, 0x93, 0x35, 0x96, 0x3e, 0xe2,
  0xe2, 0x14, 0xe6, 0xa5, 0x1c, 0x8c, 0x84, 0xaf, 0x5a, 0xf0, 0xa1, 0x95,
  0xb9, 0xf9, 0xb3, 0x5d, 0xeb, 0xaa, 0x19, 0x28, 0x2d, 0xd8, 0x70, 0x61,
  0xbd, 0xbe, 0x24, 0x1b, 0xa4, 0x56, 0xbb, 0xd1, 0x7e, 0xc1, 0xec, 0x46,
  0xa8, 0x2a, 0xc8, 0xb2, 0xad, 0x27, 0xd1, 0x58, 0x4d, 0x94, 0x49, 0x05,
  0x15, 0xa9, 0x28, 0xdd, 0xa8, 0x94, 0x4d, 0x81, 0xac, 0xd1, 0x1c, 0x01,
  0xb6, 0x69, 0x66, 0x54, 0xd0, 0x59, 0x44, 0x09, 0xe0, 0x43, 0x51, 0xc3,
  0x69, 0x2e, 0x99, 0xa2, 0x11, 0xff, 0x0f, 0x06, 0x9a, 0xb2, 0x8a, 0x46,
  0x54, 0x8f, 0x40, 0x45, 0x4e, 0x7e, 0x52, 0x52, 0x98, 0xd9, 0x54, 0xa7,
  0xf1, 0xec, 0xfd, 0xff, 0xaa, 0x58, 0x9b, 0x8d, 0x8f, 0x48, 0x63, 0x52,
  0xaa, 0x48, 0xcc, 0xd0, 0x06, 0x6e, 0x72, 0xec, 0x3d, 0x3a, 0x68, 0xfb,
  0xb1, 0x41, 0x6c, 0xc6, 0x00, 0xc8, 0x92, 0x17, 0xf4, 0xdf, 0x7b, 0xb9,
  0x32, 0x52, 0x57, 0xf0, 0xbc, 0xc4, 0x3b, 0x99, 0x77, 0x8a, 0x2f, 0x26,
  0x69, 0x33, 0xe8, 0x40, 0x7a, 0x81, 0xdc, 0x46, 0xc4, 0xf7, 0x06, 0xc9,
  0x6b, 0x4a, 0xc8, 0x3e, 0x7e, 0xf7, 0x15, 0x68, 0xe0, 0xfc, 0xe0, 0x10,
  0xd1, 0x25, 0x6b, 0x3d, 0xcc, 0xf0, 0x91, 0x9a, 0x1d, 0x09, 0x1c, 0x1d,
  0x0e, 0x15, 0x5f, 0xc8, 0x84, 0x01, 0xd8, 0x28, 0x85, 0x05, 0x91, 0x3d,
  0x34, 0xfb, 0xf5, 0xe4, 0x57, 0x60, 0x88, 0x1e, 0x0f, 0x64, 0x07, 0xc5,
  0x31, 0xf3, 0x29, 0xbb, 0x73, 0x7f, 0xc3, 0xae, 0x7a, 0x5b, 0xed, 0x1e,

  0x7e, 0xe1, 0x6d, 0xd2, 0x5f, 0x9f, 0x53, 0x86, 0x92, 0xd1, 0x52, 0x67,
  0x3f, 0xfe, 0x3c, 0x89, 0x18, 0xdf, 0xf9, 0x88, 0xb3, 0x05, 0x7e, 0x2e,

  0xcd, 0x05, 0xe2, 0xd0, 0x3f, 0xb3, 0x78, 0x49, 0x87, 0xa7, 0x4c, 0x79,
  0x22, 0xf8, 0xb4, 0xb0, 0x2a, 0xc9, 0x90, 0x13, 0xc0, 0x90, 0x10, 0xd6,
  0xdd, 0xfb, 0x69, 0xb9, 0x08, 0x64, 0x5d, 0xcb, 0x70, 0x85, 0x3e, 0x7f,
  0x28, 0xf2, 0x0d, 0xc6, 0x1c, 0x33, 0x1b, 0xd1, 0xa2, 0xbb, 0xd7, 0xc1,
  0xea, 0xd4, 0x50, 0xbf, 0x9c, 0x64, 0xa4, 0x37, 0xf9, 0x45, 0x84, 0xb9,
  0x31, 0x35, 0xd6, 0x94, 0x46, 0x89, 0xd3, 0x78, 0x63, 0xea, 0xbf, 0x39,
  0x5b, 0xdd, 0x5b, 0x73, 0xe8, 0xe4, 0x67, 0xb2, 0xbb, 0x36, 0xf0, 0x3d,
  0x4d, 0x86, 0xc9, 0x55, 0xb9, 0xea, 0xe7, 0x92, 0x4c, 0x1a, 0xc6, 0x30,
  0x38, 0xe3, 0x40, 0xbc, 0x51, 0x92, 0x59, 0xd5, 0xf2, 0xe5, 0x33, 0xf9,
  0x91, 0x25, 0xba, 0xe5, 0x6d, 0xc9, 0x56, 0xec, 0x28, 0x1a, 0x0e, 0x7e,
  0xca, 0x15, 0xca, 0xaf, 0x69, 0xeb, 0x94, 0x76, 0x9c, 0x63, 0xb3, 0xad,
  0xfa, 0x96, 0x05, 0xfd, 0x59, 0x90, 0x4f, 0xec, 0xdf, 0x22, 0x04, 0x19,
  0xa5, 0x45, 0xf2, 0x8d, 0x4b, 0xec, 0x03, 0x0a, 0x0c, 0x25, 0x41, 0x4a,
  0x16, 0xfa, 0xe2, 0xee, 0x41, 0x06, 0x9d, 0x2a, 0x20, 0x6a, 0xb7, 0x79,

  0xc6, 0x5c, 0x60, 0xed, 0x74, 0x09, 0xc4, 0xb0, 0xf1, 0x86, 0x52, 0x4a,
  0x98, 0x76, 0xc9, 0xf7, 0x9a, 0x4f, 0x3f, 0x21, 0xf2, 0x22, 0x12, 0xca,
  0x5f, 0x9f, 0xe6, 0xed, 0x71, 0xc6, 0x69, 0xe4, 0x08, 0x60, 0x4b, 0x92,




  0x53, 0x98, 0x68, 0x92, 0xa4, 0x73, 0x5e, 0xb0, 0xce, 0xd6, 0xeb, 0x65,

  0x30, 0x73, 0xfd, 0xf8, 0xfa, 0xe4, 0x7d, 0xb2, 0x43, 0x1a, 0x78, 0xd7,
  0xc8, 0x55, 0xf1, 0xbe, 0x97, 0x35, 0xd3, 0xbd, 0xd5, 0xa7, 0x7c, 0xcf,


  0x18, 0x9b, 0xb3, 0xc9, 0xae, 0x35, 0xa2, 0xf0, 0x39, 0xa2, 0x42, 0x6b,
  0x98, 0xaa, 0x65, 0x0a, 0xd3, 0x34, 0x70, 0x3d, 0x3a, 0x53, 0x95, 0x2b,
  0x5c, 0xac, 0x8d, 0xca, 0xdb, 0xc4, 0x04, 0x8d, 0x10, 0x0d, 0x67, 0x47,
  0x20, 0xb0, 0x93, 0xb1, 0x5f, 0xda, 0xd8, 0xd8, 0xdd, 0xbb, 0xca, 0xd9,
  0x8f, 0xe2, 0xc8, 0x61, 0x07, 0x8e, 0xa6, 0xec, 0x89, 0xb8, 0x70, 0xda,
  0xef, 0x80, 0x92, 0x2d, 0x69, 0x53, 0x56, 0x24, 0x92, 0x66, 0xe4, 0x06,
  0xec, 0x0e, 0x07, 0x4d, 0x6e, 0x6b, 0xb4, 0xb7, 0x95, 0xd8, 0xf4, 0x52,
  0xb3, 0xcb, 0x9c, 0x3f, 0x6d, 0x03, 0x5f, 0x86, 0xc4, 0xe6, 0xeb, 0xda,
  0xfa, 0x31, 0x53, 0x7b, 0x5e, 0xa3, 0x18, 0x43, 0xf5, 0x8e, 0xd3, 0xea,
  0x5c, 0x46, 0x37, 0xc6, 0xcd, 0xf2, 0xad, 0x75, 0x99, 0x14, 0x8e, 0x6a,
  0xeb, 0x87, 0xad, 0xc4, 0x4b, 0x4f, 0x6c, 0x65, 0x29, 0xe6, 0x2e, 0x81,
  0xc8, 0x13, 0x02, 0x46, 0x22, 0xdb, 0x3b, 0x3c, 0xcb, 0x16, 0xf9, 0x32,
  0x87, 0xed, 0xe5, 0x4f, 0x61, 0x18, 0x0b, 0x10, 0xba, 0x29, 0xfd, 0x10,
  0x4e, 0x49, 0x53, 0x7e, 0x53, 0xfa, 0xb5, 0x99, 0x12, 0x3c, 0x62, 0x9c,
  0x91, 0x19, 0xb7, 0x9a, 0xdb, 0x13, 0xb2, 0x49, 0xc3, 0x1b, 0x22, 0xc7,
  0xf6, 0x2e, 0xf5, 0xa9, 0xf2, 0xce, 0x25, 0xa2, 0x97, 0x9e, 0x99, 0x5a,
  0xb2, 0xfa, 0x34, 0xad, 0x0f, 0x0e, 0xba, 0x82, 0xae, 0x76, 0x14, 0x25,
  0xf6, 0x7b, 0x6a, 0x09, 0xf3, 0xc3, 0xfb, 0x93, 0x64, 0x87, 0x8a, 0x44,
  0x9e, 0x3e, 0x3e, 0x38, 0xdc, 0xf5, 0x33, 0x4b, 0x94, 0x01, 0x84, 0x72,
  0xf3, 0x8e, 0x43, 0xb2, 0xde, 0x05, 0x5c, 0x94, 0xd3, 0x54, 0x34, 0x0e,
  0x37, 0xf4, 0x2c, 0xbb, 0xce, 0xa7, 0x54, 0xa3, 0x43, 0x01, 0x79, 0xe2,
  0xc1, 0x93, 0xcc, 0x4c, 0x32, 0xd8, 0x71, 0x97, 0xd1, 0xcb, 0xb3, 0x37,

  0x26, 0x92, 0xd5, 0x94, 0x29, 0x6f, 0xda, 0xd0, 0x40, 0x23, 0x7b, 0xe7,

  0xcf, 0x5a, 0xa2, 0x04, 0x69, 0x8f, 0x27, 0x88, 0xd6, 0xc5, 0x15, 0x34,
  0xd0, 0x31, 0x06, 0x2e, 0xf0, 0x33, 0x1c, 0xca, 0x66, 0x09, 0xeb, 0xb5,
  0xb1, 0x63, 0xca, 0x40, 0xe9, 0x1e, 0xa0, 0xcc, 0x69, 0x8b, 0x04, 0x49,
  0x01, 0xe1, 0x9e, 0xba, 0x41, 0xed, 0xee, 0xfb, 0x9a, 0x50, 0x7b, 0xd4,
  0xd0, 0x53, 0x0e, 0xc2, 0x31, 0x9a, 0x4b, 0x7c, 0xc8, 0xdf, 0xc8, 0xc9,
  0xd4, 0x66, 0x9f, 0x72, 0x3c, 0x74, 0xf6, 0xe2, 0x35, 0x9c, 0xb0, 0xa2,
  0xa0, 0xfc, 0x36, 0xd5, 0xc7, 0x03, 0x39, 0x6e, 0x5e, 0xdf, 0x53, 0x21,
  0x04, 0x29, 0xa4, 0xfe, 0x46, 0xf6, 0xfc, 0x18, 0xe6, 0x09, 0x4f, 0xcf,
  0x27, 0x71, 0xf4, 0x40, 0x29, 0xb6, 0x29, 0x1c, 0xa1, 0xaf, 0x58, 0x05,

  0xbf, 0x39, 0xa2, 0x69, 0x39, 0xeb, 0x98, 0xec, 0xb4, 0x09, 0x9e, 0xc0,
  0x03, 0xf7, 0xe3, 0x50, 0x25, 0x38, 0x5e, 0xdc, 0x93, 0x4d, 0x94, 0xca,
  0xee, 0xf5, 0x9f, 0xc4, 0x03, 0x63, 0x1e, 0x35, 0xb0, 0xc0, 0x9f, 0xc5,
  0x01, 0xef, 0xf1, 0x39, 0xbd, 0x0a, 0x24, 0x76, 0x6d, 0x95, 0x21, 0xa7,
  0xab, 0x51, 0xb2, 0x78, 0x82, 0x8d, 0x0b, 0x2d, 0x1a, 0x4a, 0x1b, 0x44,
  0x4a, 0x00, 0xe5, 0x7c, 0x75, 0xee, 0x26, 0x3b, 0x76, 0xcc, 0x75, 0xd9,
  0x39, 0xe5, 0x20, 0x65, 0x72, 0xfe, 0xe6, 0x7b, 0xe5, 0x96, 0x31, 0x03,
  0x1e, 0x8e, 0xa8, 0x3f, 0xda, 0xec, 0x30, 0x63, 0x51, 0x50, 0xa6, 0x5a,
  0x2e, 0x59, 0x9f, 0xec, 0x26, 0x42, 0x38, 0x7c, 0xd7, 0x25, 0x33, 0xd2,
  0x56, 0x6f, 0xbd, 0xc0, 0xef, 0xba, 0xb1, 0xa6, 0x92, 0x2d, 0x99, 0x3f,
  0xfd, 0xc0, 0xbf, 0x66, 0x1e, 0x6b, 0xfe, 0xd5, 0x5c, 0xad, 0x97, 0x13,
  0x73, 0x9e, 0x45, 0xf3, 0xa7, 0xad, 0x84, 0x83, 0xad, 0x73, 0xd9, 0xcf,
  0x0d, 0x66, 0x67, 0xae, 0xf5, 0x3a, 0xea, 0x5b, 0x6c, 0xed, 0x1a, 0xcf,
  0x4e, 0x6b, 0x07, 0x5c, 0x7e, 0x9e, 0x39, 0x3c, 0xf6, 0x65, 0x07, 0xaa,
  0xde, 0x07, 0x43, 0x9e, 0x3f, 0xbc, 0xfd, 0xcb, 0x0f, 0xcf, 0x8e, 0x1e,
  0xa5, 0x4f, 0xd3, 0xe9, 0x93, 0xf9, 0xe7, 0xe9, 0xe3, 0xd9, 0xe3, 0xa7,
  0xcf, 0x0e, 0x3f, 0x7f, 0x9c, 0x3e, 0x7d, 0x34, 0x4f, 0x9f, 0x1c, 0x64,
  0x07, 0xcf, 0xe6, 0x87, 0x47, 0xb3, 0xd9, 0x3c, 0xfb, 0x7c, 0xf6, 0x34,
  0xdd, 0x1a, 0xc1, 0xfc, 0xd2, 0xa9, 0x87, 0xac, 0x56, 0x03, 0x6f, 0x69,
  0x32, 0xfe, 0xfa, 0xe5, 0xf0, 0x20, 0xb9, 0xca, 0x6e, 0xf5, 0x82, 0xb1,
  0x47, 0xd3, 0x66, 0xdd, 0x65, 0x92, 0x57, 0xdd, 0xbf, 0x58, 0x2d, 0x14,
  0xa4, 0xac, 0x69, 0xf2, 0x95, 0x40, 0x03, 0xe6, 0x5d, 0xd4, 0x6d, 0xe5,
  0xbc, 0x3a, 0xeb, 0x3f, 0x7c, 0xae, 0x3e, 0x7b, 0x5a, 0x57, 0xf7, 0xf2,
  0x9f, 0x9a, 0x77, 0x16, 0x6f, 0xd3, 0xa9, 0x51, 0x92, 0xcc, 0x9e, 0xc8,
  0x83, 0x63, 0x63, 0xda, 0x1a, 0x36, 0x3d, 0x48, 0xe4, 0x2f, 0xe4, 0x25,
  0xf6, 0xc6, 0xf8, 0xaa, 0x2a, 0xd7, 0xab, 0xf3, 0x72, 0x91, 0x4f, 0xef,
  0x36, 0x0d, 0xe7, 0x3f, 0xd6, 0xfa, 0xc5, 0x31, 0xb3, 0xf0, 0xbc, 0xce,
  0x7e, 0x43, 0xd3, 0xca, 0x63, 0xc7, 0x0f, 0xb0, 0xad, 0x86, 0xd3, 0x7c,
  0x75, 0x45, 0x71, 0xde, 0x17, 0xc8, 0xf2, 0xa3, 0xd0, 0x0c, 0xff, 0x20,



  0x6e, 0x53, 0x8d, 0xe5, 0x46, 0xd6, 0x72, 0x9e, 0xfa, 0xb6, 0x68, 0x5c,
  0xb9, 0x96, 0xc0, 0xa9, 0x9b, 0x4a, 0x32, 0x4b, 0xf3, 0xc0, 0x8f, 0xe7,
  0x3e, 0xc4, 0xb7, 0x5d, 0xb5, 0x6d, 0x76, 0x5e, 0xc8, 0xaf, 0x46, 0xc9,
  0x7b, 0xc4, 0xc9, 0xd7, 0x2b, 0x36, 0x2f, 0xe0, 0xcf, 0xe7, 0xdf, 0x75,

  0x2f, 0x1a, 0x4d, 0x5e, 0x28, 0x86, 0x0b, 0xf1, 0xcc, 0x8e, 0x7e, 0x78,
  0x7f, 0xfa, 0xbc, 0xbb, 0x4f, 0x28, 0x36, 0xaa, 0x9f, 0xef, 0xed, 0x21,

  0xe4, 0x73, 0x95, 0xde, 0xde, 0x8e, 0xea, 0x6c, 0x6f, 0x56, 0x4e, 0xeb,
  0xbd, 0xba, 0x5e, 0xe8, 0x6e, 0xb4, 0x6b, 0xff, 0x7e, 0x05, 0x6f, 0x6e,
  0xb9, 0x04, 0xdb, 0xca, 0x66, 0xc3, 0xba, 0x0e, 0x72, 0x83, 0xc6, 0xaf,
  0x34, 0xf3, 0xe0, 0x58, 0x72, 0xd2, 0x20, 0xe7, 0x86, 0x66, 0x77, 0xc7,
  0xe3, 0xaf, 0x13, 0x7d, 0x19, 0xdb, 0x6b, 0x43, 0xe2, 0x36, 0x2f, 0x67,
  0x10, 0x51, 0xc3, 0x52, 0x61, 0xd8, 0x7f, 0xf4, 0x1d, 0x3a, 0xa4, 0x4e,
  0x97, 0xfc, 0x87, 0xd4, 0xae, 0xe4, 0xcd, 0xc6, 0x44, 0xbe, 0x27, 0x1d,
  0x07, 0x88, 0x5d, 0x44, 0x3c, 0xfe, 0xaf, 0x4e, 0xb0, 0x34, 0x71, 0x4f,
  0x3a, 0x8f, 0x50, 0xb7, 0x38, 0xdd, 0x50, 0xef, 0x65, 0x59, 0x19, 0xe1,
  0xb1, 0xac, 0x63, 0x5e, 0x50, 0xbd, 0xe5, 0x35, 0xab, 0x7d, 0x35, 0xe7,
  0x22, 0x9a, 0x61, 0x0a, 0x6f, 0x70, 0x73, 0x8c, 0xc8, 0x61, 0x1c, 0xf9,
  0x87, 0x15, 0x8d, 0x6f, 0xe9, 0xe1, 0xf5, 0x79, 0xd1, 0xd6, 0x85, 0x0b,
  0x7e, 0x40, 0x1c, 0x9b, 0xc9, 0x4a, 0x61, 0x59, 0x60, 0x21, 0x20, 0xf7,
  0x1f, 0x62, 0x82, 0x74, 0x88, 0xaa, 0x2a, 0x3d, 0xa5, 0x76, 0xf8, 0x0d,
  0x8c, 0x4b, 0x23, 0x1d, 0xf3, 0x4b, 0x0d, 0xaf, 0xf7, 0xe4, 0xd8, 0x91,
  0xe8, 0x6a, 0x90, 0xbb, 0x2c, 0xe5, 0xe0, 0x24, 0x14, 0x28, 0x85, 0x0d,
  0xa9, 0x25, 0x92, 0x9d, 0xc9, 0xe9, 0x40, 0xad, 0x2a, 0xf8, 0xe0, 0x26,
  0x50, 0xcd, 0x8f, 0x7b, 0x9c, 0xd2, 0xa8, 0xf4, 0x5e, 0x62, 0x78, 0x71,
  0x5f, 0x78, 0x89, 0x6d, 0xa4, 0x95, 0xc1, 0xcd, 0x60, 0x9e, 0xe9, 0x5a,
  0x7b, 0xc8, 0xb9, 0xb5, 0x3a, 0x5f, 0xac, 0xc4, 0xb5, 0xbb, 0x1e, 0x4d,
  0xbd, 0xd7, 0xbd, 0xcd, 0x51, 0x54, 0x9d, 0x22, 0xaf, 0x3f, 0x26, 0xda,
  0x4b, 0x2f, 0x48, 0x4b, 0x03, 0x86, 0x32, 0xaf, 0xb1, 0x69, 0x93, 0x5a,
  0xa9, 0x04, 0x85, 0xc0, 0x70, 0x20, 0x23, 0xf6, 0x28, 0xe3, 0x9c, 0x4a,
  0xe9, 0x17, 0xa5, 0x53, 0xb0, 0x0c, 0xe1, 0x19, 0x5e, 0x88, 0x6a, 0xc4,
  0x51, 0xc0, 0xb7, 0xb9, 0x26, 0x89, 0x93, 0x08, 0xb9, 0xb6, 0x8e, 0xb3,
  0xbd, 0xf8, 0x67, 0x10, 0x5f, 0x13, 0x8d, 0x91, 0x3b, 0x7e, 0x46, 0xe7,
  0x17, 0x73, 0x0d, 0x49, 0x56, 0x3e, 0x17, 0x3a, 0xe6, 0x28, 0xe1, 0x95,
  0xa2, 0x4f, 0x2e, 0x32, 0x50, 0xcf, 0x76, 0x5d, 0x4a, 0xca, 0x26, 0x4d,
  0x94, 0xe6, 0xc9, 0x73, 0xec, 0x92, 0xba, 0x2d, 0xe8, 0x6c, 0x19, 0x23,
  0x69, 0xed, 0x72, 0xf5, 0xeb, 0x30, 0x5a, 0xe9, 0x36, 0x33, 0x66, 0xbd,
  0x06, 0x75, 0x0f, 0x98, 0x48, 0x95, 0xe9, 0x17, 0x8a, 0xb2, 0x3b, 0x29,
  0x9d, 0x47, 0x2c, 0x1f, 0x55, 0x73, 0xfb, 0xbd, 0x09, 0x68, 0x8e, 0xbf,
  0x3d, 0xe5, 0x9e, 0xec, 0xcd, 0x2c, 0x71, 0x8f, 0x24, 0xce, 0xce, 0x74,
  0xc7, 0x08, 0x7f, 0x03, 0x2a, 0x36, 0x6a, 0x9e, 0xfa, 0x73, 0x9a, 0xd3,
  0x17, 0xbb, 0x31, 0x3f, 0xb1, 0x1b, 0x49, 0x29, 0x8a, 0xee, 0xe9, 0xa2,

  0xac, 0x35, 0xfe, 0x42, 0xca, 0x05, 0xd7, 0xdd, 0x1a, 0x6e, 0xf0, 0x9d,
  0xfc, 0x80, 0x8f, 0xa6, 0x33, 0x1c, 0x3f, 0x35, 0x90, 0x29, 0xce, 0x9d,
  0xb2, 0x21, 0xb6, 0xaa, 0x2b, 0x16, 0x26, 0x6d, 0xc3, 0x5a, 0x93, 0xcf,
  0x93, 0x1f, 0x7e, 0x18, 0x24, 0xc6, 0x48, 0xee, 0x0c, 0xf7, 0x43, 0x63,
  0x7e, 0x6a, 0x68, 0xf1, 0x07, 0x2e, 0x58, 0xfa, 0xe1, 0x9a, 0x8c, 0x40,
  0x72, 0x30, 0xd7, 0x0b, 0x8a, 0x1e, 0xb1, 0x9a, 0xdd, 0xf6, 0xca, 0x71,
  0x3d, 0xf4, 0x86, 0xd4, 0x2c, 0x67, 0xb7, 0x73, 0x2a, 0xa6, 0x39, 0xb0,
  0xf5, 0xb2, 0x10, 0xeb, 0x84, 0x89, 0x13, 0xf7, 0x1e, 0x72, 0x60, 0xfb,
  0x77, 0xdb, 0x8e, 0x90, 0x62, 0x7b, 0x57, 0x65, 0x2c, 0xe9, 0x21, 0xaa,
  0x72, 0x4f, 0x4c, 0x69, 0xf5, 0x30, 0xcc, 0xcd, 0x84, 0xc3, 0xa5, 0xc4,
  0x4c, 0xcf, 0xc8, 0xb9, 0xce, 0x65, 0x60, 0x5d, 0x31, 0xee, 0x4c, 0x49,
  0xaa, 0x8d, 0x5b, 0x5d, 0xdd, 0xd5, 0x94, 0xc9, 0x21, 0xb3, 0x09, 0x6e,
  0x4f, 0x6f, 0x82, 0xb1, 0xec, 0x3d, 0x15, 0xf5, 0x10, 0x1f, 0x20, 0xe6,
  0xd7, 0x62, 0x9d, 0x66, 0x46, 0xdb, 0xc3, 0x6d, 0x1b, 0x0b, 0x93, 0x7c,
  0x99, 0x20, 0x97, 0xde, 0x26, 0x67, 0xbb, 0xe4, 0xc3, 0xe0, 0x93, 0x5e,
  0x52, 0x5c, 0xe9, 0xa7, 0x3b, 0xba, 0xe2, 0x76, 0xaa, 0x4e, 0xd5, 0x28,
  0xbe, 0x7c, 0x5f, 0xf8, 0x4f, 0xc4, 0xe1, 0x84, 0xb4, 0x48, 0x98, 0x1e,
  0x3a, 0x00, 0xbc, 0x21, 0x2e, 0x3c, 0x34, 0x1c, 0x02, 0x67, 0x64, 0xc5,
  0xd8, 0x20, 0x44, 0x12, 0xc8, 0x3c, 0xb8, 0xa3, 0x4a, 0xb0, 0xd5, 0x22,
  0xe0, 0xb7, 0x92, 0x0a, 0xa8, 0xc5, 0xd6, 0x74, 0xc1, 0x09, 0x90, 0xe2,
  0xa6, 0x10, 0x40, 0x81, 0x71, 0x09, 0xaf, 0xcc, 0x14, 0x39, 0x0c, 0x92,
  0x2e, 0x23, 0x35, 0x65, 0x11, 0x2b, 0x90, 0x64, 0x60, 0xa0, 0x03, 0xd1,
  0x7c, 0xbe, 0x48, 0xb6, 0xfa, 0x35, 0xa1, 0xad, 0xee, 0x1b, 0xc8, 0x80,
  0x74, 0x2e, 0x4e, 0xa9, 0x97, 0xc7, 0x44, 0x76, 0x24, 0x93, 0x6e, 0xf8,

  0x77, 0x4e, 0x68, 0xe3, 0x92, 0x2e, 0x91, 0xaf, 0xbb, 0x9c, 0x20, 0x5c,
  0x47, 0x22, 0xfb, 0x2e, 0xcb, 0xca, 0xa3, 0x0f, 0x97, 0xa7, 0x94, 0xc3,
  0x7d, 0x0d, 0xe9, 0xc5, 0xd2, 0xce, 0x7b, 0x3a, 0x08, 0xc5, 0xeb, 0xdb,
  0x54, 0x71, 0x42, 0xdf, 0x13, 0x97, 0xb4, 0x8a, 0x0e, 0x7b, 0xa3, 0x57,
  0x0b, 0xe0, 0x74, 0x68, 0xad, 0x0b, 0x54, 0xa2, 0x60, 0x77, 0x0e, 0x76,
  0x6d, 0x75, 0x24, 0xc0, 0x36, 0x38, 0x33, 0x5b, 0xf4, 0x84, 0xad, 0xab,
  0x92, 0x73, 0x89, 0xb6, 0x9e, 0x53, 0xe1, 0x9e, 0xdc, 0x46, 0xac, 0x51,
  0x61, 0x10, 0x3a, 0xc3, 0x21, 0x53, 0xeb, 0xeb, 0xb3, 0xb7, 0xc7, 0xed,
  0x0c, 0x5c, 0xfc, 0x24, 0xe6, 0x7c, 0x35, 0xec, 0xea, 0x8d, 0xe1, 0x30,
  0x4c, 0x03, 0x69, 0xa0, 0xcd, 0x31, 0x6d, 0x99, 0x69, 0x5d, 0x66, 0xcd,


  0xea, 0x66, 0x9d, 0xcf, 0x76, 0x76, 0x89, 0x46, 0xa8, 0xdc, 0x64, 0x88,
  0x1a, 0x27, 0x36, 0x0d, 0xeb, 0x64, 0x87, 0x15, 0xf4, 0x2a, 0x6b, 0xd6,
  0x55, 0xc1, 0x0e, 0x73, 0x9a, 0x7b, 0xd7, 0xc8, 0x32, 0xd2, 0x99, 0x45,

  0x9d, 0xef, 0x1c, 0x10, 0xcc, 0x1c, 0x4e, 0x61, 0xe2, 0x01, 0x8d, 0xb9,
  0x7b, 0x66, 0xf3, 0x3e, 0x70, 0xf0, 0x58, 0x4b, 0x20, 0xbf, 0xfc, 0x9d,
  0x48, 0x5e, 0x9e, 0x9f, 0xbf, 0x7e, 0x79, 0xf1, 0xd2, 0xae, 0x0d, 0x02,
  0x1a, 0xcc, 0x05, 0x1a, 0xb2, 0xe1, 0x43, 0xa4, 0x35, 0xd1, 0x93, 0xdb,
  0xbf, 0xff, 0x30, 0x3e, 0x7e, 0xdf, 0x3d, 0xd8, 0xf3, 0xf7, 0x67, 0x04,
  0x48, 0xf4, 0xfb, 0x1f, 0x5e, 0xae, 0x56, 0x0b, 0x0d, 0x0a, 0xbe, 0x4e,
  0x9b, 0x74, 0x3b, 0xb8, 0xd5, 0x87, 0xbb, 0x34, 0xbf, 0x1b, 0x3b, 0xbf,
  0xb9, 0x08, 0x39, 0x98, 0xfa, 0xc9, 0x88, 0x0e, 0xb4, 0x9a, 0x6a, 0xfa,
  0xad, 0xdd, 0x0d, 0x6c, 0x00, 0xb2, 0x67, 0xfb, 0x17, 0x52, 0x3a, 0x4e,
  0xa6, 0x89, 0x64, 0xba, 0x59, 0x0b, 0x63, 0x64, 0x67, 0xd3, 0x75, 0xa3,
  0x24, 0x0f, 0xfa, 0xa2, 0x2a, 0xee, 0xee, 0xbe, 0x04, 0xc7, 0xe3, 0xc2,
  0x28, 0xcc, 0x05, 0x00, 0x22, 0x60, 0x08, 0x0d, 0x29, 0xd2, 0x3a, 0x5b,
  0xe6, 0x62, 0x11, 0x9a, 0x9a, 0x65, 0x1c, 0x56, 0x01, 0xa8, 0x00, 0x4f,
  0x29, 0xd8, 0x90, 0xdf, 0x99, 0xdb, 0x38, 0x4c, 0x8e, 0xa5, 0xda, 0x0d,

  0x0b, 0x37, 0x3f, 0x08, 0x1e, 0x6a, 0xac, 0xf9, 0x20, 0xec, 0x3e, 0xce,
  0x2b, 0x3c, 0xa0, 0x8d, 0xad, 0xae, 0x08, 0xe0, 0xd2, 0x56, 0xf3, 0x10,
  0x4d, 0x9b, 0x36, 0x1d, 0xd6, 0xd3, 0x56, 0x24, 0xe9, 0x69, 0x98, 0x5e,
  0x12, 0x79, 0x99, 0x47, 0x8d, 0x76, 0x6d, 0x8c, 0x26, 0xfa, 0xd7, 0xde,
  0xc1, 0x68, 0x7f, 0x2b, 0x9c, 0x3c, 0x5d, 0x16, 0x80, 0xa4, 0xd8, 0xa8,
  0x1a, 0x71, 0xc3, 0xa6, 0x2c, 0xef, 0x9d, 0x1f, 0xb3, 0x30, 0xa3, 0x9f,
  0xae, 0xcc, 0xf8, 0xd1, 0xa9, 0x0c, 0xcf, 0x82, 0x2c, 0x10, 0xca, 0xdc,
  0xad, 0x94, 0x29, 0x1a, 0x9e, 0x58, 0x94, 0x37, 0xb4, 0x12, 0x43, 0x6a,
  0x8b, 0x45, 0x0b, 0xcd, 0x66, 0x2b, 0xbe, 0xcd, 0x05, 0x80, 0xa3, 0xb2,
  0xee, 0x6e, 0x47, 0x23, 0xd7, 0xaa, 0x7c, 0xfa, 0x1a, 0x9e, 0x4d, 0x79,

  0x85, 0x15, 0x69, 0x29, 0xc1, 0x07, 0x13, 0x30, 0x5c, 0x2e, 0xe0, 0x7b,
  0x0b, 0x3f, 0x33, 0x63, 0xa8, 0xe9, 0x21, 0x43, 0x1a, 0x84, 0xb4, 0xd2,
  0x17, 0x5c, 0xab, 0x1e, 0xd8, 0xf2, 0x6f, 0xd3, 0xdb, 0x7c, 0xb9, 0x5e,
  0xe2, 0x63, 0x44, 0xdb, 0xf2, 0x98, 0xc4, 0x13, 0xe0, 0x55, 0xe4, 0xf4,
  0x14, 0x10, 0xf9, 0x76, 0x9d, 0x78, 0x16, 0x7d, 0x4c, 0xc8, 0x18, 0x91,
  0x3c, 0x72, 0xcb, 0x83, 0xb2, 0x80, 0x80, 0x43, 0xdd, 0xf1, 0x06, 0x18,

  0xfd, 0x20, 0xa5, 0x9c, 0x83, 0xba, 0xb4, 0x09, 0x3b, 0x11, 0x76, 0xce,
  0x60, 0x09, 0xa2, 0xc3, 0x79, 0xf9, 0xaa, 0x59, 0x95, 0x97, 0x33, 0x7b,


  0x6f, 0x48, 0x7f, 0xcc, 0x8b, 0xb5, 0xd9, 0x67, 0xf6, 0x25, 0x73, 0x10,

  0x82, 0x7e, 0x15, 0x78, 0x08, 0x91, 0x55, 0x3f, 0x46, 0xb1, 0x84, 0xa6,

  0xa0, 0x3e, 0x1d, 0x1d, 0x1d, 0x8e, 0xf6, 0x07, 0x2d, 0x83, 0x5e, 0x30,
  0x25, 0xcc, 0xed, 0x9a, 0xe6, 0x4b, 0x5b, 0x6f, 0x3a, 0xfa, 0xcd, 0x1c,
  0x37, 0xc8, 0x08, 0x5f, 0xa6, 0xb7, 0x38, 0xbe, 0xe8, 0xb1, 0x96, 0xc9,
  0x8b, 0xaf, 0xcf, 0xc6, 0x17, 0x07, 0xcf, 0xcf, 0xcf, 0xde, 0x9b, 0xff,
  0xd2, 0xdf, 0x0f, 0xf1, 0xf7, 0xc3, 0xc0, 0xaa, 0x7c, 0x23, 0x19, 0xb4,
  0x5a, 0xac, 0x03, 0x0d, 0x05, 0x1a, 0x0d, 0xef, 0x66, 0xe2, 0x0d, 0x44,
  0x7a, 0x39, 0xd8, 0xe0, 0xd4, 0x56, 0x34, 0x76, 0x8f, 0xd8, 0xfb, 0x94,
  0x26, 0xd9, 0x8d, 0x92, 0x30, 0x91, 0x2f, 0x6f, 0x54, 0x9b, 0x92, 0x5a,
  0x78, 0xad, 0xb2, 0xef, 0xfa, 0xba, 0xb9, 0x8e, 0x59, 0xea, 0x73, 0x14,
  0xaf, 0x0e, 0xb9, 0x61, 0xed, 0x5f, 0x4d, 0x17, 0x46, 0xbb, 0xcf, 0x28,
  0x97, 0x64, 0x96, 0x71, 0x80, 0x85, 0x7e, 0x12, 0x33, 0x4c, 0xcc, 0xf5,
  0x93, 0x92, 0x85, 0x20, 0xc1, 0x10, 0x14, 0xa9, 0x51, 0x1d, 0x33, 0x1b,
  0x33, 0xc7, 0xdc, 0x68, 0xe2, 0xbc, 0x1d, 0x45, 0x16, 0x54, 0x08, 0x30,
  0x8e, 0x9c, 0xef, 0xc4, 0x42, 0x91, 0x3e, 0xca, 0xed, 0xdf, 0x9d, 0x5d,
  0x24, 0xe9, 0x7c, 0xae, 0xd8, 0x00, 0x54, 0x96, 0x40, 0x1a, 0xeb, 0xde,
  0x8a, 0x25, 0x59, 0xda, 0xc4, 0x52, 0x37, 0x44, 0x1f, 0xb9, 0x38, 0x1d,
  0xef, 0x91, 0x0b, 0x8b, 0x93, 0xe0, 0xc6, 0xef, 0x4e, 0x06, 0x2d, 0x5f,
  0xb5, 0x9f, 0xfa, 0xb2, 0x4b, 0x92, 0x32, 0xae, 0x50, 0xa4, 0x9e, 0x2c,
  0x74, 0x88, 0x33, 0x94, 0x54, 0x87, 0x23, 0xdd, 0x92, 0x6a, 0xb0, 0x2d,
  0x1c, 0xed, 0x56, 0xa2, 0x51, 0x53, 0xd8, 0xc5, 0xcb, 0x55, 0x73, 0x17,
  0xd6, 0x8b, 0xc2, 0xb7, 0x41, 0x38, 0x2c, 0xa4, 0x74, 0x6c, 0x91, 0x59,
  0x42, 0xcb, 0xc2, 0x92, 0xb6, 0x46, 0x3c, 0xec, 0xe1, 0x16, 0x46, 0xc5,
  0xa0, 0xe6, 0xef, 0x34, 0x26, 0x88, 0x76, 0x92, 0xc5, 0xd2, 0xfb, 0xf9,
  0x43, 0xde, 0xe0, 0x89, 0x1d, 0xde, 0x4c, 0xcc, 0xd6, 0xa9, 0x29, 0x75,
  0x10, 0x83, 0x29, 0xab, 0xfc, 0x92, 0xf2, 0x04, 0xba, 0xa5, 0x63, 0x6e,
  0x22, 0x81, 0x67, 0x8a, 0x94, 0xb1, 0xba, 0xd9, 0xf2, 0x5c, 0x09, 0x4d,
  0x90, 0xa0, 0x8f, 0xb4, 0xd1, 0x4a, 0x4d, 0x1a, 0x9d, 0x0e, 0xf1, 0x9f,
  0x26, 0xa2, 0xc7, 0xb3, 0xb2, 0x67, 0x56, 0x47, 0x72, 0xc7, 0x05, 0x81,
  0xb4, 0xf4, 0x47, 0xef, 0x12, 0x90, 0x70, 0x4e, 0x1a, 0x65, 0xe0, 0x1c,
  0x36, 0xea, 0x0e, 0xc7, 0x88, 0x6d, 0x86, 0x23, 0x68, 0xd5, 0xc7, 0xd6,
  0xc1, 0xe1, 0xd3, 0xd1, 0xbe, 0xf9, 0x3f, 0x73, 0x28, 0xa2, 0x1f, 0x01,
  0x2e, 0xca, 0xc1, 0x02, 0xd9, 0x27, 0xb3, 0xdb, 0x2e, 0x49, 0xb2, 0x00,
  0x2a, 0xab, 0xcb, 0xad, 0x8d, 0x35, 0xac, 0x2d, 0x91, 0x42, 0x07, 0x69,
  0xc5, 0x49, 0x3a, 0x93, 0x9f, 0xe8, 0x1d, 0xaf, 0xd6, 0x8b, 0x48, 0x5a,
  0x9f, 0xe7, 0x46, 0x26, 0xed, 0x6c, 0x71, 0x2d, 0x4e, 0xe4, 0xaf, 0x89,
  0x37, 0x71, 0x1d, 0xdf, 0xa8, 0x95, 0x14, 0xf5, 0xac, 0xe5, 0x13, 0x7c,
  0x25, 0x26, 0x1b, 0x38, 0xf3, 0xd0, 0x5c, 0x86, 0x17, 0xe5, 0x7c, 0x5e,
  0x67, 0x4d, 0x57, 0x00, 0xbd, 0x92, 0x47, 0xf6, 0xde, 0x03, 0xe0, 0x10,
  0x9c, 0x4a, 0x2b, 0x6e, 0x92, 0x36, 0x2c, 0x4f, 0x22, 0x59, 0x68, 0xcc,
  0xb6, 0x78, 0xb8, 0x51, 0xa4, 0xc8, 0xc0, 0xff, 0xbd, 0x66, 0x88, 0x70,
  0x55, 0xbc, 0x82, 0xbd, 0xa0, 0xdc, 0x8a, 0x71, 0x5c, 0x44, 0xd2, 0x75,
  0x51, 0xd9, 0xf4, 0x4a, 0x7c, 0xca, 0x57, 0x2b, 0x32, 0x6f, 0x18, 0xe1,


  0x0c, 0x64, 0x6b, 0x03, 0x68, 0x88, 0xe3, 0x82, 0x94, 0x35, 0x5b, 0xd0,
  0x28, 0xc9, 0x53, 0x91, 0xf9, 0x93, 0x6c, 0x1e, 0x06, 0x81, 0x38, 0xa9,
  0xd1, 0x87, 0xb5, 0x91, 0x1a, 0xdd, 0x19, 0x41, 0xd8, 0x14, 0xa9, 0xb2,
  0x98, 0xb9, 0x07, 0xf8, 0x20, 0xc5, 0x7f, 0x83, 0xc8, 0xfd, 0x77, 0xc5,
  0x59, 0xd6, 0x0f, 0x37, 0x3e, 0xf9, 0xef, 0xc7, 0x0e, 0x84, 0xc8, 0xa2,
  0xfc, 0x70, 0xb9, 0x4b, 0xac, 0x78, 0xc8, 0xdc, 0xc2, 0xe1, 0x2b, 0x73,
  0x5e, 0x5b, 0x98, 0x8a, 0x4b, 0x35, 0x29, 0x3b, 0xe5, 0x18, 0xb0, 0x7b,
  0x48, 0x93, 0x80, 0x36, 0xb4, 0x47, 0x75, 0xff, 0x81, 0x68, 0x60, 0x8c,
  0x4a, 0xf6, 0x2f, 0xca, 0x1a, 0x71, 0x3b, 0x1a, 0xa9, 0x9a, 0xf3, 0x6b,
  0x4e, 0x44, 0x59, 0xdc, 0xcb, 0x0b, 0x52, 0x19, 0x59, 0x81, 0x09, 0x4a,
  0x32, 0xb4, 0x0e, 0x96, 0xd1, 0x4e, 0xd6, 0xcd, 0x6f, 0x18, 0x3b, 0xa9,
  0x88, 0x7e, 0x01, 0x63, 0xe7, 0x11, 0xf5, 0x94, 0x89, 0x9a, 0xb0, 0x3a,
  0x87, 0x7f, 0x33, 0x56, 0xf6, 0x0b, 0x75, 0x53, 0xf4, 0x01, 0x03, 0xa8,
  0x53, 0x83, 0x8a, 0x28, 0x60, 0x84, 0x81, 0x36, 0x2c, 0x3e, 0x8d, 0x6e,
  0x35, 0xc3, 0xea, 0xa4, 0xd0, 0x65, 0x00, 0x04, 0xda, 0xbd, 0xf3, 0x73,
  0x80, 0xde, 0x78, 0xe5, 0xdf, 0xb6, 0x76, 0x72, 0x44, 0x51, 0xaa, 0x05,
  0x8f, 0x50, 0x73, 0x62, 0xa5, 0x8c, 0xa1, 0x46, 0x43, 0x1e, 0xc8, 0xdc,
  0xbc, 0x18, 0x72, 0x71, 0xb5, 0x3e, 0x8b, 0x60, 0x1a, 0xa1, 0xb6, 0x09,
  0x39, 0xf2, 0x11, 0xb1, 0x19, 0xde, 0x48, 0x62, 0x05, 0xd4, 0x5a, 0x7c,
  0x36, 0xe6, 0x46, 0x67, 0x5f, 0x24, 0x1c, 0x88, 0xfc, 0x71, 0x72, 0x90,
  0x7d, 0x32, 0xba, 0x73, 0x31, 0xa0, 0x9f, 0xa2, 0x10, 0xd5, 0x5e, 0x32,
  0xf6, 0x6d, 0x34, 0x19, 0x07, 0x2d, 0xb2, 0x88, 0x2e, 0xeb, 0x3d, 0x2b,
  0x8f, 0x7a, 0x6e, 0x94, 0x77, 0x59, 0x23, 0xa9, 0x23, 0x3c, 0x79, 0xad,
  0xcd, 0x42, 0x7d, 0xd7, 0xc9, 0xbc, 0x33, 0x1c, 0xe0, 0xe2, 0xb2, 0xa6,
  0x5d, 0xad, 0x2f, 0x31, 0x5c, 0xc6, 0xc8, 0x22, 0x5f, 0xe8, 0xc0, 0x5c,
  0x83, 0x2d, 0xf5, 0xcb, 0xf2, 0x0a, 0xe2, 0xa9, 0x0b, 0x3a, 0x1d, 0x72,
  0x13, 0x35, 0xb3, 0x18, 0x4d, 0xb2, 0xee, 0xab, 0x17, 0x52, 0xa0, 0x03,



  0xfd, 0x74, 0x08, 0x02, 0x41, 0x43, 0xf4, 0xde, 0x7d, 0x4d, 0x13, 0x57,
  0x22, 0x55, 0x85, 0x5e, 0x55, 0x29, 0xa5, 0xd0, 0x54, 0x33, 0xf5, 0x8c,
  0xe8, 0x44, 0x0d, 0x17, 0x16, 0xbb, 0xe8, 0x26, 0x05, 0xa5, 0xd9, 0xf1,
  0x63, 0xb5, 0x0f, 0x5e, 0xfe, 0xe3, 0x70, 0xe2, 0xc8, 0xd9, 0xc1, 0xe7,
  0x44, 0xd3, 0x94, 0xe4, 0x21, 0xa2, 0x79, 0x23, 0x58, 0xb6, 0x1b, 0xaf,

  0xb8, 0x14, 0x88, 0x34, 0x76, 0x53, 0x78, 0x0b, 0x6f, 0xae, 0xca, 0x45,










  0x16, 0x0b, 0x91, 0x78, 0x25, 0xbf, 0x00, 0x77, 0xa1, 0xb4, 0x5e, 0x78,
  0x9b, 0xaf, 0x91, 0x31, 0xdc, 0x0a, 0x9d, 0x18, 0xfd, 0x2e, 0x4b, 0xa9,
  0xe0, 0xc8, 0x26, 0xcd, 0x5f, 0x0f, 0x82, 0x34, 0x76, 0x73, 0xcf, 0x27,
  0x65, 0x6d, 0xe9, 0x85, 0x0a, 0x6b, 0x49, 0x82, 0xdc, 0xa4, 0x15, 0x18,
  0xb3, 0xa0, 0x64, 0x29, 0x80, 0xa8, 0x9f, 0x33, 0x48, 0xaa, 0x60, 0xb7,
  0xde, 0x21, 0xa7, 0x62, 0x74, 0x43, 0x26, 0x46, 0x01, 0x20, 0x37, 0x2d,
  0x68, 0x87, 0x86, 0x14, 0xfc, 0xab, 0x2b, 0x40, 0xe1, 0x4a, 0xc5, 0xba,
  0xb9, 0x87, 0x57, 0x24, 0xd3, 0xf3, 0x66, 0x9d, 0x36, 0x0f, 0x4b, 0xd8,
  0xee, 0xe3, 0x4d, 0xcc, 0x9c, 0xfc, 0x7c, 0xd4, 0x3e, 0xcc, 0x86, 0x9e,
  0x28, 0xa2, 0x7f, 0x90, 0x2f, 0xe8, 0xae, 0xfd, 0x8f, 0x7b, 0x18, 0xd3,
  0x39, 0x10, 0xfd, 0xae, 0xda, 0x90, 0x50, 0xa8, 0xc9, 0x15, 0x79, 0xa2,
  0x95, 0x6f, 0x3c, 0xa6, 0x8a, 0xfb, 0x93, 0x48, 0xa0, 0x1f, 0xd1, 0x31,

  0x33, 0x9d, 0xc5, 0x9d, 0x1b, 0xd0, 0x2b, 0x99, 0xd5, 0x0c, 0x6f, 0x0f,
  0x2e, 0xcf, 0x7e, 0x21, 0xc8, 0x5a, 0xda, 0x1a, 0x1b, 0x15, 0x9c, 0xbf,
  0xf9, 0x7c, 0x4b, 0xd1, 0x47, 0x2d, 0x9c, 0x92, 0x70, 0x11, 0x29, 0xda,
  0xd2, 0xfa, 0x0f, 0xf5, 0xd5, 0xd3, 0xf5, 0xef, 0x0e, 0x47, 0x50, 0xdc,
  0x07, 0x5f, 0x7c, 0xfb, 0xf2, 0xf4, 0xc3, 0xf1, 0xc1, 0x1f, 0x13, 0xfa,
  0xd7, 0x21, 0xff, 0xeb, 0x70, 0x2b, 0x76, 0x5c, 0x86, 0x51, 0x6d, 0x7f,
  0xb1, 0x9d, 0xd4, 0x77, 0xcb, 0x49, 0xb9, 0xb0, 0x07, 0x26, 0x5b, 0xa1,
  0x81, 0xb4, 0x81, 0x48, 0x71, 0x5b, 0xba, 0x2d, 0xae, 0xf2, 0x2e, 0xcb,
  0xae, 0x25, 0xe9, 0x50, 0xd9, 0x0d, 0x22, 0x78, 0x7e, 0x2d, 0x71, 0x83,
  0x4a, 0x6b, 0xe5, 0x61, 0x12, 0xcb, 0xeb, 0x4b, 0x04, 0x85, 0x50, 0xd2,
  0x8b, 0x5d, 0x47, 0x38, 0x07, 0x8b, 0x17, 0x07, 0xe9, 0xec, 0x33, 0x8c,
  0x30, 0xdb, 0xcc, 0x70, 0x27, 0x5c, 0x29, 0x8b, 0x3b, 0xcd, 0xaf, 0x8b,
  0x81, 0x40, 0x68, 0x1c, 0x77, 0x82, 0x3f, 0xb0, 0x5d, 0x65, 0x96, 0xf5,
  0x62, 0xd5, 0xf4, 0x6e, 0x77, 0xb8, 0x89, 0xe8, 0x2e, 0x1e, 0x34, 0xd7,
  0x29, 0xa1, 0x81, 0x0d, 0x35, 0x3d, 0xc3, 0xb9, 0x3a, 0xc8, 0x18, 0x9d,

  0x91, 0x66, 0xad, 0xfe, 0x8c, 0xc4, 0x03, 0x7f, 0xb6, 0x30, 0x92, 0x82,
  0xc3, 0x98, 0xb4, 0x42, 0x82, 0xec, 0x6b, 0x0e, 0xa1, 0x57, 0x18, 0x08,
  0xc6, 0x6c, 0x0e, 0xd2, 0x4d, 0x96, 0x41, 0x76, 0x56, 0x61, 0x34, 0xc9,
  0x1d, 0xc3, 0xde, 0x77, 0x7d, 0x4c, 0x10, 0x3d, 0x3e, 0x71, 0x4b, 0x34,
  0x36, 0xa2, 0xda, 0x13, 0x2b, 0xb8, 0xb8, 0x6a, 0x09, 0x1a, 0x55, 0xf9,
  0xb4, 0xc0, 0x99, 0xe3, 0xb3, 0x22, 0x39, 0x78, 0x18, 0x26, 0x53, 0xca,
  0xde, 0x5c, 0xa4, 0x01, 0x12, 0x0d, 0xee, 0x9a, 0xc2, 0x61, 0x50, 0xa0,
  0xdf, 0x12, 0xbe, 0xf9, 0xfe, 0xdd, 0x22, 0xdb, 0x55, 0xc3, 0x40, 0x85,
  0xdd, 0xde, 0xdb, 0xf2, 0x1f, 0x66, 0xde, 0xa9, 0x7c, 0x24, 0x26, 0x33,
  0x45, 0x04, 0xf6, 0xce, 0xdc, 0xf1, 0x17, 0x2e, 0x13, 0xf7, 0xb9, 0x46,
  0xcb, 0x36, 0x46, 0x10, 0x98, 0xf4, 0x32, 0xa4, 0x6a, 0x07, 0xa4, 0x23,
  0xda, 0x45, 0x20, 0xa1, 0x3d, 0xbc, 0x19, 0x43, 0xca, 0xa5, 0x64, 0xe8,
  0x58, 0x12, 0x13, 0xb1, 0xd3, 0x65, 0xe1, 0x5d, 0x9d, 0xaa, 0x47, 0x10,
  0x1d, 0xdf, 0x66, 0xd5, 0x94, 0xa0, 0x26, 0xa6, 0x46, 0x2f, 0x05, 0x3f,
  0x9d, 0x8b, 0x7b, 0x8a, 0x72, 0xa9, 0x24, 0x2b, 0xbe, 0x8d, 0x0b, 0x03,
  0xf1, 0xab, 0x74, 0xd6, 0x4b, 0x62, 0xc8, 0x7d, 0x98, 0x1a, 0xc2, 0x18,
  0x59, 0x08, 0x3c, 0x15, 0x90, 0x6d, 0xf6, 0xa1, 0x45, 0x66, 0x08, 0x27,
  0x04, 0x19, 0x7b, 0xd8, 0x61, 0x7d, 0xd1, 0x3b, 0x4d, 0x21, 0x17, 0xcc,

  0x85, 0x01, 0xcd, 0x5c, 0x74, 0x88, 0xa0, 0x02, 0x80, 0x0b, 0xd5, 0x9f,
  0x9e, 0x68, 0x4f, 0x07, 0xf8, 0x1d, 0x88, 0x96, 0x14, 0x77, 0x8a, 0x26,
  0xb5, 0x03, 0xb1, 0xc9, 0xca, 0xa1, 0x62, 0x0e, 0x42, 0xf3, 0x0a, 0x8b,
  0x91, 0x17, 0xe5, 0x0d, 0xc5, 0x60, 0xda, 0x08, 0xa0, 0x0a, 0xf6, 0xc3,
  0x39, 0x75, 0xcc, 0x97, 0x87, 0xa4, 0x2b, 0xf1, 0x67, 0x47, 0x1a, 0xad,
  0x8d, 0x52, 0x80, 0x96, 0xd3, 0x76, 0x2b, 0x91, 0x52, 0x97, 0x41, 0xd1,
  0xb0, 0x33, 0x99, 0xf5, 0x0b, 0x07, 0xc0, 0x15, 0x13, 0x6c, 0x58, 0xf1,
  0xa4, 0x6c, 0xae, 0xbc, 0x3c, 0x54, 0x02, 0xf5, 0x23, 0x3f, 0xcf, 0x7c,
  0xdd, 0xc0, 0x08, 0x50, 0x33, 0xb0, 0x91, 0x54, 0x63, 0x71, 0x16, 0x05,
  0x59, 0x0f, 0x9f, 0x08, 0xfc, 0x8d, 0x96, 0x68, 0x01, 0x6c, 0x29, 0x81,
  0xb6, 0x40, 0xa6, 0x38, 0xd1, 0xa5, 0x31, 0x80, 0x81, 0x2f, 0x68, 0xbe,
  0x49, 0x89, 0x4a, 0x75, 0x4d, 0x58, 0x72, 0x48, 0x49, 0x35, 0x1b, 0x1b,
  0x40, 0x4e, 0x00, 0x24, 0xa9, 0xf0, 0x8f, 0x74, 0x87, 0xe1, 0x6f, 0x1c,
  0x70, 0x13, 0xe3, 0x62, 0x90, 0xd5, 0x3e, 0x91, 0xa3, 0xa9, 0x71, 0x7f,
  0x89, 0x1e, 0x22, 0x4e, 0x11, 0xab, 0xbf, 0xf6, 0x5c, 0xd8, 0x7f, 0xd9,
  0xa8, 0x09, 0x8c, 0xbc, 0xaa, 0x66, 0x00, 0x5d, 0x40, 0x10, 0xdb, 0xc4,
  0x78, 0x6c, 0x77, 0xc8, 0xb8, 0x52, 0x17, 0x7f, 0x8b, 0xc5, 0x79, 0xd7,
  0xab, 0x19, 0xd4, 0x3e, 0x7d, 0x07, 0x8a, 0x92, 0x07, 0x84, 0x59, 0x97,
  0x72, 0x1b, 0x31, 0x3c, 0x31, 0x19, 0xc7, 0x65, 0x62, 0x20, 0x39, 0xdd,
  0xfb, 0xef, 0x07, 0x58, 0x5a, 0x48, 0x6d, 0xec, 0xc3, 0x59, 0xfa, 0xbc,
  0xc1, 0xbc, 0x08, 0xe1, 0x3b, 0x34, 0xb4, 0x5f, 0xc7, 0x02, 0x95, 0x2a,
  0xc0, 0x0d, 0x87, 0xff, 0xdb, 0xba, 0x98, 0x76, 0x64, 0x54, 0x39, 0xf0,
  0xf0, 0x38, 0x25, 0x2a, 0x6b, 0x25, 0x44, 0x97, 0xe8, 0xf1, 0x21, 0x81,

  0xbf, 0xa1, 0x8a, 0x50, 0xaa, 0xde, 0x20, 0xf1, 0xb6, 0xf0, 0x4a, 0x68,
  0xaf, 0x72, 0x73, 0x42, 0xd5, 0xf4, 0x0a, 0x48, 0x02, 0xf0, 0x23, 0x65,
  0xea, 0x1c, 0x0d, 0x14, 0x61, 0xf1, 0xfc, 0x63, 0x58, 0xd1, 0xc5, 0x72,
  0x62, 0x47, 0x84, 0x16, 0x52, 0x16, 0xca, 0xa4, 0xfb, 0xe6, 0x19, 0x66,
  0x76, 0x5d, 0xd1, 0x9e, 0x67, 0x8b, 0xda, 0x09, 0x48, 0xfb, 0x8e, 0x93,
  0x94, 0x30, 0xc2, 0x0b, 0xf8, 0x64, 0x59, 0x14, 0xe7, 0xd1, 0x1b, 0x8e,
  0x99, 0x18, 0x35, 0x47, 0x26, 0x43, 0x76, 0x25, 0xd1, 0xc9, 0x9d, 0x62,
  0xcc, 0xc8, 0x08, 0x5d, 0x98, 0x99, 0x40, 0xf2, 0x94, 0x76, 0xdf, 0x04,
  0xc0, 0x46, 0xb7, 0x2a, 0x57, 0xbc, 0x75, 0x26, 0x15, 0x72, 0x64, 0x50,
  0xf9, 0x34, 0xfa, 0x80, 0x50, 0xfc, 0x6b, 0x38, 0x9c, 0x37, 0x41, 0xba,
  0x96, 0x77, 0xd6, 0x6d, 0x12, 0x58, 0xcc, 0x05, 0xa3, 0xe7, 0xad, 0xa2,
  0xf1, 0x5d, 0x53, 0x0d, 0x4f, 0x72, 0xfa, 0x86, 0xbd, 0x78, 0xaf, 0xde,
  0xd3, 0xdf, 0x72, 0x8b, 0x50, 0x84, 0x3a, 0x5c, 0x34, 0xf6, 0xe0, 0x04,
  0xd9, 0xb7, 0xdf, 0x76, 0xcb, 0x30, 0x77, 0xce, 0xc6, 0x7b, 0x47, 0xcf,

  0xf6, 0x77, 0x23, 0x39, 0xcb, 0xe6, 0x1b, 0x3e, 0x4e, 0xe1, 0xa3, 0xfd,
  0xd1, 0xfe, 0x6e, 0x67, 0x36, 0xb4, 0xdd, 0x1b, 0x00, 0x54, 0x14, 0x5d,
  0xdd, 0x0a, 0x0d, 0x24, 0x23, 0xbb, 0x62, 0x2d, 0xc9, 0x9b, 0xf6, 0x8b,
  0x49, 0xdf, 0x67, 0xd7, 0x86, 0xd4, 0xa2, 0xf9, 0x6b, 0xa7, 0x79, 0x2d,
  0x86, 0x0d, 0x49, 0x32, 0x95, 0x2d, 0x54, 0xad, 0xdd, 0xce, 0x09, 0xc6,
  0x23, 0x24, 0x2c, 0x39, 0xd7, 0x21, 0x12, 0x6d, 0xa9, 0xcd, 0xa4, 0x2a,
  0x24, 0xe6, 0x21, 0xa6, 0xff, 0xab, 0x3b, 0x5b, 0x5e, 0xb6, 0xd0, 0x1e,
  0x9f, 0xfa, 0x67, 0x4a, 0x9a, 0xfe, 0x30, 0xad, 0xa7, 0x79, 0xce, 0xf6,
  0x4c, 0x8f, 0x19, 0xa3, 0x19, 0x8f, 0xc0, 0x90, 0x43, 0x25, 0x75, 0x9e,
  0x72, 0xa8, 0xd6, 0x01, 0x95, 0x06, 0xc3, 0x92, 0xb2, 0x6a, 0x48, 0x6c,
  0xd3, 0xb8, 0x62, 0xc3, 0x53, 0xb3, 0x16, 0xc1, 0x56, 0xb6, 0xfa, 0x65,

  0xdd, 0x55, 0xa3, 0xcc, 0x5d, 0x60, 0xb8, 0xb2, 0x55, 0x15, 0xd6, 0xf7,
  0x51, 0x6e, 0x26, 0x32, 0x9e, 0xd3, 0xa6, 0x2e, 0x69, 0x9f, 0x62, 0x9b,
  0x0a, 0x0f, 0x05, 0xd0, 0x69, 0xad, 0x01, 0x65, 0xef, 0xbe, 0xe4, 0x03,
  0x7d, 0x39, 0x70, 0xe9, 0x3a, 0x2d, 0x03, 0x28, 0x8d, 0x28, 0x82, 0x0c,
  0xae, 0x9f, 0x20, 0x3c, 0xce, 0x95, 0x54, 0xb4, 0x10, 0x69, 0x31, 0x01,
  0xb7, 0x07, 0xe7, 0x88, 0x48, 0x83, 0x09, 0x82, 0x21, 0xb2, 0xbb, 0x15,
  0x01, 0x97, 0x1a, 0x98, 0xf5, 0x01, 0xba, 0x13, 0x14, 0x54, 0x64, 0x37,
  0xc4, 0x8d, 0x6b, 0x51, 0x25, 0xaa, 0x2a, 0x27, 0xbf, 0x91, 0x4d, 0x2e,
  0x60, 0x75, 0x8c, 0xb2, 0x30, 0x49, 0x38, 0xcf, 0x22, 0xb5, 0xdd, 0x53,
  0xdc, 0xce, 0xda, 0xe6, 0x6c, 0x17, 0x80, 0x9f, 0x24, 0x7c, 0xb9, 0x60,
  0x6f, 0xd0, 0x1f, 0x00, 0x93, 0x53, 0xd0, 0xd9, 0xa6, 0x9d, 0xfe, 0x41,
  0x5a, 0x3b, 0xe7, 0x37, 0x33, 0xbc, 0x59, 0xd9, 0x32, 0x30, 0xeb, 0xfe,
  0x70, 0xc9, 0xde, 0xed, 0xf0, 0xe6, 0xe6, 0x66, 0x48, 0x17, 0x8e, 0x72,
  0x72, 0xa4, 0xcc, 0x62, 0xd4, 0x02, 0x8f, 0x86, 0x5d, 0xc9, 0x26, 0x27,
  0x31, 0x91, 0x30, 0xbe, 0xe1, 0xa5, 0x48, 0x55, 0x93, 0xbc, 0x41, 0x3d,
  0x9f, 0x10, 0x17, 0x5e, 0x93, 0xba, 0x3a, 0x99, 0x0e, 0x34, 0x1c, 0x75,

  0x44, 0x45, 0x6e, 0x9f, 0x5b, 0x0b, 0xc1, 0x4f, 0x4d, 0x9b, 0x8c, 0xea,
  0xd7, 0xcd, 0x27, 0x96, 0xcf, 0x93, 0xe1, 0xd7, 0xc9, 0xd6, 0x2b, 0x59,
  0xed, 0x85, 0x79, 0xe2, 0x79, 0x7b, 0x2d, 0xfc, 0x70, 0x18, 0xcc, 0x31,
  0xef, 0x6e, 0x3d, 0x0c, 0x3e, 0xb1, 0xf7, 0x22, 0xa3, 0xbb, 0x8a, 0xcb,
  0x9a, 0x69, 0x22, 0xce, 0x3a, 0x4a, 0x7b, 0x61, 0xb7, 0x16, 0x63, 0x9e,

  0x61, 0xe9, 0x69, 0x2d, 0x9d, 0x78, 0x26, 0x7c, 0xc3, 0x37, 0x5c, 0xc7,


  0x2a, 0xbd, 0xb9, 0xff, 0x8e, 0x7b, 0x37, 0x51, 0xa8, 0x77, 0x01, 0x57,
  0x97, 0x87, 0x47, 0x4c, 0xfe, 0x1d, 0x9b, 0x84, 0x19, 0x99, 0xa9, 0xf4,
  0xc1, 0x70, 0xc5, 0x54, 0x6c, 0x98, 0x8a, 0x5e, 0xfa, 0xe5, 0x86, 0x3a,
  0x34, 0xe7, 0x14, 0x76, 0xab, 0x68, 0x45, 0x3e, 0x3a, 0xb0, 0xa6, 0x58,

  0x96, 0xa5, 0xaa, 0x07, 0x30, 0x1a, 0xb7, 0xba, 0x81, 0xbd, 0x9c, 0x42,
  0xcb, 0xec, 0xd8, 0xf3, 0x96, 0x29, 0x08, 0xb8, 0xb1, 0xf4, 0x4e, 0x8e,
  0x73, 0xd0, 0x55, 0x55, 0x80, 0x32, 0x71, 0x59, 0x65, 0x15, 0x11, 0x3a,

  0xb2, 0xe0, 0x87, 0x9a, 0xc2, 0x1c, 0x13, 0xd6, 0x86, 0xa1, 0xbc, 0xfa,
  0xea, 0x04, 0xd9, 0xdc, 0x86, 0x91, 0x16, 0x02, 0xe2, 0xc0, 0xf3, 0xe7,







  0x96, 0x47, 0xd6, 0xa8, 0xbd, 0x24, 0x56, 0xc2, 0x25, 0x91, 0x69, 0x12,



  0x03, 0x40, 0x55, 0x9b, 0x23, 0x51, 0xe3, 0x42, 0x92, 0x56, 0xc5, 0x46,
  0x90, 0xcb, 0x6b, 0xc3, 0xbb, 0xa9, 0x2b, 0x11, 0x88, 0xee, 0x17, 0xbe,
  0xae, 0x60, 0x23, 0x69, 0x2d, 0x11, 0x5c, 0x28, 0x6b, 0x41, 0xfa, 0xb8,
  0xa3, 0x57, 0x6e, 0x21, 0x95, 0x85, 0x79, 0x6f, 0xf2, 0xf9, 0x78, 0x87,
  0x37, 0x9c, 0x49, 0xc7, 0x93, 0x62, 0xb7, 0x2e, 0xf3, 0x3d, 0x06, 0x5c,
  0x8b, 0x45, 0xbe, 0xb4, 0x98, 0xe7, 0xd6, 0x26, 0x46, 0x1a, 0x66, 0xfc,
  0x1f, 0x24, 0xa1, 0x20, 0x77, 0x0d, 0xcf, 0x23, 0xcd, 0x43, 0xeb, 0x25,
  0xfd, 0xd1, 0x14, 0xca, 0x4f, 0x12, 0x62, 0xe3, 0xc3, 0x91, 0xfd, 0xf7,
  0x05, 0x69, 0x4b, 0x5f, 0x8a, 0xa3, 0x8a, 0xf2, 0xe0, 0x6b, 0xcf, 0x1a,
  0x91, 0x62, 0x59, 0xcc, 0x5d, 0x6b, 0x84, 0x68, 0x1b, 0xe2, 0xc3, 0x71,
  0x84, 0xd3, 0xdb, 0x3d, 0xa6, 0x38, 0x82, 0x9d, 0xaf, 0xb9, 0x8d, 0xd8,
  0xbf, 0x75, 0x37, 0xef, 0x8b, 0xfb, 0x77, 0xef, 0xa7, 0x6e, 0xdf, 0xe6,
  0xdd, 0xe3, 0xf6, 0x0d, 0x9a, 0x2c, 0xfb, 0x85, 0xe7, 0xa0, 0x43, 0xb2,
  0x07, 0x5b, 0x5f, 0xd6, 0x51, 0xd7, 0xe6, 0x32, 0x9e, 0x91, 0xf9, 0xc5,

  0x2f, 0x75, 0xea, 0x20, 0x46, 0x58, 0xf4, 0x34, 0xf9, 0xf8, 0x70, 0x1c,
  0x56, 0xc4, 0xd9, 0xfb, 0xd8, 0x8b, 0xa2, 0x87, 0x63, 0x04, 0xc1, 0x2f,
  0x9e, 0x36, 0x4c, 0xcc, 0x13, 0xa4, 0x79, 0x0e, 0xe3, 0xc3, 0x69, 0x21,
  0xa0, 0x28, 0xe2, 0xc1, 0xfa, 0xbe, 0x54, 0xc1, 0xff, 0xf0, 0xc5, 0x21,
  0xad, 0xc8, 0xb5, 0x0c, 0xf4, 0x33, 0x42, 0x38, 0x04, 0xb3, 0x13, 0xfa,
  0x0d, 0xf5, 0xfa, 0x08, 0x0c, 0x24, 0xb7, 0x90, 0x52, 0x95, 0x60, 0x77,

  0xd0, 0xde, 0x30, 0x82, 0xba, 0x83, 0x30, 0xd0, 0x53, 0xce, 0x7b, 0xcf,
  0x58, 0xcf, 0x8e, 0xda, 0x32, 0x44, 0xcf, 0xee, 0xff, 0xa6, 0xf5, 0x81,
  0x9e, 0x1d, 0x19, 0x50, 0x84, 0xa1, 0x66, 0x0c, 0x6f, 0x24, 0xdd, 0x27,
  0xa8, 0x56, 0x20, 0x11, 0xdf, 0x33, 0x3b, 0xa0, 0x0f, 0x90, 0x52, 0x44,
  0xf1, 0xd6, 0x85, 0xc0, 0x85, 0x32, 0xcc, 0xfb, 0x17, 0x4e, 0x99, 0x19,
  0xd2, 0x22, 0x87, 0x42, 0xb2, 0x23, 0x10, 0xe1, 0x06, 0x4a, 0xb5, 0x94,
  0x19, 0x27, 0xca, 0x80, 0xfc, 0xfa, 0x45, 0xa3, 0xe2, 0xab, 0x8a, 0x6c,
  0x6f, 0x49, 0xca, 0x83, 0xcf, 0x5b, 0x92, 0xd2, 0xbd, 0xb3, 0x49, 0x46,
  0x8e, 0x33, 0x4e, 0x48, 0xf3, 0x1d, 0x98, 0x78, 0x89, 0xab, 0xac, 0xa9,


  0x91, 0x47, 0x98, 0xda, 0x44, 0xaf, 0x06, 0x45, 0xc7, 0x9c, 0x5b, 0xe4,







  0xd5, 0x4e, 0x22, 0xc1, 0x9c, 0xa2, 0x66, 0x62, 0x1d, 0x25, 0x93, 0xaa,


  0xbc, 0xa9, 0xa1, 0x8e, 0xaa, 0x81, 0x9a, 0x72, 0x0a, 0xec, 0x55, 0x50,
  0x12, 0x6d, 0xb6, 0x77, 0x61, 0x71, 0x60, 0xbf, 0xbe, 0x78, 0x7b, 0xca,
  0x8d, 0x1d, 0xb8, 0x3a, 0x97, 0x8a, 0x90, 0x64, 0xce, 0xeb, 0xc9, 0xd2,
  0x58, 0xd2, 0x46, 0x3b, 0x69, 0x98, 0x95, 0x29, 0x77, 0x0c, 0x4a, 0x88,
  0x11, 0xd2, 0x93, 0x80, 0xf0, 0x2a, 0x16, 0x9f, 0x11, 0x45, 0xd2, 0xc3,
  0xa1, 0xf2, 0x34, 0xe0, 0x9f, 0xae, 0xeb, 0x1a, 0x3b, 0x19, 0x19, 0x31,
  0xd0, 0xa3, 0xde, 0xd0, 0x51, 0xd0, 0x23, 0xc1, 0xed, 0xf3, 0xd4, 0x34,
  0xf4, 0x1f, 0x03, 0xa4, 0xb4, 0xf5, 0xd0, 0x90, 0xd6, 0x65, 0x9b, 0x8f,
  0x00, 0x35, 0x2b, 0x6d, 0x6b, 0x5a, 0x41, 0x59, 0xad, 0xd5, 0xbc, 0x5c,
  0x1b, 0x11, 0x5f, 0xf9, 0x22, 0x3d, 0x84, 0xf4, 0x21, 0x09, 0x24, 0xad,
  0x2b, 0x72, 0xe6, 0xb1, 0x56, 0x3d, 0x88, 0xe4, 0xdc, 0x8b, 0x42, 0xa2,
  0xde, 0x7c, 0x1b, 0xda, 0x6c, 0x99, 0x7a, 0xda, 0x2f, 0x81, 0xc6, 0xf6,

  0x6e, 0x70, 0x44, 0x49, 0x64, 0x84, 0x2a, 0x14, 0x53, 0xe0, 0x34, 0x0d,
  0xb1, 0x99, 0xd1, 0xd1, 0x0e, 0x2c, 0x85, 0x73, 0x3c, 0x50, 0xef, 0xa2,
  0x0a, 0xb6, 0x6b, 0x26, 0x52, 0xbb, 0xfe, 0x11, 0x6a, 0x2f, 0x03, 0xa8,
  0x0b, 0xd0, 0x5c, 0x68, 0x20, 0x51, 0xb6, 0xfd, 0x5d, 0xa1, 0xff, 0x51,
  0xfc, 0x5f, 0x03, 0x2f, 0xbc, 0x96, 0x93, 0x07, 0xca, 0x8f, 0x17, 0xba,

  0xc8, 0xfa, 0x32, 0xab, 0x2e, 0xb9, 0x0c, 0x81, 0x21, 0x61, 0xa3, 0x28,
  0x16, 0x69, 0xe2, 0xa1, 0xb4, 0x25, 0xc9, 0x7f, 0x19, 0xb2, 0x44, 0x85,
  0xab, 0x6a, 0x4d, 0xf5, 0x2f, 0xe2, 0x4f, 0xdf, 0x1e, 0xce, 0x98, 0xad,
  0xcc, 0xd2, 0xc2, 0xec, 0x84, 0xb9, 0xb1, 0x61, 0x7e, 0xcc, 0x62, 0xf1,
  0xc5, 0xa2, 0x5c, 0xd7, 0x77, 0xdb, 0x89, 0xf4, 0xf2, 0x91, 0xf6, 0x17,

  0x8d, 0xe4, 0xf2, 0xd0, 0x59, 0x9a, 0xf3, 0x5d, 0x17, 0x9f, 0x54, 0x28,
  0x52, 0xa5, 0x42, 0xcd, 0x8e, 0xda, 0xce, 0x70, 0xdb, 0xde, 0xc7, 0xfe,
  0x8b, 0x3f, 0x76, 0x74, 0x97, 0xe1, 0xfe, 0x67, 0xc3, 0xf9, 0x61, 0x96,
  0xb3, 0x0b, 0xc9, 0xc4, 0xcc, 0xe6, 0xa4, 0x15, 0xa9, 0xb3, 0x03, 0x92,
  0xf0, 0x60, 0x18, 0x5e, 0x0d, 0x39, 0xb8, 0xd4, 0x0d, 0xf0, 0x9b, 0x9e,
  0xe2, 0x13, 0x27, 0x79, 0x38, 0xa0, 0xe4, 0x90, 0xf3, 0x18, 0xc2, 0xc4,
  0xf6, 0xbe, 0xf1, 0x4b, 0xe0, 0x46, 0xc9, 0xb9, 0xd9, 0xaf, 0x00, 0x6a,
  0x82, 0x22, 0xd9, 0x76, 0xb8, 0xb4, 0x05, 0x7a, 0x3a, 0x2f, 0xcb, 0x49,
  0x5a, 0x6d, 0xcb, 0xde, 0x03, 0x55, 0xdd, 0x0c, 0x38, 0x63, 0xe7, 0x0b,

  0x9d, 0xf5, 0x70, 0x36, 0x88, 0xde, 0x68, 0xd2, 0x19, 0xf0, 0xee, 0x48,
  0x8b, 0x3a, 0xf4, 0xe7, 0x14, 0x20, 0x2f, 0x17, 0x33, 0xbb, 0x15, 0xfe,
  0x57, 0x23, 0x87, 0x86, 0xda, 0x04, 0xe7, 0x0a, 0x50, 0x4f, 0x00, 0xca,
  0x5b, 0xd4, 0x59, 0x60, 0x9d, 0xfa, 0x84, 0xe2, 0x4e, 0xb0, 0x21, 0x94,
  0x38, 0x11, 0x87, 0x6d, 0x91, 0x20, 0x89, 0x35, 0xc1, 0x3d, 0xe6, 0x40,
  0x33, 0x8a, 0xf1, 0x18, 0xc7, 0x53, 0x42, 0x87, 0xbb, 0xcf, 0xbe, 0x24,
  0x5b, 0x75, 0x43, 0xa6, 0x9b, 0xcf, 0x35, 0x3c, 0x39, 0xe6, 0x8c, 0xb9,
  0xae, 0x70, 0xdb, 0xe0, 0xda, 0x75, 0xb8, 0xb8, 0x60, 0xaf, 0xc2, 0x5f,


  0xd9, 0x09, 0x32, 0x3c, 0xd1, 0x2c, 0x3a, 0xfe, 0xe7, 0x05, 0x10, 0x9b,

  0xe1, 0x9c, 0x1c, 0x46, 0x48, 0xb3, 0x65, 0x5d, 0x66, 0x8b, 0xec, 0x92,
  0x57, 0xfb, 0xe2, 0xf4, 0xf8, 0xdb, 0xe3, 0xd3, 0x40, 0x6c, 0x7e, 0x35,
  0x1e, 0xef, 0x7d, 0xca, 0xaa, 0x09, 0x9a, 0xb2, 0x52, 0xe0, 0x22, 0xc1,
  0x73, 0x36, 0xc1, 0xcb, 0x93, 0x25, 0x37, 0x0e, 0xb2, 0x45, 0x12, 0xbd,
  0x03, 0x9f, 0x0d, 0x65, 0xf0, 0xf2, 0x27, 0x05, 0xe6, 0x1d, 0x25, 0x47,
  0x92, 0x4b, 0x08, 0xd9, 0x38, 0xad, 0xb2, 0x19, 0xf7, 0x2c, 0x0d, 0xb3,
  0x08, 0x81, 0xec, 0x41, 0x7d, 0x39, 0xe8, 0x50, 0x39, 0x93, 0x1c, 0x01,
  0x2c, 0xbb, 0x88, 0xe0, 0x8d, 0x15, 0xaa, 0xe7, 0x93, 0xd7, 0xf2, 0x4d,
  0xa9, 0x47, 0xa5, 0x5d, 0x62, 0x60, 0x37, 0xb6, 0x52, 0xce, 0xbe, 0x19,
  0xbe, 0x1c, 0x0f, 0x5f, 0x1f, 0x9f, 0x1e, 0x7f, 0xf5, 0xf2, 0xe2, 0xd8,
  0xe2, 0x99, 0xd7, 0x59, 0x8f, 0x0a, 0x26, 0xfa, 0xd7, 0x37, 0xb2, 0x2d,
  0x58, 0x3f, 0x61, 0xe1, 0x37, 0x39, 0x37, 0x64, 0x51, 0xc8, 0x7f, 0xee,
  0xac, 0x4d, 0x56, 0x51, 0xc3, 0x79, 0x82, 0xf1, 0xe1, 0xcc, 0xbd, 0x58,
  0x2c, 0x65, 0xaa, 0xc1, 0x0a, 0xd2, 0xc5, 0x0d, 0x35, 0x66, 0xfb, 0x50,
  0x50, 0x2a, 0x7d, 0x6e, 0x4b, 0x49, 0x79, 0xf5, 0xbe, 0x47, 0xc8, 0xed,
  0x6c, 0xeb, 0x80, 0x81, 0x4c, 0xdf, 0xe3, 0x2f, 0xd0, 0x32, 0x70, 0xc4,
  0x8f, 0x5f, 0xe3, 0xc9, 0x0e, 0xc6, 0xb8, 0x83, 0x46, 0x27, 0x06, 0x23,
  0xbf, 0x8a, 0x00, 0x96, 0x10, 0x01, 0xd5, 0xd3, 0xab, 0x6c, 0x29, 0xaa,
  0x2c, 0xa5, 0x26, 0x20, 0x08, 0xce, 0x35, 0x95, 0x82, 0x17, 0xc4, 0x29,
  0x64, 0x93, 0x8c, 0x21, 0x17, 0x80, 0x91, 0x46, 0x74, 0x1d, 0x4b, 0xf5,
  0xbd, 0xa1, 0x8e, 0x03, 0x14, 0x6b, 0xa1, 0xb4, 0x1d, 0x14, 0x18, 0x8f,


  0x90, 0x60, 0xe8, 0xe5, 0x0d, 0x84, 0x79, 0x02, 0xdc, 0x3d, 0xb0, 0x7b,
  0x67, 0x2d, 0x80, 0xb9, 0x45, 0x5b, 0x2f, 0xe1, 0x3a, 0xc3, 0x8f, 0xb8,
  0x79, 0x89, 0xe8, 0xdc, 0x34, 0xc9, 0x9f, 0xe9, 0xa8, 0x96, 0xf2, 0x04,
  0x29, 0x37, 0x24, 0x37, 0x16, 0xcc, 0xe0, 0x78, 0xd6, 0x76, 0x94, 0x69,
  0x48, 0x37, 0x56, 0x6f, 0xba, 0xcc, 0x1e, 0x18, 0x5a, 0x7d, 0x26, 0xa7,
  0x83, 0x1f, 0x49, 0x23, 0x02, 0x9b, 0xe2, 0x11, 0x75, 0xe5, 0x3b, 0x8e,
  0xd1, 0xee, 0x55, 0x40, 0x18, 0xf1, 0xfa, 0xd7, 0xb0, 0xa3, 0x84, 0x2d,
  0xb5, 0x1b, 0x66, 0xab, 0x00, 0xb0, 0x7b, 0xe7, 0x8d, 0xe2, 0xef, 0x5b,
  0xdd, 0xd2, 0xef, 0xb5, 0xe6, 0xb5, 0x46, 0x3a, 0x3e, 0x7f, 0xcf, 0xdd,
  0xd5, 0x4f, 0xe9, 0x2f, 0x12, 0x79, 0xab, 0x63, 0xf8, 0x77, 0xd2, 0xfd,
  0x83, 0x92, 0x51, 0x32, 0x84, 0x6e, 0x6c, 0x30, 0x5d, 0x93, 0x11, 0x39,
  0xff, 0x54, 0x80, 0xd6, 0xe5, 0x3a, 0x60, 0x8b, 0x83, 0xe4, 0x7f, 0xdb,
  0xa0, 0x93, 0x66, 0x42, 0x53, 0x10, 0x84, 0x22, 0x4c, 0x82, 0x73, 0x68,
  0x35, 0x40, 0x72, 0x46, 0xbf, 0x24, 0x7d, 0x93, 0xe5, 0x5a, 0xd3, 0xc7,
  0x79, 0xb9, 0x05, 0x82, 0xa8, 0x44, 0x34, 0x2c, 0xbd, 0x99, 0x54, 0x68,
  0xe7, 0x9a, 0x9a, 0xa9, 0x8c, 0x3a, 0x4b, 0x45, 0x43, 0x2e, 0x82, 0xdd,
  0x0c, 0xe3, 0x21, 0x68, 0x45, 0x26, 0x8e, 0x38, 0xc9, 0x4a, 0xc7, 0x82,
  0x35, 0xd7, 0x7e, 0x20, 0x39, 0x06, 0x64, 0x41, 0xa0, 0xed, 0x10, 0xd7,
  0x0b, 0x20, 0xf9, 0x20, 0xd0, 0xf0, 0xa5, 0x26, 0x41, 0x33, 0xd1, 0xb2,
  0x3b, 0x09, 0x9b, 0xb3, 0x42, 0x38, 0x97, 0xf0, 0x64, 0x0a, 0x40, 0x59,
  0x98, 0x36, 0x13, 0xd6, 0x60, 0x90, 0xd5, 0x77, 0x95, 0x16, 0x91, 0x3b,
  0x67, 0x36, 0xde, 0xf6, 0x44, 0xc3, 0x2a, 0xe5, 0xd8, 0x22, 0x4a, 0x3c,
  0xd1, 0x46, 0x17, 0xd6, 0xca, 0x18, 0x7a, 0x86, 0x81, 0xe5, 0x14, 0xd7,
  0x90, 0xa9, 0xf0, 0xce, 0xa0, 0x31, 0x90, 0xd0, 0x5b, 0x19, 0xa3, 0x2a,
  0x61, 0x2e, 0x2e, 0xda, 0xd2, 0x22, 0xc1, 0xfe, 0xa2, 0x6f, 0xeb, 0x99,
  0x47, 0x85, 0x8d, 0x87, 0xaa, 0x4b, 0x3d, 0x86, 0xdb, 0x25, 0x38, 0x38,
  0x3e, 0x08, 0xfb, 0xa2, 0x9b, 0x81, 0x92, 0x71, 0xd1, 0x85, 0xf9, 0x36,
  0xa6, 0x4b, 0x6e, 0x20, 0x1b, 0x91, 0x25, 0xe2, 0x09, 0xbe, 0xff, 0x1a,
  0x93, 0xa3, 0xef, 0xe0, 0x05, 0xdc, 0x7b, 0x82, 0x1e, 0xba, 0xd4, 0x1e,
  0x4f, 0x4c, 0xca, 0x93, 0xcc, 0x7c, 0x2f, 0xa7, 0x1e, 0x78, 0x7e, 0x18,
  0x20, 0x4c, 0x73, 0xae, 0x0d, 0x01, 0xa2, 0x2a, 0xa0, 0x64, 0x07, 0x10,
  0xbd, 0x4b, 0xb9, 0x14, 0x59, 0xe2, 0x37, 0x90, 0x04, 0x41, 0xc0, 0x62,
  0x38, 0x1f, 0x48, 0x3c, 0x13, 0xe9, 0x8d, 0x65, 0x15, 0x96, 0xc0, 0x4e,
  0x2d, 0xd6, 0x92, 0x3e, 0x99, 0xd6, 0xd7, 0xf1, 0x1b, 0x5e, 0x5f, 0x47,
  0x6f, 0xf8, 0x03, 0xee, 0xb9, 0xb3, 0xb7, 0x8e, 0xcf, 0xc7, 0xdf, 0x26,
  0x3d, 0xa0, 0x11, 0xdc, 0xc9, 0x85, 0xaf, 0xb8, 0x5b, 0x1d, 0x11, 0xbd,
  0x7f, 0xcd, 0xfb, 0xef, 0x79, 0x34, 0x3e, 0x10, 0xdc, 0x73, 0xf3, 0x7d,
  0xb9, 0xdc, 0xe7, 0x2f, 0xc7, 0xdf, 0x7a, 0xd7, 0xda, 0x23, 0x81, 0x58,
  0x31, 0xa6, 0xcd, 0x6c, 0xa7, 0x20, 0x31, 0x93, 0x0e, 0x0d, 0x16, 0xa5,
  0xf7, 0xfa, 0xfa, 0x21, 0xf4, 0x6e, 0x66, 0x12, 0xd0, 0x7b, 0xb0, 0xc7,
  0x9b, 0xe8, 0xdd, 0x3f, 0xa8, 0x76, 0xd2, 0xac, 0x47, 0xed, 0x05, 0x77,
  0xd1, 0xa6, 0x02, 0x8f, 0x3e, 0x32, 0xa7, 0x40, 0xa2, 0x90, 0x76, 0x98,
  0x4a, 0x88, 0x79, 0xfe, 0x34, 0x42, 0x37, 0x2f, 0x04, 0x84, 0xae, 0xe7,
  0x19, 0xa7, 0xf4, 0x3e, 0x42, 0xd7, 0x94, 0xe2, 0x8c, 0x89, 0xdc, 0xa7,
  0xf1, 0x90, 0xbe, 0x3d, 0xaa, 0xf5, 0xcb, 0xc0, 0xc3, 0x1d, 0xd2, 0x4c,
  0x33, 0x07, 0x65, 0xe0, 0x80, 0x1c, 0x22, 0xe0, 0x22, 0x0a, 0xca, 0xc0,
  0x05, 0xb1, 0xa1, 0x3b, 0xdf, 0x96, 0xe6, 0xb7, 0xaa, 0x1f, 0x2a, 0xd5,
  0xb0, 0xb9, 0xb1, 0x1a, 0x09, 0x6d, 0xb8, 0x07, 0x7c, 0x40, 0x81, 0x79,

  0x70, 0x23, 0x5b, 0xe8, 0x41, 0x59, 0xb4, 0x3a, 0xbd, 0xce, 0x28, 0xcf,
  0x03, 0x30, 0x64, 0xdd, 0x7b, 0x4a, 0x6a, 0x1e, 0xb4, 0x01, 0x52, 0x54,

  0x86, 0x79, 0x31, 0x0c, 0xd3, 0xa0, 0xfd, 0xd0, 0x56, 0xd3, 0xc2, 0xa6,
  0xa5, 0x12, 0x45, 0x28, 0xbc, 0x12, 0xe4, 0x20, 0x65, 0x14, 0x96, 0xa6,
  0xc4, 0x04, 0xd8, 0x2b, 0x19, 0x29, 0xa8, 0x8d, 0x22, 0xac, 0xb5, 0xdb,
  0xbd, 0x34, 0x65, 0xcb, 0x19, 0xf7, 0xa4, 0x83, 0x62, 0x3c, 0x2b, 0xea,
  0xa1, 0xeb, 0xd0, 0xfe, 0xc2, 0xfe, 0x35, 0xb0, 0x2f, 0x5e, 0xbf, 0x1b,
  0x53, 0xe4, 0x2a, 0x43, 0xad, 0x81, 0x9a, 0xc1, 0x75, 0xc6, 0xf5, 0x21,
  0x97, 0xe0, 0x1c, 0xe6, 0x11, 0x5b, 0xf0, 0x67, 0x9b, 0x22, 0xbe, 0x88,
  0x3a, 0x84, 0xf0, 0x89, 0xa0, 0x50, 0x2f, 0xe5, 0x82, 0x1b, 0x63, 0xdb,
  0x21, 0x2e, 0x4e, 0x2b, 0x70, 0x73, 0xd3, 0x8a, 0x76, 0x78, 0x9e, 0x22,
  0x18, 0x47, 0x5a, 0x96, 0x47, 0xd3, 0xd8, 0xd5, 0xf6, 0xcc, 0x2b, 0x46,
  0x64, 0x17, 0x0c, 0x32, 0xdb, 0xe1, 0xaa, 0xe8, 0x74, 0xa5, 0xef, 0x2e,
  0x56, 0x30, 0x93, 0x24, 0x67, 0x6c, 0x77, 0xa3, 0xf1, 0x48, 0x1b, 0xb8,
  0xba, 0x7e, 0x34, 0xa4, 0x87, 0x25, 0xfd, 0xd0, 0xfe, 0xf4, 0x09, 0x7e,

  0x3a, 0x0a, 0x36, 0x3a, 0x28, 0xa1, 0x91, 0x0e, 0xaa, 0x16, 0x1d, 0x97,
  0xb2, 0x1b, 0x8b, 0x19, 0x75, 0xde, 0xc0, 0xd9, 0x6b, 0x23, 0x05, 0x42,
  0x4b, 0x64, 0xcc, 0x43, 0xd7, 0xbc, 0x2d, 0x09, 0x70, 0x5a, 0x8c, 0x6e,

  0x53, 0xb7, 0x0e, 0xfd, 0xe8, 0x28, 0x72, 0xe8, 0x76, 0xce, 0x2f, 0x64,
  0x99, 0xf1, 0x23, 0x6f, 0x49, 0x97, 0x49, 0xce, 0xfd, 0xad, 0x5e, 0xe4,
  0xab, 0xa1, 0xbe, 0xc5, 0xc2, 0x63, 0x99, 0x7e, 0x12, 0x91, 0xfe, 0x48,
  0xe8, 0x60, 0x18, 0xc0, 0xac, 0x70, 0xbb, 0x65, 0x74, 0xa5, 0x76, 0xeb,
  0x6c, 0x11, 0x8d, 0xe8, 0x5b, 0x8d, 0x05, 0x6d, 0x25, 0xa2, 0xe0, 0xef,
  0xc4, 0x6a, 0xbe, 0x34, 0x3b, 0xdb, 0xf7, 0xf1, 0x68, 0x7d, 0x07, 0x66,
  0x62, 0xdf, 0xbd, 0xe7, 0xfc, 0x1c, 0x91, 0x6d, 0x3e, 0x3f, 0xdd, 0xb3,
  0xff, 0x3d, 0xce, 0xef, 0xc9, 0xaf, 0x72, 0x7e, 0x4f, 0xfe, 0xb7, 0x39,
  0xbf, 0x27, 0xff, 0xf2, 0xf9, 0x3d, 0x0a, 0xce, 0xef, 0xc9, 0xff, 0x2e,
  0xe7, 0xa7, 0xfd, 0xd5, 0xf4, 0xf4, 0xb2, 0xe0, 0xfc, 0xc6, 0x92, 0x36,
  0xa2, 0xc0, 0x7c, 0xb4, 0xd3, 0xfa, 0x16, 0x07, 0x69, 0x24, 0xd1, 0x91,
  0xbd, 0xe0, 0x9a, 0x6b, 0xcb, 0xd0, 0x90, 0x3d, 0x0d, 0x4b, 0x46, 0x5a,
  0x56, 0xa1, 0x83, 0x9e, 0x9c, 0x27, 0x76, 0x02, 0xde, 0x31, 0x38, 0xa0,
  0x2d, 0x28, 0x68, 0x51, 0x17, 0x75, 0x4d, 0x7e, 0x4b, 0xb3, 0x7e, 0x2e,
  0xaf, 0xac, 0x5d, 0x51, 0x70, 0x0c, 0x49, 0xcb, 0x6c, 0xdc, 0xf3, 0x17,
  0xb4, 0x5d, 0x43, 0x7e, 0xfc, 0x4f, 0xd1, 0x62, 0x37, 0x74, 0x6c, 0x76,
  0x53, 0x8a, 0x85, 0x25, 0xbc, 0xad, 0x73, 0xe7, 0x66, 0xa3, 0x59, 0xde,
  0xa1, 0xc5, 0xce, 0xac, 0xab, 0xea, 0xd8, 0x13, 0xbc, 0xff, 0xc8, 0xca,
  0x2b, 0xe0, 0xf8, 0xbc, 0xf8, 0xf0, 0x3e, 0xf4, 0xbd, 0x99, 0xa5, 0x86,
  0xd0, 0x88, 0xe6, 0xb8, 0x86, 0x64, 0xdb, 0x0f, 0x81, 0x12, 0x6f, 0x6e,
  0xe3, 0xd9, 0xd7, 0xbb, 0x9e, 0x13, 0x08, 0x41, 0x8b, 0x32, 0xd6, 0xef,
  0x8e, 0xcb, 0x6e, 0x6d, 0x69, 0x79, 0x3d, 0xe8, 0xf4, 0xb8, 0xb4, 0x69,
  0xef, 0x4e, 0x49, 0x81, 0x77, 0x44, 0x0a, 0x76, 0xab, 0xa0, 0xbf, 0x25,
  0x29, 0x83, 0x79, 0x2d, 0xa8, 0x71, 0x04, 0xa3, 0xa1, 0x72, 0x10, 0x33,
  0xfb, 0x2d, 0x33, 0xfe, 0x9e, 0x1c, 0xb6, 0x76, 0xf5, 0x35, 0x74, 0xc5,
  0xf5, 0x72, 0x25, 0xa5, 0xc5, 0xf7, 0x94, 0x56, 0x26, 0xdc, 0x8d, 0x11,
  0x65, 0x93, 0xec, 0xde, 0x97, 0x2a, 0x23, 0xb5, 0xcc, 0x6d, 0x69, 0x85,
  0x98, 0xef, 0xbd, 0xc0, 0x68, 0x51, 0x2c, 0xaa, 0x8b, 0x6e, 0x82, 0x14,

  0x57, 0xc4, 0x28, 0xbe, 0x3a, 0x71, 0x49, 0x4f, 0x6b, 0x96, 0x42, 0x07,
  0x80, 0x00, 0xf0, 0x57, 0x63, 0xe0, 0xdc, 0x88, 0x12, 0x52, 0x81, 0x15,
  0xcd, 0x99, 0xd1, 0x05, 0xcd, 0xab, 0x66, 0x98, 0x91, 0x54, 0x59, 0xd5,
  0x5e, 0x9c, 0xda, 0x16, 0x86, 0x00, 0xdc, 0x29, 0x56, 0x1d, 0x80, 0x60,
  0x0f, 0xd4, 0x5b, 0xc9, 0xea, 0x13, 0xe8, 0x0e, 0x8b, 0xcd, 0x54, 0x5c,
  0x6b, 0xed, 0x4d, 0xab, 0x45, 0xc9, 0x70, 0x12, 0x86, 0x03, 0x5a, 0x25,
  0x80, 0xff, 0x06, 0xda, 0xe8, 0x29, 0xcb, 0x60, 0xd5, 0xcc, 0x73, 0x4c,
  0x44, 0x6e, 0x92, 0x5f, 0xf5, 0x11, 0x75, 0x05, 0x90, 0xa1, 0xa3, 0x0b,
  0x94, 0x7e, 0x15, 0xdc, 0x04, 0xa4, 0xed, 0x92, 0xea, 0x18, 0x49, 0x9c,
  0xfd, 0x1b, 0x24, 0x14, 0x0a, 0xc0, 0x40, 0xf4, 0x18, 0x5b, 0x29, 0xe0,
  0x9c, 0x5b, 0x7c, 0x95, 0xf9, 0x55, 0xd3, 0x16, 0x82, 0x92, 0xa3, 0x14,
  0x9c, 0xbc, 0x68, 0x76, 0x51, 0x32, 0x61, 0x83, 0x86, 0x43, 0x40, 0x45,
  0x90, 0xa9, 0x6f, 0x09, 0x8a, 0xd3, 0x5a, 0xa0, 0x67, 0xb9, 0xe5, 0x32,
  0x40, 0x6f, 0x7e, 0xbb, 0x2a, 0x65, 0x2f, 0x33, 0xdc, 0x67, 0x51, 0xd9,
  0x25, 0x87, 0xff, 0x37, 0x65, 0x21, 0x77, 0x00, 0xd7, 0xb8, 0x99, 0xb8,
  0x85, 0x5c, 0x83, 0x47, 0xb0, 0x68, 0xaa, 0x72, 0x75, 0x97, 0x7c, 0x95,
  0xd2, 0xb2, 0xa0, 0xd6, 0xa7, 0xd9, 0x32, 0x28, 0x4d, 0xe3, 0xf6, 0xe2,
  0xa2, 0x66, 0x73, 0xab, 0x71, 0x5d, 0x21, 0xec, 0x02, 0xde, 0x16, 0x43,


  0xac, 0x66, 0xbf, 0xc8, 0x99, 0x2c, 0x65, 0x23, 0x9c, 0x7a, 0x3d, 0x1e,
  0x9f, 0x86, 0xb6, 0x9c, 0x36, 0x36, 0xda, 0x88, 0x49, 0x80, 0xd1, 0x86,
  0xdd, 0xe8, 0x88, 0x0c, 0xfe, 0x22, 0xca, 0x39, 0x64, 0xdd, 0xd9, 0x42,
  0x31, 0x3b, 0x14, 0x47, 0x7e, 0x5a, 0xdd, 0xad, 0xc8, 0xf8, 0x92, 0x22,
  0x5c, 0xbe, 0xe6, 0x34, 0x3f, 0x06, 0x81, 0xdd, 0x58, 0xf6, 0xfc, 0xa1,
  0xf6, 0xb0, 0xd4, 0x21, 0x4b, 0x29, 0x7e, 0x4f, 0xa0, 0xc8, 0x04, 0x6e,
  0x25, 0xb2, 0x95, 0xa4, 0xce, 0x0c, 0x68, 0x2e, 0xbd, 0x3d, 0xce, 0xa4,
  0x73, 0x59, 0xa7, 0x3b, 0x06, 0x9b, 0x33, 0x64, 0x69, 0x11, 0x22, 0x22,
  0xc2, 0x29, 0xbb, 0x2a, 0xdf, 0xe5, 0x0d, 0xa9, 0xda, 0xeb, 0xde, 0x0c,
  0xdb, 0x3c, 0x21, 0x25, 0x84, 0x87, 0x22, 0x80, 0x92, 0xe1, 0x2c, 0x8f,
  0x83, 0xfd, 0xfd, 0x7b, 0x31, 0x82, 0xc4, 0x5a, 0xdd, 0x08, 0x15, 0x44,
  0xec, 0x90, 0x03, 0x1c, 0xb6, 0xa6, 0x3d, 0xcd, 0xa5, 0x60, 0xa9, 0x8b,

  0xaa, 0x66, 0x3e, 0x69, 0x21, 0x7b, 0xdc, 0x15, 0x64, 0xb6, 0xca, 0x50,
  0x5a, 0x00, 0x0c, 0x32, 0x77, 0xfb, 0x18, 0x73, 0xac, 0x9f, 0xb7, 0xde,
  0x89, 0xb6, 0x94, 0xa6, 0x09, 0xd1, 0x4b, 0xa2, 0x7f, 0x8e, 0x92, 0x3f,
  0xdf, 0x39, 0xbb, 0x1d, 0x0c, 0x91, 0xfd, 0xc1, 0x98, 0x15, 0xfb, 0xf9,
  0x79, 0xfe, 0xa3, 0x4d, 0xac, 0x3f, 0x8e, 0x03, 0xf4, 0x6f, 0xcc, 0x58,
  0x30, 0xac, 0xe1, 0x76, 0xab, 0x1a, 0xa3, 0x02, 0x4e, 0x24, 0xee, 0xb0,
  0xb2, 0xab, 0x35, 0xfa, 0x47, 0xb7, 0xc9, 0x92, 0xd7, 0x2f, 0x89, 0xb9,
  0xe0, 0x46, 0x3c, 0xe7, 0x36, 0xaa, 0x53, 0x3b, 0x0b, 0xf5, 0x69, 0x5b,
  0x4d, 0xa1, 0xd2, 0xea, 0x21, 0x0a, 0xa8, 0xbb, 0xa8, 0x11, 0x54, 0x73,
  0x4d, 0xbc, 0x0b, 0xbe, 0x86, 0xb2, 0xf0, 0x3c, 0x30, 0x84, 0x26, 0xc6,
  0x99, 0x3f, 0x5a, 0x6b, 0xd5, 0x01, 0xb1, 0xf5, 0x19, 0xab, 0x22, 0xef,
  0xeb, 0x4d, 0x9f, 0x95, 0x1e, 0x76, 0x95, 0x2d, 0xaf, 0xeb, 0xb8, 0x72,
  0xd8, 0x97, 0x13, 0xc2, 0x62, 0x70, 0x06, 0xb1, 0x73, 0x13, 0x72, 0xa1,
  0x38, 0xb2, 0x23, 0xa0, 0x09, 0xb2, 0xea, 0x68, 0x34, 0x96, 0x41, 0x22,
  0x9d, 0xc8, 0x29, 0x61, 0x9c, 0x4f, 0x39, 0xaa, 0xde, 0x3a, 0x58, 0x35,
  0xee, 0x33, 0xc6, 0x2b, 0xa9, 0x1d, 0x1c, 0x1c, 0x31, 0x6d, 0xee, 0x99,
  0x66, 0x46, 0xad, 0x6d, 0x6a, 0x58, 0xe8, 0x11, 0xf5, 0x2a, 0xb4, 0xcd,
  0x93, 0x84, 0x50, 0x53, 0xaf, 0xe1, 0xbd, 0xe6, 0xe1, 0x2d, 0x02, 0x1b,
  0xdf, 0x49, 0xae, 0x5c, 0x27, 0x3f, 0x99, 0x54, 0xe0, 0x06, 0x6c, 0x83,
  0xa2, 0xe3, 0x04, 0xde, 0x98, 0xe0, 0x70, 0x50, 0x02, 0xbf, 0xae, 0xbc,
  0x18, 0xf9, 0xd6, 0x55, 0x6e, 0x4e, 0xb5, 0xd8, 0x02, 0x30, 0xe4, 0x7a,
  0xc2, 0x98, 0xa3, 0x8d, 0x7e, 0x34, 0x58, 0xec, 0x7a, 0xe1, 0x39, 0x66,
  0xe3, 0x6d, 0xc6, 0x5b, 0x09, 0xdf, 0x83, 0xa4, 0x75, 0x21, 0x54, 0x9f,
  0xe4, 0xb0, 0xbd, 0x2b, 0xbe, 0xe7, 0x73, 0x8b, 0x7a, 0x73, 0x5d, 0x21,
  0x1e, 0xdd, 0x7c, 0x74, 0xe6, 0x1a, 0xf8, 0x6d, 0x71, 0x9c, 0xa3, 0x39,
  0x5d, 0x92, 0x13, 0x87, 0x75, 0x55, 0xda, 0xe5, 0x68, 0xd3, 0x12, 0x3a,
  0x08, 0x81, 0x6c, 0x89, 0x60, 0x0a, 0x4b, 0x6a, 0x5f, 0x7a, 0x87, 0xaa,
  0x23, 0xfb, 0x69, 0x50, 0x77, 0x00, 0x00, 0x47, 0x60, 0x88, 0x25, 0x34,
  0x7f, 0xa1, 0x63, 0xda, 0xc2, 0x69, 0x95, 0xaf, 0x1a, 0xce, 0x47, 0x90,
  0xe4, 0xea, 0x8d, 0xc0, 0x39, 0xe6, 0x6f, 0x97, 0x8b, 0x72, 0x92, 0xf2,
  0x1d, 0xb1, 0xb9, 0x4d, 0xea, 0xf1, 0x6c, 0x01, 0x16, 0x13, 0x7b, 0x23,
  0xf2, 0x8c, 0x34, 0x5c, 0x30, 0x4b, 0x1e, 0x3e, 0x47, 0x77, 0x78, 0x0a,
  0x84, 0x6e, 0xfa, 0xa0, 0xfd, 0x04, 0xc3, 0xff, 0x0d, 0xe7, 0x03, 0xb9,
  0xbd, 0x5a, 0x95, 0x8d, 0xd4, 0xb0, 0xda, 0xbb, 0x53, 0x81, 0xce, 0x05,
  0x18, 0x85, 0xd9, 0x3a, 0x6b, 0x67, 0x8a, 0x6d, 0x4b, 0x98, 0x58, 0x5a,
  0xda, 0x21, 0x5b, 0xc9, 0x76, 0x2a, 0x90, 0x70, 0x6c, 0x34, 0x0b, 0x8a,
  0x00, 0x82, 0x25, 0x6b, 0x69, 0x60, 0x8c, 0x8f, 0x1b, 0x54, 0x68, 0x14,
  0x24, 0x95, 0xdc, 0xe4, 0x34, 0xfb, 0xd6, 0xdb, 0x2b, 0x06, 0x56, 0x08,
  0x29, 0x7e, 0xce, 0x0a, 0x21, 0xfc, 0x97, 0x7c, 0x26, 0x1b, 0x76, 0xc6,
  0x47, 0x19, 0x6f, 0x9b, 0x08, 0xf6, 0xd3, 0x71, 0xf1, 0x04, 0xb6, 0x56,
  0x93, 0xd1, 0x40, 0xfe, 0xfd, 0x1d, 0x43, 0x2c, 0x52, 0xfd, 0x96, 0x22,
  0xf1, 0x00, 0xd8, 0x98, 0xda, 0xce, 0x8f, 0x79, 0x41, 0xbc, 0x32, 0x8f,
  0x6e, 0x0a, 0xe5, 0xb8, 0x2d, 0xee, 0x38, 0x8b, 0x06, 0x67, 0x0e, 0x7d,
  0x57, 0x62, 0x06, 0x4a, 0x50, 0x59, 0x33, 0xf5, 0x7e, 0x39, 0xcb, 0xd2,
  0x45, 0xac, 0x5b, 0x06, 0x4d, 0x98, 0x1c, 0xdd, 0xcc, 0xda, 0x08, 0x26,
  0xa5, 0x90, 0x90, 0x89, 0xe4, 0x58, 0x73, 0x96, 0xa1, 0x18, 0x07, 0x76,
  0x86, 0xb8, 0x55, 0x11, 0xed, 0x9a, 0xfa, 0xf7, 0xe0, 0x01, 0xd4, 0x0e,
  0x4f, 0x05, 0x91, 0x00, 0x01, 0x4f, 0x57, 0x82, 0x43, 0x98, 0x6e, 0x94,
  0x90, 0xa8, 0x0f, 0x80, 0x02, 0x90, 0x0f, 0xdf, 0x1d, 0x4e, 0x1c, 0xa9,
  0x5c, 0x17, 0x0a, 0x21, 0xa3, 0x65, 0x1b, 0x34, 0x31, 0xce, 0x81, 0x21,
  0x26, 0xb9, 0x2b, 0xf7, 0x10, 0x79, 0x16, 0xc2, 0x39, 0x56, 0xe1, 0x49,
  0x5f, 0x67, 0x9a, 0x19, 0x05, 0x53, 0x86, 0x0f, 0xa0, 0xb1, 0xc5, 0xb2,
  0x34, 0x9a, 0xf0, 0x19, 0x66, 0x32, 0x87, 0x87, 0x3d, 0xa6, 0x97, 0xf4,

  0x49, 0x17, 0x1a, 0xc3, 0x65, 0xaf, 0xd3, 0x79, 0xa6, 0xc0, 0xa9, 0xc2,
  0xbe, 0xcb, 0xa9, 0xd9, 0x42, 0x04, 0x69, 0x01, 0x4a, 0x44, 0xda, 0x51,
  0x60, 0x41, 0x33, 0xd7, 0x24, 0x2e, 0x69, 0x45, 0x2e, 0x5d, 0x04, 0x61,
  0xb7, 0xf5, 0x22, 0x5f, 0xa9, 0x7f, 0x7a, 0x90, 0x64, 0x92, 0x55, 0xb4,
  0xb8, 0x93, 0x53, 0x59, 0x0f, 0x23, 0xa6, 0x97, 0x6d, 0xe6, 0x2e, 0xf0,
  0xb7, 0x0b, 0x52, 0xfc, 0x77, 0x3a, 0xa3, 0x3f, 0xda, 0x3f, 0xc0, 0x64,
  0x1f, 0xed, 0x3f, 0xdd, 0x6d, 0x4b, 0xe5, 0x45, 0x9d, 0x0d, 0x91, 0xb4,
  0x16, 0xd7, 0x4e, 0xb9, 0x55, 0x9d, 0xf3, 0xab, 0x43, 0x13, 0xa5, 0x97,
  0x24, 0xd3, 0x6d, 0xb6, 0xae, 0xd4, 0x94, 0xa3, 0x26, 0x86, 0x64, 0x98,
  0xd6, 0x57, 0x84, 0xba, 0x18, 0x48, 0x79, 0xf7, 0x0e, 0x8c, 0x36, 0xc4,
  0x6e, 0x78, 0x9f, 0x52, 0xbc, 0x2a, 0x0d, 0xd2, 0x78, 0x1f, 0xf0, 0x1c,
  0x59, 0xa5, 0x1c, 0x60, 0x88, 0xb5, 0x33, 0x55, 0x24, 0x07, 0x4e, 0x12,
  0x93, 0xf0, 0x5d, 0xbb, 0xdd, 0xb0, 0xe5, 0x3b, 0x6f, 0xf2, 0x22, 0xaf,
  0xaf, 0xd0, 0xa6, 0xb8, 0xae, 0xd3, 0xcb, 0x2c, 0x2c, 0x70, 0x37, 0x0c,
  0xc9, 0x98, 0x4c, 0xdc, 0x46, 0xaf, 0x02, 0x32, 0x3d, 0xa5, 0x86, 0xf1,
  0xbe, 0x4b, 0xc1, 0x8a, 0xf4, 0xd8, 0x03, 0x32, 0x9a, 0x5b, 0x66, 0x8c,
  0x5e, 0xf2, 0xda, 0x6b, 0x00, 0xd9, 0xd7, 0xff, 0x91, 0xba, 0x91, 0x01,
  0x22, 0x8b, 0x7b, 0x03, 0x71, 0x73, 0xa0, 0x58, 0xd7, 0x17, 0xa3, 0x6a,
  0x9b, 0xc3, 0x3d, 0x1b, 0x1b, 0x16, 0xe4, 0x7a, 0x15, 0x23, 0x05, 0xd0,
  0xfc, 0xec, 0x7b, 0xa3, 0x8b, 0x8e, 0x9e, 0xd9, 0x1f, 0xef, 0x3e, 0xac,
  0x61, 0xe4, 0x61, 0x47, 0x37, 0xa3, 0x5c, 0x5c, 0x89, 0x44, 0xc0, 0x54,
  0xf9, 0x82, 0xff, 0x11, 0xf7, 0x75, 0xa0, 0xae, 0xd5, 0x58, 0x91, 0x6f,
  0x5f, 0x02, 0x52, 0xca, 0x21, 0x3c, 0x7b, 0x69, 0xbb, 0xad, 0x1a, 0x3d,
  0x74, 0xcf, 0x24, 0x55, 0x35, 0x0a, 0xf0, 0x67, 0x31, 0x79, 0x39, 0x83,
  0xd0, 0x45, 0xdd, 0x54, 0x97, 0x33, 0x82, 0xb7, 0x21, 0xc3, 0x94, 0xa0,
  0x77, 0x92, 0xd3, 0x8c, 0x9b, 0xe5, 0x24, 0xdb, 0x5f, 0x6e, 0x47, 0xaa,
  0xf9, 0xb6, 0x5f, 0x78, 0x08, 0xe3, 0xb5, 0x6b, 0xc4, 0xb5, 0xfd, 0x47,
  0x4a, 0x4a, 0x26, 0x30, 0x15, 0xfe, 0xa6, 0x9c, 0x01, 0xe7, 0xd7, 0xc6,
  0xc3, 0xfa, 0x9a, 0xd2, 0x27, 0xf8, 0x80, 0xed, 0xe4, 0x21, 0x6e, 0x7c,
  0x4d, 0xd8, 0xeb, 0x9d, 0x75, 0xab, 0x3e, 0xb7, 0x1d, 0x54, 0xfb, 0x51,
  0xea, 0x3e, 0xa3, 0xf5, 0x48, 0x77, 0x70, 0xd7, 0xc6, 0x94, 0xe7, 0xc4,
  0x93, 0x81, 0xaf, 0x72, 0x3a, 0xcd, 0x49, 0x73, 0xc1, 0xd5, 0x37, 0xbf,
  0xbc, 0xbc, 0x8c, 0xa6, 0x38, 0x99, 0x2d, 0xa0, 0x83, 0xa7, 0x35, 0xcf,
  0xb3, 0xb4, 0x81, 0xbe, 0x41, 0x72, 0xbe, 0x3f, 0x79, 0xda, 0xe9, 0xee,
  0x91, 0x67, 0xbc, 0x55, 0xbc, 0xf0, 0xeb, 0x53, 0xe2, 0x54, 0x00, 0x22,
  0x60, 0x1a, 0x20, 0x44, 0x4f, 0xfc, 0xcc, 0x7a, 0xbb, 0xe6, 0xa9, 0x21,
  0x8a, 0x3b, 0x09, 0x2d, 0x2f, 0x50, 0x4f, 0xc0, 0x1c, 0x24, 0x5b, 0x06,
  0x3c, 0x6c, 0xa1, 0xa9, 0xb9, 0x9c, 0xc1, 0x4e, 0xbd, 0x44, 0x38, 0xd9,
  0x99, 0xf6, 0x99, 0xe5, 0x81, 0x4b, 0x7a, 0x4f, 0xb4, 0xa1, 0x86, 0xcb,
  0x65, 0xef, 0x7a, 0x45, 0xfc, 0xcc, 0x76, 0x51, 0x55, 0xd4, 0x06, 0x44,
  0x72, 0xbe, 0x30, 0x0c, 0xcf, 0x57, 0x99, 0xf8, 0xc5, 0x8c, 0x5d, 0x1f,
  0x25, 0x4c, 0x08, 0xc3, 0x8d, 0xf6, 0x70, 0x49, 0xb8, 0xa2, 0x60, 0x4a,
  0x30, 0x36, 0x60, 0x32, 0x65, 0x42, 0x4d, 0xda, 0x0e, 0x8f, 0x3e, 0xff,

  0x7c, 0x14, 0xc5, 0x39, 0xe5, 0xf2, 0x6c, 0x43, 0x84, 0xb4, 0x53, 0x0e,
  0x13, 0x73, 0x60, 0xd1, 0x8d, 0xe9, 0xfb, 0x44, 0x61, 0x28, 0x1f, 0x2b,
  0x97, 0x04, 0x5d, 0x44, 0xcc, 0x71, 0xbd, 0x08, 0xcd, 0x7b, 0x84, 0x1e,
  0x97, 0xa4, 0x56, 0x08, 0x17, 0x83, 0x7a, 0x45, 0x5c, 0x63, 0x99, 0xf7,
  0xa8, 0x74, 0x99, 0xa4, 0xe7, 0x71, 0x2a, 0xa7, 0x40, 0x03, 0x4a, 0x3e,
  0x29, 0xa7, 0xfd, 0x1a, 0xad, 0x01, 0x39, 0xee, 0x9c, 0xf5, 0xc1, 0xdb,
  0xb1, 0xdd, 0x53, 0x0e, 0xba, 0x9d, 0x68, 0xf4, 0x73, 0x92, 0x59, 0x7c,
  0x05, 0xee, 0xbc, 0xd5, 0x41, 0xc0, 0xe1, 0x92, 0xf1, 0x82, 0x6a, 0xc2,

  0xa8, 0xd3, 0x85, 0xf9, 0x40, 0x67, 0x38, 0x54, 0x48, 0x5f, 0x66, 0x4d,
  0x58, 0xc7, 0xe4, 0x65, 0xf7, 0x6e, 0x18, 0x3c, 0x66, 0x13, 0x49, 0x19,
  0x56, 0xf2, 0x62, 0x24, 0x91, 0x84, 0x59, 0x3e, 0xd7, 0x4b, 0x6a, 0xbb,
  0x43, 0x7c, 0x89, 0xd3, 0x78, 0x21, 0x5b, 0x2f, 0x65, 0x89, 0x5f, 0x46,
  0x31, 0xce, 0x24, 0xc5, 0x18, 0x80, 0x5b, 0x4d, 0x63, 0xd4, 0x6a, 0xc7,
  0xbb, 0x91, 0x45, 0xce, 0xbd, 0x08, 0xb8, 0x76, 0x87, 0x37, 0x98, 0xf3,
  0x36, 0x17, 0x31, 0x90, 0x8d, 0x17, 0x76, 0x50, 0x69, 0x75, 0x42, 0x89,
  0xfc, 0x34, 0x95, 0xd8, 0x4e, 0x28, 0x4e, 0x39, 0xf1, 0x07, 0xf3, 0x74,
  0x60, 0xf5, 0xd0, 0xbb, 0xde, 0x3e, 0x85, 0x67, 0xef, 0x47, 0xd6, 0x04,
  0x51, 0x83, 0xb7, 0xd8, 0x25, 0x80, 0xfb, 0xd1, 0x19, 0x59, 0xa9, 0xd1,
  0x84, 0xe3, 0xdd, 0xb9, 0x69, 0xa9, 0xae, 0x92, 0x1b, 0x94, 0x75, 0x59,
  0x66, 0x3c, 0x4b, 0xc0, 0x6a, 0xe8, 0xae, 0x92, 0xaf, 0xb2, 0xa9, 0xd6,


  0x53, 0x52, 0x2c, 0x61, 0x94, 0xe3, 0x53, 0xb1, 0x6e, 0x5c, 0xea, 0x5e,
  0xb5, 0x2b, 0x46, 0xcf, 0x3c, 0x9c, 0x17, 0x76, 0x59, 0x00, 0x01, 0xd9,
  0xc2, 0x13, 0xbc, 0x48, 0xce, 0x50, 0x1d, 0x46, 0xfb, 0xb8, 0x66, 0x70,
  0xb7, 0xd4, 0xf9, 0x3f, 0x58, 0x29, 0x93, 0xd4, 0x5e, 0x85, 0x47, 0x83,
  0x83, 0x23, 0x23, 0xc0, 0xfe, 0xe4, 0x35, 0x75, 0x19, 0x65, 0x51, 0x4e,
  0xf4, 0x16, 0xf0, 0x69, 0x3f, 0xb1, 0x9d, 0x25, 0x12, 0xa9, 0x71, 0x55,
  0x76, 0xb9, 0x26, 0x29, 0x87, 0x7d, 0xda, 0x51, 0x38, 0x54, 0x7d, 0x62,
  0x95, 0xaf, 0xd0, 0xc9, 0xc4, 0xd8, 0x73, 0x41, 0xae, 0xbc, 0x79, 0x8b,
  0xfb, 0x87, 0xae, 0x0b, 0xb3, 0x5d, 0xcd, 0x9a, 0x62, 0x90, 0x82, 0x07,
  0x63, 0xf8, 0xd7, 0xdf, 0xe0, 0xfa, 0x2b, 0x65, 0xe9, 0xdc, 0x7b, 0x63,
  0x66, 0x4d, 0xef, 0x6c, 0x1e, 0xd8, 0x2e, 0x19, 0x32, 0x5f, 0x00, 0x64,
  0x46, 0xa9, 0x24, 0x8d, 0x32, 0x00, 0x6e, 0x34, 0x47, 0x8e, 0x98, 0x3f,
  0x52, 0x9c, 0x72, 0x9a, 0x39, 0x18, 0x57, 0x6c, 0x0a, 0xaa, 0xaa, 0x83,
  0x5b, 0x0d, 0x44, 0x44, 0xd5, 0x9d, 0x7c, 0x9c, 0x4c, 0x69, 0x76, 0x32,
  0x60, 0xe4, 0x57, 0x2e, 0x6f, 0x12, 0xd0, 0x9f, 0xb4, 0xe6, 0xf2, 0x89,
  0x3a, 0x6c, 0xc0, 0x0a, 0x21, 0xc0, 0x5a, 0xf5, 0xdf, 0xac, 0xc1, 0x4b,
  0x9c, 0x2f, 0x02, 0x9f, 0x04, 0xdc, 0xd8, 0xe7, 0x9c, 0xa7, 0x81, 0x76,
  0x76, 0xc2, 0xd0, 0x6c, 0x5c, 0x42, 0xca, 0xa3, 0x58, 0x45, 0xdc, 0x36,
  0xac, 0x93, 0xf6, 0x7e, 0x5b, 0x2e, 0x6e, 0x0c, 0xb3, 0xc7, 0xd9, 0xf9,
  0x60, 0xd5, 0x7c, 0x4d, 0x2c, 0xd2, 0xa5, 0xe5, 0x21, 0xa4, 0x52, 0x55,
  0xa9, 0xe1, 0x98, 0x7f, 0x5b, 0x5d, 0xf6, 0x80, 0x2a, 0x72, 0xcf, 0x1c,
  0x63, 0x2b, 0x84, 0x4d, 0xba, 0x40, 0x87, 0xc3, 0x37, 0x89, 0xcc, 0xe7,
  0x8b, 0x2f, 0x5b, 0xc3, 0x69, 0xe3, 0x0a, 0x1f, 0x97, 0x5d, 0x30, 0x3e,
  0xa6, 0x97, 0xf9, 0x3d, 0x9b, 0xc0, 0x4d, 0x0d, 0x6c, 0x3a, 0x71, 0x7d,
  0x55, 0x66, 0x72, 0x76, 0x05, 0x4c, 0x60, 0xdb, 0x83, 0xc9, 0xac, 0xab,
  0x8e, 0x76, 0xd4, 0x50, 0x8d, 0xb7, 0x7f, 0xda, 0x90, 0xeb, 0xff, 0x51,

  0x5e, 0x15, 0xf4, 0x0f, 0xfa, 0x02, 0x7d, 0xe0, 0x8b, 0x83, 0x83, 0xe8,
  0xcc, 0x7b, 0xe7, 0xcb, 0x13, 0xd6, 0x19, 0x93, 0x30, 0x92, 0x14, 0x51,
  0x8f, 0xb7, 0xb5, 0x4c, 0xff, 0x11, 0xaa, 0xe6, 0x42, 0x37, 0x1b, 0xee,
  0x10, 0xf0, 0xc8, 0xbc, 0x57, 0x39, 0xfd, 0x2e, 0xca, 0x12, 0x73, 0x2b,
  0x1f, 0x16, 0x21, 0xb8, 0x85, 0xd1, 0xd5, 0xe8, 0x48, 0xfa, 0x17, 0xbf,
  0x45, 0xb1, 0xa0, 0xbb, 0x2f, 0x5e, 0x5c, 0xad, 0x2f, 0x33, 0xf0, 0xcd,
  0xe6, 0xb6, 0xd9, 0x7a, 0xd0, 0xca, 0xc9, 0x4b, 0xc1, 0x6e, 0x0a, 0x4e,
  0xb1, 0x6e, 0xbc, 0x64, 0x23, 0xd4, 0x2c, 0xb4, 0x54, 0x08, 0x4e, 0xc5,
  0x24, 0x4b, 0x49, 0x43, 0x5d, 0xdd, 0xba, 0x22, 0x56, 0x46, 0x07, 0xbc,
  0x69, 0x82, 0x7b, 0xe1, 0x2a, 0xed, 0x37, 0xac, 0xe0, 0x26, 0x9b, 0x7c,
  0xf1, 0x25, 0xf9, 0xb6, 0x6e, 0xd1, 0x3f, 0x80, 0xb5, 0x5a, 0xda, 0xba,
  0x3d, 0xb4, 0x13, 0x48, 0xbc, 0x45, 0x74, 0x07, 0x29, 0xab, 0xfe, 0x61,
  0xbd, 0x3a, 0x27, 0x6f, 0xc8, 0x79, 0x59, 0x6e, 0x1c, 0x51, 0x7d, 0x37,
  0xd8, 0x13, 0x2f, 0x99, 0x91, 0x53, 0xfc, 0x5c, 0x0d, 0x27, 0x13, 0x04,
  0xe4, 0x4c, 0x4b, 0x5c, 0xc6, 0x6a, 0xea, 0xc9, 0x43, 0x26, 0xfd, 0xcc,
  0x55, 0xe2, 0x7c, 0x31, 0x40, 0x99, 0x4f, 0xbc, 0x63, 0x8c, 0x5b, 0x03,
  0x5f, 0x47, 0x40, 0x20, 0xd1, 0x5f, 0xff, 0x68, 0x5f, 0xa7, 0xff, 0x98,

  0xdb, 0x0c, 0x44, 0xee, 0x0d, 0xab, 0xa1, 0x50, 0xa0, 0xbe, 0xb3, 0x87,
  0xf0, 0x93, 0x6d, 0x04, 0xb5, 0x3d, 0x60, 0x45, 0xfb, 0x8f, 0xdb, 0x70,
  0xe3, 0x6a, 0x90, 0x1a, 0xed, 0x99, 0xc0, 0xe3, 0x66, 0x65, 0xa0, 0xd6,
  0x52, 0x36, 0x26, 0xf7, 0x6f, 0xc2, 0xec, 0x7b, 0x26, 0x4e, 0x33, 0xd7,

  0xa9, 0xff, 0xb0, 0x65, 0x27, 0xff, 0xc3, 0x96, 0x9b, 0xfe, 0x0f, 0x5b,
  0x6e, 0x01, 0x3f, 0x6c, 0x11, 0x0c, 0x25, 0x2d, 0x22, 0x34, 0x88, 0x7f,
  0xea, 0xa1, 0x6f, 0xf3, 0x57, 0xdd, 0x47, 0xbd, 0x6f, 0x7a, 0x9f, 0xdc,

  0xda, 0xde, 0xb4, 0x69, 0x7e, 0x6c, 0x08, 0x75, 0x31, 0xdd, 0x3d, 0x34,
  0xec, 0xba, 0xb5, 0x4d, 0x6e, 0x5b, 0xc8, 0x38, 0x0b, 0x3a, 0x78, 0x7b,
  0x0f, 0xd0, 0x8e, 0xbb, 0xe6, 0x54, 0x5e, 0xd3, 0x05, 0x8b, 0x62, 0xa9,
  0xe7, 0xa0, 0xbd, 0x9f, 0x03, 0x79, 0x64, 0x5f, 0x0f, 0xe4, 0xcf, 0x7f,
  0x33, 0x5f, 0x80, 0xfe, 0x8f, 0x31, 0xe4, 0x56, 0x03, 0xc0, 0x46, 0xf2,
  0xf2, 0x90, 0x30, 0x5d, 0x70, 0xd4, 0x92, 0xc5, 0xdf, 0x9c, 0x2b, 0x8d,
  0x98, 0x24, 0x82, 0x5c, 0xfa, 0x65, 0x8e, 0x56, 0x65, 0x66, 0x55, 0x0b,
  0xb6, 0x50, 0xf7, 0x48, 0x2a, 0x20, 0xf7, 0x15, 0x1d, 0xc4, 0x6a, 0x98,
  0xe8, 0x62, 0xbc, 0x4a, 0x1f, 0x36, 0xde, 0x87, 0x7e, 0x92, 0x26, 0x45,
  0x7c, 0x51, 0x56, 0xf5, 0x17, 0x5b, 0x15, 0x75, 0x7e, 0x4d, 0x2e, 0x2b,
  0xa3, 0xc1, 0xfe, 0x91, 0x48, 0x6b, 0x6d, 0x0e, 0xcb, 0xdd, 0xd3, 0xdb,
  0xe1, 0xf2, 0xce, 0xcc, 0x7b, 0xfb, 0x27, 0x51, 0x86, 0xc7, 0xd2, 0x66,
  0x88, 0xd2, 0x1b, 0xe6, 0xb8, 0x4c, 0xba, 0x79, 0x0a, 0x7c, 0x75, 0xbd,
  0x4b, 0x29, 0xbf, 0xff, 0x22, 0x06, 0x73, 0x17, 0x2c, 0xc4, 0xe3, 0xbc,
  0x30, 0xd5, 0xbe, 0x38, 0xfb, 0xe6, 0x8f, 0x3a, 0xc0, 0x0f, 0x5b, 0xdf,
  0x0f, 0xf9, 0xa7, 0xa8, 0x17, 0x7e, 0x9e, 0x9c, 0x7d, 0x43, 0xd4, 0xfd,
  0xd3, 0x18, 0xd8, 0xa6, 0x0f, 0x7c, 0xc9, 0x7f, 0x01, 0x65, 0x6f, 0x1a,
  0xf6, 0xc2, 0xe5, 0x49, 0x7c, 0x41, 0x0d, 0x8c, 0x51, 0x67, 0x04, 0x2b,
  0x7c, 0xb5, 0xa2, 0xca, 0x21, 0xad, 0x8f, 0x6d, 0xb8, 0x3e, 0x16, 0x51,
  0xa3, 0x74, 0x52, 0x72, 0x8a, 0x74, 0x13, 0x62, 0x63, 0x03, 0x9b, 0x17,
  0x67, 0x2b, 0xbe, 0xab, 0x15, 0x1c, 0x17, 0x50, 0x87, 0xdb, 0x69, 0x06,
  0xed, 0x5a, 0xc6, 0x41, 0x72, 0x1c, 0x69, 0x82, 0xe0, 0xc0, 0x8d, 0xf8,
  0x6f, 0xd0, 0xcb, 0x6c, 0x6f, 0x6e, 0x6a, 0xa8, 0x96, 0x56, 0x99, 0x76,
  0xc8, 0x91, 0x9e, 0x7e, 0x08, 0x30, 0x19, 0x82, 0x89, 0x84, 0x02, 0x24,
  0x3a, 0x29, 0x89, 0xe8, 0xf3, 0x72, 0x21, 0x5d, 0xdc, 0x6b, 0x43, 0xf5,
  0x7c, 0xc0, 0xb6, 0x8d, 0x9e, 0xd1, 0x38, 0x68, 0x2b, 0x24, 0x52, 0x21,
  0x9f, 0x8d, 0xa8, 0x1c, 0x12, 0x4d, 0x64, 0x6f, 0x9c, 0x34, 0x6d, 0x03,
  0x60, 0x18, 0x13, 0xfe, 0x1f, 0xc9, 0xe8, 0x9f, 0x64, 0x70, 0x3e, 0xd9,
  0xaa, 0xcc, 0xa1, 0x38, 0x87, 0x23, 0x1e, 0x9c, 0xc4, 0xde, 0x1b, 0xbd,




  0x38, 0x9c, 0x06, 0xa1, 0xa5, 0x9a, 0x94, 0x27, 0xf6, 0x35, 0xa9, 0x84,
  0x92, 0xc8, 0xae, 0x9d, 0x6d, 0x48, 0xbc, 0xc4, 0x17, 0x8b, 0x3b, 0xac,
  0x6a, 0x44, 0x78, 0xdb, 0x92, 0xdf, 0x89, 0x2f, 0x59, 0x1f, 0x4b, 0x45,

  0xdf, 0x92, 0xc3, 0x1a, 0x05, 0x2f, 0x7c, 0x2f, 0x49, 0x41, 0xc3, 0x83,
  0xe7, 0x5e, 0x97, 0x22, 0xfe, 0x59, 0x7c, 0x78, 0x1f, 0x04, 0x46, 0x03,
  0xc4, 0xb5, 0x6c, 0xff, 0x86, 0xf1, 0x0f, 0xed, 0xf8, 0x9f, 0x45, 0x70,
  0x57, 0x18, 0x19, 0x25, 0xfe, 0xd9, 0x0b, 0x97, 0x04, 0xa8, 0x5e, 0x54,
  0xeb, 0xc9, 0x68, 0xf9, 0x10, 0x14, 0xf2, 0x99, 0x31, 0x59, 0x38, 0xdc,
  0x10, 0x36, 0x79, 0x60, 0xb8, 0x4a, 0x98, 0x81, 0x58, 0x87, 0xd9, 0xc6,
  0xae, 0x89, 0xc8, 0xa2, 0x5e, 0x08, 0xab, 0x5c, 0x12, 0x04, 0xeb, 0xec,
  0xb9, 0xeb, 0x79, 0xc9, 0x20, 0x12, 0xb9, 0x9f, 0x5f, 0xef, 0xea, 0x68,
  0x83, 0xb2, 0xc6, 0x16, 0xc0, 0x71, 0xf0, 0x29, 0xc3, 0x8a, 0x19, 0x7a,
  0xc9, 0x6b, 0xc8, 0xb8, 0xbd, 0xb3, 0x2d, 0x4e, 0x15, 0xfa, 0x10, 0xb5,
  0x8a, 0x44, 0x22, 0x14, 0x8a, 0xb1, 0x53, 0x60, 0x66, 0x88, 0x2f, 0x67,
  0x18, 0xd1, 0x3a, 0x9e, 0x83, 0xb5, 0xdb, 0x3b, 0xc1, 0x40, 0x41, 0xc0,
  0x09, 0x52, 0xbb, 0x99, 0x41, 0xbd, 0x5a, 0xe0, 0x40, 0xa1, 0x91, 0xec,
  0x6d, 0xb1, 0x0c, 0xc6, 0xb6, 0xa9, 0xcb, 0x56, 0x4c, 0x93, 0xed, 0x2f,
  0x76, 0xb7, 0xed, 0xd2, 0xfa, 0xcd, 0xa2, 0xa0, 0xe3, 0xa3, 0x06, 0x21,
  0x6d, 0x1f, 0x58, 0x78, 0x96, 0x96, 0x94, 0xfb, 0x90, 0x0d, 0x71, 0xa0,
  0x51, 0x04, 0xbd, 0xba, 0x11, 0x6f, 0x27, 0x12, 0xcb, 0x71, 0x3b, 0x19,
  0xeb, 0x85, 0x49, 0x3c, 0x5d, 0x34, 0x94, 0xaa, 0x8f, 0x62, 0x0a, 0x46,
  0xfb, 0xab, 0x9f, 0x7b, 0xfa, 0x78, 0xe4, 0x7a, 0x52, 0x20, 0x07, 0x4d,
  0x14, 0xc4, 0x25, 0xe2, 0x79, 0x34, 0x36, 0xa9, 0xde, 0xdb, 0x5f, 0xec,
  0xb0, 0xc0, 0x72, 0xfe, 0x34, 0xef, 0xdb, 0xdb, 0xc9, 0x0f, 0xf1, 0xba,
  0xd6, 0x84, 0xdf, 0xf5, 0x2c, 0x04, 0x21, 0xdb, 0xfb, 0xde, 0x48, 0x5e,
  0x4c, 0xca, 0xd9, 0xdd, 0x9f, 0x10, 0x76, 0x92, 0x57, 0x5e, 0xec, 0xe1,
  0x47, 0x1d, 0x95, 0xb9, 0x6f, 0x20, 0x8c, 0x62, 0x8e, 0x0a, 0x7f, 0x7e,
  0x49, 0x8f, 0xab, 0xc5, 0xb0, 0x9d, 0x8c, 0x46, 0x86, 0x09, 0xd5, 0x4b,
  0xb4, 0xe3, 0xda, 0x20, 0x58, 0x18, 0xef, 0x0e, 0x22, 0x96, 0x94, 0x14,
  0x81, 0x2c, 0x81, 0x67, 0x47, 0xad, 0x6c, 0x76, 0x42, 0xf2, 0xaf, 0xaa,
  0x2f, 0x46, 0xc9, 0x4b, 0x9b, 0x25, 0x93, 0x45, 0x30, 0xb2, 0xe9, 0x1a,
  0xb3, 0xec, 0xf0, 0x4a, 0xc2, 0x3f, 0x9f, 0xe4, 0xe2, 0x66, 0x9f, 0x95,
  0x2d, 0xdc, 0x4d, 0xc6, 0x74, 0x30, 0xc2, 0x3d, 0x8e, 0x94, 0x36, 0x2d,
  0x2b, 0x8e, 0x11, 0xb1, 0x3b, 0xdd, 0xda, 0x2f, 0x32, 0xb5, 0xe1, 0xb1,
  0x00, 0x73, 0x29, 0x1b, 0x1d, 0x24, 0x4f, 0xed, 0x97, 0x22, 0x58, 0xf5,
  0x6c, 0xf1, 0xd7, 0xc9, 0xe7, 0x43, 0x7a, 0xca, 0xeb, 0x16, 0x2b, 0x74,
  0xdf, 0xce, 0xe0, 0x18, 0x88, 0x52, 0x38, 0x44, 0x62, 0x52, 0xa4, 0x20,
  0x07, 0x92, 0x60, 0x92, 0xd6, 0xd9, 0x93, 0x47, 0xaa, 0x5e, 0xf2, 0x2e,
  0xd5, 0xea, 0xbf, 0x6d, 0x39, 0x61, 0x59, 0x0e, 0x79, 0x0b, 0xea, 0x5e,
  0x04, 0x14, 0x16, 0x93, 0x72, 0x46, 0xcd, 0xbf, 0x38, 0x07, 0x97, 0xa4,
  0xa9, 0x51, 0x24, 0x2f, 0x1b, 0x54, 0x14, 0x3d, 0x7d, 0xe2, 0x4d, 0xfa,
  0x1e, 0x77, 0x45, 0x87, 0x93, 0xca, 0x0a, 0xbb, 0x2b, 0x52, 0x7b, 0xdd,
  0x7c, 0x37, 0xb8, 0x97, 0xe4, 0xeb, 0x60, 0xe0, 0x31, 0x59, 0xa3, 0x75,
  0x30, 0xde, 0x77, 0x8d, 0xfc, 0x4b, 0xf0, 0x47, 0x25, 0x9c, 0xee, 0xa7,

  0x37, 0x12, 0xb5, 0x67, 0x22, 0xe9, 0xfb, 0x3c, 0x09, 0x26, 0xec, 0xfb,
  0xe9, 0x9a, 0x82, 0x08, 0xf3, 0x75, 0x05, 0xe9, 0x23, 0x8f, 0xb1, 0x92,
  0xa0, 0x75, 0x4a, 0xa2, 0xa7, 0xbf, 0x7d, 0xf9, 0xee, 0xc3, 0xcb, 0xd3,
  0x87, 0x77, 0x05, 0x6a, 0x35, 0x9a, 0xbb, 0x27, 0x07, 0xd6, 0x07, 0x33,
  0xe8, 0x40, 0xfd, 0xc4, 0xa1, 0x0c, 0x82, 0xa8, 0x03, 0x41, 0x1b, 0x74,
  0xb3, 0xf5, 0xa8, 0x68, 0x8c, 0xe8, 0x8a, 0x92, 0x44, 0xe2, 0x10, 0x40,
  0x9c, 0xe7, 0x2b, 0x21, 0x72, 0x2f, 0x73, 0x33, 0xad, 0xa5, 0x27, 0xe3,
  0x96, 0xbe, 0x4f, 0xaf, 0x6f, 0x49, 0xf2, 0xb8, 0xad, 0x13, 0x8f, 0x51,
  0xb9, 0xad, 0x6d, 0xb7, 0xa9, 0x57, 0xda, 0xd4, 0x5a, 0x04, 0x5a, 0xcb,
  0xfb, 0x56, 0xce, 0xe7, 0x2e, 0x7b, 0xb6, 0x1b, 0xe1, 0x7b, 0xf5, 0xaa,
  0xbf, 0xe4, 0xf6, 0xd7, 0x44, 0x4b, 0xed, 0x64, 0xa4, 0x63, 0x1b, 0x1d,
  0x77, 0x1f, 0x36, 0x25, 0x57, 0xa3, 0xbf, 0x90, 0xb9, 0xc5, 0x77, 0xd5,
  0x4c, 0xd0, 0x47, 0x0e, 0x50, 0x15, 0x17, 0xed, 0x66, 0xc7, 0xc7, 0xef,

  0xb1, 0x59, 0xe7, 0x2f, 0xc7, 0x63, 0x2b, 0x0b, 0x6b, 0x49, 0x4b, 0x18,
  0x04, 0xc6, 0x18, 0xd4, 0x48, 0xbf, 0xed, 0xc9, 0x28, 0xb1, 0x9d, 0x62,
  0x25, 0x9d, 0x13, 0xb1, 0x1f, 0x63, 0xf3, 0x5d, 0xac, 0x97, 0xe6, 0xc2,
  0x18, 0x8d, 0x77, 0xb6, 0x5d, 0x4b, 0x28, 0xb6, 0x4b, 0x78, 0xc4, 0xb9,
  0x44, 0x93, 0xc2, 0x59, 0x13, 0xed, 0xd1, 0xd9, 0x8f, 0x35, 0x86, 0x44,
  0x5c, 0x9e, 0x83, 0xd7, 0x3e, 0xc4, 0xed, 0x20, 0xee, 0x4c, 0xdf, 0x1a,
  0x9f, 0x5c, 0x1c, 0x9b, 0xed, 0xfb, 0x70, 0xf1, 0xf5, 0x96, 0xa4, 0x2e,
  0x74, 0x51, 0x30, 0xe0, 0xb4, 0xa7, 0x16, 0xaf, 0xd7, 0xb6, 0x5a, 0xb6,
  0x62, 0x47, 0x8a, 0xb1, 0x16, 0x62, 0x1a, 0xb8, 0xfb, 0xe8, 0x68, 0xc3,
  0x29, 0x3d, 0x1e, 0x3d, 0xee, 0x9e, 0x52, 0x3f, 0x5c, 0x35, 0x03, 0x18,
  0x07, 0xe4, 0x2e, 0xa8, 0xc8, 0x94, 0x3d, 0xb5, 0xe7, 0x9a, 0xa7, 0x20,
  0xc8, 0x06, 0x74, 0x9d, 0x94, 0x4b, 0xe1, 0x03, 0xf4, 0x3c, 0x85, 0x12,
  0xf4, 0xe2, 0xe2, 0xc0, 0x6e, 0xb6, 0x70, 0x43, 0xe2, 0xed, 0xe5, 0x70,
  0xa8, 0x39, 0xb1, 0xb4, 0x9a, 0xd9, 0xb2, 0xd0, 0x50, 0x3f, 0xd4, 0x5c,
  0x3f, 0x6a, 0xc9, 0x64, 0x48, 0x40, 0x5b, 0xb2, 0xb4, 0xaa, 0x75, 0xc3,
  0xde, 0x0a, 0x2e, 0x9f, 0x2f, 0x0e, 0xa6, 0x0d, 0x2f, 0x3a, 0xba, 0xb4,
  0x58, 0x54, 0xe8, 0x8d, 0xd9, 0x8f, 0x71, 0xfc, 0x67, 0xda, 0x57, 0xc9,
  0x17, 0x79, 0xc1, 0x7f, 0xc6, 0xe9, 0x1d, 0x22, 0xb7, 0x2a, 0x17, 0xec,
  0x40, 0x94, 0x37, 0x38, 0x89, 0x93, 0x8b, 0x5d, 0xa4, 0x0e, 0xa3, 0x42,
  0xc2, 0xa1, 0x84, 0x68, 0xd0, 0xd4, 0x3c, 0x6c, 0xbb, 0xb5, 0x33, 0xde,
  0xb5, 0x9e, 0xd6, 0x0b, 0x44, 0x14, 0x31, 0x5a, 0xa4, 0x8a, 0xc9, 0x43,
  0x56, 0x14, 0xf5, 0x32, 0x86, 0xee, 0xe3, 0xdd, 0xde, 0xd0, 0x62, 0x02,
  0xa3, 0x9e, 0xde, 0xcc, 0x7a, 0xb0, 0xea, 0xe0, 0xd6, 0x42, 0x12, 0x19,
  0x6c, 0x40, 0xae, 0x99, 0x7a, 0xf5, 0xdd, 0x6b, 0xaf, 0xd9, 0x8e, 0xe6,
  0xa9, 0x31, 0xbd, 0x88, 0x42, 0xda, 0x87, 0x06, 0x97, 0xb9, 0x64, 0xcb,
  0x11, 0x82, 0xaa, 0xb3, 0x2c, 0x5b, 0x59, 0x68, 0xf3, 0x1c, 0x35, 0x36,
  0x79, 0x8d, 0x20, 0xaa, 0xc0, 0xca, 0xa3, 0x9d, 0x5c, 0xcf, 0xec, 0x84,
  0x75, 0x68, 0x8b, 0x48, 0xd8, 0x3b, 0xd4, 0x3c, 0x8c, 0xc2, 0xb8, 0x07,
  0x4f, 0x8f, 0x3e, 0x37, 0xb2, 0xf9, 0x0e, 0x58, 0xe3, 0x6e, 0xcb, 0x18,


  0x0b, 0xb8, 0x1f, 0xe7, 0x4f, 0x8c, 0x1a, 0x4d, 0xef, 0x15, 0x38, 0x85,
  0xa4, 0x26, 0x33, 0x02, 0x0e, 0x2a, 0x29, 0x6e, 0x0e, 0xb1, 0x68, 0xcc,
  0x26, 0xca, 0x86, 0x49, 0xd2, 0x1d, 0xf6, 0x89, 0x13, 0xc4, 0x46, 0x1e,
  0x01, 0x53, 0x83, 0x12, 0xea, 0xa4, 0x66, 0x58, 0xca, 0xfb, 0xe3, 0x8b,
  0xf7, 0xe6, 0x8f, 0xf1, 0xc5, 0xd9, 0xfb, 0x1e, 0x64, 0xc6, 0x86, 0x61,
  0x3a, 0x68, 0xd3, 0x34, 0x5d, 0x05, 0xdb, 0xdc, 0x46, 0x6d, 0x43, 0x26,
  0x34, 0xb3, 0x9d, 0x3a, 0x0a, 0xf4, 0xe5, 0xe1, 0x7d, 0xd5, 0xa3, 0xd6,
  0x42, 0xe7, 0x46, 0x3e, 0x6c, 0x5c, 0x18, 0x9f, 0xf9, 0x66, 0x0a, 0xc1,
  0x82, 0x89, 0x18, 0x69, 0xc5, 0x96, 0xd1, 0x63, 0xb6, 0xc6, 0x68, 0x23,
  0xe7, 0xbf, 0x83, 0xb1, 0xd7, 0xf6, 0xd4, 0x3d, 0x68, 0x86, 0x9c, 0x9a,
  0xcb, 0xcd, 0x59, 0x5c, 0xb7, 0x76, 0xc3, 0x69, 0x15, 0x0a, 0x60, 0x2b,
  0xd9, 0x81, 0x03, 0x59, 0xf4, 0x92, 0x7b, 0xe8, 0xd7, 0xe8, 0x42, 0xbb,
  0x6e, 0xc1, 0x75, 0xb9, 0xcc, 0xd8, 0xc3, 0xcf, 0xc9, 0xb9, 0xca, 0x9c,
  0x58, 0xb6, 0x30, 0x2e, 0x6d, 0x12, 0xc3, 0xc3, 0xb0, 0x10, 0x62, 0x74,
  0xca, 0xdb, 0x16, 0x51, 0xa0, 0x14, 0xea, 0xe0, 0x73, 0xc9, 0x8c, 0xa5,
  0xda, 0x00, 0x9b, 0x6d, 0x5b, 0x67, 0xe5, 0x61, 0x8b, 0xb5, 0x99, 0xf7,
  0x41, 0x97, 0xc9, 0x10, 0x28, 0x43, 0x9c, 0xb3, 0xa0, 0x8f, 0x9e, 0x16,
  0xd7, 0x23, 0xd1, 0x4a, 0x73, 0x6c, 0xa0, 0x4b, 0xf8, 0xfd, 0x43, 0xcf,
  0xe5, 0xa9, 0x68, 0x58, 0x0d, 0xd5, 0x8b, 0x04, 0xe6, 0x61, 0x69, 0x5b,
  0x8e, 0x9c, 0x43, 0x34, 0xeb, 0x2e, 0xd3, 0x6d, 0xe9, 0x73, 0x21, 0x9b,
  0x55, 0xa5, 0x2d, 0x71, 0x1d, 0x99, 0x02, 0x34, 0x8a, 0xde, 0xb6, 0x5f,
  0x7d, 0x28, 0xd1, 0x5d, 0x0d, 0x06, 0xe9, 0x56, 0xce, 0xc9, 0x80, 0x1e,
  0xd9, 0x51, 0x04, 0x9d, 0xe4, 0x43, 0x21, 0xc8, 0x31, 0x85, 0xb1, 0x2d,
  0x90, 0xff, 0x30, 0xb3, 0x9b, 0x46, 0x80, 0x4a, 0x94, 0xb6, 0xc5, 0x42,
  0x6b, 0x56, 0xb2, 0x42, 0x0f, 0x4c, 0xe7, 0x10, 0x22, 0x0c, 0x3e, 0x64,
  0x64, 0x13, 0xa8, 0xa4, 0x91, 0xf1, 0x9c, 0x5d, 0x32, 0x6d, 0xba, 0x2b,
  0x05, 0xca, 0x43, 0xb0, 0xd0, 0x73, 0xff, 0xd0, 0x98, 0xa5, 0xc1, 0xfa,
  0x71, 0xbc, 0xa0, 0x61, 0xb0, 0x05, 0x46, 0x54, 0x50, 0xaf, 0x80, 0xc0,
  0x5a, 0x14, 0xd1, 0xd2, 0x2c, 0x86, 0xb4, 0x58, 0x17, 0x0b, 0xca, 0x11,
  0x6f, 0x43, 0x45, 0xa8, 0x1a, 0x38, 0xda, 0x50, 0xc5, 0xea, 0x23, 0x4b,
  0xb4, 0x48, 0xb2, 0x5d, 0xaf, 0xdf, 0x5e, 0x5d, 0x6f, 0xe5, 0x2f, 0x08,

  0xf4, 0x3d, 0x1d, 0x99, 0x22, 0x52, 0x2a, 0x6d, 0xe5, 0x45, 0x4e, 0x48,
  0x42, 0x65, 0xb5, 0x47, 0x55, 0x2a, 0x84, 0xd9, 0x67, 0xac, 0xca, 0x72,
  0x81, 0xd6, 0x3e, 0xaa, 0xba, 0xc5, 0x1a, 0x32, 0x43, 0x05, 0x63, 0x0c,
  0x1e, 0x33, 0x78, 0xbb, 0x72, 0xdf, 0x6b, 0x56, 0x47, 0xd2, 0xd4, 0x83,
  0x8d, 0x18, 0xc5, 0xda, 0xc1, 0x71, 0x46, 0x08, 0x32, 0x1e, 0xdb, 0xea,
  0x98, 0xb6, 0x26, 0xd5, 0xe6, 0x22, 0x38, 0x57, 0xa8, 0x7c, 0xc8, 0xbf,
  0xef, 0xa9, 0xe5, 0xd3, 0xc6, 0x2e, 0x00, 0x87, 0x32, 0xbb, 0x32, 0xe0,
  0xec, 0x90, 0xf6, 0xcd, 0x84, 0xe5, 0xd0, 0xfe, 0x5a, 0x9d, 0x35, 0xeb,
  0x55, 0x28, 0xe7, 0x5d, 0xf5, 0xa9, 0x1d, 0x51, 0x83, 0xa2, 0xde, 0x14,
  0x09, 0x55, 0xc1, 0x6d, 0xbf, 0x8f, 0xce, 0xdf, 0xbd, 0x8d, 0xd0, 0x04,
  0x02, 0xe9, 0xde, 0x87, 0x04, 0xa0, 0xe2, 0x85, 0x1a, 0x04, 0x27, 0x5b,
  0x46, 0xbf, 0xd8, 0xdf, 0x62, 0xa0, 0x05, 0x29, 0xdb, 0xe2, 0x28, 0xbb,

  0x7d, 0xdb, 0xec, 0x8b, 0x37, 0xdf, 0xf0, 0xce, 0x68, 0x3d, 0x8a, 0x94,
  0x2c, 0xd2, 0xe9, 0xec, 0x50, 0x2f, 0x7a, 0xdc, 0xdf, 0xdd, 0xcf, 0x7a,
  0x97, 0xbe, 0x61, 0x56, 0x5b, 0x07, 0xcf, 0x0e, 0x47, 0x07, 0x4f, 0x3e,
  0x1f, 0x1d, 0xa0, 0x93, 0xad, 0x37, 0x37, 0xd7, 0x71, 0xd5, 0x1b, 0x28,
  0xd2, 0xcf, 0x37, 0xe9, 0x47, 0xf4, 0xe5, 0x2f, 0x2c, 0xef, 0x46, 0xf4,
  0xdc, 0x88, 0xbb, 0xea, 0x04, 0xdf, 0x58, 0x1a, 0x9d, 0x26, 0x2f, 0x82,
  0x38, 0xc8, 0xd0, 0x65, 0x15, 0x31, 0x2d, 0xae, 0x72, 0x22, 0x23, 0x45,
  0xd9, 0xf4, 0xf6, 0x49, 0x1b, 0x02, 0xda, 0x06, 0x27, 0xb8, 0x9d, 0xf1,

  0x19, 0x29, 0x4b, 0x9f, 0x8a, 0x1a, 0xe9, 0xb8, 0xba, 0xfd, 0x7e, 0xc0,

  0x36, 0x7f, 0xb2, 0xd5, 0x47, 0x10, 0x2e, 0xf6, 0xd2, 0x75, 0x61, 0xba,
  0x00, 0xf1, 0xd4, 0x45, 0x09, 0x12, 0xd0, 0x17, 0x7e, 0x50, 0x35, 0x6e,
  0x1b, 0x10, 0xf7, 0x85, 0x0c, 0xc0, 0x8f, 0x5c, 0x25, 0x8e, 0x5f, 0x49,
  0x8c, 0x91, 0x6d, 0x9d, 0x68, 0x07, 0xce, 0xc9, 0xc2, 0x2c, 0x31, 0x93,
  0xd6, 0xe1, 0xe8, 0x9d, 0x3f, 0xfc, 0xc1, 0x71, 0x24, 0x6e, 0xab, 0x8e,
  0x5e, 0x1e, 0x8f, 0x01, 0xd5, 0xca, 0xb1, 0x6a, 0xee, 0x0a, 0xb0, 0xf5,
  0xfc, 0xaf, 0x70, 0x0e, 0xff, 0x38, 0xfc, 0xab, 0xf9, 0xe7, 0x8f, 0x5b,
  0x7a, 0xa9, 0x19, 0x96, 0xcb, 0x15, 0x8c, 0x38, 0xf8, 0x43, 0x1c, 0xd0,
  0x20, 0x69, 0xb7, 0xa5, 0x85, 0x66, 0x70, 0xf1, 0xea, 0x9c, 0x2f, 0x63,
  0xc5, 0x61, 0x6f, 0x50, 0x33, 0xf1, 0x21, 0xa8, 0xf5, 0xc4, 0xc2, 0xd1,

  0x51, 0x83, 0xe9, 0xc4, 0xee, 0xa5, 0xf7, 0xca, 0xc0, 0x25, 0x35, 0xdc,
  0x30, 0x07, 0x48, 0x8d, 0x7e, 0x7b, 0x49, 0xfe, 0x15, 0x2e, 0x49, 0x37,
  0x7c, 0x57, 0x15, 0x69, 0xe9, 0x18, 0x4c, 0xc0, 0x5e, 0x86, 0x0d, 0xd8,
  0xeb, 0x70, 0x63, 0xa6, 0x34, 0x48, 0x04, 0xfe, 0x96, 0x6b, 0x23, 0x1a,
  0xc1, 0x52, 0x34, 0xdb, 0x60, 0x36, 0x4a, 0xb9, 0x6d, 0x95, 0xd7, 0x9f,
  0x68, 0x7d, 0x52, 0xe6, 0xe3, 0xe5, 0x0a, 0xd1, 0x7c, 0x3e, 0xb3, 0x5a,
  0xdf, 0x9d, 0x42, 0xd6, 0xd8, 0xc2, 0x3d, 0x6f, 0x67, 0x9d, 0x74, 0xd0,
  0x63, 0x57, 0x20, 0xca, 0x28, 0xec, 0x96, 0x3c, 0x56, 0x65, 0x0f, 0x40,
  0x83, 0x93, 0x54, 0x98, 0x73, 0xa3, 0xe7, 0x5a, 0xd2, 0xf0, 0xa0, 0x99,
  0xa8, 0xa4, 0x9d, 0x88, 0x85, 0xa4, 0xdf, 0x6e, 0x57, 0x6a, 0x51, 0x87,
  0x1a, 0x72, 0x14, 0x33, 0x3c, 0x94, 0xc5, 0x37, 0x43, 0xcf, 0x2c, 0x2a,
  0x9f, 0xa8, 0xcc, 0x34, 0x66, 0x03, 0xad, 0xcd, 0xe7, 0x9b, 0x41, 0x41,
  0x5e, 0xd5, 0xe9, 0x3e, 0x8b, 0xda, 0x0a, 0xb8, 0x68, 0x4e, 0x19, 0x5d,
  0xb0, 0x4f, 0x9d, 0x36, 0x1f, 0xbb, 0x4e, 0x7f, 0x1a, 0x6e, 0xad, 0x1d,
  0xd5, 0x6e, 0x0a, 0xb4, 0x47, 0x4e, 0x42, 0x83, 0x06, 0xd3, 0x5f, 0xc6,
  0x20, 0x7a, 0x3d, 0xa1, 0x7a, 0xb8, 0x1f, 0xba, 0x52, 0xa8, 0xe9, 0x33,

  0x36, 0x79, 0x98, 0xaf, 0xee, 0xdf, 0x40, 0x85, 0xf9, 0xa2, 0x23, 0x6d,
  0x71, 0x16, 0x2b, 0x61, 0xea, 0xf5, 0xe5, 0x25, 0x30, 0x31, 0xc2, 0xcc,
  0x3c, 0x54, 0x2c, 0x4a, 0xe1, 0x80, 0xf4, 0x33, 0x30, 0x8c, 0x1c, 0x33,
  0xd7, 0xdd, 0x70, 0x65, 0x91, 0xc2, 0x70, 0x6a, 0xd7, 0x99, 0xa4, 0xb7,
  0x74, 0x96, 0x7a, 0xd9, 0xc9, 0xf5, 0x76, 0x9a, 0x4c, 0x95, 0x0d, 0x75,
  0xa2, 0x5d, 0x3e, 0x48, 0xa9, 0x41, 0x41, 0x06, 0x2c, 0x73, 0x44, 0xf8,
  0x1a, 0xfa, 0x79, 0xdf, 0x46, 0x77, 0x23, 0x79, 0xd8, 0xa8, 0x3f, 0x0e,
  0xc3, 0xf1, 0xe4, 0x73, 0x01, 0xf1, 0x63, 0x14, 0xb6, 0xca, 0xa2, 0x5a,
  0xb1, 0x5e, 0x29, 0xfc, 0xa8, 0x2b, 0x35, 0xe7, 0xd8, 0x8e, 0x4d, 0x7e,
  0x01, 0xc7, 0x0a, 0x7d, 0x6d, 0xe9, 0xd1, 0xe8, 0x30, 0x38, 0xd8, 0x7a,
  0x31, 0x9c, 0x4e, 0xa7, 0x43, 0xe8, 0x01, 0x2f, 0x58, 0x39, 0xd9, 0x13,
  0xe5, 0xa0, 0xc7, 0x67, 0x30, 0xce, 0x64, 0xbf, 0x5f, 0xbd, 0x7a, 0x25,
  0x7a, 0xcc, 0xc5, 0x55, 0x47, 0xa3, 0xb0, 0x80, 0x53, 0xa2, 0x51, 0xc5,
  0xda, 0x1c, 0xd6, 0x57, 0xeb, 0x66, 0x86, 0x6e, 0xc8, 0xc4, 0x32, 0x94,
  0xf5, 0xda, 0x1a, 0xd9, 0x0e, 0x2a, 0x28, 0x35, 0xa5, 0x1f, 0xb8, 0xcc,
  0x44, 0x33, 0x76, 0x70, 0x34, 0x2b, 0x6e, 0x80, 0x82, 0x17, 0x65, 0xec,

  0x6e, 0x8b, 0x55, 0x9e, 0xaa, 0x0f, 0xdd, 0xa5, 0x13, 0xac, 0x63, 0x99,
  0x6c, 0x3a, 0x0a, 0x3e, 0x9b, 0xe6, 0x92, 0x01, 0x96, 0xca, 0xb7, 0xba,
  0x63, 0xdf, 0x73, 0x1e, 0xb2, 0xd5, 0xed, 0x23, 0x79, 0xd2, 0x7b, 0x24,
  0xd1, 0xcd, 0x27, 0xab, 0x8a, 0xb6, 0x7d, 0xe7, 0x15, 0x10, 0x45, 0x5f,
  0xc9, 0x85, 0x78, 0x75, 0x45, 0xf9, 0x5b, 0x0b, 0x3a, 0x1c, 0x33, 0xe5,
  0x9a, 0x99, 0x80, 0xc8, 0x8f, 0xf1, 0xf8, 0x74, 0xef, 0xe2, 0x74, 0x1c,
  0x64, 0xbc, 0xdf, 0x91, 0xcb, 0x98, 0x9b, 0x68, 0xb7, 0x5c, 0x9e, 0xbc,
  0x45, 0x00, 0x87, 0x2e, 0xe7, 0x6d, 0x0a, 0xe7, 0xaf, 0x44, 0xf1, 0x4e,
  0xd6, 0x85, 0x16, 0xc3, 0x58, 0xd9, 0x5d, 0x64, 0x05, 0x8a, 0xc8, 0x49,
  0x84, 0xe3, 0x06, 0x20, 0x21, 0xb6, 0x4e, 0xde, 0xbd, 0xbc, 0xa0, 0xf2,
  0x96, 0x46, 0x52, 0x3c, 0xc8, 0x05, 0x14, 0x7a, 0xc6, 0x6f, 0x2c, 0x2e,
  0x01, 0xa2, 0x36, 0xe9, 0xd4, 0x35, 0x43, 0x51, 0x65, 0x9d, 0x8f, 0xaf,
  0x56, 0xc2, 0xdb, 0xb4, 0xfd, 0x66, 0x4b, 0x45, 0x3a, 0x74, 0x69, 0xbe,
  0x7b, 0x1a, 0x07, 0xd1, 0xd3, 0xe0, 0x0d, 0x88, 0x5f, 0x87, 0xf7, 0xc2,
  0xca, 0x75, 0xa3, 0xa5, 0x8a, 0x5f, 0xa7, 0xbf, 0x28, 0x2f, 0x73, 0xf2,
  0x04, 0xe2, 0xbc, 0xfc, 0xc0, 0x5b, 0xe0, 0x26, 0xe5, 0xdd, 0xa9, 0xb9,
  0x14, 0xa7, 0x0d, 0x60, 0xcb, 0x57, 0x84, 0xe4, 0x84, 0xdd, 0x53, 0xdb,
  0x87, 0x49, 0x4b, 0x20, 0xc3, 0x0a, 0x43, 0x60, 0xe7, 0xe5, 0x53, 0x63,
  0x22, 0x4c, 0x29, 0xfb, 0x03, 0xe5, 0x80, 0x75, 0x3b, 0xc5, 0x36, 0x6f,
  0xc1, 0xf2, 0xa9, 0x87, 0xb4, 0x0e, 0x63, 0x15, 0xd0, 0x14, 0x64, 0x85,
  0x1b, 0xfd, 0xf0, 0x4f, 0x5a, 0xc2, 0xe3, 0x2b, 0xb2, 0xc8, 0x2e, 0x03,
  0xa1, 0x6b, 0x51, 0x28, 0x22, 0xc8, 0x7f, 0x50, 0x51, 0x51, 0xde, 0x2f,
  0xbd, 0x8d, 0x7d, 0x48, 0xf7, 0x4d, 0xe8, 0xdd, 0x83, 0x6e, 0x3b, 0x33,
  0x46, 0x25, 0x6c, 0x83, 0x55, 0xb7, 0xa0, 0x81, 0x34, 0xd1, 0xb7, 0x33,
  0xdc, 0x57, 0xc7, 0xae, 0x7d, 0x42, 0x07, 0x3f, 0xa8, 0xd5, 0x5a, 0x81,
  0xe3, 0x90, 0x14, 0x83, 0xba, 0xa1, 0x2e, 0xac, 0x37, 0x3d, 0x46, 0x0e,
  0x2b, 0xb1, 0x17, 0x0e, 0x8d, 0x9d, 0xef, 0x07, 0x6b, 0x81, 0x99, 0xcd,
  0x52, 0x25, 0xe8, 0x19, 0x0d, 0xd0, 0xff, 0xfb, 0xb6, 0xeb, 0x0e, 0x34,
  0x8a, 0xf8, 0x21, 0x54, 0x3a, 0x84, 0x00, 0xc2, 0x2e, 0xf4, 0x34, 0x70,

  0x13, 0x76, 0xdf, 0x0d, 0xdb, 0x7b, 0xf0, 0xf2, 0x36, 0xcf, 0xe7, 0xeb,

  0xe3, 0x97, 0xaf, 0x2d, 0x8c, 0xc0, 0x6f, 0x81, 0x2c, 0xec, 0xbc, 0x9a,
  0x93, 0x8c, 0xbb, 0x40, 0xac, 0xd5, 0x51, 0x82, 0xd3, 0x51, 0x42, 0x05,
  0xad, 0x18, 0x75, 0xad, 0xce, 0xf8, 0x86, 0xf4, 0x36, 0x43, 0xe8, 0xf5,
  0x8c, 0xf8, 0xd9, 0x07, 0xe2, 0xb1, 0x26, 0x4d, 0x99, 0x6b, 0xab, 0x3c,
  0x42, 0xbe, 0x04, 0x21, 0x2f, 0xca, 0x49, 0x39, 0x9f, 0x6f, 0x90, 0xee,
  0x0c, 0x0f, 0x89, 0x1a, 0x28, 0x26, 0x98, 0x2d, 0xda, 0x46, 0x7a, 0x6f,
  0x42, 0xb3, 0x37, 0x47, 0x6a, 0xae, 0xda, 0x96, 0x14, 0x26, 0x40, 0x25,
  0x0f, 0xee, 0x46, 0xbb, 0x30, 0x5d, 0x6d, 0x06, 0x35, 0xf1, 0x50, 0x98,
  0xcf, 0xee, 0x18, 0x4d, 0x13, 0xb2, 0xc0, 0xfe, 0x75, 0xf2, 0x9f, 0xff,
  0xfc, 0xeb, 0x8f, 0x91, 0xee, 0x06, 0xe4, 0xf0, 0xbb, 0xe2, 0xca, 0x42,
  0xf3, 0xf4, 0x52, 0x50, 0x5b, 0x2c, 0x4e, 0x3c, 0x27, 0x9a, 0x70, 0x3c,

  0xa3, 0xa9, 0xb3, 0xc5, 0x7c, 0xe4, 0xe5, 0x54, 0x86, 0x62, 0x91, 0x4c,
  0x28, 0xfd, 0x20, 0xba, 0xd5, 0x51, 0x29, 0x38, 0x97, 0xef, 0x12, 0x72,

  0x37, 0x5a, 0x04, 0xb9, 0x94, 0x69, 0x8b, 0xec, 0xcb, 0x27, 0x11, 0xe0,
  0xc7, 0xb8, 0x36, 0x3e, 0xdd, 0x60, 0xfa, 0x87, 0xf7, 0x27, 0xd6, 0xd5,
  0xe9, 0x73, 0xe5, 0x2b, 0x43, 0xa9, 0x77, 0xc3, 0xec, 0x2e, 0x9b, 0x18,
  0x2e, 0x51, 0x2b, 0xf0, 0xc3, 0x70, 0x59, 0x27, 0x2f, 0x96, 0x86, 0xc6,
  0xf3, 0x1e, 0xc8, 0x8e, 0xaf, 0xe9, 0xb5, 0x44, 0x5f, 0xb3, 0xf8, 0xa5,

  0x97, 0x65, 0x65, 0x76, 0x68, 0x29, 0xd5, 0xb8, 0x52, 0x92, 0xdc, 0x76,
  0x66, 0x24, 0x28, 0x30, 0x09, 0xdc, 0x01, 0xd7, 0x8f, 0x44, 0xe3, 0x06,
  0x18, 0x9b, 0x07, 0x14, 0x06, 0x65, 0x7d, 0x6d, 0x94, 0x47, 0x33, 0x7b,
  0x63, 0x64, 0x93, 0xb5, 0x5e, 0x0f, 0x84, 0xa4, 0x2a, 0xc5, 0x91, 0x8b,
  0xc2, 0x08, 0xd8, 0x32, 0x44, 0xb6, 0xb0, 0x0c, 0xd3, 0xf1, 0x57, 0x64,
  0xbb, 0x98, 0xfa, 0xe8, 0x6f, 0xd2, 0xbb, 0x38, 0xdc, 0x57, 0x5d, 0x00,
  0xbb, 0x41, 0x13, 0x97, 0xbd, 0x4a, 0x05, 0x1b, 0xb9, 0xf6, 0x17, 0xf6,
  0x3d, 0xb1, 0xd6, 0x54, 0x0e, 0x2e, 0xe5, 0x32, 0x9d, 0xd9, 0x42, 0x7a,
  0x1f, 0x3a, 0x10, 0x65, 0x88, 0x29, 0xd5, 0x45, 0x66, 0x8b, 0x91, 0x74,
  0xd5, 0x46, 0x5a, 0x95, 0x1b, 0x13, 0x0c, 0xb7, 0x8b, 0xeb, 0x52, 0x53,
  0x8a, 0x00, 0x57, 0xc3, 0x8a, 0x43, 0x1f, 0x65, 0xe5, 0xe2, 0x79, 0x88,
  0xc6, 0x7a, 0x2f, 0x04, 0x2f, 0xe7, 0x12, 0x66, 0xbf, 0xd8, 0x0f, 0x00,
  0x4b, 0x46, 0xef, 0x30, 0x86, 0x21, 0xa1, 0xb7, 0x91, 0x5e, 0x41, 0x3c,
  0x84, 0x0f, 0xfc, 0x58, 0x0e, 0xbc, 0x33, 0x1c, 0xc5, 0x5a, 0x9e, 0x3c,
  0x7e, 0xfc, 0x98, 0x63, 0x2d, 0x5b, 0x27, 0xf8, 0xf0, 0xfb, 0xe3, 0x57,
  0x67, 0x6f, 0xdf, 0x1e, 0xbf, 0x7b, 0x7d, 0xfc, 0x5a, 0x33, 0x3e, 0xbc,
  0x95, 0x38, 0xea, 0x08, 0x57, 0x44, 0x59, 0x82, 0x66, 0x9f, 0x0f, 0x1e,
  0xef, 0x0f, 0x0f, 0x1f, 0xef, 0x27, 0x86, 0x16, 0x53, 0x5b, 0xa7, 0x96,
  0x2e, 0x52, 0xb2, 0x6f, 0xaf, 0xd6, 0x46, 0x55, 0x23, 0x68, 0xcf, 0x86,
  0x30, 0x37, 0xe0, 0x7a, 0x25, 0x6f, 0x4f, 0xd6, 0x90, 0x1d, 0x1d, 0xc9,
  0x0c, 0x18, 0x6d, 0x59, 0x90, 0x36, 0x17, 0xb0, 0x14, 0xdd, 0x07, 0x04,
  0x7a, 0xb8, 0x4f, 0x1f, 0x1a, 0x25, 0x6f, 0x8c, 0xf6, 0x31, 0x2f, 0x6f,
  0x99, 0x16, 0x5f, 0x5d, 0x19, 0xa5, 0x34, 0x0b, 0x43, 0x95, 0xed, 0xf7,
  0xe9, 0xf5, 0x23, 0x7e, 0xfd, 0x37, 0x8c, 0xd1, 0x3f, 0x7e, 0xd6, 0x36,
  0x2c, 0xcd, 0x45, 0x06, 0x2a, 0xbc, 0x96, 0x24, 0xf6, 0xe0, 0xfb, 0x8f,
  0xd9, 0x1c, 0xff, 0xfa, 0xe5, 0x39, 0x3d, 0x6d, 0xcc, 0xf2, 0xb3, 0xef,
  0xff, 0xe2, 0xca, 0x3c, 0xaf, 0x0f, 0x34, 0x9b, 0x51, 0x2a, 0x59, 0xd1,
  0x88, 0xaf, 0x08, 0x83, 0xde, 0x4e, 0x99, 0xb5, 0x06, 0xa1, 0x0a, 0x19,
  0xac, 0x90, 0x32, 0x50, 0xcd, 0xd6, 0x71, 0x8f, 0x2c, 0x39, 0xb4, 0xaa,
  0x96, 0x2b, 0x1e, 0xab, 0xeb, 0x37, 0xac, 0x9c, 0xa6, 0x71, 0x9b, 0x73,
  0xdf, 0x87, 0xbc, 0x98, 0x71, 0x63, 0xda, 0x96, 0x63, 0xb6, 0xa9, 0xd6,

  0x59, 0xcc, 0x6b, 0xba, 0x11, 0x63, 0x87, 0x94, 0xda, 0x2a, 0x5f, 0xa6,
  0x55, 0xce, 0xed, 0xe7, 0x89, 0xc0, 0x6f, 0xb8, 0x57, 0x26, 0xa7, 0x4a,
  0x21, 0xf6, 0xe5, 0xc0, 0x64, 0xcb, 0x20, 0xed, 0xd4, 0xf6, 0x72, 0x20,
  0x22, 0x66, 0x58, 0x23, 0x89, 0x51, 0xf2, 0x66, 0x6d, 0x84, 0xa1, 0x6b,
  0xdb, 0xff, 0x56, 0xa1, 0xe8, 0x03, 0x9d, 0x4b, 0xde, 0x9c, 0x9c, 0x1e,
  0xef, 0x26, 0x6f, 0xb2, 0x46, 0x4a, 0x9c, 0x34, 0xc3, 0x98, 0x44, 0xfe,
  0xbf, 0x41, 0xc1, 0xb2, 0xa0, 0x84, 0x52, 0x23, 0x1c, 0xcd, 0x05, 0x13,
  0x1f, 0x1c, 0x94, 0x0d, 0xad, 0x97, 0xe2, 0xc3, 0xc1, 0x12, 0x29, 0x1e,
  0xa7, 0xb9, 0x65, 0x1a, 0xdf, 0x94, 0x93, 0x8f, 0xe4, 0xdd, 0x2a, 0xce,
  0xc3, 0xc8, 0x43, 0x3c, 0x2b, 0xfd, 0x14, 0x02, 0x9a, 0xb4, 0xe4, 0x3c,
  0x6b, 0xbc, 0x38, 0xaf, 0x57, 0x0b, 0xe2, 0x06, 0x51, 0x94, 0x97, 0x45,
  0xe6, 0x2a, 0xfb, 0x40, 0xf9, 0xdc, 0x29, 0x5e, 0x8c, 0x1e, 0x30, 0x54,
  0x5a, 0xaf, 0xb7, 0x71, 0x5f, 0xeb, 0xc6, 0x51, 0xda, 0x09, 0xff, 0xb9,
  0xf7, 0x65, 0x14, 0x7c, 0x4c, 0x1b, 0x59, 0xa0, 0x67, 0xae, 0xbc, 0x01,
  0x8a, 0xe2, 0x1e, 0xea, 0x22, 0xe4, 0x55, 0xed, 0x6c, 0x51, 0x42, 0x44,
  0x7d, 0x85, 0xef, 0x4e, 0xcd, 0xdd, 0xbf, 0x48, 0x9f, 0x26, 0xd5, 0x1f,
  0xa8, 0x04, 0xdc, 0x49, 0x17, 0xee, 0xd2, 0x6b, 0xb3, 0x8c, 0x93, 0x58,
  0x4b, 0x34, 0xe6, 0xca, 0xd2, 0x92, 0x97, 0xb5, 0x29, 0xca, 0xd6, 0x4f,
  0x35, 0x5d, 0x5f, 0xe7, 0x4b, 0x8f, 0x5d, 0x09, 0x78, 0x35, 0x7c, 0x29,
  0x5c, 0x45, 0x56, 0x47, 0x5d, 0xfe, 0x52, 0xde, 0x26, 0xa1, 0x3d, 0xb4,
  0x54, 0x65, 0xa7, 0x0c, 0xeb, 0xd0, 0x6b, 0x52, 0xe8, 0xb8, 0xb2, 0x0b,
  0x7d, 0x08, 0x2a, 0xc6, 0xcb, 0x8c, 0x68, 0x4b, 0xf2, 0x75, 0x9f, 0x05,
  0x75, 0x75, 0x76, 0xff, 0x33, 0x6d, 0x4b, 0x34, 0x54, 0x17, 0xcd, 0xde,
  0x41, 0xa7, 0xa4, 0xbe, 0x1f, 0x54, 0xf5, 0x3e, 0xfd, 0x94, 0xa3, 0x10,
  0x71, 0x0d, 0x75, 0x2e, 0x2d, 0xb4, 0xde, 0x8a, 0xa7, 0x69, 0x71, 0xde,

  0x0d, 0xb9, 0x8d, 0x50, 0xce, 0x10, 0xd7, 0x3e, 0x19, 0xb2, 0x8c, 0x9c,
  0x06, 0x84, 0xc2, 0xaa, 0xf3, 0x59, 0xa0, 0xa2, 0xc1, 0xde, 0x16, 0x55,
  0xd4, 0xa8, 0x1e, 0x12, 0xba, 0x62, 0x04, 0x17, 0x3a, 0x43, 0xc3, 0x65,
  0xb8, 0xfc, 0x6e, 0x04, 0x62, 0x6c, 0xbb, 0xca, 0x18, 0x9a, 0x7e, 0x64,
  0x2c, 0xd1, 0x25, 0x95, 0x04, 0x28, 0x7e, 0x33, 0x2d, 0x59, 0xb6, 0xc7,
  0xf0, 0xb6, 0xcb, 0xfc, 0x3a, 0x96, 0x65, 0x41, 0xf9, 0x11, 0x32, 0x31,
  0x64, 0x69, 0xb8, 0x76, 0xb1, 0x9a, 0x76, 0x6c, 0x43, 0xda, 0xec, 0x97,
  0x26, 0x1c, 0x40, 0xd9, 0xd9, 0xe0, 0x06, 0x2f, 0x48, 0x63, 0x25, 0x40,
  0xaf, 0x82, 0x1b, 0xf4, 0x7e, 0x6d, 0x34, 0x9f, 0xe7, 0x5b, 0x16, 0x51,
  0x1d, 0x7e, 0x55, 0x70, 0xc7, 0x16, 0xe5, 0x48, 0xcb, 0xe8, 0x61, 0xb4,

  0xef, 0x98, 0x68, 0xee, 0x8d, 0x32, 0x2e, 0x5b, 0x70, 0x13, 0xa6, 0x35,
  0xdb, 0x02, 0x18, 0xae, 0x18, 0x0d, 0x11, 0xe3, 0x69, 0x4a, 0xdf, 0x0f,
  0x5f, 0xe1, 0xe3, 0xc3, 0xaf, 0x31, 0xdc, 0x1f, 0xb7, 0xac, 0xc3, 0xb7,

  0xfb, 0xab, 0xe7, 0x61, 0xa3, 0x60, 0xe7, 0x37, 0x64, 0xc3, 0x63, 0xad,
  0x55, 0x19, 0x48, 0x24, 0x91, 0x09, 0x72, 0x0f, 0x2e, 0x73, 0x45, 0xf6,
  0xf4, 0xc0, 0x11, 0x4d, 0xa9, 0xc3, 0x2e, 0x9b, 0x36, 0xe5, 0xc0, 0x48,
  0x91, 0x15, 0xc0, 0x74, 0x66, 0xc3, 0x72, 0x3e, 0x44, 0x86, 0xb4, 0x61,
  0xfe, 0x9f, 0x28, 0x19, 0xc9, 0xbb, 0x75, 0x00, 0x08, 0x01, 0xf6, 0xf6,
  0x6c, 0x16, 0x53, 0xcd, 0xb9, 0x90, 0x91, 0xb4, 0x0e, 0x21, 0x7c, 0x2d,
  0xb4, 0xe0, 0x83, 0x7c, 0x2e, 0x5e, 0x79, 0xbc, 0x6e, 0xbb, 0x50, 0x11,

  0x32, 0x97, 0x14, 0x44, 0x04, 0xfe, 0x34, 0x94, 0x47, 0x0c, 0x58, 0x7b,
  0xc7, 0xaa, 0x61, 0xc3, 0x2d, 0xd9, 0x95, 0x0b, 0xff, 0xf3, 0x7a, 0x05,
  0x95, 0x95, 0x10, 0x3b, 0x03, 0xef, 0x8b, 0x16, 0x89, 0x00, 0x8b, 0xd3,
  0x08, 0xff, 0xc7, 0xa3, 0xfd, 0x41, 0x10, 0xa8, 0x6f, 0x60, 0xec, 0x17,
  0x2e, 0x4b, 0xc8, 0x3c, 0x0c, 0x1e, 0x39, 0x8c, 0x55, 0xd7, 0xd6, 0xcd,
  0x1d, 0xf1, 0x6b, 0x5b, 0x4c, 0x8b, 0xd4, 0x62, 0x57, 0xf7, 0xe0, 0x72,
  0x7a, 0xb0, 0x85, 0xc2, 0x36, 0xb9, 0x8a, 0x36, 0x06, 0x71, 0x2a, 0x19,
  0x5b, 0x5f, 0x0e, 0xbb, 0x6d, 0x32, 0x6d, 0xb7, 0x33, 0xbf, 0x7a, 0xc3,
  0xeb, 0x5b, 0xd6, 0xeb, 0x69, 0x02, 0x9a, 0xe8, 0x4b, 0x6d, 0x7d, 0x33,
  0x34, 0x9b, 0x2a, 0x1d, 0x5d, 0x87, 0x19, 0xfd, 0x90, 0x01, 0x3b, 0x14,
  0x38, 0xb4, 0xee, 0xdf, 0x33, 0x06, 0xd9, 0x7d, 0x4a, 0x3b, 0x66, 0x5b,
  0x0b, 0x68, 0x0f, 0x1d, 0x27, 0x1f, 0x40, 0xb6, 0xde, 0x5d, 0xea, 0xee,
  0x19, 0x71, 0x15, 0xe2, 0x04, 0x85, 0xe6, 0x7c, 0xa3, 0x21, 0xfb, 0xed,
  0x5d, 0x6f, 0x6a, 0x71, 0x4f, 0xce, 0x2f, 0xae, 0xcd, 0x1b, 0x52, 0xec,
  0x87, 0xef, 0xcc, 0x31, 0x3c, 0x4f, 0xfe, 0xa3, 0xcc, 0xb8, 0x66, 0xf5,
  0x9e, 0x92, 0xd5, 0xef, 0x5e, 0xbe, 0x7f, 0x77, 0xf2, 0xee, 0xab, 0xe7,
  0x96, 0xc7, 0x11, 0xbf, 0xeb, 0xf6, 0xb4, 0xb0, 0xbc, 0x1b, 0xbf, 0x65,
  0xe4, 0x56, 0xf2, 0xfe, 0xf4, 0x61, 0x6c, 0x53, 0x2c, 0x13, 0xec, 0x99,
  0x9d, 0x97, 0x55, 0xc6, 0x71, 0x11, 0xb6, 0x45, 0xb5, 0x72, 0x42, 0xca,
  0x35, 0x21, 0x2a, 0xd1, 0xb8, 0x2d, 0x02, 0xd8, 0x30, 0x3c, 0xa5, 0x33,
  0x59, 0x94, 0xad, 0x1e, 0x51, 0x44, 0x94, 0x0b, 0x1c, 0x7f, 0xe9, 0x53,
  0x00, 0x5b, 0xcc, 0xda, 0x51, 0x9d, 0x9d, 0x3e, 0x91, 0xe0, 0x2d, 0x63,
  0x64, 0xab, 0xe7, 0xd5, 0xf6, 0xc7, 0x91, 0x26, 0x17, 0x35, 0x8e, 0xac,
  0xce, 0xe1, 0x6c, 0xb0, 0x5b, 0xa2, 0x39, 0x5e, 0x11, 0x3f, 0x88, 0xc0,
  0x4b, 0xa7, 0x6b, 0xbe, 0x2f, 0x8c, 0x4e, 0x26, 0x3f, 0x75, 0x75, 0x19,

  0x76, 0x07, 0x1e, 0x9c, 0xe6, 0xec, 0xf2, 0x9c, 0x59, 0x9f, 0x67, 0x03,
  0xd1, 0x63, 0x59, 0xe6, 0x4f, 0x12, 0x25, 0x51, 0x1c, 0x92, 0x45, 0xe6,
  0xaa, 0x92, 0xac, 0xae, 0x73, 0xc5, 0xba, 0xce, 0x62, 0x15, 0x80, 0xed,
  0x51, 0x9a, 0x79, 0x42, 0xbf, 0x51, 0xa7, 0x0e, 0x05, 0xaf, 0x20, 0x81,
  0xd5, 0x2c, 0x69, 0x81, 0xdb, 0xd9, 0xd6, 0x90, 0xcc, 0xd4, 0x43, 0x79,
  0x4a, 0x78, 0x4f, 0x19, 0xe3, 0x8d, 0xf9, 0x15, 0x30, 0xe6, 0xeb, 0x66,
  0x8f, 0x57, 0xeb, 0xc9, 0x72, 0xf6, 0x38, 0x79, 0x61, 0xfe, 0x13, 0x28,
  0x59, 0xc8, 0x19, 0x1d, 0xbf, 0x32, 0x8a, 0x16, 0x25, 0xb8, 0x90, 0xbc,

  0x60, 0xc8, 0x1b, 0xaf, 0x8b, 0xc4, 0xd1, 0xa1, 0x99, 0xe9, 0x6d, 0xaa,
  0xd0, 0x96, 0x46, 0x23, 0xbc, 0xcc, 0x1b, 0xce, 0xd3, 0xeb, 0xc1, 0x0d,
  0xf2, 0x52, 0x1b, 0x70, 0xe6, 0x07, 0x87, 0x9f, 0x27, 0x54, 0x7c, 0xf0,
  0xf6, 0xf5, 0xe3, 0x64, 0x7a, 0x95, 0x4d, 0x3f, 0xd5, 0xeb, 0xa5, 0xb2,
  0x63, 0xda, 0x53, 0x63, 0x1e, 0xd0, 0x3c, 0x03, 0xc4, 0x07, 0x33, 0xf1,
  0x45, 0x3e, 0xa5, 0xd2, 0xbf, 0x41, 0x2b, 0x3a, 0x35, 0xd7, 0xe8, 0x94,
  0x67, 0x87, 0x5a, 0xb1, 0x81, 0x74, 0x01, 0xce, 0xa9, 0x89, 0x04, 0x2f,
  0xcc, 0x1e, 0x98, 0x8f, 0xd7, 0xdc, 0xcd, 0x7a, 0xa3, 0xcb, 0xf6, 0x69,
  0xdb, 0xeb, 0x4d, 0x17, 0x7b, 0x7f, 0xf4, 0xac, 0xa7, 0x3f, 0x47, 0xab,
  0x35, 0x07, 0xd5, 0x2a, 0xd9, 0x6a, 0x3b, 0xd8, 0x03, 0xa4, 0xe5, 0xd3,
  0x24, 0x09, 0x10, 0x4a, 0xc3, 0x78, 0xc1, 0xc7, 0xe9, 0xc9, 0x3d, 0x7a,
  0x42, 0x7a, 0xcb, 0x21, 0x8b, 0x2d, 0x03, 0x26, 0x05, 0x93, 0x16, 0xd2,
  0x84, 0x6c, 0x14, 0xd0, 0x22, 0x9c, 0x21, 0x04, 0x1b, 0x2a, 0x6d, 0xb6,
  0xfe, 0x5b, 0x5d, 0x36, 0x8e, 0xc5, 0x48, 0x09, 0xad, 0x87, 0xe6, 0xa0,
  0xb5, 0x84, 0xc0, 0x6b, 0x23, 0x9b, 0x22, 0x20, 0x32, 0xfb, 0x5d, 0x8e,
  0x4b, 0xbb, 0xe3, 0xa8, 0x19, 0x8d, 0x10, 0xce, 0x73, 0xea, 0x12, 0xcb,
  0x16, 0x75, 0x79, 0x53, 0x5c, 0x56, 0xe4, 0x1f, 0x41, 0x51, 0x58, 0x1a,
  0x8b, 0x65, 0xc4, 0x10, 0x4c, 0xdd, 0xd8, 0xc6, 0xe2, 0x7a, 0x42, 0x9c,
  0xde, 0xee, 0x0a, 0xe5, 0xdb, 0x73, 0x10, 0x9b, 0x2b, 0x96, 0xd9, 0x66,
  0xf7, 0x8e, 0x68, 0x7f, 0x20, 0xc7, 0x74, 0x30, 0xda, 0x7f, 0xc8, 0x31,
  0x11, 0x11, 0xb5, 0x4e, 0xc7, 0xbc, 0xe7, 0x6b, 0xc9, 0x9a, 0x44, 0x6e,
  0x88, 0xbd, 0x27, 0xfb, 0xce, 0x2c, 0x54, 0xfc, 0x57, 0xd9, 0xac, 0x35,
  0xd4, 0x46, 0x9e, 0xe3, 0x37, 0x6f, 0xe3, 0xe9, 0x1e, 0x48, 0x18, 0x86,
  0xfe, 0x75, 0xd8, 0x25, 0x3a, 0xf3, 0xeb, 0x9f, 0xb9, 0x9a, 0x83, 0x9f,
  0x50, 0xaa, 0xb1, 0x3f, 0x70, 0xdf, 0xdb, 0xb7, 0x2d, 0x11, 0x78, 0x42,
  0xee, 0x5e, 0x74, 0x86, 0x0b, 0x21, 0xef, 0xf1, 0x02, 0x95, 0xbb, 0x94,
  0xd5, 0x90, 0x54, 0x76, 0x73, 0x58, 0x81, 0x0a, 0x15, 0x9d, 0xbe, 0x39,
  0xde, 0x9a, 0x14, 0x5b, 0xd2, 0x69, 0x41, 0x9c, 0x88, 0x19, 0x31, 0xaa,

  0x99, 0x35, 0xe9, 0xa3, 0x69, 0xfb, 0x20, 0x90, 0x43, 0x4f, 0x45, 0xc7,
  0x0f, 0x68, 0x53, 0x93, 0x0f, 0x2b, 0xd0, 0x20, 0xc5, 0xb8, 0x1b, 0x07,
  0xfc, 0x8f, 0xd9, 0x25, 0x7d, 0xb3, 0x73, 0xd8, 0x5f, 0x1a, 0x93, 0x47,
  0xb1, 0x66, 0xad, 0xdf, 0xa9, 0xa9, 0x0a, 0x96, 0x54, 0x7e, 0x69, 0x11,
  0xc7, 0x80, 0xf8, 0x6e, 0x92, 0x31, 0x58, 0x5f, 0xbd, 0x58, 0x46, 0xd5,
  0x94, 0x51, 0x5a, 0xd9, 0xf4, 0x04, 0x8f, 0xce, 0xea, 0xbe, 0xf6, 0xec,

  0x73, 0xf0, 0xf4, 0x11, 0xff, 0x4a, 0xee, 0xba, 0x84, 0x77, 0x80, 0xfd,
  0x82, 0x00, 0x50, 0xf4, 0x38, 0x1e, 0xdc, 0x02, 0x21, 0xc0, 0xef, 0xea,
  0x34, 0xb1, 0xe0, 0xb5, 0x8c, 0x1e, 0x46, 0xdc, 0xfb, 0x83, 0xe8, 0xec,
  0x88, 0xda, 0x7c, 0xe2, 0x6f, 0x81, 0xe1, 0x3d, 0x8b, 0x10, 0xd7, 0xcf,
  0xba, 0x0b, 0x87, 0x9b, 0xc2, 0xa0, 0xe1, 0x1d, 0x3c, 0x1a, 0xe9, 0xd7,
  0xfa, 0xf6, 0x2a, 0x60, 0x67, 0xbd, 0xed, 0x23, 0x1e, 0xb6, 0x5b, 0x3d,
  0x7b, 0x63, 0xf7, 0xae, 0xb3, 0x5b, 0x7d, 0x47, 0xab, 0x57, 0x35, 0xe0,
  0x57, 0x3d, 0x57, 0xf5, 0x28, 0xbe, 0x9b, 0x56, 0x43, 0xed, 0xf8, 0x3c,
  0xc9, 0x65, 0x56, 0xe5, 0x30, 0x89, 0xd3, 0xc5, 0x28, 0x79, 0xed, 0x72,
  0x5a, 0x00, 0xbc, 0x17, 0x18, 0xab, 0xb3, 0x75, 0x4f, 0xe6, 0xc7, 0xe6,
  0xd3, 0x3a, 0x92, 0xa4, 0x1e, 0x97, 0xb8, 0x00, 0x99, 0x2e, 0x45, 0x59,
  0x65, 0x00, 0x88, 0x29, 0x9e, 0x1b, 0x0d, 0x5f, 0x4a, 0x98, 0x8e, 0x52,
  0xb3, 0x24, 0x00, 0x83, 0xad, 0x3f, 0xf2, 0x63, 0xe6, 0x56, 0xbd, 0xa6,
  0x12, 0x82, 0x98, 0xa7, 0x08, 0x5f, 0xd4, 0xf4, 0x76, 0x48, 0x44, 0x55,
  0x28, 0xcd, 0x47, 0xae, 0xf3, 0x34, 0x79, 0xb9, 0x68, 0x86, 0xe3, 0x6f,
  0xa7, 0x1c, 0x61, 0x6b, 0x85, 0xa7, 0x82, 0x26, 0xaf, 0xf0, 0xaa, 0xa0,
  0x3f, 0x57, 0x2d, 0x49, 0xab, 0x79, 0x35, 0x5d, 0x2f, 0x81, 0x81, 0x0a,
  0xb2, 0xb2, 0x7d, 0x22, 0xe8, 0x20, 0x1d, 0xa5, 0x71, 0xba, 0x7d, 0x08,
  0x7e, 0x98, 0x7e, 0xaa, 0x75, 0x49, 0x52, 0xa4, 0xc3, 0x75, 0x18, 0x76,
  0xce, 0xed, 0xf6, 0x6a, 0x11, 0x11, 0xd4, 0xb1, 0xec, 0x18, 0xa6, 0x97,
  0x50, 0x60, 0xfe, 0xdb, 0x87, 0x93, 0x57, 0x2d, 0xef, 0x3e, 0xc7, 0x51,
  0x92, 0x8d, 0xd1, 0x0a, 0x86, 0x95, 0x95, 0x27, 0xe7, 0xa4, 0xc3, 0x6a,
  0x36, 0xae, 0x26, 0xce, 0xb5, 0x8e, 0xb7, 0x2c, 0x22, 0x22, 0xd5, 0xe8,
  0x0b, 0x3f, 0xed, 0x8e, 0x1e, 0xea, 0x1d, 0x3d, 0xfa, 0xa5, 0xef, 0xe8,


  0xd1, 0x2f, 0x73, 0x47, 0x95, 0x83, 0x78, 0x7f, 0xf7, 0xaf, 0x6b, 0x60,

  0x96, 0xe2, 0xfa, 0xfa, 0x0e, 0xe7, 0x76, 0xce, 0xc0, 0x90, 0xc1, 0x23,
  0x86, 0xe2, 0xb7, 0x18, 0x72, 0x81, 0x6c, 0xac, 0x36, 0x2c, 0x11, 0xc7,
  0xa9, 0x82, 0x3f, 0x0e, 0x92, 0x13, 0x06, 0x36, 0x47, 0x76, 0x92, 0xbc,


  0x7e, 0xca, 0xf5, 0xb5, 0xe2, 0xf7, 0x56, 0x9f, 0x7f, 0xa4, 0x02, 0x3f,
  0x9f, 0x12, 0xbc, 0x9a, 0xf3, 0xb8, 0x93, 0xc5, 0xac, 0x3a, 0x63, 0xb5,
  0x46, 0x48, 0x21, 0x79, 0xb9, 0xa2, 0x12, 0x59, 0xa3, 0x71, 0xdc, 0xba,
  0xfe, 0xc8, 0x44, 0x62, 0x61, 0x2e, 0x12, 0x6d, 0x32, 0x79, 0x70, 0x25,
  0xf3, 0xbe, 0x3b, 0x1d, 0x8c, 0xce, 0xf0, 0x87, 0x0b, 0x22, 0xfe, 0x8a,
  0x0d, 0xc7, 0x43, 0x43, 0xe0, 0x97, 0x41, 0x5b, 0x85, 0xc9, 0x5d, 0x13,
  0x29, 0x03, 0xa3, 0x55, 0xd3, 0x2e, 0xec, 0xd4, 0x92, 0x65, 0xfa, 0xc8,
  0xec, 0xe3, 0xee, 0x80, 0x1a, 0xd0, 0xaf, 0xb0, 0x03, 0x54, 0xa7, 0x63,


  0x8d, 0x2b, 0x2a, 0x53, 0xcb, 0x2f, 0xc9, 0x63, 0x55, 0xf2, 0x35, 0x0e,
  0x2c, 0x1a, 0xf2, 0x6e, 0x4b, 0x9a, 0xa3, 0xe6, 0x10, 0x0a, 0xdc, 0x6c,
  0xbb, 0x44, 0x35, 0x1f, 0xa0, 0xf3, 0x1c, 0x7c, 0xd3, 0xdd, 0xe0, 0x91,
  0x78, 0xac, 0xd9, 0xfe, 0x55, 0x9d, 0x46, 0x61, 0xfd, 0xc5, 0xe2, 0x15,
  0xc6, 0x25, 0x2d, 0x3a, 0x10, 0xd8, 0xc3, 0x93, 0x91, 0x5e, 0x3f, 0xed,
  0x17, 0xa7, 0xf0, 0x6c, 0xf2, 0x17, 0xc4, 0x01, 0xc5, 0x66, 0xbe, 0x85,
  0x88, 0x26, 0x2f, 0x11, 0xf9, 0xf3, 0xb9, 0xd3, 0xca, 0x20, 0x84, 0xd5,
  0xb3, 0xbe, 0x67, 0x07, 0x14, 0xdd, 0xba, 0xb1, 0x0a, 0xee, 0x3c, 0x1a,
  0x8d, 0x22, 0x70, 0x16, 0xd7, 0x79, 0x76, 0xd3, 0x72, 0xc5, 0xcb, 0xcc,
  0x06, 0xb6, 0x41, 0x0a, 0x7b, 0x80, 0xae, 0x69, 0x87, 0xcc, 0x90, 0x13,
  0x42, 0xd2, 0xec, 0x29, 0x27, 0x71, 0x57, 0xde, 0x7f, 0xda, 0xdb, 0xe6,
  0x4f, 0xbc, 0xcd, 0x75, 0xac, 0x1e, 0x94, 0x81, 0x91, 0x5d, 0x3f, 0x87,
  0x01, 0x79, 0x44, 0xaa, 0xbb, 0x04, 0x8d, 0x3b, 0x1c, 0x4f, 0xc3, 0xf5,
  0xe7, 0xfa, 0x83, 0xbc, 0x66, 0x5c, 0x62, 0xc6, 0x15, 0x0a, 0xa3, 0xc5,

  0xfc, 0x99, 0x36, 0x3f, 0x10, 0x7e, 0xae, 0xd2, 0xcb, 0x88, 0xbd, 0x29,
  0x39, 0xa2, 0x20, 0x9c, 0xb4, 0x19, 0x01, 0x5c, 0x31, 0x91, 0xd4, 0x23,
  0x39, 0x11, 0xaf, 0x73, 0x89, 0x97, 0x29, 0xe3, 0xda, 0xc9, 0x24, 0xba,
  0xc0, 0x78, 0xbc, 0x57, 0xcf, 0xd5, 0xe7, 0xd3, 0xfe, 0x4a, 0x8c, 0x75,
  0x24, 0xad, 0xd9, 0xc4, 0x17, 0xeb, 0xf0, 0x96, 0xbb, 0x36, 0xa2, 0xab,

  0x4f, 0x75, 0x98, 0x5a, 0xce, 0xab, 0xcd, 0xe0, 0x7d, 0x58, 0x99, 0x0c,
  0x5e, 0xfb, 0x40, 0xd9, 0x01, 0xd4, 0x80, 0x6b, 0x1e, 0x44, 0x03, 0x73,
  0x83, 0x9f, 0xe8, 0x11, 0xb3, 0x5e, 0xc1, 0xa8, 0x17, 0xd4, 0x82, 0x6a,
  0x4d, 0x89, 0x27, 0xb8, 0xfb, 0x52, 0xbd, 0x2e, 0x05, 0xeb, 0x5d, 0x30,
  0x13, 0x0b, 0x09, 0x47, 0xbb, 0x3f, 0xba, 0x4a, 0x6f, 0x6f, 0x47, 0x75,
  0xb6, 0x67, 0xa8, 0xb6, 0xde, 0xab, 0xeb, 0x05, 0x7d, 0xb4, 0x06, 0xfa,
  0xda, 0xc6, 0xee, 0x96, 0xb7, 0x77, 0x96, 0x80, 0x84, 0x39, 0x4f, 0x53,
  0x7a, 0xb5, 0xc5, 0x6c, 0x5d, 0x7b, 0x4b, 0x6e, 0x10, 0xd3, 0x4d, 0x19,
  0x66, 0xe0, 0x69, 0x40, 0xa8, 0xfb, 0xd5, 0xb6, 0xcc, 0x1a, 0x5c, 0x72,
  0x96, 0x1d, 0xc7, 0xe1, 0xe9, 0x13, 0xd4, 0x74, 0xd5, 0x57, 0xda, 0x21,


  0x77, 0xd5, 0x0b, 0x8d, 0x9a, 0x4d, 0xb1, 0x05, 0x10, 0x46, 0x3e, 0x38,
  0x58, 0x1d, 0xee, 0xf8, 0x44, 0x96, 0x74, 0xf9, 0x29, 0x02, 0xf9, 0xd4,
  0xe7, 0xb6, 0xf4, 0x96, 0x46, 0xa5, 0x22, 0xcf, 0x1d, 0xc0, 0xe0, 0xcd,
  0xcd, 0xcd, 0x68, 0x93, 0xdf, 0xf2, 0x5f, 0x8e, 0x81, 0xb7, 0x87, 0x3b,
  0x33, 0x54, 0x7b, 0x9a, 0x17, 0xeb, 0xdb, 0xc4, 0xc3, 0x78, 0xb1, 0xcd,
  0x80, 0x34, 0x30, 0x97, 0x7c, 0xfb, 0xfe, 0x8d, 0x6d, 0x84, 0xad, 0xe8,
  0x1a, 0xe4, 0xf9, 0xad, 0x43, 0xad, 0x2d, 0xcb, 0x19, 0x77, 0x87, 0x40,
  0xa3, 0x5f, 0xbd, 0x3c, 0xff, 0xf8, 0xee, 0xf8, 0xe2, 0xe3, 0xfb, 0x97,
  0xdf, 0xd1, 0x16, 0xb2, 0x57, 0xc6, 0xc8, 0x2b, 0x8a, 0x07, 0x54, 0x65,
  0x49, 0x4d, 0xed, 0xde, 0xa2, 0x6c, 0x30, 0x2f, 0x00, 0xaf, 0x12, 0x6d,
  0xb3, 0x6e, 0x31, 0xa3, 0x64, 0x9e, 0x66, 0x2e, 0xcf, 0x93, 0xd6, 0x7e,
  0x7d, 0xca, 0xaa, 0x22, 0x5b, 0x8c, 0xca, 0xea, 0x92, 0xa8, 0x70, 0xef,
  0xb5, 0xf0, 0xcf, 0xe8, 0x70, 0x7b, 0x92, 0xd5, 0x40, 0x10, 0x64, 0xd7,
  0xd5, 0x9c, 0x10, 0x4b, 0x1e, 0xda, 0xa3, 0xd0, 0x23, 0xcd, 0x47, 0x60,
  0x80, 0xab, 0xeb, 0x47, 0x1b, 0xd4, 0xbb, 0x76, 0xa7, 0x58, 0xe9, 0xf1,
  0x06, 0x0a, 0x82, 0xef, 0xc7, 0xcf, 0x55, 0xe1, 0xea, 0xcc, 0xc5, 0xdd,
  0x20, 0x02, 0x80, 0x00, 0x75, 0xae, 0xb4, 0x50, 0x12, 0x28, 0x70, 0xa3,
  0x24, 0x9b, 0x8d, 0x2d, 0xee, 0xad, 0x56, 0xd4, 0xf5, 0x21, 0xf4, 0xf9,
  0x1e, 0x86, 0x4f, 0x42, 0xcb, 0x90, 0x9a, 0x2e, 0x7a, 0x6b, 0x7e, 0x22,
  0x6b, 0x7e, 0xf2, 0x2f, 0xad, 0xf9, 0xc9, 0xbf, 0xb0, 0xe6, 0x47, 0xbf,
  0xf0, 0x9a, 0x1f, 0x45, 0xd7, 0xec, 0x7d, 0x65, 0xf8, 0x37, 0x5a, 0xf3,
  0xdf, 0xd6, 0xc5, 0xa7, 0xa1, 0x99, 0x2f, 0x49, 0x61, 0xe9, 0xb1, 0x56,
  0xf7, 0x98, 0x6c, 0x7e, 0xa3, 0x1d, 0xf8, 0xf6, 0x1d, 0xc0, 0xb0, 0xd7,
  0x33, 0x2e, 0x15, 0x53, 0x81, 0x43, 0xfc, 0x4d, 0xd8, 0xd4, 0x22, 0x30,
  0x10, 0x72, 0xaa, 0xf7, 0xad, 0xa7, 0xe4, 0xa7, 0x20, 0xcd, 0x7e, 0x4b,
  0x66, 0xa3, 0xc3, 0x6e, 0x69, 0xdf, 0x15, 0xdc, 0xf4, 0x34, 0xc4, 0x39,
  0x9a, 0xc2, 0x4d, 0x86, 0x3b, 0x69, 0x63, 0xe0, 0xae, 0x2f, 0x3b, 0x8c,
  0x0e, 0xc6, 0x80, 0xd2, 0x81, 0x39, 0x2e, 0x48, 0x31, 0x9f, 0x90, 0x67,
  0x5c, 0xdc, 0xad, 0x68, 0x40, 0x23, 0x9b, 0x2b, 0x23, 0x83, 0x39, 0x11,

  0x05, 0xcd, 0xc4, 0x13, 0x3b, 0xc9, 0xa4, 0x33, 0x41, 0x89, 0x76, 0x5c,
  0x65, 0x77, 0xdb, 0x81, 0xc2, 0x30, 0x5d, 0x94, 0xc4, 0x6f, 0x66, 0x9b,
  0x8d, 0x8f, 0x89, 0x6b, 0x70, 0xc7, 0xf2, 0xa2, 0xd3, 0xf1, 0xce, 0x97,
  0x1b, 0x9f, 0xb2, 0x6c, 0x95, 0x2e, 0x00, 0xad, 0x41, 0xb9, 0x0f, 0x7d,
  0x8d, 0xb2, 0x5a, 0xc9, 0x91, 0x5a, 0x38, 0x80, 0x37, 0x5a, 0x99, 0x67,
  0xe0, 0x73, 0x7c, 0x90, 0x54, 0x29, 0x93, 0xe4, 0x33, 0xd4, 0xba, 0xc6,

  0xfb, 0xa6, 0xb8, 0xa6, 0x0c, 0x76, 0x12, 0xd4, 0x7a, 0xa3, 0x9c, 0x08,
  0x06, 0x8c, 0xfd, 0x84, 0xe2, 0xc8, 0x51, 0x6a, 0xce, 0x75, 0x4e, 0x29,
  0x79, 0x5d, 0xec, 0x61, 0xfb, 0x3e, 0xbf, 0x0e, 0x54, 0xa9, 0x56, 0xe7,
  0x04, 0x3e, 0x40, 0x7a, 0xa2, 0xb4, 0xf2, 0x8f, 0xd4, 0x0d, 0xf4, 0x11,
  0x0d, 0x48, 0x4a, 0x01, 0x94, 0x59, 0xff, 0xbd, 0x78, 0x75, 0xfe, 0xf1,

  0x9b, 0xe3, 0xe3, 0xf3, 0x93, 0xd7, 0xa7, 0xc7, 0x72, 0x61, 0xec, 0x8f,
  0xde, 0x5d, 0x7c, 0x7b, 0xaa, 0x7d, 0xe2, 0x94, 0x16, 0x03, 0x82, 0x17,
  0xd8, 0x7f, 0x66, 0xca, 0x03, 0xb4, 0xc3, 0x32, 0x86, 0xf4, 0xcb, 0x93,
  0xef, 0x8d, 0xd6, 0x7a, 0x3e, 0xfc, 0xf0, 0x7d, 0xd0, 0x8b, 0xc4, 0xab,
  0x31, 0x09, 0x9b, 0x09, 0xb8, 0x92, 0x13, 0xf4, 0x74, 0x77, 0x6b, 0xef,
  0x4b, 0xb9, 0xfb, 0x85, 0xc5, 0x20, 0x35, 0x38, 0x2f, 0xac, 0xc2, 0xc0,
  0x2f, 0x6a, 0xbf, 0x1f, 0x2f, 0xad, 0xed, 0xc9, 0xbe, 0xb6, 0x51, 0xdb,
  0x18, 0xb4, 0xf8, 0xbc, 0x6d, 0x33, 0x7e, 0xca, 0xee, 0x80, 0xe1, 0x98,
  0xbc, 0xa0, 0xff, 0xc6, 0xdb, 0xdc, 0x9d, 0x57, 0xf9, 0x35, 0xe9, 0x7f,
  0xe6, 0x59, 0x0e, 0xe9, 0xd2, 0xa3, 0x23, 0xdb, 0xf4, 0x4f, 0xc2, 0xca,
  0x34, 0x08, 0x32, 0x4f, 0x30, 0x68, 0x12, 0xf3, 0xf6, 0x00, 0x19, 0x87,
  0x7e, 0xc3, 0xe3, 0x61, 0x40, 0xb3, 0x3d, 0xa3, 0xe4, 0xf5, 0xf1, 0xfb,
  0x41, 0x72, 0x7e, 0xfc, 0x96, 0x0b, 0x55, 0x8e, 0xdf, 0x7d, 0xc5, 0x7d,
  0x10, 0xb5, 0xbd, 0x1d, 0x32, 0x21, 0xc2, 0x64, 0x4d, 0x6f, 0x4f, 0xcc,
  0xbb, 0xc8, 0x4c, 0xad, 0x6b, 0x23, 0x5d, 0x7f, 0x45, 0x00, 0x1d, 0x5e,
  0xdb, 0x0b, 0xf3, 0x9f, 0xd8, 0x56, 0x19, 0x3b, 0xe2, 0xeb, 0xc8, 0x76,
  0x89, 0x62, 0x66, 0x73, 0x67, 0xc4, 0x28, 0xa0, 0xdd, 0xe0, 0x1d, 0x33,
  0x1b, 0x12, 0x66, 0x71, 0xe8, 0x06, 0xc1, 0xec, 0x03, 0x84, 0x10, 0x37,
  0xcf, 0x95, 0x18, 0x3c, 0x59, 0xb1, 0xe6, 0x73, 0x03, 0xa2, 0x4b, 0x00,
  0x92, 0xbb, 0xcd, 0x88, 0x55, 0x47, 0x57, 0x39, 0x37, 0x22, 0xee, 0x20,
  0xd3, 0x99, 0xed, 0xce, 0x67, 0x8c, 0xc0, 0x40, 0x01, 0xe4, 0xb2, 0xa2,
  0x04, 0x0e, 0x82, 0x3e, 0xf8, 0x9f, 0x7b, 0xa3, 0xba, 0xbe, 0xda, 0xcb,
  0x67, 0x1f, 0xab, 0x3a, 0xdd, 0xee, 0xca, 0x22, 0xef, 0xd7, 0x33, 0xfa,
  0x75, 0xb2, 0x3d, 0xb2, 0x8f, 0xca, 0xdf, 0xe9, 0xe7, 0x51, 0x2c, 0x00,
  0x15, 0x41, 0xec, 0x5a, 0xd1, 0x7c, 0x4e, 0x6d, 0x9f, 0xb8, 0xc8, 0x27,
  0x95, 0x51, 0xe0, 0x5c, 0xf7, 0x0f, 0xe9, 0x86, 0xb8, 0xfa, 0x34, 0xad,
  0x0f, 0x0e, 0x42, 0x34, 0x7a, 0x5b, 0xe2, 0x38, 0xd0, 0xbc, 0xdc, 0xf3,
  0x6f, 0x5e, 0x8d, 0x7f, 0x77, 0x70, 0x80, 0x34, 0xe8, 0x1d, 0x4a, 0x57,
  0x7d, 0xfa, 0xf8, 0xe0, 0x70, 0x37, 0xa6, 0x3e, 0x06, 0x79, 0x3d, 0xd4,
  0xc1, 0x32, 0x75, 0xf4, 0x49, 0xbb, 0x8f, 0x30, 0xb7, 0x14, 0x3d, 0xd8,
  0xa1, 0x67, 0x19, 0x25, 0x09, 0xa2, 0xb2, 0x93, 0xc3, 0x99, 0xc8, 0x9d,
  0x0c, 0x52, 0x2f, 0x2c, 0x0e, 0xd2, 0x16, 0xcf, 0xfe, 0xf9, 0x96, 0xa5,
  0x2a, 0x3f, 0x87, 0x1c, 0xf9, 0x27, 0xde, 0xac, 0x47, 0xbc, 0x4f, 0xdd,
  0xf0, 0x9a, 0xbf, 0x2e, 0x24, 0x3a, 0x3a, 0xa0, 0x29, 0x16, 0x5f, 0xae,
  0x75, 0x64, 0x27, 0x41, 0x80, 0xf2, 0x03, 0x02, 0x5f, 0xbd, 0xcc, 0x69,
  0x8b, 0xe9, 0x87, 0x08, 0x3e, 0x75, 0x83, 0xda, 0xdd, 0xf7, 0x18, 0x84,
  0x3f, 0x68, 0xe8, 0xec, 0xe3, 0x6f, 0x24, 0x5b, 0xe6, 0xee, 0xc6, 0x87,
  0xfc, 0x55, 0xef, 0x64, 0x35, 0x49, 0x5e, 0x2c, 0xcc, 0x8b, 0x8b, 0x9e,
  0xd2, 0xbb, 0x63, 0x6e, 0xb7, 0xf5, 0x4d, 0x56, 0x4d, 0xb2, 0xaa, 0xac,
  0x3b, 0x55, 0x42, 0x58, 0xad, 0xd4, 0xfd, 0x52, 0x4d, 0x80, 0x19, 0x47,
  0xd3, 0xa5, 0x82, 0xc6, 0x9a, 0x0d, 0xac, 0x6f, 0xc1, 0x78, 0x6f, 0xe3,
  0xf2, 0x6c, 0xa3, 0x56, 0x89, 0x2e, 0x00, 0xf5, 0x97, 0xa2, 0x3f, 0x0d,
  0x37, 0x9e, 0xa3, 0x19, 0x4c, 0x9e, 0x2e, 0xb6, 0xa9, 0xeb, 0x4f, 0xf7,
  0x1a, 0x09, 0xa5, 0x6d, 0x8f, 0xa8, 0x00, 0x8d, 0x8d, 0x35, 0x64, 0x41,
  0xa1, 0xdc, 0x3a, 0x4d, 0x64, 0x2e, 0x9a, 0xdf, 0x4d, 0xd7, 0xdc, 0xa5,

  0x01, 0xd6, 0x41, 0x27, 0x24, 0x3b, 0x5c, 0x1b, 0x3a, 0xa9, 0x2f, 0xc3,
  0xf8, 0x17, 0x16, 0x53, 0x7c, 0x0c, 0x3f, 0xb9, 0x79, 0xb6, 0xed, 0x97,
  0xdd, 0x19, 0x4e, 0xcf, 0xca, 0x3f, 0x67, 0x7d, 0x3f, 0xda, 0x8a, 0xf6,
  0x25, 0x57, 0x87, 0x77, 0xb0, 0x46, 0xd0, 0x95, 0x80, 0x4a, 0x9a, 0x66,
  0x6c, 0x18, 0x4a, 0xf5, 0xab, 0x4b, 0x9c, 0x60, 0x4e, 0x13, 0x06, 0xc7,
  0xb1, 0x54, 0xf4, 0x0f, 0xd1, 0x69, 0x0f, 0xd9, 0x78, 0x7f, 0x95, 0x88,
  0x37, 0x02, 0x75, 0x51, 0x37, 0x15, 0xa1, 0xa5, 0x16, 0x0e, 0x73, 0x79,
  0x91, 0xf5, 0x82, 0x68, 0x29, 0xa2, 0xaa, 0x39, 0xa4, 0x85, 0xf4, 0x36,

  0xd4, 0x6c, 0xc4, 0x4a, 0xe7, 0x34, 0x94, 0x64, 0x0e, 0x75, 0x18, 0xd0,
  0x7b, 0xff, 0x76, 0x2f, 0xa4, 0xca, 0x7d, 0x67, 0xe7, 0x54, 0xfa, 0x18,
  0x4c, 0xc2, 0x83, 0xb1, 0xe2, 0x3a, 0x65, 0x7e, 0xa8, 0x18, 0x18, 0x42,
  0x26, 0xbd, 0x30, 0xfc, 0x34, 0x0b, 0xc0, 0xb2, 0xc6, 0x2d, 0x7c, 0x05,
  0x69, 0xf9, 0xaa, 0x25, 0x74, 0x78, 0xcf, 0xb6, 0xbe, 0xb6, 0x4d, 0xca,
  0x98, 0xf6, 0x87, 0x50, 0x59, 0xbb, 0xee, 0x36, 0x6a, 0x57, 0xe2, 0xca,
  0xb4, 0x71, 0x6b, 0x01, 0x46, 0xaf, 0x20, 0x47, 0x9a, 0x25, 0xcd, 0xdb,
  0x41, 0xbe, 0x68, 0xc9, 0xbf, 0x85, 0x71, 0x91, 0x06, 0x3e, 0x10, 0x14,
  0x3c, 0x70, 0x07, 0x10, 0x21, 0x82, 0xed, 0x19, 0x7b, 0x46, 0x71, 0x24,
  0x76, 0xaa, 0x74, 0xf1, 0x24, 0x0c, 0xc5, 0x5d, 0x13, 0xcc, 0x8d, 0x0e,
  0x4c, 0x85, 0x89, 0x19, 0xe2, 0x26, 0x9f, 0x35, 0x57, 0xe8, 0xc9, 0xa3,
  0x96, 0x51, 0x2d, 0xb8, 0x00, 0xe4, 0xa4, 0xce, 0xc3, 0xaa, 0xb7, 0x49,
  0x8f, 0x03, 0x8f, 0x0f, 0x0c, 0x9b, 0x9a, 0x30, 0x40, 0x16, 0x39, 0xea,
  0x70, 0x0e, 0x70, 0x6a, 0xef, 0xb1, 0xaa, 0x67, 0xa1, 0x61, 0x52, 0x73,
  0x8b, 0xe6, 0xd4, 0x6e, 0x27, 0x30, 0xd7, 0xb4, 0x3c, 0x6d, 0xa4, 0x37,
  0x84, 0x68, 0x78, 0xfb, 0x13, 0x83, 0xe2, 0x7f, 0xb3, 0xad, 0x5d, 0x65,
  0xd7, 0x45, 0xe3, 0x57, 0xd0, 0x10, 0x2f, 0x4f, 0x3e, 0xe5, 0x61, 0xa7,
  0x06, 0x7c, 0x7d, 0x60, 0x78, 0xcd, 0x92, 0x47, 0x78, 0xbb, 0xad, 0x8e,
  0x52, 0x02, 0x4c, 0xb8, 0x4c, 0xe5, 0xf7, 0x0c, 0x96, 0xb2, 0x7d, 0xc9,
  0x0f, 0x7d, 0xe5, 0x1e, 0xea, 0x0c, 0x47, 0x5e, 0x7b, 0xf6, 0xd2, 0x6b,
  0x32, 0x5d, 0xfd, 0x9c, 0x0a, 0x34, 0xbe, 0x19, 0x24, 0x47, 0x4b, 0x1c,
  0xca, 0xc1, 0x57, 0x31, 0xc6, 0xc5, 0x3d, 0x82, 0xeb, 0xd2, 0x96, 0xcb,
  0x0f, 0xff, 0x42, 0x26, 0x17, 0x36, 0x8c, 0xe9, 0xd2, 0x56, 0x82, 0x71,
  0x3d, 0x8a, 0xf2, 0x83, 0x48, 0xd0, 0x01, 0xb9, 0x94, 0x2b, 0x32, 0x12,

  0x66, 0x99, 0xa2, 0x84, 0x2f, 0xe1, 0xdd, 0xa4, 0x6c, 0xa9, 0x95, 0xc0,
  0x61, 0x10, 0xb9, 0x0e, 0x2d, 0x04, 0x69, 0xbd, 0xa0, 0x07, 0xd0, 0x26,
  0xab, 0x0c, 0x32, 0xab, 0x17, 0x2b, 0x18, 0x48, 0xb6, 0x93, 0x9d, 0x37,
  0x29, 0xaa, 0x6a, 0x9d, 0x26, 0xe2, 0xe3, 0xf9, 0x15, 0x45, 0xe2, 0x02,
  0x29, 0x7a, 0x79, 0xdd, 0x0c, 0x23, 0x78, 0xaf, 0x88, 0x01, 0x9d, 0x9f,
  0x9d, 0x1f, 0xed, 0xfa, 0xa0, 0x98, 0x02, 0x8e, 0xc0, 0x3d, 0x1f, 0x11,
  0x25, 0xb2, 0xc0, 0x09, 0x03, 0x65, 0x37, 0x5c, 0xa6, 0x17, 0xda, 0x96,
  0x53, 0x41, 0x8c, 0x23, 0xe6, 0x82, 0x2f, 0xc2, 0xe5, 0xef, 0x0a, 0x45,
  0xbc, 0x6e, 0x88, 0xee, 0x62, 0x2a, 0x3c, 0xe2, 0x67, 0x21, 0xac, 0x4c,
  0xcd, 0x09, 0xe5, 0x40, 0x64, 0x19, 0xa2, 0xf8, 0xaf, 0xdd, 0x4f, 0x84,
  0x0a, 0x17, 0x82, 0x59, 0x26, 0x9c, 0x78, 0x14, 0x49, 0xe9, 0x92, 0x20,
  0xaf, 0x7b, 0x12, 0x01, 0x09, 0x2d, 0x86, 0x04, 0xba, 0x90, 0xcb, 0xb5,
  0x20, 0x6f, 0x29, 0x51, 0x2d, 0x63, 0x2a, 0x8f, 0x7a, 0xfb, 0xc0, 0xdb,
  0xbe, 0x16, 0x2d, 0x8b, 0x4c, 0xba, 0x96, 0xa5, 0xc9, 0xbb, 0xd3, 0xf1,

  0x85, 0x1f, 0x44, 0x82, 0x1e, 0x16, 0xa4, 0x32, 0xb7, 0x81, 0xdd, 0xbc,
  0xd4, 0xa2, 0xd3, 0x93, 0xf1, 0xc5, 0x28, 0xd6, 0xb1, 0xc1, 0x68, 0xe7,
  0x63, 0x2a, 0xb7, 0x69, 0x01, 0x65, 0x24, 0xdc, 0x1d, 0x9c, 0x13, 0x8d,

  0x39, 0x3a, 0xc6, 0xd1, 0xa2, 0xbc, 0xf2, 0x41, 0x21, 0xba, 0xc3, 0x99,
  0x29, 0xfe, 0x91, 0xd3, 0x94, 0x25, 0xc5, 0x59, 0xa3, 0x44, 0xf5, 0x7a,
  0x32, 0xf4, 0x90, 0x14, 0x59, 0xdf, 0x41, 0x8b, 0x2e, 0x43, 0xbd, 0x46,
  0x42, 0x7d, 0x0a, 0x6d, 0xcc, 0x1d, 0x26, 0x28, 0xec, 0x8f, 0x20, 0x60,
  0xb6, 0x5c, 0xdd, 0xd3, 0x24, 0x03, 0xe2, 0x2e, 0x9c, 0x4c, 0xf4, 0xec,
  0x83, 0x89, 0x8a, 0xb6, 0xa2, 0xb3, 0x93, 0xd2, 0xd5, 0xb1, 0x5d, 0xb3,
  0x40, 0x61, 0xbb, 0x9f, 0x12, 0xa7, 0xf4, 0x48, 0xd0, 0x11, 0x5d, 0x9d,
  0x65, 0xec, 0x72, 0xb2, 0xd3, 0xee, 0x05, 0x01, 0xce, 0x67, 0x8c, 0x83,
  0x59, 0xb7, 0x81, 0x30, 0x19, 0xf4, 0x80, 0x98, 0x0e, 0x37, 0x00, 0x22,
  0xd5, 0xad, 0xef, 0x24, 0xd9, 0x27, 0xd7, 0xca, 0x4f, 0x1d, 0x7e, 0xcf,
  0x19, 0xcf, 0x08, 0x94, 0x0d, 0xfa, 0x10, 0xda, 0x42, 0x32, 0xd2, 0x66,
  0x4c, 0x1f, 0x4e, 0x5e, 0x9f, 0xda, 0xdd, 0x92, 0xdd, 0x41, 0x0a, 0xad,
  0x5d, 0x2b, 0x95, 0xb5, 0x28, 0xdb, 0xc4, 0x99, 0x04, 0x41, 0x9f, 0x75,
  0x91, 0xff, 0x1d, 0xa9, 0x56, 0xd0, 0x5d, 0xe7, 0x39, 0xe0, 0xbc, 0x52,
  0xb8, 0xce, 0x55, 0x92, 0x6d, 0xd7, 0xb6, 0x93, 0x5d, 0x3e, 0xb3, 0xe5,



  0x1f, 0x1c, 0xe3, 0x8b, 0xe6, 0x1f, 0x6f, 0x44, 0x4e, 0x39, 0x68, 0xc3,
  0x9b, 0x02, 0xe5, 0x58, 0xc0, 0xc8, 0x8c, 0x40, 0xda, 0x43, 0xf9, 0x62,
  0xa0, 0x5c, 0x40, 0x37, 0x73, 0xd9, 0x75, 0x6d, 0x90, 0x9d, 0xb2, 0x92,
  0xa2, 0xc7, 0x9d, 0x37, 0xef, 0xcf, 0xde, 0x0e, 0x2f, 0xce, 0xd0, 0xea,
  0x1e, 0xe6, 0xdc, 0x62, 0x43, 0x8a, 0x48, 0x6d, 0xfb, 0xa4, 0x3a, 0x94,
  0x12, 0xf1, 0xb5, 0xed, 0xd4, 0xbb, 0x52, 0xe8, 0xc3, 0x22, 0x05, 0xd3,
  0xd3, 0xb7, 0x82, 0xf6, 0x25, 0x05, 0x6b, 0x22, 0x29, 0x5a, 0xa4, 0x92,
  0xdf, 0x71, 0xea, 0xc5, 0xb1, 0x38, 0xa5, 0x43, 0x38, 0xf7, 0x64, 0x5d,
  0xdf, 0x25, 0x52, 0x5b, 0x4a, 0x98, 0x85, 0xb0, 0xa5, 0xc2, 0xe8, 0x80,
  0xed, 0xbd, 0x6d, 0x91, 0x8a, 0xa8, 0xea, 0x8e, 0xcb, 0xba, 0x9a, 0xd2,
  0x5c, 0xdf, 0xb4, 0xaa, 0xca, 0x1b, 0x15, 0x5c, 0x52, 0xfb, 0x6d, 0xa6,
  0x4e, 0x87, 0x54, 0xdd, 0xf5, 0xa2, 0xbb, 0x08, 0x60, 0x99, 0x76, 0x0e,
  0xdf, 0xa8, 0xfe, 0x3d, 0x6e, 0x63, 0x6e, 0x68, 0x06, 0xf8, 0xb0, 0xa9,
  0xd6, 0x54, 0x52, 0x1a, 0x77, 0x3b, 0x9f, 0x12, 0x9b, 0x6c, 0xa7, 0x8c,
  0x0f, 0x04, 0x51, 0x91, 0x00, 0x78, 0xd0, 0xeb, 0xcd, 0xfa, 0x25, 0xe1,
  0x9f, 0xe0, 0x98, 0xe2, 0x1f, 0x82, 0x1b, 0x2c, 0x50, 0xcb, 0xa4, 0xd1,
  0x53, 0x1b, 0x57, 0xa4, 0x8d, 0xbb, 0x5c, 0xbc, 0xbc, 0xe1, 0xfe, 0x9b,
  0x9a, 0x84, 0x03, 0x30, 0x35, 0x30, 0x03, 0xfa, 0x69, 0xa0, 0x4b, 0x2a,
  0x4a, 0x52, 0x4e, 0x08, 0x15, 0xb3, 0xf5, 0x14, 0xc7, 0x44, 0x11, 0x3f,
  0x6a, 0xef, 0x39, 0x61, 0xdc, 0x56, 0x05, 0x79, 0xa0, 0xa1, 0x5d, 0xba,
  0x3c, 0x3b, 0x70, 0xba, 0x5a, 0x56, 0xc2, 0x8f, 0xb9, 0x9e, 0x65, 0xa4,
  0x4c, 0x52, 0xee, 0x6b, 0xc6, 0x8a, 0x65, 0xd5, 0xb5, 0x39, 0x29, 0xaa,
  0xa4, 0x3d, 0x93, 0x43, 0x76, 0x45, 0xa0, 0xf9, 0x80, 0x0b, 0x97, 0xa0,
  0x3f, 0x21, 0x5b, 0x12, 0x01, 0x23, 0xe8, 0xfe, 0xe7, 0xb4, 0x36, 0x7c,
  0xa9, 0x3d, 0xde, 0xee, 0x06, 0xf7, 0xf4, 0x5a, 0x0b, 0x2b, 0xbc, 0xd3,

  0x6b, 0x1d, 0x48, 0xfc, 0xe4, 0x4e, 0x5a, 0x18, 0x17, 0x9c, 0x9a, 0xe1,
  0xed, 0xb8, 0xb0, 0x28, 0x00, 0x2f, 0x22, 0x57, 0x3d, 0x45, 0xb7, 0xeb,
  0xeb, 0x18, 0x73, 0x4a, 0x6d, 0x3f, 0xc7, 0x26, 0xd1, 0x8f, 0x26, 0x3b,
  0x5a, 0xf9, 0x69, 0x2b, 0x91, 0x4e, 0xe5, 0x57, 0xcf, 0x6d, 0x69, 0x2a,
  0xf1, 0xb4, 0xce, 0x70, 0x47, 0xdf, 0x7f, 0xdf, 0xee, 0xbf, 0xbc, 0xdb,
  0x07, 0x86, 0x21, 0x35, 0x29, 0x33, 0xe6, 0x7d, 0x3a, 0xe1, 0xa0, 0xae,
  0x4e, 0xc9, 0x8e, 0x42, 0x0c, 0xc8, 0xe2, 0x67, 0x07, 0x8c, 0x78, 0x8a,
  0x8c, 0x09, 0x78, 0xa5, 0xc5, 0x56, 0xad, 0x14, 0x0e, 0xc0, 0x64, 0x9c,
  0x44, 0x72, 0x16, 0xc1, 0x70, 0x35, 0xf7, 0x82, 0x63, 0x2a, 0xc8, 0x49,
  0xf7, 0xb7, 0xab, 0x76, 0xce, 0x99, 0x2b, 0x8a, 0x2d, 0x08, 0x50, 0xf3,
  0xe6, 0x26, 0xd1, 0x16, 0x38, 0xd3, 0x96, 0x5e, 0x42, 0xde, 0x73, 0x5b,
  0x09, 0x4a, 0x8b, 0x9d, 0x56, 0x99, 0x78, 0x1b, 0xb4, 0x09, 0x50, 0x10,
  0x45, 0x26, 0xd0, 0x1e, 0xbe, 0x3c, 0x70, 0xaa, 0xa6, 0xde, 0x7d, 0x71,
  0x78, 0x8b, 0x9d, 0x13, 0x93, 0x32, 0x8c, 0x50, 0x7b, 0xbf, 0x29, 0x01,
  0xb1, 0x89, 0xde, 0x4b, 0x80, 0x8d, 0x2b, 0xd9, 0xb1, 0x25, 0xed, 0x83,
  0x59, 0xde, 0xfc, 0x41, 0x6f, 0xee, 0xc8, 0x0f, 0x5e, 0x12, 0x15, 0xc4,
  0x42, 0xa0, 0xca, 0x4c, 0xe8, 0x5c, 0x08, 0xdb, 0x97, 0x72, 0xe1, 0xb4,
  0x25, 0x19, 0x79, 0x8a, 0x35, 0x46, 0xce, 0xea, 0x34, 0x90, 0x28, 0x96,
  0x30, 0x5e, 0x42, 0xa0, 0x69, 0x77, 0x65, 0x29, 0x87, 0x07, 0x4e, 0x4f,
  0x87, 0x4b, 0xc7, 0xce, 0x2d, 0x63, 0x94, 0x0e, 0xf1, 0x58, 0xdd, 0x97,
  0x6e, 0x22, 0xc8, 0xe3, 0xc8, 0x81, 0xe3, 0xf6, 0x29, 0xfe, 0x9e, 0xa9,


  0x9b, 0xcc, 0xa2, 0x9e, 0x48, 0xa1, 0x99, 0xf4, 0xe1, 0xf8, 0xea, 0xf8,
  0xa2, 0x7b, 0xb5, 0xfc, 0xc8, 0x21, 0x30, 0x46, 0xcc, 0xbf, 0xcf, 0x3f,
  0x5c, 0xec, 0xa2, 0x39, 0x99, 0x02, 0x06, 0x37, 0xad, 0xa6, 0x33, 0xb6,
  0x7e, 0x35, 0x2c, 0xc5, 0x61, 0x54, 0x0f, 0xe1, 0x53, 0x92, 0x0c, 0x24,
  0x37, 0x83, 0x7c, 0x2c, 0x47, 0xfb, 0x07, 0xc6, 0x8e, 0xda, 0x3f, 0x44,
  0xc3, 0xe9, 0xa3, 0xfd, 0x23, 0x0b, 0x84, 0xa0, 0x4f, 0x85, 0x6d, 0x2a,
  0xf8, 0x45, 0xb8, 0x4c, 0x40, 0xf7, 0x47, 0xb7, 0xb7, 0xf8, 0x71, 0xbb,
  0xbc, 0x62, 0x68, 0x4b, 0x12, 0xfd, 0x69, 0x46, 0xe5, 0xbe, 0xb7, 0xdf,
  0x88, 0xec, 0xad, 0x0b, 0x2e, 0x00, 0x46, 0x43, 0x6f, 0xc2, 0x0d, 0x19,
  0xf5, 0x77, 0xb7, 0xf2, 0x5a, 0xf5, 0x09, 0x3a, 0x9a, 0xdf, 0x9e, 0xce,
  0x10, 0x8b, 0x8f, 0x38, 0x23, 0x28, 0x24, 0x01, 0x6b, 0xa6, 0x67, 0x04,
  0xaf, 0xc9, 0xec, 0xc1, 0xad, 0xdb, 0x21, 0xdb, 0x32, 0x55, 0x18, 0x80,


  0x11, 0x74, 0xc2, 0x8e, 0x6c, 0x31, 0x4d, 0xc4, 0x09, 0x41, 0xfc, 0xef,

  0x39, 0xa5, 0x89, 0x98, 0x3b, 0x81, 0xfd, 0xd5, 0xbf, 0x6a, 0x1e, 0x1f,
  0xff, 0xeb, 0xa8, 0x2d, 0x29, 0xc9, 0x3d, 0xac, 0x83, 0xbe, 0x90, 0xbf,
  0x04, 0xbe, 0x4a, 0xf4, 0x19, 0x86, 0x6e, 0x8c, 0x0e, 0x31, 0xbb, 0x2d,
  0xff, 0x09, 0xc6, 0xb0, 0x13, 0x13, 0x2d, 0x45, 0x3a, 0xb8, 0x33, 0x8b,
  0xee, 0xd2, 0x46, 0x4b, 0x3e, 0x8c, 0xfa, 0x1a, 0x00, 0xaa, 0x26, 0x18,
  0x8c, 0xaf, 0x09, 0x16, 0x16, 0x31, 0xc0, 0x53, 0x89, 0xcb, 0x55, 0xec,

  0xee, 0xd6, 0x0a, 0xfe, 0x40, 0xc2, 0xd5, 0x3a, 0xdb, 0x65, 0x8e, 0x9d,
  0xe9, 0x24, 0x2f, 0x1b, 0xf4, 0x83, 0x86, 0x1f, 0x2c, 0x34, 0x51, 0x69,
  0x2b, 0x06, 0xbc, 0x15, 0xe8, 0xb3, 0x4e, 0x0d, 0x73, 0x34, 0x05, 0xb3,
  0x35, 0x53, 0x0e, 0x84, 0x2c, 0xfd, 0x44, 0x8d, 0x58, 0x86, 0xed, 0x44,
  0x93, 0xf7, 0x92, 0xce, 0x42, 0xcd, 0x3d, 0x24, 0xd1, 0x4a, 0x6a, 0xbf,
  0x74, 0x83, 0x7e, 0x34, 0xc0, 0xdf, 0x1e, 0xef, 0x3f, 0xe3, 0x13, 0x3d,
  0x39, 0xbe, 0x78, 0xd3, 0x75, 0xe6, 0x55, 0x86, 0xa0, 0xf8, 0xbf, 0xc3,
  0x2c, 0xad, 0xae, 0x8c, 0x71, 0x41, 0x50, 0x49, 0x43, 0xea, 0xbf, 0x31,
  0xdc, 0xdf, 0x8f, 0xe5, 0x6d, 0xfc, 0x8a, 0xf0, 0x10, 0x47, 0x8f, 0xda,
  0x21, 0x3d, 0x52, 0xe9, 0x87, 0xb4, 0xdd, 0xfd, 0x48, 0xbe, 0x6d, 0xf2,
  0x4a, 0x55, 0x77, 0x96, 0xc7, 0x5b, 0x01, 0xfb, 0x2c, 0xb1, 0x90, 0xd0,
  0x49, 0x17, 0x08, 0xd3, 0x33, 0xb1, 0xbb, 0xea, 0x8d, 0xcd, 0x4e, 0x32,
  0x62, 0x1e, 0x32, 0xa9, 0xb9, 0xdb, 0x4d, 0xb8, 0x8f, 0x24, 0xb7, 0x7b,

  0x6b, 0xc0, 0x00, 0x60, 0x41, 0x44, 0x0b, 0xe7, 0x6b, 0xa9, 0x1d, 0xac,
  0x32, 0x82, 0x5c, 0x63, 0xb5, 0x4f, 0xda, 0x66, 0xdd, 0x0f, 0x1b, 0x87,
  0x2d, 0xa8, 0xa6, 0x2b, 0x29, 0x22, 0xe5, 0x7f, 0x93, 0x28, 0x6e, 0xe5,

  0xcf, 0x1e, 0x3e, 0x8e, 0x6c, 0x1c, 0x04, 0xf6, 0xcf, 0xdc, 0x38, 0xa7,
  0x1c, 0xb1, 0xff, 0x0e, 0x06, 0xaf, 0x2d, 0x75, 0x8b, 0x64, 0x6a, 0x6b,
  0x5b, 0xe7, 0x9f, 0xbc, 0x16, 0xda, 0xed, 0xd1, 0x26, 0xf0, 0x49, 0xf7,
  0xd6, 0xcf, 0x5c, 0xcb, 0xc0, 0x75, 0x3e, 0x21, 0xe9, 0xb1, 0x94, 0xc6,
  0x6e, 0xf0, 0x33, 0x20, 0xa0, 0xd9, 0x05, 0x86, 0xc9, 0x56, 0x19, 0x16,
  0xef, 0xe7, 0x2d, 0x78, 0xc4, 0x6d, 0x6d, 0x54, 0xb2, 0x15, 0xb5, 0x20,
  0xd2, 0x08, 0xd1, 0x7c, 0x45, 0x88, 0x1f, 0x75, 0xd4, 0xcf, 0x22, 0x66,
  0x3e, 0xfb, 0x11, 0xb0, 0x99, 0xea, 0x92, 0x1d, 0x88, 0x18, 0x93, 0xd7,
  0x75, 0x8f, 0x95, 0x67, 0x05, 0x4a, 0xe3, 0x75, 0xba, 0x20, 0x73, 0x1d,
  0x63, 0xd8, 0xc3, 0x2a, 0x5d, 0x65, 0x3d, 0x0f, 0x5e, 0xf6, 0x88, 0x7f,
  0x7f, 0x1e, 0x85, 0x7d, 0x9f, 0x13, 0x1e, 0x55, 0x99, 0xfd, 0xf6, 0xfd,
  0x9b, 0xbf, 0xa8, 0xdd, 0xbd, 0x3b, 0xe8, 0xb1, 0x84, 0x3b, 0xd3, 0x9d,
  0x64, 0x5e, 0x22, 0xa0, 0x40, 0x40, 0xb4, 0x76, 0x9d, 0xff, 0xe5, 0xb2,
  0x2c, 0x83, 0xa0, 0x02, 0x92, 0x3e, 0x76, 0x28, 0xcc, 0x66, 0x9e, 0x1b,
  0x8b, 0x49, 0x77, 0x34, 0x7a, 0x0c, 0x7f, 0xc8, 0x9b, 0x57, 0x8f, 0x8f,
  0x0e, 0x0f, 0x8c, 0xd5, 0xba, 0xd3, 0xe1, 0x16, 0xbb, 0x9f, 0x3d, 0x68,
  0xb7, 0xed, 0x79, 0x67, 0xb7, 0x2b, 0xa2, 0xbd, 0x9d, 0xe3, 0xef, 0xcf,
  0xdf, 0x05, 0x6b, 0x34, 0x6b, 0x0a, 0x02, 0xa9, 0x7d, 0x6b, 0x74, 0xba,
  0x40, 0x6b, 0x7c, 0xcd, 0x3f, 0x46, 0xc3, 0xea, 0x48, 0xa8, 0xf2, 0x4d,
  0x95, 0x93, 0x8e, 0xbb, 0x45, 0x5b, 0xb2, 0x75, 0x5a, 0x16, 0x33, 0x23,

  0xfa, 0xcf, 0x08, 0xa2, 0x2f, 0xdb, 0x32, 0xba, 0xfa, 0xbd, 0xab, 0xeb,
  0xbf, 0x26, 0x6f, 0x07, 0xb8, 0x2a, 0x45, 0x98, 0xe1, 0xf2, 0x16, 0x3f,
  0x04, 0x22, 0x32, 0x81, 0x9b, 0x70, 0x8d, 0xc9, 0xfa, 0x32, 0x63, 0xf7,
  0x2e, 0x99, 0x66, 0xed, 0xdb, 0x76, 0x8b, 0x86, 0x44, 0xf0, 0xf8, 0xbc,
  0x80, 0x43, 0xbb, 0x2f, 0x16, 0xc2, 0xdc, 0x52, 0xa3, 0x21, 0xec, 0x23,
  0xda, 0x51, 0xb7, 0xfe, 0xae, 0xd7, 0xd1, 0x1d, 0xe0, 0x9d, 0x1c, 0xeb,
  0x20, 0xbd, 0x2d, 0xc2, 0x73, 0xf1, 0x98, 0xb3, 0x2b, 0xf2, 0x76, 0x4a,
  0x3c, 0x6e, 0x22, 0xc0, 0x20, 0x06, 0x6d, 0xec, 0xc2, 0x98, 0x0f, 0x1c,
  0x19, 0x04, 0xe8, 0xb8, 0x97, 0x16, 0x6d, 0x9c, 0x57, 0x02, 0x33, 0x60,
  0xeb, 0x27, 0xbb, 0x45, 0x13, 0x55, 0xa3, 0x22, 0x3e, 0x39, 0x0a, 0xe5,
  0x91, 0x2c, 0x45, 0xe0, 0x5d, 0xc4, 0xcd, 0x64, 0xa1, 0xa8, 0xdf, 0x38,
  0xb5, 0x77, 0x10, 0x8d, 0x43, 0xc4, 0x42, 0x52, 0x1c, 0x95, 0x10, 0xeb,
  0xac, 0x13, 0x97, 0xf0, 0xe3, 0x10, 0xb8, 0x29, 0x14, 0x89, 0x90, 0x28,
  0x43, 0x68, 0xa8, 0x78, 0x91, 0x89, 0xfe, 0xd0, 0xc4, 0x86, 0x60, 0x44,
  0xd7, 0x04, 0xb5, 0xa1, 0x89, 0x16, 0xf1, 0x3d, 0xfe, 0x3c, 0x42, 0x7c,
  0xef, 0xce, 0x2e, 0x8e, 0x9f, 0x0b, 0xc4, 0x97, 0x62, 0xe1, 0xa8, 0x99,
  0xc0, 0x89, 0x69, 0xdc, 0xc8, 0x9d, 0x6b, 0x0e, 0x49, 0xc8, 0xea, 0xa9,
  0x0f, 0x62, 0x57, 0x1e, 0x39, 0xe2, 0x74, 0x4d, 0xd8, 0xcb, 0xdb, 0xf4,
  0x22, 0xe4, 0xa2, 0xd4, 0x5f, 0x2c, 0x03, 0xa6, 0x27, 0x3a, 0xff, 0x10,
  0x19, 0x05, 0xf0, 0x19, 0x40, 0xa4, 0x60, 0x79, 0x1b, 0x90, 0x10, 0x8b,

  0x32, 0x36, 0xb8, 0x6c, 0xc2, 0xe2, 0x94, 0xfa, 0xa9, 0x86, 0x4d, 0x40,
  0x11, 0xa1, 0x7b, 0x23, 0x8d, 0xe4, 0x61, 0x8f, 0x58, 0x98, 0xcd, 0x4d,
  0x22, 0xce, 0x05, 0x12, 0xbb, 0x97, 0x4a, 0x8c, 0x33, 0xf2, 0x02, 0xfe,
  0xa9, 0x17, 0xe6, 0xaa, 0xf1, 0xee, 0x93, 0xd2, 0x89, 0xb9, 0x47, 0x6a,
  0xa5, 0x91, 0x55, 0x69, 0xcd, 0x14, 0xc1, 0xb0, 0x09, 0xc3, 0xd7, 0x60,
  0x81, 0x6d, 0xb7, 0x88, 0x6a, 0x69, 0x03, 0xab, 0xae, 0x21, 0x71, 0x27,
  0x43, 0x59, 0x16, 0x1b, 0xe0, 0xd0, 0x16, 0x7a, 0x90, 0x58, 0x7d, 0x8c,
  0x01, 0x51, 0xaa, 0x49, 0xf4, 0x4d, 0x8d, 0xe0, 0xf6, 0x2b, 0x10, 0xa0,
  0xf3, 0xc1, 0x9a, 0xcd, 0x19, 0xe8, 0xc1, 0x7c, 0xe4, 0xf1, 0x7e, 0x8f,

  0x2d, 0xcb, 0x2a, 0xef, 0x38, 0x6b, 0x0b, 0x5a, 0xf3, 0xc6, 0xf0, 0xc0,
  0x3a, 0x61, 0x73, 0x14, 0xb7, 0x0b, 0x9a, 0xdb, 0xaf, 0x17, 0x62, 0x5a,
  0x0e, 0xe4, 0x8c, 0x36, 0xe6, 0x31, 0xbe, 0xd5, 0xb0, 0x2f, 0x3d, 0x94,
  0x17, 0x9a, 0xa2, 0xc6, 0x9a, 0x12, 0x47, 0xf1, 0x14, 0xb4, 0xd6, 0xdc,
  0xcc, 0x92, 0xa2, 0xe7, 0x2e, 0xf8, 0x1d, 0x1a, 0x73, 0xe4, 0xa4, 0x18,
  0x25, 0x89, 0x8f, 0x40, 0xa6, 0x25, 0x47, 0x72, 0x30, 0xb4, 0xeb, 0xf0,
  0xb7, 0x4d, 0xa8, 0x7e, 0x3f, 0xf9, 0x5b, 0x39, 0x11, 0x27, 0x0c, 0x59,
  0x8e, 0x31, 0x24, 0x9f, 0x39, 0xf2, 0xe7, 0xd7, 0x86, 0xca, 0x66, 0x6b,
  0xf6, 0xab, 0xd2, 0x84, 0x24, 0x13, 0x9b, 0x5b, 0x3f, 0x53, 0xc0, 0x23,
  0xb9, 0x04, 0x8e, 0x26, 0xa7, 0x82, 0x6a, 0x21, 0x7a, 0x58, 0xed, 0x7c,
  0xd8, 0x45, 0x6b, 0x49, 0xa7, 0xe4, 0x0d, 0x31, 0x83, 0x0b, 0x38, 0x02,
  0x03, 0xee, 0xb9, 0x84, 0xf5, 0x74, 0xda, 0xac, 0x65, 0xe3, 0xbb, 0xb3,
  0x2b, 0xd5, 0x4b, 0x6a, 0xde, 0x05, 0x0c, 0x3c, 0xb2, 0x90, 0xa6, 0x86,
  0xf2, 0xd2, 0xe9, 0x9d, 0xea, 0x0b, 0x4e, 0xb8, 0x0a, 0xa0, 0xa3, 0x03,
  0x8d, 0x0f, 0x6b, 0x3c, 0x75, 0x12, 0x14, 0xed, 0xcc, 0xeb, 0x9e, 0x6e,
  0x2d, 0xbf, 0xa8, 0x9d, 0xe2, 0xf7, 0xdc, 0x62, 0xa7, 0xb3, 0x02, 0x4f,
  0xb6, 0xae, 0x7a, 0xd6, 0xa4, 0xb4, 0xcb, 0x1b, 0x8b, 0xd1, 0x9d, 0x4b,
  0xc0, 0x56, 0xd6, 0x20, 0x32, 0x88, 0x7a, 0x46, 0xaa, 0xb1, 0x41, 0x1c,
  0x5c, 0x1b, 0x4e, 0x9d, 0x84, 0x7a, 0xc4, 0x5b, 0xf9, 0x0a, 0xf3, 0xc3,
  0x1d, 0x30, 0x2b, 0x57, 0x51, 0x4a, 0xc3, 0x3c, 0xe2, 0x8c, 0xb1, 0xe4,
  0xf1, 0xe7, 0x8f, 0x1f, 0xed, 0x6a, 0xf3, 0x62, 0xcd, 0x42, 0xdc, 0x8d,
  0x75, 0x00, 0xc4, 0x8d, 0x93, 0x9e, 0x0a, 0xd0, 0x6b, 0x72, 0xea, 0x91,

  0xc9, 0x68, 0x1d, 0xe2, 0xd8, 0xcc, 0xb9, 0x69, 0x16, 0xb9, 0xd8, 0xd1,
  0x7e, 0x8e, 0x99, 0x72, 0x90, 0x3f, 0x40, 0x1f, 0xcb, 0xf8, 0xe5, 0x1d,
  0x70, 0xf8, 0xb4, 0x76, 0xcc, 0xdb, 0x55, 0x06, 0x31, 0xb4, 0x3f, 0x94,
  0x34, 0x4d, 0x7d, 0xdb, 0x45, 0xf9, 0x7a, 0xb4, 0xac, 0x9c, 0xd3, 0xcf,
  0xa1, 0xa9, 0x8a, 0xea, 0x71, 0x45, 0x1d, 0xd9, 0x4b, 0x4f, 0x2e, 0xb0,
  0x6f, 0x84, 0x6b, 0xbb, 0x58, 0xf0, 0xc4, 0x80, 0xaa, 0x81, 0x33, 0x51,
  0x73, 0x86, 0x54, 0x7b, 0x1f, 0x19, 0xfa, 0x14, 0xe0, 0x0b, 0xf2, 0xbe,
  0x24, 0x48, 0xc9, 0x99, 0x30, 0xe2, 0x6e, 0x20, 0x90, 0x97, 0xda, 0x1d,
  0x8a, 0x55, 0x8f, 0xb2, 0x72, 0xa5, 0xb9, 0x1c, 0xa4, 0x61, 0x71, 0x89,
  0x7c, 0xe1, 0x3e, 0xe0, 0x1d, 0x75, 0x83, 0xa4, 0x8a, 0x11, 0xd2, 0x9a,

  0x59, 0x6f, 0x7d, 0x8b, 0x52, 0x9b, 0x42, 0xf1, 0x74, 0xcb, 0x5a, 0xf4,
  0xef, 0x96, 0x2a, 0xc3, 0x8a, 0x36, 0xfe, 0x6a, 0x67, 0x23, 0x7a, 0x66,
  0x0f, 0x4b, 0x8a, 0x71, 0xf3, 0xe0, 0x4b, 0x09, 0x9b, 0xc3, 0x2e, 0x92,

  0x1d, 0x4c, 0x78, 0x6f, 0x6f, 0xf7, 0xfe, 0x49, 0xcb, 0x93, 0xf7, 0x4d,
  0xf2, 0x9c, 0x1d, 0x1b, 0x5e, 0x3b, 0x89, 0xb9, 0x37, 0x07, 0xfa, 0xa6,
  0x07, 0x97, 0x31, 0x60, 0x8a, 0x84, 0x83, 0xb9, 0x20, 0xcc, 0xd3, 0xf4,
  0x2e, 0x74, 0xe2, 0x6b, 0x56, 0x1a, 0x2f, 0xb0, 0xbd, 0x76, 0xad, 0x47,

  0x06, 0x9c, 0x9f, 0xb0, 0x10, 0x4a, 0x8d, 0x02, 0xbe, 0xda, 0x4b, 0x43,
  0x84, 0xa1, 0xbe, 0xe9, 0xa6, 0xe5, 0x2d, 0x0e, 0x26, 0x6e, 0x3e, 0x48,
  0x3c, 0x37, 0x3b, 0xdf, 0x42, 0xf5, 0x41, 0xb0, 0x3b, 0x3e, 0x52, 0x1b,
  0xa1, 0x4f, 0xdb, 0x0c, 0x4b, 0xee, 0xa4, 0x3e, 0x0a, 0x10, 0x91, 0xf9,
  0x49, 0xd7, 0xcd, 0x3b, 0xd2, 0x4b, 0xc1, 0x77, 0x91, 0xca, 0x80, 0x86,
  0xa3, 0x7e, 0x72, 0x6b, 0x66, 0x3c, 0x62, 0xee, 0xd8, 0x2e, 0x0d, 0xf9,
  0x74, 0x30, 0x9a, 0x6e, 0xc0, 0x78, 0x31, 0x37, 0x4b, 0xdf, 0xd8, 0x31,
  0x06, 0xe3, 0x99, 0xf0, 0x4f, 0x5b, 0x9b, 0x39, 0xe0, 0x3b, 0x0a, 0x18,
  0x9c, 0x98, 0xae, 0x8e, 0xae, 0x89, 0x21, 0x92, 0x83, 0xdd, 0xc3, 0x8d,
  0x29, 0x78, 0x36, 0x07, 0x0f, 0x7e, 0x5e, 0xc9, 0xc2, 0x0b, 0xe5, 0xac,
  0xfa, 0xda, 0x74, 0xd0, 0xb6, 0xaf, 0xe1, 0x69, 0xdb, 0xd7, 0x60, 0x41,
  0x29, 0xe2, 0x1a, 0x1a, 0x27, 0x5f, 0xd6, 0xc9, 0x3b, 0x7d, 0x2c, 0xd9,
  0x19, 0x9f, 0xbf, 0x3b, 0xfe, 0xea, 0x6c, 0xf7, 0x3e, 0x1f, 0x65, 0x9b,
  0xff, 0xdb, 0x75, 0xa5, 0x9a, 0x25, 0x2c, 0xd3, 0x87, 0x75, 0xf2, 0xd5,
  0x78, 0x3c, 0x7c, 0x79, 0x7e, 0x82, 0x2e, 0x97, 0x63, 0xf3, 0x67, 0x0f,
  0x16, 0xfb, 0x08, 0xad, 0x00, 0x86, 0xdf, 0x4a, 0xed, 0x68, 0xad, 0x49,
  0x82, 0xf0, 0x00, 0xd2, 0x61, 0x0a, 0x7a, 0x22, 0xef, 0x91, 0x85, 0xf6,
  0xc0, 0xf0, 0x5d, 0x93, 0xe7, 0xfc, 0x64, 0x0f, 0x9f, 0xa2, 0x4f, 0x62,
  0x41, 0x3d, 0xee, 0x83, 0x75, 0xd8, 0xe0, 0x92, 0x34, 0x1f, 0xa4, 0x98,
  0x82, 0x41, 0x6b, 0x32, 0xb8, 0xb1, 0xfc, 0x48, 0x9c, 0xb8, 0x80, 0x5d,
  0xbc, 0xf4, 0x86, 0x5c, 0x61, 0x54, 0x5b, 0xa1, 0xa0, 0xa9, 0x1d, 0xd7,
  0x1b, 0x4c, 0x34, 0x86, 0xc6, 0x5b, 0x10, 0xfc, 0xc8, 0x58, 0xa3, 0xab,
  0x5d, 0xa7, 0xc8, 0xf6, 0x70, 0x9d, 0x24, 0xcf, 0xb7, 0xa5, 0x71, 0x7c,
  0x51, 0xae, 0x2f, 0xaf, 0xd8, 0xc0, 0x6a, 0xfb, 0x21, 0xc0, 0xcb, 0x35,
  0xfa, 0x6a, 0x7b, 0x37, 0x98, 0x49, 0x06, 0x24, 0x88, 0x77, 0x54, 0xef,
  0xa9, 0x32, 0x0a, 0x0e, 0xb1, 0x7a, 0xc3, 0x49, 0x17, 0xb3, 0xdf, 0x04,
  0x03, 0x7d, 0x83, 0x06, 0x32, 0xe1, 0xc0, 0x29, 0xdc, 0x68, 0x45, 0xb3,
  0x58, 0xca, 0x5f, 0xd3, 0xe2, 0x0e, 0xee, 0x52, 0xf1, 0xdf, 0xa3, 0xfe,
  0xd3, 0xd2, 0x74, 0x9b, 0xd0, 0x9b, 0x6a, 0x0a, 0x43, 0x9f, 0x53, 0x50,
  0xb9, 0xf0, 0x73, 0x13, 0xcd, 0xa2, 0xa7, 0xfd, 0xd2, 0x88, 0x69, 0x98,
  0x76, 0xc3, 0x62, 0xa0, 0xa3, 0x0c, 0x8c, 0x39, 0x2c, 0x61, 0x32, 0x51,
  0x84, 0x85, 0x08, 0x22, 0xac, 0x08, 0x2d, 0x20, 0x77, 0xd2, 0x49, 0x5d,
  0x2e, 0xd6, 0x0d, 0x74, 0x01, 0x72, 0x8a, 0x52, 0x71, 0xcd, 0x2e, 0x48,
  0x57, 0xc2, 0x97, 0x66, 0xd4, 0xc4, 0x4b, 0x40, 0x4d, 0x62, 0x75, 0x00,
  0xae, 0x3d, 0xe9, 0xc8, 0x85, 0x00, 0x38, 0x8a, 0x28, 0xfe, 0x09, 0xda,
  0x59, 0x1e, 0x0b, 0x43, 0xad, 0x90, 0x96, 0x74, 0xad, 0x60, 0x6f, 0xe1,
  0xf9, 0xe9, 0x59, 0xb5, 0x76, 0x47, 0xbd, 0xeb, 0xc4, 0xba, 0x5b, 0x89,
  0xea, 0x4e, 0x6b, 0x8c, 0x71, 0xb6, 0xde, 0x4c, 0x65, 0xcd, 0x16, 0x98,
  0xd0, 0x2d, 0x99, 0xdc, 0xd9, 0x8f, 0xf1, 0x77, 0x52, 0xe4, 0xf2, 0x58,
  0x45, 0xf8, 0xa1, 0xd0, 0x4a, 0xee, 0x30, 0x46, 0x9b, 0x92, 0x51, 0xda,
  0x5f, 0xea, 0x0c, 0xfd, 0x6d, 0xc6, 0x79, 0x67, 0x7c, 0xc4, 0x38, 0x8d,
  0xd6, 0x21, 0xb3, 0x96, 0xdf, 0x6d, 0x6a, 0x47, 0x1b, 0x31, 0xc2, 0x13,
  0x01, 0x01, 0x53, 0x28, 0xdd, 0xae, 0x4a, 0xd5, 0x23, 0xf2, 0xb7, 0xa5,
  0xdc, 0x4e, 0x93, 0x5f, 0xf6, 0xbe, 0x61, 0x4b, 0x81, 0xca, 0xcd, 0x1d,
  0x6f, 0xdd, 0xe9, 0x8c, 0x1e, 0xb0, 0x21, 0x6e, 0xfd, 0xee, 0x87, 0x81,
  0x65, 0x67, 0xe3, 0xc5, 0x35, 0x20, 0x29, 0xed, 0xa2, 0x0c, 0xe7, 0xff,
  0x28, 0x7f, 0xa1, 0x3b, 0xf0, 0x5d, 0x5e, 0x18, 0xcd, 0xb0, 0xde, 0x55,
  0xe2, 0xcc, 0x8b, 0x18, 0x8c, 0x02, 0xf1, 0x8e, 0xed, 0xda, 0x58, 0x62,
  0x86, 0xe3, 0xb8, 0x44, 0x3d, 0x52, 0x9c, 0x39, 0x60, 0x13, 0xb0, 0x22,
  0xaf, 0xb1, 0xe9, 0xdd, 0x2a, 0xa8, 0x9f, 0x99, 0x5a, 0xa6, 0x83, 0x31,
  0x00, 0x5e, 0x6c, 0xcc, 0x82, 0x22, 0xbf, 0x1d, 0xd9, 0xe0, 0xbe, 0x45,
  0x5f, 0xf3, 0x83, 0x9b, 0x86, 0x11, 0x46, 0x7a, 0xda, 0x83, 0xb3, 0x75,
  0x43, 0x58, 0xb4, 0xbb, 0x58, 0xe7, 0xce, 0xe3, 0xdd, 0x64, 0xde, 0xac,
  0x76, 0x0e, 0x76, 0x19, 0xc3, 0x5e, 0x7a, 0xa9, 0x97, 0x4e, 0xdc, 0x87,
  0x5e, 0x1c, 0xca, 0x2d, 0x4c, 0x5e, 0xd9, 0xcf, 0x22, 0xb8, 0x49, 0x70,
  0x6e, 0xa8, 0xe2, 0x9b, 0xcb, 0x0d, 0xe6, 0x0d, 0xb3, 0x0d, 0x98, 0x91,
  0xc6, 0x1c, 0xd9, 0x3b, 0xae, 0xc5, 0x5f, 0x11, 0xb2, 0x2b, 0x2a, 0x1b,
  0x8d, 0x05, 0xe1, 0xba, 0xe0, 0x4a, 0x2f, 0x30, 0x29, 0x7d, 0x36, 0x3b,

  0xb7, 0x98, 0x0d, 0x89, 0x87, 0x5c, 0x56, 0xa5, 0x11, 0x91, 0x55, 0x04,
  0xff, 0x52, 0x6c, 0x8a, 0x0b, 0x54, 0xdf, 0x5c, 0xe7, 0x55, 0x59, 0x00,
  0x62, 0xf4, 0x3a, 0xad, 0x72, 0x84, 0xf9, 0xb7, 0xbe, 0x3e, 0x7b, 0x7b,
  0xbc, 0xe5, 0x3b, 0x45, 0xe6, 0xb9, 0xf8, 0xd1, 0x71, 0x7e, 0x5d, 0x2f,
  0xb5, 0x9e, 0x66, 0xcc, 0x69, 0x68, 0x44, 0xfa, 0x94, 0xd5, 0x3e, 0x00,
  0x31, 0x00, 0x2a, 0x2e, 0xb3, 0x11, 0x72, 0xa3, 0x4a, 0x4a, 0x12, 0x80,
  0xf4, 0x55, 0x54, 0x0a, 0x43, 0x12, 0x50, 0xac, 0xfb, 0x8d, 0x9a, 0x86,
  0xe8, 0x80, 0x53, 0xfa, 0x9d, 0xfd, 0x12, 0xaf, 0xfb, 0x1f, 0xa9, 0xf9,
  0xda, 0x16, 0xc5, 0xb9, 0xd8, 0xbb, 0xe2, 0x71, 0x79, 0x47, 0x96, 0xcd,
  0x76, 0x5b, 0x00, 0x6e, 0xd7, 0x64, 0x8c, 0x37, 0xdb, 0xba, 0xbd, 0x48,
  0x17, 0x75, 0x3c, 0x3e, 0xec, 0xb8, 0xdc, 0xf3, 0x75, 0xa6, 0x6a, 0xfe,
  0x84, 0x1b, 0x9d, 0x07, 0x77, 0xb7, 0xef, 0x39, 0xdf, 0xbe, 0xdb, 0xe6,
  0x5e, 0x7c, 0xa4, 0xd4, 0x15, 0x88, 0xb5, 0x9b, 0x35, 0xb7, 0xa3, 0xf4,
  0xd4, 0x63, 0x22, 0xf4, 0x2a, 0x9a, 0xcf, 0x97, 0x53, 0x86, 0x15, 0xb3,

  0x71, 0xd5, 0x0e, 0xe0, 0xb3, 0x6a, 0x49, 0x85, 0xd7, 0xb6, 0x15, 0xa3,
  0xf5, 0x02, 0x8e, 0x1a, 0xc1, 0x8d, 0x34, 0x2a, 0xc5, 0x5d, 0xcc, 0x2b,
  0xc2, 0xf0, 0x71, 0x51, 0x64, 0xf9, 0xd2, 0xc0, 0xaf, 0xa6, 0xee, 0x83,
  0x20, 0x76, 0xc9, 0x28, 0x56, 0x2f, 0x61, 0x0c, 0x5e, 0x46, 0x71, 0xb5,
  0xf8, 0x6f, 0x8a, 0x64, 0x1b, 0xea, 0xc7, 0x76, 0x27, 0xd5, 0xb1, 0x8d,
  0x8a, 0x25, 0xf3, 0x37, 0x36, 0x67, 0x6c, 0xc4, 0x9f, 0x51, 0x3a, 0xa0,
  0x70, 0x50, 0xfb, 0x91, 0x14, 0x59, 0x36, 0x59, 0x1c, 0xb4, 0xcd, 0xde,
  0x47, 0xb3, 0x34, 0x69, 0xa4, 0x50, 0xaf, 0xab, 0x6b, 0x54, 0xbd, 0x4a,
  0xff, 0x2d, 0x4e, 0x0d, 0x76, 0xe7, 0x21, 0xe7, 0x10, 0x91, 0xf2, 0xde,

  0x0c, 0x29, 0x6d, 0xb3, 0x12, 0x64, 0xac, 0xe4, 0x2b, 0x9e, 0x85, 0x9d,
  0xa0, 0xb5, 0x74, 0x08, 0x00, 0x85, 0xb5, 0xd8, 0x20, 0x49, 0xbf, 0xac,
  0x81, 0x9b, 0xdb, 0x54, 0xe9, 0xd4, 0xfd, 0x65, 0x98, 0xd6, 0xd3, 0x3c,
  0xd7, 0x7e, 0x4e, 0x14, 0x1f, 0xcc, 0x28, 0x1d, 0x36, 0x8a, 0x8f, 0xe3,
  0xce, 0xc3, 0x76, 0x52, 0x99, 0x95, 0xec, 0xde, 0xe5, 0x9c, 0x93, 0x94,
  0x5b, 0xfd, 0x51, 0x06, 0x0b, 0x4a, 0xe3, 0x24, 0x78, 0x18, 0x6b, 0x71,
  0xa5, 0x95, 0x36, 0x3d, 0xa6, 0xad, 0xb1, 0xbe, 0x0f, 0x7c, 0xf3, 0x5b,
  0x37, 0x61, 0x48, 0x28, 0x55, 0x75, 0xc3, 0xa6, 0xe4, 0xcd, 0xcd, 0xa1,
  0xff, 0xcc, 0xa6, 0x68, 0x78, 0x07, 0x14, 0xa9, 0x28, 0x87, 0xe9, 0x62,
  0x15, 0x4d, 0x71, 0x1b, 0xef, 0xb6, 0x1a, 0x5e, 0xbe, 0x3c, 0x3d, 0x7f,
  0x07, 0xbc, 0x3c, 0x42, 0x4e, 0x2f, 0x6a, 0xce, 0x52, 0xa0, 0x9f, 0x51,
  0x02, 0x7b, 0xc1, 0xb0, 0x92, 0x48, 0x1a, 0x99, 0x85, 0xe5, 0xd5, 0x68,
  0x0e, 0x01, 0xf3, 0x21, 0x66, 0x5f, 0x71, 0x7a, 0x5b, 0x91, 0x78, 0x05,
  0x8e, 0xcc, 0xe0, 0xd5, 0xbe, 0xe8, 0x2e, 0xc7, 0x7c, 0xd5, 0x7d, 0x5b,
  0xbb, 0x2c, 0xd8, 0x42, 0xa4, 0xf6, 0xbb, 0x16, 0x30, 0xb0, 0x4c, 0x04,
  0x1e, 0x30, 0xe0, 0xe7, 0x4d, 0x66, 0xb1, 0x09, 0xc5, 0xae, 0xb3, 0x58,

  0xa8, 0xda, 0xc1, 0x8a, 0x93, 0x34, 0x00, 0x5c, 0xa1, 0xf5, 0xf1, 0xf5,
  0x66, 0x44, 0x03, 0xb3, 0xb1, 0xc5, 0xaa, 0xe8, 0xe2, 0x6d, 0xc9, 0x76,
  0x47, 0x8d, 0xd0, 0x00, 0xfc, 0x6d, 0x63, 0x5d, 0x98, 0x4e, 0x95, 0x1a,
  0x67, 0x6d, 0x38, 0xe0, 0x77, 0x03, 0xfe, 0xea, 0x64, 0x4d, 0x1c, 0xa2,
  0xf3, 0x05, 0x39, 0x5e, 0x56, 0x9a, 0xf8, 0x09, 0xfa, 0x9e, 0xb8, 0xbf,

  0x18, 0x49, 0x89, 0x6a, 0x38, 0xb3, 0x74, 0x69, 0xd4, 0x82, 0x42, 0x0b,
  0x05, 0xc8, 0xf3, 0x4b, 0xf9, 0x9c, 0xdd, 0x09, 0xaf, 0x53, 0xe1, 0x58,
  0x0a, 0x67, 0x0f, 0x2e, 0xd0, 0xa9, 0x1f, 0xe0, 0xcf, 0x10, 0x27, 0xf5,
  0x87, 0x8f, 0xd5, 0x84, 0xe1, 0x75, 0x8b, 0x7b, 0x20, 0x71, 0x1b, 0x6d,
  0xfd, 0xc9, 0xc0, 0xe1, 0x3c, 0x84, 0xed, 0xfe, 0x4d, 0x9d, 0xab, 0xae,
  0xd6, 0xc5, 0x27, 0x33, 0x85, 0xb0, 0x1c, 0x5a, 0x93, 0x7d, 0xa9, 0xf9,
  0x05, 0xb7, 0xcc, 0xa5, 0xbf, 0x70, 0xff, 0x65, 0x3b, 0x02, 0x61, 0x96,
  0x5f, 0x93, 0x23, 0x4f, 0x40, 0xbc, 0x3d, 0xe5, 0x34, 0x36, 0xbb, 0x99,
  0xbd, 0x1f, 0x66, 0x56, 0x76, 0x03, 0xa3, 0xe9, 0xec, 0x7a, 0xd2, 0xae,
  0xd9, 0xbc, 0xa1, 0x46, 0x4f, 0xa4, 0x48, 0x14, 0x5b, 0x01, 0xa4, 0x50,
  0x91, 0xa4, 0xa9, 0x5e, 0x01, 0x3b, 0x5c, 0x83, 0xec, 0xc9, 0x64, 0xc3,
  0x37, 0x81, 0xdd, 0xe2, 0x75, 0x9f, 0x8a, 0xcc, 0xa4, 0x5d, 0x9b, 0xdf,
  0x47, 0x07, 0xac, 0xa4, 0xc0, 0x91, 0x65, 0x88, 0xc0, 0x95, 0xf2, 0x4b,
  0x26, 0x8a, 0xd5, 0xd9, 0xa8, 0x2f, 0xac, 0xdf, 0x98, 0x32, 0xc2, 0xb7,
  0x5c, 0x29, 0x57, 0x56, 0x58, 0x22, 0x5b, 0x46, 0x81, 0x67, 0x7f, 0xf5,
  0x5d, 0x72, 0x0b, 0xf1, 0x36, 0xca, 0xfe, 0xb0, 0xb3, 0x49, 0xc5, 0x83,
  0xb8, 0xe1, 0xbb, 0x90, 0x19, 0xbe, 0x6b, 0xf3, 0x42, 0xb7, 0xd2, 0xa0,
  0x8e, 0x3a, 0x72, 0xa3, 0xef, 0xe5, 0x81, 0x34, 0x3c, 0x25, 0xd8, 0x9f,
  0xbf, 0x0b, 0xab, 0xbc, 0xc5, 0xfd, 0x37, 0x41, 0x7d, 0xf6, 0x7d, 0x5c,
  0xd0, 0x9a, 0xee, 0xf2, 0xb3, 0x1e, 0xd7, 0xd6, 0xcf, 0x67, 0x81, 0x6a,
  0x51, 0x09, 0xab, 0x0b, 0x39, 0x60, 0x11, 0x30, 0x40, 0xa1, 0xbb, 0x5f,
  0x87, 0x05, 0xd2, 0x27, 0x8d, 0x95, 0x7d, 0x49, 0x59, 0x29, 0xe4, 0x06,
  0x0c, 0xd8, 0xe0, 0x99, 0xf5, 0x1b, 0x71, 0xad, 0x8d, 0xed, 0xb2, 0xa6,
  0x6f, 0x25, 0x78, 0x4b, 0xd9, 0x8d, 0xe2, 0xe4, 0x2e, 0xd7, 0x88, 0xa6,
  0x05, 0x29, 0x90, 0x8e, 0xf2, 0x53, 0x46, 0xf9, 0xa0, 0x3a, 0xf7, 0xb4,
  0x2a, 0x38, 0x3f, 0x66, 0xe6, 0xe7, 0xe1, 0x19, 0x66, 0x6a, 0xaf, 0x16,
  0x43, 0xce, 0x0d, 0xeb, 0xd0, 0x6f, 0x54, 0xe7, 0xa8, 0x87, 0x8d, 0x9a,
  0xb0, 0xae, 0xa3, 0x9a, 0xd6, 0x0b, 0x6d, 0xb8, 0x37, 0xfe, 0xb5, 0x11,
  0xef, 0x46, 0xff, 0xa5, 0x69, 0x6f, 0x19, 0xdf, 0x1c, 0x4b, 0xfe, 0x9d,
  0x9d, 0x01, 0x4c, 0xc1, 0x03, 0xb1, 0xe8, 0x98, 0x20, 0xea, 0x81, 0x5d,
  0x58, 0x1b, 0xb4, 0xf1, 0x69, 0x70, 0x76, 0x42, 0x6c, 0xf9, 0x2c, 0x8a,
  0xbe, 0xa1, 0x97, 0x52, 0x1a, 0xfa, 0x4a, 0xac, 0x89, 0xae, 0x91, 0xc2,
  0xfe, 0x9c, 0xbc, 0x36, 0x0b, 0x25, 0x2b, 0x83, 0xda, 0xbb, 0xff, 0x19,
  0x0a, 0x4a, 0xec, 0x5a, 0xa2, 0x3b, 0x80, 0x8d, 0xc7, 0xc3, 0x37, 0x43,
  0xd8, 0xa6, 0x3e, 0x26, 0x1b, 0x81, 0x34, 0x8e, 0x3c, 0x3e, 0xc5, 0xb9,
  0x12, 0xd2, 0x3d, 0x28, 0xee, 0x4a, 0x22, 0x53, 0x00, 0x75, 0xd2, 0x57,


  0x6b, 0x43, 0xa9, 0xa4, 0xa6, 0x70, 0xb7, 0x2f, 0xce, 0xab, 0x2d, 0xc9,
  0x3c, 0x00, 0xbb, 0xa5, 0x09, 0x7b, 0x33, 0x0e, 0xa8, 0x80, 0x03, 0x10,
  0x75, 0x66, 0x58, 0x28, 0xd7, 0x78, 0x4d, 0xaa, 0xf2, 0x53, 0xc6, 0xfc,


  0x02, 0x46, 0x21, 0x50, 0xb3, 0x58, 0x07, 0x16, 0x3f, 0xba, 0x91, 0x50,


  0xdc, 0xd0, 0x83, 0x72, 0x4d, 0x82, 0x80, 0x39, 0x77, 0x17, 0x15, 0xb8,
  0x0d, 0x27, 0xc7, 0x72, 0xbc, 0x0e, 0xa0, 0x0b, 0xed, 0xc1, 0xc1, 0x57,
  0x6d, 0x4a, 0x20, 0x7d, 0xbf, 0x21, 0xcf, 0xb6, 0xa7, 0xee, 0xf3, 0xec,
  0xc8, 0x91, 0x3e, 0xbc, 0x69, 0xa8, 0xa1, 0x25, 0x38, 0x2f, 0x93, 0x17,



  0xcc, 0x10, 0x6e, 0xef, 0x50, 0x02, 0xda, 0xf5, 0x50, 0xa2, 0xf9, 0xed,
  0x50, 0xad, 0xc5, 0x99, 0xad, 0x1d, 0x9c, 0x4b, 0x4d, 0x0d, 0xd7, 0xa4,






  0xcc, 0x1c, 0x74, 0xaf, 0xb4, 0xbf, 0x00, 0xd4, 0x48, 0x08, 0x86, 0x4b,

  0x2e, 0x4e, 0xeb, 0x7a, 0xe3, 0xf2, 0x65, 0x98, 0x4f, 0x74, 0x3a, 0xc0,
  0x5b, 0xca, 0x6b, 0x67, 0x1f, 0xfc, 0x57, 0xca, 0xe0, 0x36, 0xc6, 0x48,

  0x43, 0x29, 0x7c, 0xfc, 0xa5, 0xc0, 0x5c, 0xe0, 0x46, 0x90, 0xb6, 0xc6,
  0x87, 0x0b, 0xf4, 0x2d, 0x9e, 0x10, 0x41, 0xc7, 0xfb, 0x5a, 0x1d, 0x77,
  0xe6, 0x48, 0x8e, 0xc9, 0xd2, 0x8c, 0x18, 0xf1, 0x8a, 0x9e, 0x82, 0x35,
  0xe6, 0x82, 0xea, 0xcf, 0xd9, 0x76, 0xe2, 0x11, 0x49, 0x35, 0x8d, 0x4e,
  0x71, 0x49, 0x2d, 0xcc, 0x61, 0xc4, 0xd3, 0x42, 0x33, 0x92, 0x64, 0x35,

  0x6d, 0x56, 0xab, 0x3f, 0xb2, 0x3d, 0x20, 0x5b, 0xb9, 0x4e, 0xb0, 0x2e,
  0x61, 0xd6, 0xdc, 0x44, 0xda, 0x38, 0x62, 0x36, 0x89, 0x7b, 0x68, 0xe0,
  0xfd, 0xfd, 0xf9, 0xe7, 0xfb, 0x03, 0x31, 0x47, 0x29, 0x40, 0xe9, 0x3f,
  0x03, 0x40, 0xe1, 0x88, 0x06, 0x48, 0xcf, 0x99, 0x9f, 0xda, 0x47, 0x7b,
  0xd0, 0xf3, 0x29, 0x55, 0xe9, 0x88, 0xf2, 0x14, 0xda, 0xce, 0x6a, 0xe7,
  0x09, 0x6c, 0x7a, 0x3c, 0x3f, 0x75, 0x2c, 0x53, 0x77, 0xe6, 0x29, 0x0d,
  0x72, 0x18, 0x27, 0x12, 0xe1, 0xde, 0x46, 0xaf, 0xc8, 0xa8, 0x0f, 0x89,
  0x5e, 0x8b, 0xf8, 0x9d, 0x38, 0xf9, 0x50, 0xc8, 0xcd, 0xf6, 0xf0, 0x44,
  0x07, 0x33, 0x26, 0x6d, 0x9c, 0xa3, 0xb9, 0x30, 0x5b, 0x68, 0x40, 0xa4,
  0x53, 0x36, 0x7b, 0xbf, 0xf1, 0x9e, 0x3c, 0x1b, 0x3d, 0x6a, 0xdd, 0x93,
  0x66, 0xb1, 0x1c, 0xde, 0x4c, 0xee, 0x09, 0x57, 0x5d, 0x9c, 0xbe, 0x45,
  0xba, 0x8e, 0xb2, 0x1b, 0x74, 0xd1, 0xd1, 0xc8, 0x01, 0xc9, 0x2a, 0x76,
  0xef, 0x12, 0xba, 0x3a, 0x26, 0x12, 0xb1, 0xe9, 0x3b, 0x91, 0x19, 0x5b,
  0xed, 0x2b, 0x8e, 0x1a, 0x01, 0x2b, 0x4c, 0x68, 0x44, 0x44, 0x20, 0xa8,
  0x5a, 0x7f, 0x91, 0x47, 0x8b, 0xb2, 0x34, 0x2b, 0x3a, 0xbb, 0xcd, 0xa6,
  0x6b, 0xa4, 0x16, 0x90, 0x62, 0x4f, 0xf8, 0x5f, 0x9b, 0x63, 0x1e, 0x5e,
  0x9c, 0x43, 0x22, 0x1b, 0xe6, 0x07, 0xdd, 0xcd, 0x70, 0xad, 0xd4, 0x64,
  0xf1, 0xbc, 0xfa, 0xc0, 0xe3, 0xc9, 0xe0, 0x04, 0xf8, 0x5d, 0xfb, 0x57,
  0x41, 0x78, 0x1f, 0xb5, 0x18, 0xa4, 0xcc, 0x18, 0x7a, 0xca, 0x2f, 0x0b,
  0x56, 0x17, 0xdf, 0xe6, 0xd3, 0xaa, 0xac, 0xcb, 0x39, 0x67, 0x19, 0x7a,
  0xa6, 0xed, 0xc9, 0xc9, 0x38, 0xb9, 0xc9, 0x26, 0x5a, 0xce, 0x3c, 0x0a,
  0xfd, 0xff, 0xcc, 0x45, 0x28, 0xaa, 0x55, 0xe5, 0x59, 0x43, 0xbb, 0xa6,
  0x71, 0x6c, 0xc2, 0xf7, 0x42, 0x53, 0x41, 0x41, 0xbf, 0x81, 0xed, 0x45,

  0x7d, 0x59, 0x17, 0x10, 0x4d, 0xab, 0xac, 0x8c, 0xe4, 0x32, 0xf0, 0x04,
  0x54, 0xac, 0x30, 0x9d, 0x40, 0xff, 0x9a, 0xa4, 0xd2, 0xf1, 0x8e, 0xbd,
  0x3a, 0x86, 0xed, 0x90, 0x76, 0x29, 0xde, 0xb0, 0x4f, 0xe4, 0xe6, 0x0c,
  0xea, 0x8c, 0x26, 0x19, 0xf5, 0x88, 0x25, 0x76, 0xe0, 0xb7, 0x2d, 0x43,
  0x87, 0xd6, 0x59, 0x59, 0x21, 0x7f, 0xcc, 0xeb, 0x46, 0x45, 0x6d, 0x5b,
  0xd7, 0x15, 0xb9, 0xf9, 0x01, 0x3d, 0x1b, 0xf2, 0xd3, 0x9b, 0xab, 0x92,
  0x7b, 0xf7, 0x61, 0x9b, 0x9d, 0xce, 0x86, 0xa2, 0x2c, 0xe9, 0x77, 0x02,
  0xae, 0xe0, 0xe4, 0x8d, 0x7f, 0x50, 0x51, 0x98, 0x4a, 0x39, 0x0f, 0x57,
  0x0e, 0x2c, 0xf9, 0x25, 0xaf, 0xf3, 0xcb, 0x9e, 0xd6, 0xc4, 0xec, 0xf2,
  0x03, 0x34, 0x87, 0x53, 0x8c, 0x30, 0x23, 0x11, 0x9a, 0x15, 0xdf, 0xd2,
  0xa0, 0xe1, 0x36, 0xfd, 0x2b, 0x74, 0x9e, 0xf7, 0x50, 0xdf, 0x6f, 0x1c,
  0x06, 0xb4, 0xbe, 0x0b, 0x6f, 0x2e, 0xf6, 0x0a, 0x38, 0x8d, 0xdd, 0x53,
  0xd9, 0x5d, 0xe4, 0x3c, 0x00, 0x0f, 0xb9, 0x4f, 0x5f, 0x8f, 0x07, 0x59,
  0x34, 0x0a, 0x19, 0xc9, 0x25, 0xf2, 0x02, 0xe9, 0xf2, 0xef, 0x19, 0x8e,
  0xa7, 0x1d, 0xa5, 0xf4, 0xaf, 0x6e, 0x49, 0x3f, 0x38, 0x1c, 0x4e, 0xb2,

  0x94, 0xba, 0x63, 0xbd, 0x68, 0x48, 0x61, 0xda, 0x54, 0x55, 0x14, 0x29,
  0x2b, 0xfa, 0x33, 0xbf, 0x7b, 0x01, 0x5d, 0x8b, 0x8e, 0xf6, 0xec, 0xe5,
  0x87, 0x8b, 0xaf, 0x93, 0xc3, 0xd1, 0xfe, 0x83, 0xaa, 0x8a, 0xc0, 0x10,
  0x5a, 0x63, 0xe8, 0xe1, 0xa1, 0xc9, 0x76, 0xf1, 0xb7, 0x75, 0xd1, 0x6e,
  0xbe, 0x13, 0x8b, 0xab, 0x88, 0xfe, 0xa4, 0xe2, 0x97, 0xd2, 0xbc, 0xba,
  0x99, 0xf1, 0x7e, 0x7b, 0xb6, 0xe1, 0x10, 0xe6, 0x77, 0x75, 0x5f, 0x08,
  0xba, 0x8e, 0x42, 0xab, 0xb4, 0x26, 0x2b, 0xc0, 0x4f, 0x1a, 0xe8, 0x46,
  0x23, 0x2c, 0xb2, 0x5c, 0xf8, 0x4e, 0xd9, 0xc6, 0xca, 0xd0, 0x63, 0xdf,
  0xbf, 0x79, 0xd5, 0x19, 0xee, 0xc9, 0xd3, 0xc7, 0xfb, 0xbf, 0x62, 0x82,
  0x65, 0x49, 0x16, 0x84, 0x98, 0x64, 0x51, 0xc4, 0xa3, 0xef, 0x2a, 0x2a,
  0x39, 0x56, 0x1f, 0x51, 0x29, 0x0f, 0xf9, 0x90, 0x08, 0x75, 0x33, 0xa3,
  0x4c, 0x3b, 0x8b, 0x98, 0x52, 0xa9, 0xb6, 0xff, 0x9f, 0xff, 0x0c, 0xcd,
  0xba, 0xbf, 0xfe, 0x88, 0x50, 0x0e, 0xda, 0x91, 0xda, 0x0a, 0x0d, 0x65,
  0x32, 0xb5, 0x13, 0xc7, 0x74, 0x9d, 0xb7, 0x7f, 0xb7, 0x9d, 0xd8, 0xa6,
  0x61, 0x62, 0x98, 0xc7, 0x7b, 0x2e, 0x68, 0xb8, 0x4f, 0x67, 0xa7, 0xc7,

  0x0a, 0x48, 0xf9, 0xd4, 0xd3, 0x08, 0x74, 0x17, 0xa4, 0x95, 0xd6, 0xac,
  0xaf, 0xe9, 0x9f, 0x76, 0xbf, 0x12, 0xe8, 0x35, 0x0d, 0x71, 0x50, 0x28,
  0x82, 0xf3, 0xe2, 0xb0, 0x02, 0xd2, 0x45, 0x51, 0x7a, 0x9e, 0x17, 0x3d,
  0x7e, 0x67, 0x49, 0xfe, 0xfa, 0x4f, 0x73, 0x02, 0x83, 0xe6, 0xa6, 0xfc,
  0x67, 0xdb, 0x07, 0x6d, 0x34, 0x0c, 0x9a, 0xef, 0xc7, 0xdf, 0x1d, 0x50,
  0x35, 0xd7, 0x56, 0x77, 0x88, 0x12, 0xcd, 0x24, 0xec, 0xa9, 0x5a, 0x05,
  0x69, 0x13, 0xb0, 0xb2, 0x7e, 0x90, 0x0a, 0xc5, 0x07, 0xa4, 0x35, 0xfe,
  0x73, 0x44, 0xff, 0xfd, 0xeb, 0xc1, 0xf0, 0xf1, 0x8f, 0xf6, 0xa3, 0xbf,
  0x3b, 0xf8, 0xf8, 0xbb, 0xc3, 0xad, 0x58, 0xb1, 0x9e, 0x83, 0x6d, 0xf0,
  0x92, 0x4b, 0x49, 0xa1, 0x2d, 0xee, 0xa4, 0xc2, 0x46, 0x82, 0xc3, 0xae,
  0x4d, 0x29, 0x9a, 0x9e, 0x47, 0xb0, 0xad, 0xc8, 0xe7, 0x38, 0xea, 0x3a,

  0xfa, 0xb5, 0x55, 0xa9, 0x32, 0x87, 0x9b, 0x92, 0xdf, 0x57, 0x70, 0x0b,
  0xba, 0x21, 0x52, 0xfb, 0x11, 0xf0, 0x42, 0x82, 0xd1, 0xf2, 0xc9, 0x83,
  0x90, 0x6e, 0x14, 0x1e, 0x25, 0xdc, 0x0d, 0x49, 0x69, 0x33, 0xf2, 0x2c,
  0x4d, 0x3a, 0x9b, 0x3e, 0x99, 0xd8, 0x9f, 0x14, 0x59, 0x50, 0x44, 0xa7,
  0xe5, 0xb6, 0x6c, 0xbd, 0x29, 0x3b, 0x28, 0x5d, 0xba, 0x01, 0xe3, 0x7f,
  0x65, 0x89, 0xac, 0xdc, 0x06, 0x4e, 0x71, 0xa5, 0x83, 0xac, 0xb1, 0xbf,
  0x51, 0x02, 0x8e, 0xef, 0x9f, 0x61, 0xa9, 0x62, 0x06, 0xcc, 0x6b, 0x17,
  0x3a, 0xc3, 0xcf, 0x24, 0x6c, 0x46, 0xf0, 0x0c, 0xe8, 0x93, 0x19, 0x2b,
  0xae, 0x4e, 0x27, 0xd4, 0x45, 0xb4, 0xd5, 0x94, 0xcd, 0x76, 0xd8, 0x9a,
  0x38, 0xa4, 0xb0, 0xb4, 0xee, 0xd9, 0x10, 0x7f, 0x2b, 0xbc, 0x4d, 0x90,
  0x8d, 0xc2, 0xe6, 0x6c, 0x6e, 0xa0, 0x38, 0xa4, 0xbc, 0xdf, 0x26, 0x1b,
  0x7a, 0xf5, 0xcc, 0xa8, 0x9f, 0xc6, 0x4f, 0xb5, 0xf8, 0x71, 0xca, 0x0d,
  0xda, 0x10, 0x92, 0x1d, 0x06, 0x71, 0x64, 0x92, 0x50, 0xb3, 0x3b, 0xc3,
  0x0d, 0x19, 0x95, 0x77, 0x64, 0xeb, 0x56, 0xd4, 0x45, 0x20, 0xdc, 0xc6,
  0x90, 0xda, 0xf6, 0x70, 0x3b, 0xd9, 0xb1, 0x86, 0xdd, 0x2c, 0xad, 0xaf,
  0x76, 0x63, 0x1e, 0x64, 0xe7, 0xb4, 0x75, 0x8c, 0x4a, 0xba, 0xaa, 0x40,

  0x64, 0x32, 0x87, 0xea, 0x57, 0x60, 0xcf, 0x18, 0x0e, 0x85, 0xd2, 0x3b,
  0x87, 0x36, 0x07, 0xa0, 0xf5, 0x93, 0x21, 0x99, 0x8a, 0x0c, 0xab, 0xfc,
  0x1f, 0x88, 0x88, 0x85, 0x01, 0x49, 0x3c, 0xcb, 0x19, 0x7a, 0x43, 0x2e,
  0x5e, 0x73, 0x42, 0x54, 0xfb, 0xb0, 0x53, 0x2e, 0x7b, 0x34, 0x7d, 0x2b,
  0xad, 0x3f, 0x71, 0x94, 0x7b, 0x56, 0xda, 0xa6, 0xed, 0xce, 0x8f, 0x32,
  0x10, 0x8e, 0x3a, 0xfc, 0xef, 0x03, 0x6f, 0xb0, 0x4d, 0xc8, 0xc9, 0x64,
  0x5f, 0x56, 0xe5, 0xa2, 0x6e, 0xc1, 0xa2, 0x49, 0x15, 0x3b, 0xd1, 0xb4,
  0xf5, 0xd0, 0xf0, 0x27, 0xeb, 0x9c, 0x98, 0x71, 0x5a, 0x44, 0xd2, 0xc3,
  0xeb, 0x48, 0xf4, 0x8e, 0x64, 0x9c, 0x76, 0x2b, 0x37, 0x64, 0x1c, 0x91,
  0x50, 0x6e, 0x6f, 0x5b, 0x53, 0xde, 0xd4, 0x5a, 0xa4, 0xf5, 0x60, 0x34,
  0x0f, 0x84, 0x49, 0x58, 0x4a, 0xc8, 0x00, 0x46, 0xe0, 0xd6, 0xe1, 0x35,
  0xbb, 0x27, 0xc2, 0xa1, 0x34, 0x87, 0xb4, 0xca, 0x66, 0x71, 0x88, 0x82,
  0x2a, 0xbb, 0x24, 0x98, 0x1e, 0xd2, 0x3e, 0x08, 0xa9, 0xc0, 0xdc, 0xa5,
  0xe2, 0x9e, 0xb6, 0xdb, 0x1d, 0x27, 0x08, 0xc5, 0xd2, 0x93, 0x17, 0xab,
  0xab, 0xca, 0x68, 0xf2, 0x61, 0xcd, 0xe3, 0xf8, 0xeb, 0x84, 0x31, 0x6d,
  0xcd, 0x53, 0xfc, 0x8c, 0xbd, 0xe9, 0x1e, 0xec, 0xe7, 0xaf, 0x88, 0x55,
  0x49, 0xc9, 0x5c, 0xc3, 0xb4, 0x1e, 0x06, 0xd4, 0x71, 0xe1, 0x67, 0xb6,

  0x93, 0x05, 0x41, 0x86, 0x25, 0x25, 0x11, 0x53, 0x6c, 0xbb, 0x20, 0x30,
  0x24, 0x43, 0x1c, 0x7b, 0xa3, 0xd1, 0x1e, 0x09, 0x9f, 0x3d, 0xf3, 0x87,
  0x95, 0xac, 0x9c, 0xf3, 0xde, 0xed, 0x20, 0x49, 0xa1, 0x79, 0xfa, 0x18,
  0x40, 0x6b, 0xa4, 0xdf, 0xb2, 0xd7, 0x93, 0xef, 0xef, 0x6b, 0x24, 0x82,
  0x57, 0xc6, 0x36, 0xa8, 0xb8, 0xa2, 0x7e, 0xe9, 0x69, 0x3c, 0x61, 0x42,
  0xa8, 0x84, 0xb7, 0x6a, 0xc1, 0x6e, 0xe9, 0xf4, 0x22, 0x25, 0x13, 0x1d,
  0x9e, 0x34, 0x5a, 0x44, 0xde, 0x28, 0x62, 0x1e, 0xb0, 0x0c, 0xd2, 0x8d,
  0xb6, 0xf9, 0xa3, 0xc3, 0xce, 0xf1, 0xe5, 0xe6, 0xc0, 0x67, 0xc6, 0xce,
  0x01, 0xd0, 0x2e, 0x65, 0xc2, 0x86, 0xb5, 0x74, 0xec, 0x18, 0xed, 0xb4,
  0x87, 0x83, 0x97, 0x11, 0xdb, 0xe1, 0x34, 0x47, 0xb5, 0x97, 0x18, 0x69,
  0x98, 0xb3, 0x69, 0x76, 0x02, 0xc5, 0x87, 0x3f, 0xb2, 0xcb, 0x6a, 0x9e,
  0xe4, 0xca, 0x83, 0x20, 0x32, 0xdb, 0xf8, 0x46, 0xa0, 0x97, 0x52, 0xce,
  0xc5, 0x83, 0x29, 0x86, 0xd1, 0x62, 0x1e, 0x2c, 0xeb, 0x3f, 0xb2, 0xcc,

  0xd1, 0x75, 0xa9, 0xa4, 0x35, 0x13, 0x56, 0xb1, 0xd9, 0xf7, 0xd7, 0xc7,
  0xef, 0x45, 0xdb, 0x04, 0x3c, 0x83, 0x6b, 0x30, 0x1e, 0x80, 0x63, 0xc3,
  0x28, 0x7d, 0xf2, 0x08, 0xa6, 0x23, 0xed, 0x5b, 0x7d, 0x95, 0x1e, 0x3e,
  0x7e, 0x22, 0xd3, 0x56, 0xe4, 0x3a, 0xd8, 0xbc, 0xdb, 0xfc, 0xab, 0xbd,
  0x3d, 0x4e, 0x5a, 0x21, 0x47, 0x43, 0xc0, 0xe3, 0xe1, 0xf3, 0xa3, 0x67,
  0xff, 0xb8, 0x1d, 0x4d, 0x57, 0x55, 0x23, 0x84, 0x5d, 0x31, 0x14, 0x02,
  0x42, 0x4a, 0xad, 0xdf, 0x20, 0x65, 0xa0, 0x1b, 0x2d, 0x6d, 0x46, 0x18,
  0x81, 0x24, 0xd0, 0x00, 0xfd, 0xde, 0x21, 0x89, 0x80, 0xbd, 0x68, 0xbf,
  0xc4, 0x44, 0xab, 0xc2, 0x09, 0x45, 0xd7, 0xdf, 0x9f, 0x9a, 0x9b, 0xab,
  0x4f, 0x43, 0x40, 0x21, 0x49, 0x3d, 0xa5, 0xd3, 0xf0, 0x06, 0x96, 0x1c,
  0xec, 0x9c, 0xc3, 0x07, 0x20, 0x3c, 0x8d, 0x7d, 0xb2, 0x77, 0x0d, 0x33,
  0x35, 0x5f, 0x08, 0xb2, 0x85, 0x94, 0x2e, 0x2c, 0xe8, 0x2d, 0xf8, 0x91,
  0x97, 0xa4, 0xeb, 0x6e, 0x8b, 0x11, 0xed, 0x55, 0xd3, 0xc1, 0x83, 0x0a,
  0xbc, 0x00, 0xc0, 0x58, 0x57, 0x28, 0x23, 0x24, 0x69, 0x4e, 0xb3, 0x9c,
  0x41, 0xd0, 0xcc, 0xd9, 0x52, 0xf4, 0x35, 0xb8, 0x07, 0x86, 0x14, 0xf6,
  0x88, 0x0e, 0xc4, 0x70, 0x0c, 0x9a, 0x99, 0x50, 0xac, 0xe7, 0xd9, 0x68,
  0xff, 0xb9, 0xc2, 0x23, 0x0f, 0x92, 0xaf, 0x8a, 0x35, 0x1d, 0x09, 0xad,
  0xfa, 0xab, 0xf1, 0x37, 0x41, 0xa1, 0x23, 0xbd, 0xf1, 0xe8, 0x88, 0xde,
  0x78, 0x37, 0xe6, 0xa7, 0x6e, 0xca, 0xc5, 0xdc, 0xbc, 0x19, 0x7b, 0xee,
  0x29, 0x3d, 0x67, 0x28, 0x6e, 0xd6, 0x2c, 0x6a, 0x25, 0xaa, 0x0d, 0x33,
  0x79, 0xf4, 0x28, 0x32, 0x93, 0xc1, 0x4f, 0xfe, 0xd0, 0x19, 0xbc, 0xae,
  0x44, 0x50, 0xd4, 0x03, 0x0c, 0x94, 0x83, 0x12, 0x10, 0x0b, 0xf6, 0xfd,
  0x6b, 0x32, 0x5f, 0x06, 0xed, 0x78, 0x48, 0x87, 0xc0, 0x0a, 0x98, 0x85,
  0x0d, 0xb0, 0x20, 0x9e, 0x1e, 0x1e, 0x1d, 0xec, 0x3d, 0x19, 0x3d, 0x1a,
  0x1d, 0xda, 0x94, 0x4c, 0x43, 0x07, 0xd7, 0xd4, 0xc1, 0x86, 0x32, 0x60,



  0x22, 0xa1, 0x07, 0x24, 0x23, 0xe5, 0x85, 0x19, 0xc7, 0x83, 0x28, 0x91,
  0x4e, 0x03, 0x2e, 0x19, 0x8b, 0x00, 0x49, 0x0e, 0xfc, 0xda, 0xbe, 0x51,
  0xa4, 0x63, 0x2e, 0xe1, 0x9c, 0xd0, 0x24, 0xc4, 0xcd, 0xb4, 0xae, 0xb0,
  0x03, 0x93, 0xfc, 0xef, 0xeb, 0xbc, 0x31, 0x2a, 0x00, 0x71, 0x14, 0x72,
  0x9d, 0x69, 0xbf, 0x03, 0x2a, 0xa3, 0x2e, 0x35, 0x41, 0x81, 0xae, 0x44,

  0x0c, 0xac, 0x81, 0x67, 0xcf, 0xc9, 0xef, 0x13, 0x17, 0x30, 0xe2, 0x12,
  0xc2, 0x1c, 0xec, 0x8b, 0x9b, 0x0d, 0x19, 0x4b, 0xb2, 0x98, 0x9a, 0x3b,
  0xfa, 0xb5, 0xb1, 0xf3, 0xae, 0xc9, 0x67, 0x1f, 0x74, 0x16, 0x66, 0x16,
  0xc0, 0xc8, 0x5b, 0x1c, 0x72, 0x91, 0xb4, 0x20, 0xd7, 0x94, 0x40, 0x7e,
  0xc0, 0x85, 0x46, 0x5a, 0xe4, 0xcd, 0x35, 0x8d, 0x01, 0x77, 0xd2, 0x7d,
  0x68, 0xbb, 0xa6, 0x19, 0x02, 0x95, 0x02, 0x8c, 0x54, 0xed, 0xc7, 0xe1,
  0x05, 0x06, 0x62, 0x84, 0xea, 0x65, 0xab, 0x36, 0x63, 0xce, 0xaf, 0x4d,
  0xce, 0xd1, 0x28, 0x72, 0x0b, 0xff, 0xeb, 0x74, 0x90, 0xb4, 0xba, 0x5c,
  0x8b, 0xcc, 0x8a, 0xb5, 0x38, 0xed, 0x36, 0x02, 0x96, 0x51, 0x7f, 0x36,
  0x95, 0x1d, 0xfd, 0xf2, 0x54, 0x76, 0xf8, 0x50, 0x2a, 0xf3, 0xc8, 0x8c,
  0x03, 0xef, 0x1b, 0x08, 0x8d, 0x3a, 0x07, 0xd3, 0x3a, 0x7a, 0xa8, 0xcc,
  0x23, 0x32, 0x97, 0x2a, 0xd0, 0x22, 0xb1, 0x36, 0x8d, 0x39, 0x22, 0xeb,
  0xa3, 0x32, 0x06, 0x96, 0x51, 0x3a, 0xbb, 0x87, 0xd0, 0xd8, 0xc7, 0xb9,
  0x99, 0xca, 0x2e, 0xda, 0x7c, 0x65, 0x03, 0x8d, 0xf9, 0x04, 0xf1, 0x60,
  0x2a, 0x73, 0xfe, 0x46, 0xe6, 0x3b, 0x49, 0x0f, 0xa1, 0xf9, 0x74, 0xd6,
  0xdb, 0x48, 0xf7, 0xe0, 0x59, 0x8c, 0xca, 0x8e, 0x1e, 0x42, 0x65, 0xe6,
  0x3c, 0x17, 0x24, 0x2b, 0x5b, 0x54, 0xf6, 0xe8, 0x27, 0x51, 0x19, 0x93,

  0x19, 0xe8, 0xac, 0x97, 0xd0, 0x68, 0x49, 0xed, 0x42, 0xe5, 0x97, 0xff,
  0x2a, 0xb7, 0x48, 0x5b, 0x83, 0x06, 0xe5, 0xbb, 0x3f, 0xed, 0x0c, 0x3b,
  0x5b, 0xfd, 0x80, 0x13, 0x3b, 0x6c, 0x9f, 0xd8, 0xc1, 0x4f, 0x3b, 0xb1,
  0xc3, 0xae, 0x65, 0x52, 0x65, 0xec, 0x33, 0xff, 0xab, 0xc6, 0x2e, 0x9e,
  0xef, 0xed, 0xfd, 0x08, 0x1f, 0xd0, 0x73, 0x92, 0x7d, 0x3f, 0x06, 0x4d,
  0xe0, 0xb3, 0x4e, 0x89, 0xef, 0xf8, 0xec, 0xd5, 0x37, 0x63, 0x71, 0xbc,
  0x8b, 0xc2, 0xa1, 0x0a, 0x09, 0x94, 0x76, 0x06, 0xef, 0xe5, 0xfe, 0x81,
  0x81, 0x9a, 0x2b, 0x6d, 0x88, 0x87, 0xb7, 0x03, 0xeb, 0x02, 0xa7, 0xc2,
  0xd1, 0x22, 0xd1, 0xab, 0x02, 0x90, 0x41, 0x86, 0x3a, 0x83, 0xd3, 0x43,
  0x86, 0xee, 0xc1, 0x92, 0xf3, 0xe7, 0x62, 0xdb, 0xa0, 0xda, 0x57, 0x76,
  0x9a, 0xab, 0x0a, 0x05, 0x45, 0x78, 0x4c, 0x74, 0x6b, 0xaf, 0xbb, 0x61,
  0xcf, 0xec, 0x64, 0x56, 0x5f, 0x03, 0x88, 0x79, 0x55, 0x69, 0x44, 0x31,
  0x66, 0xe4, 0xda, 0xdf, 0xaa, 0x27, 0x30, 0x06, 0x38, 0x22, 0xc0, 0x82,
  0xde, 0x7e, 0xd3, 0x7b, 0x41, 0xfa, 0x66, 0x7e, 0xeb, 0xc3, 0x1b, 0x11,
  0x15, 0xa0, 0x7d, 0x77, 0xa3, 0x1d, 0x72, 0x6e, 0xb9, 0x9f, 0x09, 0xc6,
  0xe0, 0xdc, 0xb9, 0x8c, 0x9b, 0xd0, 0xd4, 0x8f, 0xcc, 0x90, 0x5d, 0xbf,
  0x12, 0xff, 0x22, 0xa5, 0xdf, 0xc8, 0x3f, 0x1e, 0xd3, 0x87, 0x11, 0x31,
  0xe6, 0x7f, 0x5e, 0xe1, 0xdf, 0x9c, 0x1d, 0xc1, 0xe8, 0x65, 0xde, 0x39,
  0x4f, 0xa3, 0x1b, 0xad, 0xac, 0x94, 0xdd, 0x27, 0x8c, 0xaa, 0xf1, 0xae,
  0x74, 0xd5, 0x9c, 0xfe, 0x9a, 0x29, 0xd1, 0x03, 0x85, 0xc9, 0xb1, 0x12,
  0x20, 0x8f, 0x11, 0x63, 0xe4, 0x47, 0xa3, 0x38, 0xbc, 0x7c, 0x96, 0xf8,
  0x10, 0xa7, 0x8a, 0x59, 0xe1, 0x37, 0xae, 0x73, 0x21, 0x5f, 0x39, 0x82,
  0x01, 0xa3, 0xdd, 0x86, 0xc9, 0xe5, 0xd4, 0x94, 0x45, 0x66, 0x7e, 0xb0,
  0xff, 0x79, 0xe8, 0x92, 0xf8, 0xa0, 0xd5, 0x94, 0x0e, 0xe5, 0x13, 0x69,

  0x1d, 0xa8, 0x6b, 0x98, 0xb8, 0x1a, 0xa2, 0xd8, 0x47, 0x23, 0x05, 0x97,
  0xb0, 0x7d, 0x67, 0x19, 0x5b, 0x4b, 0x13, 0x36, 0x7b, 0xc3, 0x84, 0x76,
  0x14, 0x90, 0xd7, 0x90, 0x6b, 0x02, 0x4f, 0x2d, 0xc9, 0x09, 0x01, 0x7f,
  0x27, 0x27, 0x86, 0x86, 0xcc, 0xbe, 0x74, 0x18, 0x82, 0xbf, 0x7f, 0xb4,
  0x4f, 0x67, 0xaa, 0x83, 0x50, 0x63, 0xa6, 0x85, 0x86, 0x3a, 0x7e, 0x7f,
  0x94, 0x8e, 0x7e, 0x43, 0x0c, 0xb0, 0xc7, 0x6d, 0x2b, 0xfa, 0x77, 0x03,
  0x3f, 0xbf, 0x69, 0x92, 0x56, 0x11, 0x9f, 0x8d, 0xc8, 0x6e, 0xc5, 0xb7,
  0x51, 0x74, 0x18, 0x9b, 0xf8, 0x94, 0xb2, 0x01, 0x8b, 0x3a, 0x0c, 0xfb,
  0x43, 0x33, 0x54, 0x12, 0x76, 0x3a, 0xb1, 0xf1, 0x06, 0xbf, 0x69, 0xf9,
  0x80, 0x51, 0xd9, 0x5a, 0xc9, 0x60, 0x03, 0x4e, 0xa7, 0xea, 0x29, 0xf4,
  0xb4, 0x5f, 0xc1, 0x67, 0x66, 0x55, 0x7a, 0xe3, 0xd9, 0xd0, 0xdc, 0x17,

  0x61, 0x8e, 0xc8, 0x83, 0xcd, 0x21, 0x31, 0xbf, 0xa7, 0x88, 0x72, 0x4c,
  0xfb, 0xa8, 0xa7, 0x55, 0x26, 0x11, 0x1e, 0x82, 0xd8, 0x44, 0xf4, 0x98,
  0x90, 0x29, 0x8d, 0xe6, 0x71, 0x99, 0x69, 0xd5, 0xae, 0x5d, 0xb5, 0xc2,
  0xb2, 0x00, 0x8b, 0x65, 0x14, 0x4b, 0x88, 0x77, 0xee, 0x2c, 0xd7, 0x47,
  0xde, 0x28, 0xb1, 0x0c, 0xde, 0x42, 0xaf, 0x6b, 0x0d, 0xb5, 0x05, 0xf6,
  0x5c, 0x51, 0x07, 0xc5, 0xfa, 0x2a, 0x5f, 0x75, 0x45, 0xf4, 0xf0, 0x8b,

  0xf2, 0x8b, 0xe1, 0xae, 0x90, 0x78, 0x79, 0x9d, 0xd5, 0xdc, 0x0d, 0x99,
  0xa6, 0x4a, 0xd1, 0xe6, 0x2b, 0xb8, 0x58, 0x44, 0x78, 0xa1, 0x54, 0x98,
  0x12, 0x77, 0xa1, 0x8d, 0x21, 0xc0, 0x11, 0xb4, 0xf6, 0xe1, 0x89, 0x55,
  0x14, 0x68, 0x16, 0x7e, 0x47, 0xee, 0x18, 0xb3, 0x57, 0x73, 0xce, 0x2d,
  0x44, 0x39, 0x31, 0x45, 0xe1, 0x05, 0xc3, 0x9b, 0x7d, 0xfa, 0xe5, 0xaa,
  0x2d, 0x9b, 0xa8, 0x32, 0x5d, 0x79, 0xc3, 0x0b, 0x65, 0x2b, 0x7f, 0xba,
  0xb7, 0xee, 0xc4, 0x32, 0xa0, 0xb9, 0x38, 0x31, 0xe8, 0xf2, 0xa1, 0x0e,
  0x89, 0xd1, 0xbf, 0xa7, 0x57, 0xd9, 0x52, 0x5a, 0x20, 0xf5, 0x54, 0xf1,
  0xf7, 0x96, 0xbc, 0xb7, 0xe7, 0xc4, 0x89, 0x99, 0xf3, 0x66, 0x35, 0x5a,
  0x96, 0xff, 0x30, 0x7b, 0x9c, 0x52, 0x4f, 0xc5, 0xe0, 0x4a, 0x50, 0xb9,

  0x6d, 0xc1, 0x87, 0xc2, 0x00, 0x5a, 0x85, 0x35, 0x2c, 0x1d, 0x0b, 0x57,
  0x94, 0x76, 0xc0, 0x2d, 0x24, 0xaf, 0xcc, 0x8c, 0x8f, 0x3f, 0x7e, 0x78,
  0x37, 0xfe, 0x70, 0xde, 0x25, 0xec, 0xf3, 0xb3, 0xf7, 0x17, 0xc7, 0xaf,
  0x3f, 0x9e, 0xbf, 0x3f, 0xbb, 0x38, 0x7b, 0x75, 0x76, 0x9a, 0xec, 0x1c,
  0xec, 0x6e, 0xac, 0x2e, 0xb4, 0x2e, 0x08, 0x0f, 0xa7, 0x52, 0xe7, 0xcf,
  0x3c, 0xcb, 0x4e, 0x61, 0x87, 0xd6, 0x13, 0x8e, 0xf6, 0x9d, 0xd0, 0x56,
  0x0b, 0xf7, 0x1b, 0x7e, 0x08, 0x08, 0x37, 0x70, 0xf5, 0x34, 0xb9, 0x5c,
  0xf3, 0x65, 0x94, 0x5c, 0x05, 0x2d, 0xbd, 0xaa, 0x9b, 0x40, 0x14, 0x65,
  0x1a, 0x2f, 0xf5, 0x0a, 0xd3, 0x36, 0xba, 0xe3, 0x1e, 0x77, 0x75, 0x16,
  0x3a, 0x03, 0x28, 0x60, 0x8e, 0x2a, 0xea, 0x38, 0x59, 0x58, 0xba, 0x60,
  0x38, 0x1b, 0x60, 0xa0, 0xdb, 0x57, 0xd0, 0x20, 0x42, 0x42, 0x58, 0x65,
  0x61, 0x55, 0xba, 0x51, 0x72, 0x1e, 0xf6, 0x09, 0x93, 0x37, 0x66, 0x59,
  0x21, 0xcd, 0x6a, 0x65, 0x1e, 0x08, 0x60, 0xa2, 0x0b, 0x0e, 0xc7, 0xd3,
  0xcd, 0x03, 0xf4, 0x5b, 0x6f, 0xaf, 0x50, 0xee, 0x9c, 0x05, 0x51, 0x61,
  0x7e, 0x9b, 0x91, 0x5e, 0x6e, 0xbc, 0x39, 0xd1, 0x78, 0xa4, 0x94, 0x01,
  0x87, 0x32, 0xc2, 0x61, 0x8f, 0x35, 0x38, 0xc6, 0x28, 0x35, 0xb8, 0x93,
  0xd0, 0x5f, 0x14, 0xdf, 0x68, 0xec, 0xaf, 0xe5, 0x1e, 0x42, 0xe6, 0x4d,
  0xa4, 0x68, 0xc5, 0x80, 0xce, 0x7e, 0xc0, 0x04, 0x2d, 0x51, 0xc1, 0x0d,
  0xc5, 0x2d, 0x0e, 0x2c, 0xc8, 0xf7, 0x48, 0x61, 0x42, 0x5c, 0xbc, 0x88,

  0x89, 0x0c, 0x2c, 0xee, 0xd2, 0x9b, 0xce, 0xb4, 0xba, 0xec, 0xe7, 0xe9,
  0xe8, 0xc9, 0xe3, 0xd1, 0x21, 0x81, 0x86, 0x9c, 0x2d, 0x28, 0x8e, 0x26,
  0x9a, 0x05, 0xfc, 0xcb, 0xf8, 0x80, 0x20, 0x24, 0x21, 0x05, 0xcf, 0xed,
  0x95, 0x8c, 0x18, 0xb3, 0xa5, 0x12, 0x2d, 0x66, 0x56, 0x51, 0xa6, 0xb8,

  0x12, 0xd2, 0xd2, 0x58, 0x60, 0xb5, 0x09, 0x95, 0xc6, 0x7c, 0xe7, 0xb9,
  0xa4, 0xa1, 0x71, 0x5e, 0x56, 0x97, 0xd7, 0x12, 0x44, 0x05, 0x20, 0x3f,
  0x5f, 0x9d, 0x73, 0x8a, 0xaa, 0x85, 0xa8, 0x00, 0x2b, 0xd7, 0x96, 0xdd,
  0xfb, 0xa3, 0x7d, 0x4a, 0x67, 0xf8, 0xb3, 0x64, 0xc8, 0x99, 0xbf, 0x8d,
  0x63, 0xd0, 0x0b, 0xac, 0xce, 0xeb, 0x18, 0xed, 0x70, 0x16, 0x2d, 0xcf,
  0x4c, 0xef, 0x0f, 0xf4, 0xa7, 0xa6, 0xf0, 0x77, 0x97, 0xdc, 0x03, 0xc3,

  0x34, 0xf0, 0x50, 0x24, 0xcc, 0x7d, 0xad, 0xb3, 0xf8, 0x8a, 0x47, 0x9b,
  0x91, 0xe8, 0x0e, 0x83, 0x8b, 0x76, 0xef, 0x15, 0x7b, 0xe8, 0x0d, 0xb3,
  0xa1, 0x01, 0x95, 0x0e, 0x5d, 0x99, 0x76, 0x6e, 0xdf, 0x62, 0xe0, 0x19,
  0x2a, 0x5f, 0x83, 0x67, 0x78, 0x91, 0xcd, 0xa1, 0x1b, 0xa2, 0xa6, 0x74,
  0x80, 0x5f, 0x22, 0xa4, 0x69, 0xb3, 0xd6, 0xf8, 0x24, 0x62, 0xe0, 0x35,
  0xe9, 0xd4, 0xd7, 0xb5, 0x2d, 0x88, 0xe1, 0xb6, 0xd9, 0x54, 0xea, 0x7e,
  0x25, 0x55, 0xcd, 0x8b, 0x3b, 0x80, 0xf6, 0xe7, 0xb7, 0x9a, 0x38, 0xf0,
  0x8f, 0xac, 0x2a, 0xc3, 0xf0, 0x3a, 0x94, 0x07, 0x05, 0x93, 0x23, 0x53,
  0x52, 0xd1, 0x6e, 0xdc, 0x0f, 0xe9, 0xab, 0xc1, 0x9d, 0xfb, 0x03, 0x5a,
  0x2f, 0x33, 0x38, 0x34, 0xb7, 0x49, 0x13, 0xb4, 0x13, 0x00, 0x37, 0xe6,
  0x1a, 0x14, 0xf5, 0x78, 0xc0, 0x82, 0x6a, 0x60, 0xef, 0xb8, 0x7c, 0x36,
  0x30, 0x31, 0xa1, 0xfe, 0xcd, 0xc8, 0x9c, 0x71, 0xd9, 0xbf, 0x36, 0xbc,
  0x46, 0x6d, 0xce, 0x1c, 0xe0, 0x9d, 0xe8, 0x73, 0x21, 0x4f, 0x1f, 0x26,
  0xc9, 0xeb, 0xac, 0xb8, 0x6b, 0x4f, 0x68, 0x00, 0xcc, 0x1a, 0xb8, 0x87,
  0xf3, 0xc6, 0xc1, 0x2a, 0xb8, 0x64, 0x5c, 0x37, 0xc5, 0x70, 0x4a, 0xed,
  0x39, 0xc7, 0x38, 0xd7, 0x17, 0x76, 0x1b, 0x98, 0x6b, 0xb5, 0x37, 0x63,
  0x07, 0xe8, 0x28, 0x1a, 0xd3, 0xc5, 0x27, 0x1f, 0xb2, 0x0d, 0xc0, 0x7c,
  0x84, 0x55, 0x57, 0xaf, 0x27, 0x7f, 0x63, 0x90, 0xfd, 0x84, 0x3c, 0x0b,
  0x95, 0xec, 0x82, 0xe4, 0x39, 0x9a, 0x53, 0x35, 0x0f, 0x70, 0xe0, 0x8a,
  0x98, 0x43, 0x11, 0x1b, 0x0e, 0xc1, 0x66, 0x85, 0xb7, 0x6f, 0x53, 0x18,
  0x66, 0x14, 0xad, 0x4b, 0xcc, 0x7a, 0x54, 0x06, 0xbd, 0x3f, 0xc3, 0x39,
  0xf1, 0x54, 0xce, 0x9f, 0xeb, 0x08, 0x5f, 0xde, 0x4b, 0xce, 0xd9, 0xb4,
  0x19, 0xc4, 0xf4, 0x78, 0xef, 0x58, 0xca, 0xa9, 0xeb, 0xc1, 0x1f, 0xe8,
  0x8f, 0x70, 0x0d, 0x2d, 0x92, 0xa5, 0x5d, 0x56, 0x36, 0x42, 0x8f, 0x83,
  0x31, 0xe1, 0xf5, 0xbe, 0x0f, 0x7c, 0xe1, 0xc4, 0xc0, 0xe6, 0xb1, 0xc1,
  0xc5, 0x1e, 0xf2, 0x81, 0x0f, 0x85, 0x82, 0x09, 0x2a, 0x75, 0xaf, 0x6c,
  0x77, 0x03, 0xa9, 0xd0, 0x68, 0xdb, 0x41, 0x84, 0x41, 0xb3, 0x92, 0xce,
  0x27, 0xe9, 0x9c, 0x92, 0xab, 0xab, 0xcc, 0x81, 0x31, 0xd3, 0x51, 0x32,
  0xd4, 0x94, 0xa0, 0xbb, 0x6b, 0xae, 0xef, 0xaa, 0x6c, 0x18, 0x67, 0x9e,
  0xb2, 0xb1, 0x49, 0xd3, 0xa9, 0xc8, 0x41, 0xe8, 0x6d, 0xb2, 0xaa, 0xc8,
  0x34, 0x9a, 0x3d, 0x7c, 0xf8, 0xd1, 0xd6, 0xab, 0xb2, 0x70, 0x45, 0x38,
  0x12, 0x7c, 0xf5, 0xd8, 0x98, 0x7c, 0x91, 0x73, 0xea, 0xe0, 0x74, 0xb2,
  0x90, 0xf4, 0xd7, 0x65, 0x4e, 0xc8, 0x52, 0x3a, 0x1c, 0xb4, 0x37, 0x47,



  0x25, 0x17, 0xf1, 0x4e, 0x29, 0x2e, 0x95, 0x49, 0xec, 0x2b, 0x72, 0x63,
  0x22, 0xd3, 0x0c, 0xee, 0x0e, 0xaf, 0xf2, 0x8e, 0x6f, 0xb7, 0x0e, 0x87,
  0x7c, 0x17, 0x44, 0xab, 0x0b, 0x8a, 0x33, 0x15, 0x1c, 0xba, 0x12, 0xe3,
  0x53, 0x19, 0x2e, 0x4d, 0x8f, 0xcc, 0x34, 0x4a, 0xb9, 0x4a, 0x49, 0x32,
  0x69, 0x65, 0x61, 0x07, 0x4c, 0xbe, 0xdd, 0x5e, 0xde, 0xea, 0x02, 0x36,
  0x2d, 0xd7, 0xa9, 0xb9, 0xa3, 0x7b, 0x64, 0xc4, 0xed, 0x9d, 0x26, 0x02,
  0x6e, 0x56, 0xc1, 0x56, 0x28, 0xab, 0x37, 0xfb, 0x9c, 0x37, 0x38, 0xb1,
  0x4e, 0x26, 0xb2, 0x26, 0xe8, 0x4a, 0xff, 0x99, 0xe5, 0x3a, 0x6c, 0x5e,
  0x29, 0xc1, 0x3a, 0x9b, 0x77, 0xc5, 0xc0, 0x6a, 0xd0, 0x7e, 0xc4, 0x4b,
  0xc3, 0xdd, 0x35, 0x60, 0xa3, 0x4b, 0xc7, 0x11, 0xb8, 0x9f, 0x10, 0xbf,
  0x8b, 0xfb, 0x11, 0xf7, 0x2c, 0xaa, 0x92, 0x21, 0x98, 0x62, 0x36, 0x34,
  0x4c, 0x60, 0xb5, 0xc1, 0x3f, 0x7f, 0x3b, 0xd0, 0x45, 0xb7, 0x32, 0x98,
  0x7d, 0x18, 0x17, 0xfe, 0x09, 0x27, 0x4a, 0xca, 0xde, 0x85, 0x15, 0x00,
  0x46, 0xd3, 0x38, 0x8a, 0xed, 0x64, 0x2c, 0x13, 0x33, 0xb4, 0x70, 0x7a,
  0x7b, 0x6e, 0x68, 0x71, 0x25, 0x36, 0x50, 0x37, 0xac, 0x2f, 0x6d, 0x8d,
  0xb7, 0x4f, 0x76, 0xee, 0x03, 0xd7, 0x36, 0x62, 0x4c, 0x94, 0xac, 0x17,
  0x92, 0xfb, 0xee, 0x7d, 0x8b, 0x4d, 0xb9, 0x60, 0x1f, 0x81, 0x73, 0xc6,

  0xfd, 0x1b, 0xf8, 0x39, 0x11, 0x4a, 0x96, 0xd5, 0x05, 0x93, 0x94, 0xb3,
  0x8e, 0xf9, 0x82, 0xc0, 0x27, 0xf1, 0x21, 0x9a, 0x58, 0xbe, 0x11, 0x41,
  0xa4, 0xe7, 0x30, 0x62, 0xe0, 0x39, 0xb3, 0x4e, 0x5a, 0xb1, 0xfe, 0x7c,
  0x9a, 0x52, 0xe4, 0x36, 0x9e, 0xcc, 0x38, 0x96, 0xfb, 0x36, 0xd4, 0xa7,
  0x88, 0x4f, 0x6b, 0x26, 0xa9, 0xe7, 0x1c, 0xe4, 0x26, 0x60, 0xb7, 0xcd,

  0x43, 0x12, 0x7c, 0xa7, 0x29, 0xc2, 0xf5, 0xda, 0x73, 0x5d, 0x06, 0x76,

  0xff, 0x74, 0xbf, 0x35, 0xab, 0x8b, 0x31, 0x69, 0x3a, 0xab, 0x7e, 0x2f,
  0x4b, 0xfb, 0x2b, 0x2f, 0xcc, 0x8d, 0xde, 0xb4, 0x28, 0x3c, 0xf4, 0x73,
  0x16, 0xe5, 0x18, 0x87, 0xdb, 0x42, 0x99, 0x73, 0xe7, 0x44, 0xf8, 0x23,
  0x1b, 0x63, 0x55, 0x3d, 0x4b, 0x30, 0x63, 0x6e, 0x68, 0x03, 0xed, 0x2d,
  0xc3, 0x3e, 0xf8, 0x53, 0x57, 0x72, 0xff, 0x36, 0x82, 0x34, 0xe8, 0xbf,
  0x7f, 0x7d, 0x0e, 0x37, 0xe0, 0xec, 0xc7, 0xde, 0x79, 0x1c, 0x0f, 0x64,
  0x2e, 0xbf, 0xc2, 0x34, 0xf2, 0xd5, 0x15, 0xe9, 0x96, 0x2f, 0x62, 0xa5,
  0x53, 0xde, 0x46, 0xc8, 0x63, 0xbf, 0xfc, 0xf7, 0xab, 0x85, 0x03, 0x98,
  0xda, 0xf0, 0x7d, 0x79, 0xec, 0x17, 0xff, 0x3e, 0xdf, 0xdd, 0xcd, 0xc2,

  0xc5, 0x72, 0xc5, 0xd7, 0x92, 0xa0, 0xde, 0xe6, 0x38, 0x4e, 0xaa, 0xfc,
  0x0c, 0xa6, 0x28, 0x39, 0xef, 0x21, 0x57, 0x94, 0x6f, 0x45, 0xbb, 0xa0,
  0xf8, 0x6c, 0xf1, 0x17, 0xe1, 0x60, 0x60, 0xcd, 0xe1, 0xe6, 0x48, 0x5b,
  0xa2, 0x17, 0xfc, 0xe7, 0xde, 0x97, 0xb1, 0x33, 0xb2, 0xa5, 0x34, 0x24,
  0x06, 0xb5, 0x91, 0x11, 0x3a, 0xe3, 0x30, 0x6e, 0x87, 0xa8, 0xbc, 0xb6,
  0xab, 0x0b, 0x6d, 0x96, 0x66, 0x8d, 0xd0, 0xab, 0xb1, 0xee, 0x49, 0xb2,

  0x43, 0x9a, 0x06, 0xac, 0x71, 0x0a, 0x97, 0x33, 0x44, 0x8a, 0x47, 0xe6,
  0x7d, 0xb0, 0xee, 0x6b, 0x84, 0x07, 0x51, 0xe1, 0xf7, 0xa0, 0x75, 0x08,
  0xc2, 0x5f, 0x0f, 0xa4, 0x7b, 0x91, 0x19, 0x8e, 0xc8, 0x4a, 0x92, 0x60,
  0x95, 0x9e, 0x70, 0x9c, 0x21, 0xcc, 0x12, 0xd7, 0x37, 0x90, 0x6e, 0xba,
  0xe0, 0x74, 0xeb, 0xe4, 0xd5, 0xd9, 0xbb, 0x77, 0xc7, 0xaf, 0xba, 0xf1,
  0x68, 0x57, 0x4f, 0x82, 0x66, 0x59, 0xa2, 0xea, 0x07, 0xbd, 0x33, 0xf1,
  0x75, 0x6e, 0x8c, 0x60, 0x43, 0x46, 0x3c, 0x03, 0x74, 0xd6, 0x4a, 0x05,
  0x25, 0x99, 0xcb, 0x52, 0x3c, 0xfc, 0x5c, 0xa6, 0x80, 0x48, 0xb5, 0x5e,
  0x40, 0x0f, 0xce, 0x87, 0x02, 0x67, 0x1a, 0xf5, 0x55, 0x65, 0x0d, 0x14,
  0xf6, 0xab, 0xce, 0x00, 0xd3, 0x35, 0x06, 0xe3, 0x9e, 0xa4, 0xa3, 0xb3,
  0xff, 0x35, 0xd2, 0xc1, 0xd1, 0xd2, 0x32, 0x23, 0xee, 0x51, 0xd1, 0xcf,
  0xb0, 0x9c, 0x73, 0x1b, 0xdf, 0x65, 0x5a, 0x7d, 0xa2, 0x78, 0xb6, 0x57,

  0xfe, 0x83, 0x02, 0x50, 0x80, 0x7f, 0xcf, 0x66, 0x31, 0x4c, 0x08, 0x78,
  0xdd, 0xfd, 0x6a, 0x07, 0x99, 0x90, 0xb4, 0xbe, 0x7c, 0xae, 0x75, 0x99,
  0xf4, 0x7a, 0x91, 0xdd, 0xd0, 0x67, 0x18, 0x08, 0x87, 0x80, 0x1d, 0xc2,

  0x5e, 0x1a, 0x8c, 0xdf, 0xce, 0x51, 0x85, 0x3b, 0xc1, 0x94, 0xa0, 0xb3,
  0x5a, 0x72, 0xb7, 0x0a, 0x00, 0x62, 0x53, 0xfb, 0x37, 0xae, 0xe9, 0x09,
  0xf6, 0xea, 0x6b, 0x05, 0xb5, 0xf4, 0x52, 0xea, 0x82, 0xdc, 0x3f, 0x8b,
  0x5f, 0x35, 0xc9, 0x5a, 0x50, 0x97, 0x7d, 0xb8, 0x40, 0xbc, 0xdb, 0x38,
  0x06, 0xb2, 0x56, 0xea, 0xd6, 0x00, 0x7a, 0xb4, 0x69, 0x4f, 0xe4, 0x6f,
  0x4c, 0x20, 0xf5, 0x30, 0x9a, 0xc1, 0xc2, 0x1e, 0x77, 0xe1, 0x96, 0x81,
  0x44, 0x06, 0x27, 0x29, 0x41, 0x10, 0x5e, 0xa2, 0x76, 0x81, 0x33, 0x25,
  0x71, 0x59, 0x03, 0x35, 0x17, 0x95, 0x27, 0xa8, 0xec, 0x1b, 0x88, 0x59,
  0xc0, 0x6d, 0xe4, 0x67, 0xd4, 0x60, 0x58, 0x37, 0x5f, 0x51, 0x85, 0x38,
  0x08, 0x21, 0x17, 0x38, 0x2f, 0x56, 0xeb, 0x26, 0x08, 0x24, 0x12, 0xbc,
  0x1a, 0x23, 0x6b, 0x7c, 0x39, 0x0c, 0x5b, 0x91, 0xa5, 0x33, 0xff, 0x4c,
  0xc1, 0xc0, 0x61, 0xf9, 0xd7, 0xcd, 0x2c, 0x2f, 0x36, 0x7a, 0x96, 0x7d,
  0x8b, 0xc6, 0x99, 0x34, 0x92, 0xf8, 0xcf, 0x91, 0x5f, 0x47, 0xac, 0x7b,
  0x70, 0x2d, 0x74, 0x69, 0xc1, 0xbe, 0xa5, 0x2c, 0x62, 0x13, 0x8a, 0x0e,
  0xaa, 0xd4, 0x3b, 0xdc, 0xcf, 0x58, 0x39, 0xe4, 0xd8, 0xca, 0xfa, 0x84,

  0xd2, 0x27, 0xee, 0x8e, 0xc6, 0x0f, 0xfd, 0xf2, 0x92, 0xc9, 0x76, 0xa2,
  0xbf, 0x47, 0x47, 0xb1, 0xcf, 0xfd, 0x1a, 0x33, 0x48, 0x5e, 0x98, 0xff,
  0x6c, 0xfc, 0xf6, 0xc3, 0x3f, 0x1b, 0x60, 0x4d, 0x6e, 0x90, 0xba, 0x36,
  0xc5, 0x15, 0xb2, 0xf0, 0x5e, 0x28, 0x55, 0xf0, 0xdc, 0x20, 0x2f, 0xd5,
  0x93, 0xc8, 0x1b, 0x65, 0xb0, 0xab, 0x43, 0xf3, 0xc5, 0x70, 0x24, 0x60,

  0x1f, 0x9b, 0x88, 0x84, 0xa0, 0x1e, 0x26, 0x92, 0xef, 0x15, 0xc1, 0xad,
  0x32, 0xde, 0x6e, 0x9e, 0x95, 0xad, 0xe2, 0x7b, 0xf8, 0xc6, 0x85, 0xa5,
  0xab, 0xff, 0x9a, 0xba, 0x82, 0xd2, 0xc1, 0x96, 0xb2, 0x82, 0x4f, 0xb4,
  0x36, 0xe1, 0x21, 0x52, 0x29, 0xd8, 0x92, 0x6e, 0x2d, 0x60, 0x6b, 0xa3,
  0xc2, 0x5d, 0xd8, 0x94, 0xf5, 0xee, 0xc8, 0x13, 0x4f, 0xfd, 0xe2, 0xd7,
  0xe2, 0xe1, 0x29, 0xdb, 0xf1, 0x93, 0xe9, 0xcb, 0xda, 0xa6, 0xe1, 0x18,
  0xaa, 0xbd, 0x37, 0x65, 0x9b, 0x92, 0x9b, 0xbc, 0x84, 0x6d, 0xcf, 0x2f,

  0xd1, 0x97, 0xb1, 0xfd, 0x7f, 0x63, 0xca, 0x76, 0x2b, 0x67, 0x9b, 0xd4,
  0x2b, 0x4a, 0x11, 0x8e, 0xa5, 0x6d, 0x7b, 0x70, 0x37, 0x9c, 0xb3, 0xbd,

  0x29, 0x65, 0xdb, 0xcb, 0xd8, 0xde, 0x90, 0xb0, 0xcd, 0xe0, 0xc1, 0x9b,
  0x52, 0xb6, 0x7f, 0x66, 0xce, 0x76, 0x4f, 0xca, 0xf6, 0x4f, 0xce, 0xd8,
  0xfe, 0x85, 0x53, 0xb6, 0x7f, 0xc9, 0x6c, 0x64, 0xdc, 0x1e, 0x3a, 0x8f,
  0x7c, 0x2a, 0xc5, 0x4d, 0x2f, 0xee, 0x85, 0x14, 0x6e, 0x27, 0xb0, 0x78,
  0x71, 0x66, 0x19, 0x87, 0x55, 0x1a, 0xa7, 0xb8, 0x87, 0x75, 0x43, 0x42,
  0x2a, 0x91, 0x0c, 0x38, 0x3f, 0x0e, 0x7c, 0x14, 0xbb, 0xe9, 0x75, 0xbd,
  0x18, 0x62, 0x02, 0x54, 0x73, 0x1c, 0x58, 0x89, 0x8e, 0xcf, 0x74, 0x9e,
  0xfb, 0xe5, 0x59, 0x4e, 0xb3, 0xa8, 0x0f, 0x8e, 0x9c, 0xad, 0x2e, 0x7f,
  0x59, 0x53, 0x3d, 0x6c, 0xcc, 0x6e, 0x67, 0xee, 0x33, 0x16, 0x0e, 0xa3,
  0x10, 0x27, 0xfc, 0x16, 0x7c, 0xa4, 0x99, 0x6d, 0xa9, 0x68, 0x23, 0x12,
  0xb6, 0x43, 0x72, 0x58, 0x0c, 0x83, 0xf2, 0x77, 0x7f, 0x1d, 0x10, 0x21,
  0x54, 0xf6, 0xa2, 0x4c, 0xbb, 0xc6, 0x15, 0x3c, 0x18, 0x1d, 0x71, 0x85,
  0x34, 0x22, 0x2c, 0x14, 0x5e, 0xe5, 0x79, 0x06, 0x88, 0x54, 0x98, 0x00,
  0xf0, 0xc0, 0xd5, 0xb4, 0xe3, 0x86, 0x65, 0xf2, 0xfc, 0x28, 0x79, 0x4f,
  0xaa, 0xa3, 0x51, 0xd4, 0x11, 0xed, 0xc7, 0xed, 0x36, 0x63, 0x27, 0xf2,
  0xfb, 0xd8, 0x70, 0x6d, 0x10, 0x5a, 0x43, 0x3f, 0x1f, 0xde, 0x9f, 0x86,
  0xf1, 0x69, 0x44, 0x0f, 0x9e, 0xef, 0xed, 0x21, 0x41, 0xea, 0x2a, 0xbd,
  0xbd, 0x1d, 0xd5, 0xd9, 0xde, 0xac, 0x9c, 0xd6, 0x7b, 0x74, 0x82, 0xfa,

  0xf5, 0xab, 0x66, 0xb9, 0xf8, 0xec, 0x3e, 0x98, 0x6b, 0xad, 0xcb, 0x5d,
  0xdc, 0x09, 0x5a, 0x97, 0xcb, 0xbe, 0xc4, 0xad, 0xcc, 0xbd, 0x3a, 0xf9,
  0x75, 0xd0, 0x79, 0x54, 0xaa, 0x0a, 0xcc, 0xaa, 0xcc, 0xff, 0xa1, 0xe7,
  0x0a, 0x45, 0x95, 0x22, 0x85, 0xcb, 0x7e, 0x5f, 0x5a, 0xaf, 0x86, 0x20,
  0x3c, 0x20, 0x2e, 0x24, 0x6f, 0x08, 0x53, 0x36, 0x6b, 0xc0, 0xc4, 0xe4,
  0x44, 0x3a, 0xc7, 0xde, 0xe9, 0x08, 0xcb, 0xe4, 0x15, 0xb6, 0x6d, 0x03,
  0x9d, 0xf5, 0xf4, 0x88, 0xfd, 0xc5, 0x59, 0x82, 0xa1, 0x6e, 0x92, 0xf2,
  0x0f, 0x51, 0x76, 0xfd, 0x47, 0x7f, 0x8d, 0x5b, 0x66, 0x13, 0xf2, 0x5e,
  0x70, 0xb6, 0xdd, 0xc6, 0x99, 0xd8, 0x87, 0x7f, 0x8d, 0x99, 0xa0, 0x4e,
  0x3f, 0xca, 0x1f, 0x5b, 0x73, 0xc0, 0x63, 0xbf, 0xc6, 0xf7, 0xaf, 0x0f,
  0xfa, 0x3e, 0x8b, 0x26, 0xb0, 0x78, 0xe2, 0x17, 0xfc, 0xf0, 0x07, 0xeb,
  0xac, 0x62, 0x4c, 0x83, 0x17, 0xf4, 0xdf, 0xe7, 0xba, 0xc3, 0x7d, 0xdd,
  0xe5, 0x36, 0x20, 0xf7, 0x7b, 0x8d, 0xed, 0x25, 0xa3, 0x75, 0x33, 0x68,


  0x48, 0x2f, 0x2a, 0x08, 0x43, 0x42, 0x09, 0xaa, 0x37, 0x9a, 0x2d, 0x0c,

  0x15, 0x12, 0x90, 0x21, 0x54, 0x18, 0xd5, 0x86, 0x3e, 0x3e, 0x2b, 0x15,
  0x65, 0xe9, 0x5d, 0x8f, 0x18, 0x42, 0x86, 0x40, 0x4c, 0x2b, 0x6f, 0xd4,
  0x69, 0x84, 0x6b, 0xec, 0xd7, 0x46, 0x9a, 0x8b, 0xb5, 0x08, 0xd3, 0x5a,
  0xee, 0xeb, 0x59, 0x00, 0x9e, 0xed, 0x43, 0x11, 0x4d, 0xac, 0x1f, 0x0d,

  0x7c, 0xa5, 0xcb, 0x44, 0x15, 0xcf, 0x76, 0xe1, 0xc0, 0x2b, 0xec, 0x15,
  0x7f, 0x9e, 0x6c, 0x0d, 0x3f, 0x24, 0xcf, 0xb7, 0x82, 0x2d, 0x3a, 0x2b,
  0xa4, 0xe7, 0x0b, 0x9c, 0x5e, 0x15, 0x0a, 0xe1, 0xd1, 0x46, 0xca, 0x57,
  0x4d, 0xae, 0x08, 0xb0, 0xc8, 0x99, 0x13, 0xb6, 0x5f, 0xc2, 0x65, 0x10,
  0x84, 0x63, 0xe7, 0x05, 0x2b, 0x51, 0xda, 0xe1, 0x88, 0x44, 0x09, 0xb9,
  0x6d, 0x1c, 0xfc, 0x39, 0xd4, 0x27, 0xee, 0xde, 0x20, 0x89, 0x0d, 0x14,
  0xcd, 0x9c, 0x86, 0xee, 0x17, 0xdb, 0x1b, 0x1c, 0x23, 0xae, 0xca, 0xba,
  0xce, 0x27, 0x86, 0x47, 0x5f, 0x0a, 0x7f, 0xac, 0x33, 0x4e, 0xa7, 0xe2,
  0x26, 0xab, 0xb4, 0x97, 0xb5, 0x4b, 0x2e, 0xab, 0x43, 0x68, 0x2d, 0x5e,
  0xa9, 0xed, 0x18, 0x21, 0xee, 0x25, 0x33, 0x3b, 0x66, 0x6d, 0xd7, 0x39,
  0x0d, 0xcf, 0x04, 0x97, 0x26, 0x93, 0x2a, 0xcf, 0xe6, 0xc9, 0xb2, 0xe4,
  0xad, 0x87, 0xe2, 0xd5, 0x65, 0xb2, 0x0b, 0x42, 0xe6, 0xa0, 0x2e, 0xe1,
  0x94, 0x69, 0x5b, 0x13, 0xe8, 0x24, 0xf2, 0xaf, 0x91, 0xfd, 0xe8, 0x72,
  0xbb, 0xab, 0x8c, 0x32, 0x07, 0xae, 0x33, 0x39, 0xd6, 0x54, 0x7b, 0xef,
  0xf4, 0xe4, 0xa4, 0x56, 0x16, 0x9b, 0x1b, 0xd5, 0x0e, 0x80, 0x04, 0xb2,
  0xf8, 0x24, 0xf4, 0x45, 0xf4, 0x72, 0xd4, 0xf4, 0x5d, 0x57, 0xba, 0x3f,
  0xfa, 0xd5, 0x78, 0xbc, 0xe7, 0x85, 0xfe, 0xd9, 0x75, 0x00, 0xfd, 0x59,

  0xf1, 0xed, 0xd4, 0x68, 0x31, 0x82, 0xee, 0xcb, 0x87, 0x9f, 0x13, 0x2a,
  0xfe, 0xbb, 0xae, 0x96, 0x13, 0x49, 0x2d, 0xa7, 0x04, 0x3a, 0xce, 0x57,
  0xb3, 0xab, 0x6b, 0x80, 0x2e, 0x00, 0x90, 0x16, 0x3f, 0x36, 0xfc, 0x21,
  0x10, 0xf1, 0x2e, 0x5d, 0xbe, 0x95, 0x20, 0xef, 0xf2, 0xe3, 0xe9, 0xac,
  0x5c, 0x76, 0x3c, 0x0a, 0x42, 0xd8, 0x45, 0x9e, 0xd2, 0x0c, 0x42, 0x99,
  0x4c, 0x18, 0xe2, 0xfd, 0xb9, 0xf1, 0x46, 0xe7, 0xf3, 0x62, 0xf5, 0x0e,
  0xf5, 0x93, 0x1c, 0xac, 0xf1, 0x28, 0x31, 0x6e, 0x28, 0xfa, 0x3f, 0x3c,
  0x0d, 0xba, 0x38, 0x4a, 0xed, 0x84, 0x30, 0x4e, 0x9b, 0xbd, 0x70, 0x9d,
  0xa7, 0x56, 0x87, 0x72, 0xdf, 0xe2, 0x1d, 0x75, 0x9f, 0xea, 0x8b, 0xc3,
  0x31, 0xde, 0x4e, 0xa4, 0xb2, 0xf3, 0xdd, 0x78, 0x1c, 0xa6, 0xc8, 0x17,
  0xc6, 0x38, 0x29, 0x2f, 0x8b, 0xfc, 0x1f, 0xd2, 0x5e, 0xab, 0x9b, 0xd9,
  0xda, 0xaa, 0x51, 0x68, 0x07, 0xe4, 0x29, 0x51, 0x22, 0xe4, 0x6f, 0x82,
  0x04, 0x47, 0x62, 0x07, 0x09, 0x61, 0x80, 0xb0, 0xb2, 0xc9, 0x80, 0x14,
  0x67, 0xe0, 0x1e, 0x4a, 0xad, 0xa4, 0x07, 0x85, 0xcc, 0xf9, 0x2c, 0x54,
  0x24, 0x69, 0x0f, 0x04, 0x7b, 0x26, 0xae, 0x22, 0x65, 0x3f, 0xa3, 0xa0,
  0x80, 0x38, 0xe8, 0xcf, 0x2a, 0x29, 0x68, 0x2b, 0xa8, 0x1e, 0x00, 0x53,
  0x76, 0xcb, 0x1c, 0x34, 0x8e, 0x70, 0x27, 0xa8, 0xb2, 0x59, 0x4c, 0xbc,

  0xd8, 0x38, 0x04, 0xda, 0xa7, 0x3c, 0x04, 0xe4, 0x4e, 0x55, 0xcf, 0x40,
  0xbc, 0x44, 0x10, 0xee, 0xec, 0xe8, 0x0f, 0x80, 0xb6, 0x23, 0x37, 0xbe,
  0x82, 0xca, 0xcb, 0x94, 0xd1, 0x6a, 0x85, 0xe1, 0x17, 0x32, 0xc6, 0xa3,
  0xa3, 0x69, 0xb9, 0x2b, 0xc9, 0x17, 0x36, 0xda, 0x04, 0x94, 0xd0, 0x18,
  0xa0, 0xb8, 0x4f, 0xb4, 0x68, 0xaf, 0xe1, 0xbd, 0xa5, 0xb7, 0x47, 0x84,
  0xbe, 0x46, 0x45, 0x55, 0x16, 0x17, 0x8b, 0x2c, 0x79, 0x54, 0xef, 0x29,

  0x4d, 0x74, 0x49, 0xcb, 0x01, 0xfc, 0xdb, 0x29, 0x72, 0x96, 0x88, 0xf8,
  0xf8, 0x6d, 0xe3, 0xba, 0xb6, 0x0c, 0x63, 0x04, 0xd2, 0x80, 0xb4, 0x04,
  0x97, 0x06, 0x6a, 0xc0, 0xda, 0x18, 0x65, 0x04, 0xfc, 0xcb, 0xa5, 0x45,
  0xf6, 0x4c, 0x06, 0xc4, 0x7d, 0x98, 0xe5, 0x8a, 0xa7, 0x6e, 0xb8, 0x52,
  0x2e, 0xdb, 0x5d, 0xec, 0x9d, 0x0c, 0xd2, 0xa3, 0xcb, 0xff, 0x0a, 0x95,
  0x28, 0x3f, 0xa7, 0x10, 0xe5, 0x57, 0xae, 0x44, 0xf1, 0x24, 0x05, 0x89,

  0x9d, 0x50, 0x4e, 0x20, 0x2d, 0x8a, 0x5c, 0x32, 0x9c, 0x07, 0x75, 0x93,
  0xda, 0xd6, 0x33, 0x78, 0xab, 0x33, 0x5c, 0xf4, 0x26, 0xb5, 0x73, 0x64,
  0x3d, 0x0e, 0xa2, 0xfc, 0x91, 0x53, 0xe0, 0xa9, 0xe9, 0x5d, 0x0f, 0xcc,
  0x4f, 0x46, 0x25, 0xe3, 0xb3, 0x4c, 0x20, 0xba, 0xfe, 0xe0, 0x3a, 0xbf,
  0xfc, 0xda, 0x06, 0xd8, 0x81, 0xe1, 0xcd, 0x2f, 0x3c, 0x79, 0xfc, 0xa7,
  0x88, 0x40, 0x0e, 0x9c, 0x96, 0x5c, 0xd7, 0x46, 0xaf, 0xb6, 0x61, 0x30,
  0x23, 0x4c, 0x2f, 0x7e, 0x61, 0xd0, 0x68, 0x16, 0xf1, 0x4d, 0x65, 0x6f,
  0x94, 0x16, 0x47, 0x2f, 0xf7, 0x30, 0x38, 0x01, 0x5a, 0x55, 0x83, 0xd8,
  0xf0, 0xf3, 0x49, 0xd6, 0xdc, 0x90, 0x16, 0x87, 0xdd, 0xd0, 0x6d, 0xf4,
  0x78, 0x80, 0xe5, 0x87, 0xbd, 0xf9, 0x2e, 0x03, 0xc1, 0x57, 0x26, 0x8e,
  0xc2, 0x40, 0xbe, 0xd6, 0x33, 0xa2, 0x71, 0xdd, 0xe0, 0xfa, 0xc5, 0x5a,
  0x39, 0xb9, 0x10, 0x35, 0x7f, 0x9f, 0xf6, 0xc5, 0xcb, 0xc5, 0x6d, 0x55,

  0x0c, 0x69, 0xe6, 0x92, 0x3c, 0xe8, 0xfb, 0xf8, 0xed, 0x35, 0x96, 0x6b,
  0x1b, 0xf3, 0x7e, 0xb6, 0xd9, 0x9c, 0x1e, 0xbe, 0xa7, 0x67, 0x49, 0x84,
  0xd0, 0x2e, 0xde, 0x15, 0xc8, 0xc5, 0x42, 0xc3, 0xbd, 0x5c, 0x86, 0x5d,
  0x39, 0xf2, 0xdb, 0x74, 0x65, 0x7e, 0x46, 0x21, 0x41, 0x60, 0xca, 0xce,
  0xb2, 0x58, 0x5e, 0x42, 0x67, 0xf3, 0x3b, 0x71, 0x71, 0x9c, 0x4f, 0xd8,
  0x26, 0xc1, 0x1a, 0x67, 0xb1, 0xf6, 0x36, 0xb5, 0x20, 0x37, 0xa9, 0x7b,
  0x4a, 0x83, 0xe0, 0x12, 0x6c, 0xf1, 0x29, 0x4d, 0xd0, 0x09, 0x0b, 0x29,
  0xdf, 0x0c, 0xa1, 0xc7, 0x5b, 0x6b, 0x2c, 0x47, 0x91, 0x26, 0x97, 0xa4,
  0x5f, 0xa0, 0x1e, 0xab, 0x3b, 0x7f, 0xc9, 0xe1, 0xd3, 0x96, 0x87, 0x2d,
  0x27, 0x0f, 0x64, 0x59, 0xe8, 0x32, 0x13, 0xf0, 0x27, 0x7d, 0x45, 0x20,
  0x90, 0xe5, 0x03, 0xb6, 0x35, 0x6c, 0x5f, 0x64, 0x32, 0x96, 0xc3, 0xd1,
  0xba, 0xb5, 0x12, 0x7b, 0x88, 0xc4, 0xe6, 0x76, 0xc6, 0x54, 0x17, 0x31,
  0x7e, 0x75, 0xbe, 0x9b, 0x9c, 0x77, 0xc2, 0x0a, 0x28, 0x4a, 0x22, 0x61,
  0xea, 0x33, 0x62, 0x69, 0xc5, 0xc7, 0x08, 0x97, 0xfd, 0x2e, 0x68, 0xc5,
  0x15, 0xb6, 0x58, 0xae, 0x08, 0xfd, 0xfe, 0xe2, 0x8c, 0xa9, 0xb3, 0x96,
  0x97, 0x28, 0xd2, 0x60, 0x50, 0x10, 0x31, 0x29, 0xfd, 0x5b, 0x6a, 0x4c,
  0xe8, 0x92, 0x4a, 0xed, 0xb8, 0xf9, 0x95, 0x38, 0xe5, 0xd5, 0x99, 0xbe,
  0x08, 0x52, 0x1d, 0x19, 0x14, 0x47, 0x33, 0xcf, 0x3d, 0xf8, 0x23, 0x69,
  0x43, 0x59, 0xb3, 0x5c, 0xea, 0xb4, 0x89, 0xa0, 0x55, 0x5c, 0x66, 0x45,
  0xd8, 0x75, 0x06, 0x1f, 0x25, 0x41, 0x2e, 0x44, 0x3d, 0x1b, 0x75, 0xd1,
  0xb3, 0xbd, 0xb0, 0x81, 0x4c, 0x2e, 0x2f, 0x1d, 0x52, 0x7e, 0x0f, 0xc2,
  0x26, 0x4c, 0xfe, 0x09, 0x0a, 0x00, 0x09, 0x87, 0x0b, 0x48, 0xec, 0x30,
  0x0a, 0xa6, 0xe5, 0xea, 0x8e, 0xb6, 0xc3, 0x3c, 0x58, 0xd7, 0x57, 0x87,
  0x86, 0x73, 0x1c, 0x8e, 0x3e, 0x87, 0x89, 0x62, 0x84, 0x75, 0x04, 0x8e,
  0x97, 0x73, 0x47, 0xa4, 0x5d, 0x6d, 0x67, 0x34, 0xd1, 0xc2, 0x47, 0x4e,
  0xf1, 0x1f, 0xfe, 0x37, 0xa2, 0xb4, 0xbf, 0xaf, 0xc3, 0xf8, 0xdd, 0x0e,
  0x08, 0xea, 0x0d, 0x90, 0x34, 0xa9, 0x1d, 0x12, 0x32, 0x0d, 0x26, 0x79,
  0x83, 0x96, 0x06, 0x6a, 0x43, 0xb6, 0x2f, 0xe6, 0x1b, 0x2e, 0x79, 0x4e,

  0xf0, 0x5a, 0xb4, 0x26, 0xde, 0xa8, 0xe0, 0xff, 0x8d, 0xbe, 0xa5, 0x03,
  0x70, 0x6d, 0x12, 0xb2, 0x21, 0xfe, 0x7c, 0xfc, 0xe6, 0xec, 0xfd, 0x71,
  0xbb, 0x5e, 0xb1, 0x01, 0xe8, 0x16, 0x82, 0xfd, 0xdd, 0xd9, 0x01, 0xd5,
  0xce, 0x35, 0xf5, 0xcd, 0x8b, 0x9c, 0x8c, 0xfe, 0xe4, 0xfc, 0xbb, 0xd7,
  0x76, 0x72, 0x39, 0x98, 0x26, 0x26, 0xa5, 0x23, 0x0e, 0x74, 0x9f, 0xbb,

  0xa2, 0x9d, 0x94, 0x00, 0x6a, 0x06, 0x26, 0xcd, 0xc5, 0xed, 0xf4, 0x90,
  0x64, 0xc1, 0xa9, 0x31, 0x5a, 0xaa, 0x0f, 0x0c, 0xf5, 0xba, 0xa6, 0xd2,
  0x7b, 0x3b, 0x6c, 0xa0, 0xf7, 0x42, 0xf4, 0x03, 0x6d, 0x4a, 0x6c, 0x51,
  0x42, 0x8e, 0x23, 0x30, 0xb9, 0x51, 0x62, 0x3f, 0xe2, 0xbe, 0x42, 0x07,
  0x2f, 0xd9, 0x40, 0xf8, 0x4a, 0x8c, 0x61, 0x53, 0xdf, 0x7b, 0x8e, 0x83,
  0xb0, 0xbc, 0x23, 0x87, 0x0b, 0xd1, 0xac, 0xed, 0x3b, 0x36, 0x60, 0xa4,
  0x3f, 0x09, 0xf7, 0xf8, 0xfb, 0x18, 0x89, 0x90, 0x9b, 0xcf, 0xee, 0xd4,
  0xbb, 0x03, 0x6f, 0xa6, 0x76, 0xdb, 0x64, 0xc2, 0xdb, 0x7f, 0xd8, 0x4e,
  0xa4, 0x20, 0x04, 0x0c, 0x8f, 0x61, 0x69, 0x7b, 0xfa, 0x8d, 0xba, 0xfe,
  0x73, 0xbb, 0xf7, 0xe5, 0x6f, 0xe9, 0xa2, 0xfb, 0xeb, 0xb1, 0x25, 0x74,
  0x27, 0x49, 0x3d, 0x68, 0x04, 0xbb, 0x66, 0xcc, 0x52, 0xb0, 0x0e, 0x11,
  0xa7, 0x3a, 0xce, 0x40, 0x70, 0xbc, 0x43, 0xe7, 0x5e, 0xe5, 0xf7, 0xa4,
  0x52, 0x86, 0x83, 0x88, 0x99, 0x36, 0x4e, 0xe0, 0x58, 0x04, 0x51, 0x77,
  0x7d, 0x57, 0x34, 0x74, 0x51, 0x99, 0xa7, 0x4c, 0xcb, 0x2a, 0x5e, 0x00,
  0x06, 0x62, 0x72, 0xb4, 0x5b, 0x03, 0x6b, 0xe2, 0xd9, 0xe3, 0x67, 0x24,

  0xdc, 0x91, 0xa3, 0x24, 0x3d, 0xd9, 0x04, 0xe1, 0x19, 0xf1, 0x53, 0x9e,
  0x73, 0x14, 0x39, 0x44, 0xc6, 0x91, 0x2e, 0xda, 0x93, 0x6c, 0xc1, 0x5d,
  0xe0, 0xc6, 0xde, 0x10, 0x21, 0x98, 0x52, 0xdf, 0x89, 0x11, 0xe6, 0xa2,
  0xa1, 0x9d, 0xbc, 0xfe, 0x94, 0xec, 0xfc, 0x57, 0x6e, 0x99, 0xe9, 0xaa,
  0xe3, 0x39, 0xf8, 0x9b, 0x17, 0xeb, 0x80, 0xf2, 0xc9, 0x39, 0xa7, 0x85,
  0xc2, 0x3a, 0xe0, 0x1c, 0x31, 0x95, 0xb4, 0xf6, 0x11, 0x4d, 0x3c, 0x50,
  0xb5, 0xa6, 0x5c, 0x91, 0xd2, 0x06, 0xf8, 0x84, 0x48, 0xd7, 0x5e, 0x73,
  0x58, 0x0f, 0x4e, 0xf2, 0x69, 0x97, 0x2d, 0x84, 0x12, 0x91, 0x76, 0x02,
  0x98, 0xd8, 0xe2, 0x6e, 0x55, 0xe5, 0x6a, 0x94, 0x7c, 0x28, 0x90, 0x89,
  0x27, 0x64, 0x27, 0x62, 0x22, 0x2f, 0xcc, 0x0e, 0x18, 0x9a, 0x26, 0x28,
  0x8f, 0x08, 0x13, 0x02, 0x9f, 0xf3, 0xef, 0x9d, 0xb0, 0xc9, 0x4e, 0x88,
  0x14, 0xf7, 0xd6, 0xa2, 0x98, 0x0b, 0xdf, 0x7a, 0x13, 0xf6, 0x37, 0xe4,
  0xfe, 0x6c, 0x44, 0xea, 0x66, 0x39, 0x18, 0x9b, 0x42, 0xe0, 0xd9, 0x62,
  0x31, 0x64, 0x10, 0x75, 0x82, 0x94, 0x26, 0xe5, 0x9e, 0x8b, 0xa4, 0x91,
  0xc0, 0xe6, 0x97, 0xe0, 0x07, 0x92, 0x05, 0xb5, 0xde, 0x23, 0xd4, 0x00,
  0x29, 0xd8, 0x88, 0xa4, 0xbd, 0x6b, 0x64, 0x8d, 0x0a, 0xf7, 0x9c, 0x3f,
  0x04, 0xbb, 0xf3, 0x77, 0xe5, 0xa7, 0xb1, 0x8e, 0x64, 0x21, 0x2c, 0xe9,
  0xf4, 0xea, 0xb2, 0x5a, 0x71, 0x57, 0xc4, 0x58, 0xcb, 0x46, 0x4f, 0xeb,
  0xe6, 0x27, 0x95, 0x24, 0xea, 0xac, 0xe1, 0xa9, 0xf0, 0xab, 0x27, 0xaf,

  0x5b, 0xdd, 0xd5, 0x69, 0x27, 0x50, 0xe7, 0x16, 0x1f, 0x4e, 0x60, 0x47,
  0xc9, 0x57, 0x80, 0x1b, 0xe9, 0x24, 0x87, 0x1d, 0xcd, 0x99, 0x18, 0x93,
  0x3b, 0xf7, 0x9b, 0xf8, 0x70, 0x32, 0x06, 0x6b, 0xaa, 0x3c, 0x82, 0x0e,
  0x0b, 0x5a, 0x31, 0xa6, 0x68, 0x4e, 0x0d, 0xae, 0x88, 0x1a, 0x2e, 0xb3,
  0xca, 0x7e, 0x24, 0x4c, 0x92, 0xbc, 0x5a, 0x96, 0x33, 0x2a, 0xea, 0xca,
  0xee, 0xdd, 0x0b, 0x7a, 0x50, 0xf7, 0x42, 0x6a, 0xe1, 0x6a, 0x7f, 0x5d,
  0x18, 0xc4, 0x50, 0x29, 0x51, 0x5e, 0x39, 0x8f, 0x35, 0x55, 0xe8, 0x9a,
  0x41, 0x89, 0x76, 0x29, 0xcd, 0xf8, 0x65, 0x7f, 0x09, 0x45, 0x52, 0x4e,
  0x1b, 0x6f, 0x05, 0xf4, 0x40, 0x7c, 0x38, 0x66, 0xac, 0x91, 0x95, 0x51,
  0x81, 0x14, 0x2c, 0xca, 0xfb, 0x56, 0x46, 0x0f, 0x06, 0xa7, 0x6c, 0x7e,
  0xe8, 0xb0, 0x67, 0xbd, 0x23, 0xe6, 0xc3, 0x89, 0x0f, 0xd7, 0x3e, 0x60,
  0x3d, 0x61, 0xcc, 0x21, 0x76, 0xc0, 0x82, 0x61, 0x1d, 0x6a, 0x58, 0xce,
  0x3e, 0xe6, 0xdd, 0xb1, 0x0f, 0xf6, 0x1e, 0xb0, 0x7c, 0x23, 0xd8, 0x85,
  0x45, 0x61, 0xb4, 0xbb, 0x75, 0x35, 0xcd, 0x3e, 0x62, 0x6e, 0x4d, 0x5a,
  0x5d, 0x66, 0xcd, 0xc7, 0xcd, 0x1b, 0xb2, 0x10, 0x34, 0x85, 0xbb, 0x25,
  0xda, 0x8c, 0x5b, 0x5e, 0x21, 0xf8, 0xb2, 0xa9, 0xa0, 0x0b, 0x18, 0x05,
  0x8f, 0x5b, 0xb9, 0x37, 0xfd, 0x1b, 0xe2, 0x7d, 0x8f, 0x31, 0x69, 0xd9,
  0x30, 0x5b, 0x95, 0x79, 0x61, 0x1b, 0xc7, 0x80, 0xc7, 0x78, 0x73, 0x8c,
  0x21, 0x2f, 0x6d, 0x0a, 0x57, 0x2d, 0x3f, 0x51, 0x89, 0x95, 0x55, 0x02,
  0x3e, 0x46, 0x9a, 0x83, 0x78, 0x8b, 0xe3, 0xa7, 0xf5, 0xb4, 0x79, 0x49,
  0x52, 0x42, 0x68, 0x9b, 0xd1, 0xfa, 0x07, 0x4d, 0x45, 0xc5, 0x3d, 0xb3,
  0xf1, 0x3f, 0x68, 0x6f, 0x64, 0x77, 0x76, 0xab, 0x9b, 0x99, 0x05, 0xb2,
  0xb9, 0x71, 0x17, 0x48, 0x45, 0x3b, 0x32, 0x9b, 0xb5, 0xe1, 0x33, 0x65,
  0x30, 0xf1, 0x60, 0x73, 0x45, 0xc0, 0xee, 0xfd, 0x74, 0xd1, 0x84, 0xfa,
  0x4f, 0xf0, 0xf1, 0x0a, 0x9d, 0xab, 0x65, 0x77, 0xe5, 0x30, 0xfa, 0xb7,
  0x46, 0x9e, 0x76, 0x53, 0x64, 0xee, 0x6e, 0xe9, 0xbf, 0xac, 0x22, 0x7b,
  0xb4, 0x81, 0xdd, 0xc9, 0x67, 0xbb, 0x0c, 0x6f, 0x96, 0x91, 0x5b, 0x96,
  0x29, 0x01, 0x39, 0x5b, 0xf7, 0xdf, 0x2b, 0x9e, 0x79, 0xef, 0x1e, 0x57,



  0xcb, 0x7b, 0xae, 0xb8, 0x79, 0xc0, 0xad, 0x8a, 0x91, 0x38, 0xec, 0xaa,
  0x82, 0x5b, 0x29, 0x8d, 0xad, 0x7b, 0x76, 0xbe, 0x6f, 0x06, 0x2d, 0x1a,
  0xec, 0x9f, 0x89, 0x3c, 0x19, 0x9d, 0x8e, 0xdb, 0x5c, 0x73, 0xba, 0xd5,
  0x9d, 0x9b, 0x59, 0x7c, 0x38, 0x99, 0xae, 0x7b, 0x4b, 0xb6, 0x67, 0xe0,
  0xf9, 0x2e, 0xb9, 0x93, 0x88, 0x31, 0x1b, 0x43, 0xda, 0xd0, 0xeb, 0xfd,
  0x93, 0xd8, 0x03, 0xd9, 0xe7, 0x8b, 0xc2, 0xb7, 0xc8, 0xe9, 0x8b, 0x46,
  0xf2, 0x6e, 0x28, 0x65, 0xf1, 0x22, 0xd6, 0xf6, 0xb8, 0xb9, 0x97, 0x30,

  0xe2, 0xae, 0x48, 0xc8, 0x43, 0xa2, 0x2a, 0x1a, 0x51, 0x89, 0x92, 0x0a,
  0xc0, 0xb8, 0x19, 0xb5, 0xf8, 0x08, 0xf3, 0xe6, 0x13, 0xfe, 0x66, 0xc2,
  0x79, 0x5b, 0x0c, 0x84, 0x4c, 0xb1, 0x43, 0x51, 0x43, 0xb4, 0x57, 0x71,
  0x9d, 0x89, 0x9d, 0x20, 0x8f, 0x73, 0xd7, 0x90, 0xb0, 0x41, 0x73, 0x27,
  0x79, 0xae, 0x1e, 0x05, 0x70, 0xdb, 0xd9, 0xe5, 0xcc, 0x6f, 0x77, 0xee,
  0x2d, 0xbf, 0x1a, 0xf0, 0x16, 0x5c, 0x9a, 0xc5, 0xe3, 0x8f, 0x68, 0x91,
  0x48, 0xa2, 0x86, 0x24, 0x50, 0x0f, 0x76, 0x93, 0xf7, 0x12, 0xda, 0x24,
  0xa5, 0xee, 0xae, 0xc1, 0x04, 0xcd, 0x00, 0x3b, 0xf9, 0xc8, 0x08, 0x43,
  0x2e, 0x0a, 0x20, 0x05, 0x89, 0x10, 0xf9, 0x63, 0x81, 0xe2, 0x5d, 0x8d,
  0x14, 0x2b, 0x04, 0xd8, 0xde, 0xc1, 0xe8, 0x60, 0x90, 0x58, 0xdb, 0xd3,
  0xd3, 0x9d, 0x91, 0xbc, 0x28, 0x58, 0xe0, 0xf4, 0xe9, 0xae, 0x9f, 0xe1,
  0x3d, 0x7d, 0xb8, 0x0e, 0xbd, 0xc2, 0x70, 0x2d, 0x3b, 0x83, 0xe5, 0x26,
  0xbd, 0x0b, 0x15, 0xd3, 0xfd, 0xe1, 0xa3, 0x67, 0xcf, 0x5a, 0xf2, 0xbc,
  0xf6, 0x70, 0xd4, 0x1f, 0xef, 0xef, 0x63, 0x6d, 0x41, 0x4d, 0xb4, 0xf9,
  0xc5, 0xf0, 0x19, 0x5e, 0x6c, 0xbf, 0x56, 0x67, 0xe6, 0x08, 0x66, 0xfd,
  0xef, 0x0d, 0xe9, 0x37, 0x91, 0xcf, 0xc1, 0x9f, 0xd2, 0xfb, 0xd6, 0x33,
  0xfa, 0x5c, 0xe4, 0x2d, 0x3c, 0xcc, 0xdb, 0x58, 0xce, 0xe7, 0xe4, 0xc9,
  0xa2, 0x27, 0x15, 0x99, 0xe7, 0x26, 0xad, 0x66, 0xe1, 0x72, 0xf7, 0x07,
  0xc3, 0x83, 0xbe, 0xe5, 0x22, 0x9a, 0x8c, 0x04, 0x38, 0x3a, 0x4f, 0x32,
  0x14, 0x8d, 0x01, 0xc2, 0x05, 0x42, 0xdd, 0x81, 0x0e, 0xcc, 0x8c, 0x0e,
  0x9e, 0x3d, 0x1b, 0xd0, 0xcc, 0x1e, 0x3f, 0x7b, 0xd6, 0x5b, 0x10, 0xee,
  0x7d, 0xe6, 0xa6, 0x74, 0xee, 0x27, 0x7a, 0xdd, 0x11, 0x4d, 0x4d, 0x76,

  0x4e, 0xfc, 0x3b, 0xf4, 0x9b, 0x2f, 0x92, 0x77, 0x67, 0x17, 0xc7, 0x9e,
  0x63, 0x06, 0xd7, 0x8b, 0x23, 0x86, 0x5e, 0x8a, 0x28, 0x42, 0xb0, 0x2b,
  0xb4, 0xf2, 0x82, 0xe1, 0x4b, 0x36, 0x49, 0x68, 0x4c, 0xa2, 0x58, 0x45,
  0x7d, 0x82, 0xff, 0x16, 0x66, 0x44, 0x90, 0x71, 0x3c, 0xcb, 0x2f, 0xf3,
  0xc6, 0x87, 0x6d, 0xda, 0x31, 0xa7, 0xbd, 0x0b, 0x17, 0x07, 0x27, 0xba,
  0x49, 0x34, 0x65, 0xbb, 0xa6, 0xf2, 0x0e, 0xce, 0x84, 0xdd, 0x26, 0x6b,
  0x6a, 0x3b, 0x28, 0xb0, 0xc8, 0x16, 0xb3, 0x5a, 0x05, 0x21, 0x3f, 0x3e,
  0xc4, 0x83, 0x72, 0x5b, 0x60, 0xae, 0x72, 0x8f, 0xf7, 0x14, 0xa0, 0x96,
  0xfc, 0xe9, 0xfe, 0x78, 0x0a, 0xdc, 0x59, 0x48, 0xc4, 0xd0, 0xc2, 0x2c,
  0x1a, 0xc7, 0x4f, 0x95, 0xdd, 0xae, 0x9d, 0xcb, 0xd3, 0x7a, 0xe7, 0x0a,
  0x3a, 0x87, 0x00, 0x8f, 0x90, 0x9d, 0xf8, 0xb3, 0x6c, 0xa5, 0x29, 0xa5,
  0x45, 0x7b, 0x1c, 0x43, 0xcb, 0xf3, 0xfc, 0x72, 0x5d, 0xc5, 0xd3, 0x2f,
  0xff, 0xe2, 0xca, 0x84, 0xb4, 0x69, 0x40, 0x7a, 0x93, 0x6a, 0x79, 0x12,
  0x1a, 0x3d, 0xe8, 0xbd, 0x56, 0x23, 0x58, 0xcb, 0x81, 0xd0, 0xd2, 0x21,
  0xb0, 0xa4, 0xc9, 0x3b, 0x31, 0x37, 0x9a, 0x0c, 0x39, 0x09, 0xb4, 0x6d,
  0xa7, 0x34, 0x2f, 0x48, 0x1b, 0x57, 0x96, 0x25, 0x2e, 0x44, 0x3a, 0x6f,
  0x12, 0xa7, 0xa9, 0x6c, 0x41, 0x98, 0x53, 0xb7, 0xbd, 0x70, 0xbe, 0x7b,
  0x7a, 0x12, 0xde, 0x96, 0xab, 0xd2, 0x6b, 0x13, 0x12, 0x82, 0x36, 0x08,
  0x28, 0x0d, 0xb8, 0x0f, 0x1f, 0xd1, 0xcc, 0xa8, 0xd0, 0x8b, 0x32, 0xa5,
  0x63, 0x54, 0xcf, 0x09, 0x47, 0xd3, 0x59, 0x3b, 0x60, 0xc4, 0x31, 0x3d,
  0xdb, 0x20, 0xab, 0x83, 0x8e, 0x5a, 0x4e, 0x99, 0xb0, 0xbc, 0x1d, 0xa8,
  0x08, 0x88, 0xd4, 0x73, 0x83, 0x30, 0x9f, 0x32, 0x1f, 0x61, 0x84, 0x8c,
  0xdd, 0x51, 0x12, 0x9a, 0xbd, 0x44, 0xf0, 0x7c, 0x5a, 0xb6, 0xcf, 0x05,
  0xfa, 0x9d, 0x92, 0x90, 0xa4, 0x09, 0xab, 0x38, 0x1e, 0x9f, 0xfc, 0xf7,
  0xe3, 0x5f, 0x33, 0xea, 0x54, 0xa5, 0x37, 0xb6, 0x70, 0xf0, 0x3b, 0x06,
  0xac, 0x94, 0x68, 0x90, 0x45, 0xaa, 0x48, 0x17, 0x62, 0xc4, 0x53, 0x4f,
  0x4d, 0x48, 0x0f, 0xc4, 0x15, 0xa5, 0x9d, 0xb1, 0x21, 0xac, 0x90, 0xb6,
  0xc9, 0x6b, 0x46, 0xf0, 0x0a, 0xea, 0x34, 0x44, 0x32, 0x3a, 0x4a, 0xbe,
  0xd8, 0x09, 0xc8, 0x07, 0xb9, 0x84, 0x2b, 0x11, 0x96, 0x3d, 0x79, 0x7b,

  0x19, 0x51, 0x2a, 0x0c, 0x17, 0x00, 0x12, 0x91, 0x26, 0x65, 0xe6, 0x7a,
  0x4f, 0x4f, 0x42, 0xbf, 0xd2, 0x3e, 0xe3, 0xf6, 0x0d, 0x14, 0xa0, 0xaa,
  0x92, 0x17, 0x1f, 0xde, 0x9f, 0xf6, 0x94, 0x4b, 0x8e, 0x71, 0x06, 0xb4,
  0x59, 0x5b, 0xef, 0x33, 0xa0, 0x99, 0x55, 0xc9, 0x79, 0x7a, 0x99, 0x6d,

  0xf9, 0x00, 0x72, 0xaa, 0x2a, 0x62, 0xf9, 0xe2, 0x7f, 0x88, 0xb9, 0x53,
  0xfc, 0xb6, 0x1b, 0xc4, 0xc4, 0x5d, 0x58, 0xd8, 0xaf, 0x71, 0x9c, 0x2f,
  0x52, 0xd9, 0xbb, 0x75, 0x45, 0x01, 0x7d, 0xec, 0x7c, 0xa4, 0x95, 0x14,
  0xbf, 0xde, 0x46, 0xfd, 0x74, 0x19, 0xa6, 0x14, 0x09, 0x22, 0x3f, 0x59,
  0xb2, 0xf5, 0x47, 0x72, 0xbf, 0x6f, 0x79, 0x48, 0x97, 0xc3, 0x2c, 0x0c,
  0xb2, 0xe9, 0x56, 0x30, 0x46, 0xa1, 0x75, 0x45, 0xb1, 0x2b, 0xbf, 0xe5,
  0xbe, 0xaf, 0xe5, 0x82, 0xad, 0xaa, 0x8c, 0xf0, 0x78, 0x91, 0xc1, 0x1b,
  0xb4, 0x0a, 0xe3, 0xb4, 0x63, 0x86, 0x60, 0x25, 0xfb, 0xef, 0x54, 0xe6,
  0xf7, 0x5c, 0x22, 0x2d, 0xac, 0x06, 0xd9, 0xa9, 0x49, 0x9c, 0x5a, 0x7b,
  0x2c, 0xc5, 0x16, 0x9b, 0x2e, 0xa8, 0x21, 0x0e, 0x7b, 0xbf, 0x24, 0xf4,

  0x3e, 0x2b, 0xa9, 0x89, 0x0a, 0xcd, 0x27, 0x2d, 0xac, 0x3f, 0xb9, 0x75,
  0xb2, 0xbf, 0x3a, 0xd4, 0xa1, 0x0b, 0x00, 0xbd, 0x1c, 0x48, 0x97, 0xa7,
  0xa1, 0xa1, 0x8e, 0x42, 0x2a, 0xe1, 0xbd, 0x63, 0xf5, 0x68, 0xef, 0x3f,
  0xbc, 0xd6, 0x21, 0x5e, 0xf3, 0x8f, 0x1e, 0xc4, 0x5c, 0x6f, 0xba, 0x0d,
  0xaa, 0x54, 0x40, 0x30, 0x41, 0xfb, 0x11, 0x57, 0x30, 0x2b, 0xd2, 0x32,
  0xea, 0xce, 0x1f, 0x3a, 0xa5, 0xe9, 0x15, 0x57, 0x6e, 0x0e, 0x5f, 0xe7,
  0x46, 0x86, 0xd4, 0x0c, 0x40, 0x04, 0x25, 0x97, 0x6b, 0x0f, 0xf5, 0x1a,
  0xc2, 0x37, 0x92, 0x05, 0xe9, 0x0a, 0x1c, 0x25, 0x41, 0xe2, 0xb3, 0x7d,
  0xc7, 0x86, 0x6c, 0x0c, 0x45, 0xdc, 0xeb, 0x2c, 0xf6, 0x14, 0x86, 0xd4,
  0xf9, 0x2b, 0xb0, 0x6d, 0xda, 0xc3, 0x80, 0x6f, 0x87, 0x91, 0x08, 0x91,
  0xdd, 0x51, 0x58, 0x20, 0x64, 0xcd, 0x38, 0xbc, 0x1e, 0xe9, 0xc1, 0x14,
  0x98, 0x9a, 0xb6, 0x73, 0x39, 0x4b, 0xa5, 0x80, 0xc4, 0x28, 0x2f, 0xc5,
  0x36, 0xc2, 0xe1, 0xd8, 0x09, 0x83, 0xf0, 0x71, 0x69, 0xea, 0xd4, 0x0c,

  0x6c, 0xe3, 0xe6, 0xda, 0x97, 0x59, 0x9a, 0xf8, 0xc4, 0x05, 0xee, 0x5d,
  0x6b, 0x55, 0x48, 0x1a, 0xf5, 0x09, 0x8f, 0x62, 0x03, 0x45, 0x29, 0x08,

  0x2f, 0xb1, 0x10, 0x3a, 0xf2, 0x77, 0xcc, 0x13, 0x9e, 0x0c, 0xe4, 0x7c,
  0x8d, 0xe4, 0xf7, 0x43, 0xd7, 0x79, 0x63, 0xe7, 0x2e, 0x33, 0xfa, 0xb5,

  0x05, 0xd5, 0x52, 0x43, 0x2a, 0x52, 0xfd, 0x99, 0x70, 0x77, 0xd0, 0xba,
  0x55, 0x98, 0x02, 0x13, 0xc4, 0x8b, 0x2c, 0xf2, 0x96, 0x1b, 0x2d, 0x00,
  0x89, 0x96, 0x45, 0x76, 0x4b, 0x18, 0xe0, 0xfd, 0xc3, 0x85, 0x4a, 0xf6,

  0x77, 0x2f, 0xdf, 0xbf, 0x3b, 0x79, 0xf7, 0xd5, 0xf3, 0xe4, 0xf8, 0x36,
  0xab, 0xa6, 0xd4, 0x89, 0xf9, 0x6f, 0xeb, 0x59, 0x3e, 0x05, 0x9b, 0x90,
  0x06, 0xc1, 0x7e, 0xc8, 0xdb, 0x58, 0x01, 0x99, 0xf8, 0x57, 0x49, 0xe0,
  0x06, 0x85, 0x30, 0x92, 0xcb, 0x4b, 0xc0, 0x11, 0xc6, 0x8a, 0x2a, 0x2f,
  0xd7, 0x1e, 0xf9, 0x4c, 0xb9, 0xa5, 0x21, 0x62, 0x01, 0x88, 0x91, 0x5e,
  0xc9, 0x5e, 0x93, 0xd3, 0x35, 0x79, 0x7d, 0x7a, 0xda, 0xd3, 0x1f, 0x9a,
  0xa7, 0xcf, 0xa5, 0xbe, 0x18, 0xc2, 0xe6, 0x9b, 0x52, 0x2c, 0xcf, 0x88,
  0x7f, 0xe2, 0x35, 0x2d, 0x86, 0x07, 0x30, 0xb0, 0xef, 0xc2, 0x4c, 0x4e,


  0xa4, 0x19, 0x23, 0x39, 0x10, 0x27, 0x9c, 0x57, 0x33, 0xd8, 0x42, 0x86,
  0x43, 0x96, 0xf3, 0x86, 0xf4, 0xa3, 0x96, 0x24, 0x6d, 0xf7, 0x05, 0xda,
  0x94, 0x14, 0xc6, 0x31, 0xa3, 0x36, 0x4e, 0x94, 0x84, 0x24, 0x91, 0xb3,
  0x6a, 0x08, 0x92, 0x15, 0x43, 0x34, 0x93, 0x42, 0xaa, 0x59, 0x90, 0x50,
  0x9b, 0xda, 0xce, 0xe6, 0x35, 0x71, 0xcb, 0x90, 0x5d, 0xdc, 0x64, 0x95,
  0x98, 0x9e, 0xb6, 0x88, 0xd8, 0x30, 0xbb, 0x51, 0x32, 0x2e, 0xcd, 0xf3,
  0x91, 0xaa, 0x05, 0xed, 0xb8, 0xe8, 0xba, 0xaa, 0xa6, 0x8d, 0xa4, 0xd0,
  0xda, 0xbc, 0x2a, 0x34, 0xa3, 0x42, 0xcc, 0xad, 0xbd, 0xde, 0x48, 0xbf,
  0x67, 0xa2, 0xff, 0x49, 0x66, 0x15, 0x8a, 0x3b, 0x0d, 0xed, 0x10, 0x91,
  0x6c, 0x0d, 0x0d, 0x3b, 0xdd, 0x42, 0x23, 0x3d, 0xea, 0x42, 0xed, 0x8d,
  0x74, 0x4f, 0x2f, 0x55, 0x3f, 0x4d, 0xbd, 0xbb, 0xe0, 0x7b, 0x5a, 0xd4,
  0xa9, 0xd5, 0xe9, 0x39, 0x4e, 0xa5, 0x51, 0x98, 0x8d, 0x95, 0x32, 0x4f,
  0xa2, 0xae, 0x36, 0x59, 0x13, 0x04, 0xc0, 0xcf, 0x6c, 0x0b, 0x48, 0x3c,
  0xe6, 0x17, 0xca, 0xfb, 0xaf, 0x8b, 0xbc, 0x19, 0x38, 0xef, 0x02, 0x69,
  0x05, 0x41, 0xb9, 0xb6, 0xb1, 0xf1, 0x46, 0xbb, 0xb1, 0xbc, 0x1a, 0xe1,
  0x8b, 0x02, 0xe4, 0x9a, 0x5e, 0xbb, 0x7c, 0xaf, 0x5e, 0xce, 0x37, 0xd2,
  0xfc, 0xf8, 0xae, 0x8c, 0x06, 0xe4, 0x81, 0xe7, 0x0f, 0xe7, 0xe1, 0xc0,
  0x4c, 0xfc, 0x62, 0x16, 0x2f, 0x5a, 0xe9, 0x70, 0x09, 0xc2, 0xe1, 0xbc,
  0x82, 0xaf, 0x7e, 0x26, 0x2c, 0x51, 0x9b, 0xbc, 0xb8, 0x2e, 0x3f, 0xb1,
  0xbc, 0x47, 0xa0, 0x2b, 0x9a, 0xa2, 0x92, 0xf7, 0x96, 0xb5, 0xb0, 0x5f,
  0x8a, 0x77, 0x55, 0xe6, 0xce, 0x22, 0xcb, 0xab, 0x24, 0x30, 0x8b, 0x91,
  0x60, 0x8c, 0x2d, 0x01, 0xb4, 0xe2, 0xa9, 0x9b, 0xef, 0xaf, 0x77, 0x69,
  0xa0, 0x0d, 0xc5, 0x93, 0x6c, 0x51, 0x67, 0x03, 0xaf, 0x1a, 0x50, 0x85,
  0x8d, 0x4a, 0x1b, 0x24, 0x7f, 0xb2, 0x38, 0xd9, 0x24, 0x49, 0x46, 0xdd,
  0x8e, 0xa5, 0x1d, 0x23, 0x16, 0xc1, 0x4d, 0x8e, 0x3a, 0x4d, 0xaf, 0xca,

  0x32, 0x2a, 0xb6, 0x9d, 0x0c, 0x81, 0x4a, 0x03, 0x40, 0x8c, 0x1e, 0xfd,
  0xc1, 0xc2, 0x87, 0xb9, 0x60, 0x5d, 0x90, 0xe0, 0x6b, 0xa1, 0x06, 0x45,
  0x1b, 0xf4, 0x00, 0x4a, 0xdb, 0xd2, 0x8d, 0x27, 0x14, 0xc8, 0xe6, 0x58,
  0xf2, 0x02, 0xff, 0xae, 0x23, 0x8f, 0x9b, 0x16, 0x7a, 0x82, 0xbf, 0x29,
  0x51, 0x61, 0xc7, 0x09, 0x68, 0x2e, 0x2d, 0x11, 0x74, 0x03, 0xa3, 0xa9,
  0x68, 0x07, 0x34, 0x30, 0xcf, 0xbc, 0x01, 0x03, 0xf9, 0xfd, 0xe1, 0x7e,
  0x1f, 0x93, 0x67, 0x35, 0x56, 0xab, 0x5c, 0xe9, 0x3a, 0x5a, 0xe3, 0x9c,
  0x05, 0xa1, 0x2b, 0x0c, 0x20, 0x01, 0xb2, 0x5e, 0x25, 0x68, 0x7d, 0x45,
  0x4d, 0xf0, 0x7a, 0xf6, 0x7f, 0xf4, 0x5b, 0xf4, 0x3e, 0x74, 0xfc, 0xeb,
  0xbd, 0x77, 0xc6, 0x34, 0x52, 0xb4, 0xbc, 0x96, 0x79, 0x89, 0xe7, 0x2a,
  0xf1, 0x74, 0x76, 0xa7, 0x37, 0xc0, 0xb2, 0x07, 0xb3, 0xe3, 0x1c, 0x83,
  0x3c, 0x64, 0xc9, 0xc6, 0xa6, 0x5d, 0xae, 0x22, 0x0c, 0xcb, 0x5e, 0x02,
  0xcd, 0x52, 0x49, 0x1d, 0xda, 0x65, 0xfa, 0xc9, 0xf6, 0xee, 0x0b, 0xd1,
  0x57, 0x84, 0x93, 0xb2, 0x31, 0x9e, 0x4a, 0xb6, 0x26, 0x76, 0x84, 0xbe,
  0xd4, 0x16, 0x8c, 0xc8, 0x3a, 0x1b, 0x46, 0xbd, 0xfd, 0x8a, 0x59, 0x13,
  0x82, 0x9f, 0xc1, 0x92, 0x72, 0x60, 0xf8, 0x5b, 0xfc, 0xfa, 0x56, 0xb2,
  0x43, 0x5c, 0x75, 0x57, 0xb5, 0xd7, 0xb0, 0xfe, 0xd9, 0xd5, 0xd4, 0x81,
  0xfd, 0xa6, 0x75, 0x90, 0x39, 0x0b, 0xed, 0x35, 0x31, 0x46, 0x5e, 0x65,
  0x14, 0x00, 0x6a, 0xf9, 0x26, 0x95, 0x83, 0xf3, 0xf5, 0x22, 0x66, 0xe6,
  0xe0, 0x66, 0xdb, 0x66, 0xac, 0x79, 0x5d, 0xaf, 0xb5, 0x97, 0x80, 0xc3,
  0x99, 0x11, 0xd0, 0xc1, 0x85, 0x99, 0x11, 0x0a, 0x5a, 0x16, 0xdc, 0xe2,
  0x2c, 0x4a, 0xb9, 0x70, 0x0d, 0x73, 0x03, 0x73, 0x51, 0x30, 0xd9, 0x8a,
  0xe2, 0xb9, 0x69, 0x17, 0x3a, 0xdb, 0x46, 0x8d, 0xb6, 0x80, 0xba, 0xb3,

  0xe7, 0x41, 0xd2, 0xe0, 0xd6, 0xd9, 0xf9, 0xc5, 0xc9, 0xd9, 0xbb, 0x71,
  0xf2, 0x5f, 0xb7, 0x36, 0x96, 0x77, 0xb5, 0x81, 0x95, 0xbf, 0x1f, 0xb8,
  0x33, 0x49, 0x5e, 0x88, 0x9f, 0xa1, 0xcf, 0x36, 0xf6, 0x34, 0xf8, 0xa9,
  0x91, 0xde, 0x86, 0xbd, 0xea, 0x9b, 0x82, 0xed, 0x26, 0x87, 0xd5, 0x41,

  0x32, 0x08, 0xb4, 0x65, 0x1f, 0xf6, 0xc1, 0xb7, 0xa1, 0x99, 0xd7, 0x3b,
  0x93, 0xa5, 0x33, 0x7a, 0x0f, 0x07, 0x66, 0x2c, 0x92, 0x96, 0xfd, 0x82,
  0xbd, 0x93, 0xb7, 0xb0, 0xcd, 0x37, 0xa4, 0x9b, 0xe2, 0xc1, 0x1d, 0xe6,
  0x9a, 0xa2, 0x68, 0xd5, 0x61, 0x86, 0xe0, 0x57, 0xc7, 0x17, 0xbb, 0x52,
  0xe8, 0x6a, 0xe7, 0x07, 0x4f, 0x97, 0xa8, 0x3d, 0xa9, 0xd5, 0xcc, 0xb4,
  0xb4, 0x95, 0x81, 0xdc, 0x8c, 0xf6, 0xbc, 0x48, 0x8b, 0x68, 0x09, 0x1b,
  0x69, 0xb4, 0xaf, 0xcc, 0x76, 0x10, 0x1f, 0x56, 0x8e, 0xac, 0xde, 0x13,
  0xaf, 0x7f, 0x0e, 0xe3, 0x32, 0x9d, 0x7f, 0xb8, 0xc0, 0x80, 0xaf, 0x8f,
  0x4f, 0x8f, 0x2f, 0x8e, 0xbb, 0x96, 0xfb, 0x84, 0xc1, 0x2c, 0x51, 0xea,
  0xd2, 0x64, 0xd3, 0xab, 0xa2, 0x5c, 0x94, 0x97, 0xb9, 0x34, 0x7c, 0x4d,
  0xbe, 0xcb, 0x26, 0xaf, 0x5f, 0x7e, 0x4b, 0xfa, 0x04, 0x79, 0x9c, 0xce,
  0xdf, 0x9f, 0x9d, 0xbf, 0x39, 0x79, 0xf7, 0x7a, 0x90, 0xbc, 0x3a, 0x3b,
  0xff, 0xcb, 0x20, 0x79, 0x7b, 0xf6, 0xed, 0x71, 0x24, 0xc5, 0x99, 0x10,
  0x6e, 0x03, 0x8a, 0xb1, 0xad, 0xfa, 0x58, 0x9c, 0xb1, 0xe9, 0x8d, 0x36,
  0xef, 0x1d, 0x31, 0x42, 0x35, 0x00, 0x75, 0x29, 0xfc, 0xd6, 0xec, 0xdd,
  0x20, 0xf9, 0xfa, 0xf8, 0xe5, 0xeb, 0x41, 0x00, 0x60, 0x3e, 0xe6, 0x55,
  0xd1, 0xea, 0xec, 0x92, 0x01, 0x7b, 0xcd, 0xd6, 0x07, 0x74, 0x04, 0x0e,
  0x72, 0xf1, 0x95, 0x35, 0x04, 0x8b, 0x22, 0xfd, 0x59, 0x5f, 0xe6, 0x84,
  0x20, 0xf1, 0xf7, 0xb6, 0x58, 0x6e, 0x95, 0x5d, 0x40, 0x5d, 0xf3, 0x15,
  0x6d, 0x81, 0x6b, 0x42, 0x66, 0xbd, 0xd6, 0x61, 0xd9, 0xe3, 0xee, 0x41,
  0x0c, 0x1a, 0xb4, 0x90, 0x02, 0xc0, 0x8e, 0xd8, 0xf5, 0x98, 0x4a, 0x47,
  0x43, 0xf4, 0x2c, 0x32, 0x66, 0x12, 0x69, 0xd5, 0x73, 0x87, 0x12, 0x1b,
  0xd7, 0xb0, 0x55, 0x45, 0x28, 0x15, 0x4c, 0x5d, 0x80, 0x9b, 0x68, 0xfb,
  0x74, 0x8b, 0x6c, 0x53, 0xcf, 0xef, 0xf9, 0xc7, 0x2a, 0x63, 0x83, 0x4a,
  0xeb, 0xb9, 0x21, 0xcc, 0x8c, 0x53, 0xa6, 0x70, 0x46, 0xce, 0x2d, 0x90,
  0x0c, 0x4f, 0xd4, 0x29, 0xb1, 0x49, 0xc1, 0x92, 0xcb, 0x22, 0x8e, 0x19,
  0x00, 0x45, 0xa9, 0xc3, 0xaa, 0xcd, 0x23, 0xf4, 0x12, 0xea, 0xbd, 0x9b,

  0x07, 0x7c, 0x8d, 0xf4, 0x7d, 0x7b, 0xc6, 0x03, 0xdb, 0x4f, 0x5b, 0x9c,
  0x38, 0xfe, 0xbe, 0x20, 0xfb, 0xb6, 0xed, 0xcf, 0x32, 0x12, 0x36, 0x10,
  0x2e, 0xf4, 0x98, 0xe1, 0x24, 0x85, 0x38, 0x44, 0x29, 0xf0, 0x36, 0x64,
  0x4b, 0xda, 0xcf, 0xf9, 0xb5, 0x4d, 0x76, 0x45, 0x35, 0xd5, 0x29, 0x04,
  0x21, 0x2a, 0x2c, 0xd4, 0x6f, 0x31, 0xe9, 0x0e, 0xfe, 0x68, 0xff, 0xd6,
  0xf9, 0xd8, 0x49, 0x97, 0xa8, 0x93, 0xa1, 0xe0, 0x7d, 0xa3, 0x78, 0x2f,
  0xd8, 0xba, 0x9d, 0x37, 0x3d, 0x8c, 0xd1, 0xf7, 0xda, 0xda, 0x8a, 0x7e,
  0x9b, 0x6d, 0x7e, 0x7a, 0x62, 0xae, 0x43, 0x04, 0x1a, 0x67, 0x56, 0xa2,
  0x71, 0x34, 0xd2, 0x0c, 0x72, 0x15, 0x25, 0x34, 0x56, 0xf8, 0x61, 0x6a,
  0xa4, 0x1e, 0xfd, 0x32, 0x3a, 0xac, 0xdf, 0xf3, 0xe9, 0xe0, 0xcc, 0xde,
  0x1f, 0x5f, 0xbc, 0x1f, 0x25, 0x3b, 0x3e, 0xe6, 0xeb, 0x93, 0xd1, 0x7e,
  0x18, 0xb4, 0xa1, 0x26, 0xee, 0xbb, 0x89, 0xf7, 0x59, 0xf7, 0x5d, 0xf4,
  0x77, 0xdf, 0xfc, 0xdd, 0x30, 0x8f, 0xd8, 0x43, 0x7a, 0xda, 0x8f, 0x7d,
  0xcf, 0x6f, 0x14, 0xdf, 0x5a, 0x25, 0xfd, 0x62, 0xc3, 0xd7, 0xbe, 0x3e,
  0x3e, 0x3d, 0x0f, 0x57, 0xf9, 0xed, 0xfb, 0x37, 0x7f, 0x69, 0xaf, 0xf2,
  0xe8, 0x51, 0xe4, 0xab, 0xbf, 0xa4, 0x43, 0x3d, 0xab, 0xcb, 0x85, 0xd1,
  0x57, 0x50, 0xc5, 0x81, 0x22, 0x8e, 0xe7, 0x46, 0x00, 0x50, 0xae, 0xf9,
  0x5f, 0x07, 0xf2, 0x97, 0x1f, 0x47, 0xa3, 0xd1, 0x9f, 0x42, 0x54, 0x74,
  0xf8, 0x68, 0xdc, 0x7a, 0xe5, 0xe1, 0xae, 0x09, 0x8e, 0xaa, 0x19, 0x94,
  0x09, 0x51, 0xe4, 0x62, 0x95, 0xe6, 0x15, 0x95, 0x3c, 0xc6, 0x04, 0x2e,
  0xad, 0xc8, 0x15, 0x7a, 0x59, 0x6d, 0x4e, 0x00, 0xc1, 0xf8, 0xb2, 0xee,
  0xd4, 0xbb, 0x52, 0x55, 0xed, 0xd5, 0x93, 0xa4, 0xb3, 0xc0, 0x11, 0xc2,
  0xcd, 0x51, 0xf0, 0xd9, 0x8a, 0x1c, 0xb4, 0xac, 0x68, 0x3a, 0x41, 0x5b,
  0xa8, 0xf0, 0x90, 0xe5, 0xcf, 0xec, 0xf4, 0x63, 0xde, 0x0b, 0xae, 0x93,
  0x7c, 0x25, 0x11, 0x75, 0xd8, 0x5f, 0x90, 0x28, 0xe8, 0x33, 0x9b, 0x35,
  0xd3, 0x3d, 0x5a, 0x64, 0x1d, 0xf4, 0x42, 0x62, 0x25, 0x2e, 0x74, 0x22,
  0x09, 0xd6, 0x8a, 0x57, 0x42, 0xcb, 0xd9, 0x2d, 0x5e, 0x4d, 0x82, 0xab,
  0xe2, 0xf5, 0x74, 0x75, 0x75, 0x8e, 0xc4, 0x7a, 0xb8, 0xe8, 0x76, 0xdb,
  0xca, 0x11, 0xa0, 0xa7, 0x95, 0x75, 0xd3, 0x3a, 0x78, 0x7a, 0x9b, 0x6c,
  0x40, 0x6a, 0xf4, 0xcd, 0x85, 0x6a, 0xa1, 0xda, 0x0f, 0xee, 0xac, 0x94,
  0x44, 0x79, 0x14, 0x40, 0x1f, 0x9f, 0xb7, 0x7c, 0x2e, 0xea, 0xa1, 0xf3,
  0xcf, 0x5c, 0x5b, 0x9f, 0x47, 0x30, 0x9c, 0x04, 0x49, 0x5c, 0x0d, 0x78,
  0x5a, 0x68, 0x28, 0x0f, 0xff, 0xdc, 0xaa, 0x32, 0xdf, 0xfe, 0xaf, 0xdb,
  0xa4, 0x0a, 0xe3, 0xed, 0x68, 0x6d, 0xbb, 0xd2, 0x2d, 0x19, 0x36, 0x78,
  0x2c, 0xa2, 0x37, 0xb8, 0x5d, 0x51, 0xda, 0xb3, 0xe9, 0x52, 0x96, 0x7a,
  0x64, 0x09, 0xa3, 0xe4, 0xbb, 0x7c, 0x31, 0x9b, 0xa6, 0x15, 0xd2, 0xc3,
  0x42, 0xf1, 0x2a, 0x54, 0x82, 0xeb, 0x54, 0x97, 0xf8, 0xaa, 0xbb, 0x3b,

  0xda, 0x4b, 0x26, 0x4e, 0xf3, 0xb1, 0xa2, 0x1f, 0x7b, 0x1e, 0x14, 0xfc,
  0xee, 0x69, 0xda, 0x25, 0xf4, 0xa3, 0x7b, 0x4c, 0xd2, 0xae, 0xdd, 0xc2,
  0xa3, 0x7d, 0xb4, 0x1a, 0x87, 0x18, 0x3e, 0x0a, 0x63, 0x29, 0xf9, 0xea,

  0xfa, 0x11, 0xdc, 0x57, 0x4f, 0x06, 0xfc, 0xaf, 0x27, 0x0c, 0x0e, 0xd9,
  0x58, 0xe1, 0x8e, 0x6d, 0x65, 0x33, 0x86, 0xb5, 0xfe, 0x93, 0x73, 0xad,
  0x70, 0xed, 0xf2, 0xc4, 0xb1, 0x44, 0x21, 0x05, 0x1f, 0xc1, 0xcc, 0x52,
  0x0d, 0x18, 0xf3, 0x8e, 0xce, 0x96, 0xb6, 0xc4, 0xf0, 0xaf, 0xbf, 0x4e,
  0x2a, 0x82, 0x1d, 0x69, 0xea, 0x1f, 0x37, 0xd5, 0x13, 0x1b, 0x9d, 0xff,
  0xe9, 0x28, 0xd2, 0x7e, 0xdb, 0x87, 0x3e, 0x77, 0x5f, 0xb2, 0xf9, 0xbe,
  0xee, 0x73, 0x94, 0xe1, 0x8f, 0xb0, 0x1d, 0x65, 0xfd, 0x6c, 0xfe, 0xd0,
  0xb3, 0x0d, 0x1f, 0x9a, 0x03, 0xd8, 0x88, 0xce, 0xd4, 0x1a, 0x00, 0x37,
  0x4a, 0x15, 0x7e, 0x8d, 0x32, 0xf5, 0xd2, 0x7e, 0x34, 0xda, 0x7f, 0x78,
  0x86, 0xb2, 0xb3, 0xbe, 0xc9, 0xb3, 0x37, 0x93, 0x9f, 0x80, 0x4c, 0x24,
  0x45, 0xac, 0xec, 0xa3, 0xb9, 0x8d, 0x9d, 0x31, 0x08, 0x36, 0xa7, 0xc5,
  0xcb, 0xcd, 0xfa, 0x51, 0x22, 0x54, 0x19, 0xe3, 0xb0, 0x0e, 0x76, 0xe0,
  0xc4, 0xd3, 0xee, 0xf5, 0x26, 0xf0, 0x69, 0x53, 0xea, 0x08, 0x7e, 0x4c,
  0xf8, 0x0b, 0xca, 0xe7, 0x8e, 0xa9, 0x8e, 0xe9, 0xfd, 0xf1, 0x9b, 0x0f,
  0xe3, 0xe3, 0xd7, 0x80, 0xdb, 0x8c, 0xf5, 0x53, 0xca, 0xe9, 0x46, 0x73,
  0x64, 0xa2, 0x29, 0x59, 0xa9, 0x94, 0x89, 0xb4, 0x1b, 0x0e, 0x72, 0x8f,

  0x4c, 0x28, 0x64, 0x4d, 0x69, 0x0c, 0xe3, 0xb0, 0xee, 0x84, 0x55, 0x39,
  0x79, 0xf7, 0x27, 0xe0, 0x8e, 0xf0, 0xaa, 0x67, 0x19, 0x35, 0xe7, 0x7a,
  0xc1, 0x59, 0x30, 0x01, 0xa8, 0xda, 0x5b, 0x2f, 0x8b, 0xbd, 0x5e, 0x64,
  0xd9, 0x4a, 0x83, 0xfe, 0x5e, 0x37, 0x79, 0x73, 0x3e, 0xea, 0x0f, 0x84,
  0xf7, 0x19, 0xe3, 0xb2, 0xfa, 0x96, 0xf6, 0x74, 0x92, 0x82, 0xd3, 0x87,
  0xf2, 0xd5, 0x1d, 0x60, 0x40, 0x77, 0x53, 0x76, 0xf2, 0xc6, 0xaa, 0xf5,
  0x0a, 0x3f, 0x1e, 0x74, 0xd5, 0x63, 0x38, 0x72, 0x42, 0xe8, 0x31, 0x86,
  0x11, 0x63, 0x55, 0x92, 0x96, 0x7a, 0x59, 0x56, 0x66, 0xd0, 0xa5, 0x2d,
  0x56, 0x64, 0x44, 0x87, 0x7a, 0xb7, 0xdb, 0xca, 0xb1, 0x6b, 0xb6, 0x93,
  0x2d, 0x81, 0x08, 0x78, 0xc6, 0xf5, 0xdb, 0xc4, 0x15, 0x78, 0x9b, 0xe0,

  0x31, 0xa1, 0xe8, 0x20, 0x8b, 0xb4, 0xb1, 0x54, 0x5d, 0x63, 0x2f, 0x78,
  0x07, 0x43, 0x73, 0x93, 0xba, 0x8e, 0x74, 0x9d, 0x39, 0xaa, 0xba, 0x6b,
  0x34, 0x40, 0xa7, 0x4e, 0x33, 0xff, 0x2d, 0xbb, 0xb9, 0x1d, 0x1c, 0xc6,
  0x6e, 0xc0, 0x32, 0xbd, 0x85, 0x8b, 0xaa, 0x97, 0x1c, 0xc4, 0x61, 0x4b,


  0x1b, 0x42, 0xcf, 0x55, 0xcc, 0xf3, 0xc1, 0x61, 0x5d, 0xe9, 0x0b, 0x27,
  0x26, 0xd9, 0xa3, 0x16, 0xff, 0x15, 0x19, 0xde, 0x61, 0xe8, 0x11, 0x50,
  0x59, 0x32, 0x67, 0x78, 0x09, 0x53, 0x5a, 0x24, 0xd9, 0x6f, 0x3b, 0xdc,
  0x58, 0x0a, 0x1f, 0xdb, 0xa5, 0x1f, 0x2f, 0x4a, 0x8a, 0x51, 0x2a, 0x31,
  0xe0, 0xf3, 0x21, 0x64, 0x1f, 0x99, 0x09, 0x15, 0x51, 0x21, 0x32, 0xf0,
  0x6c, 0xe2, 0x0d, 0x9a, 0xd9, 0xa0, 0x58, 0x8c, 0xf0, 0xcb, 0xd8, 0x05,
  0x36, 0xb7, 0x3e, 0xb4, 0x4a, 0xde, 0x0c, 0x72, 0x58, 0x75, 0x9c, 0x8c,
  0x07, 0x18, 0xb4, 0x61, 0x95, 0x65, 0xda, 0xa8, 0xcd, 0x84, 0x9f, 0x80,
  0x7b, 0xa9, 0x69, 0x8d, 0x7c, 0x44, 0x55, 0x63, 0xb0, 0x01, 0x72, 0x35,
  0xa2, 0xb6, 0x89, 0x56, 0x04, 0x43, 0x33, 0x2d, 0xfc, 0xc9, 0xe2, 0x04,
  0xcc, 0x20, 0x79, 0x39, 0x43, 0x55, 0x14, 0x77, 0xe2, 0xe9, 0x81, 0x8f,
  0x91, 0xd9, 0x6c, 0x93, 0xab, 0xf2, 0x36, 0x5f, 0xae, 0x97, 0x78, 0x7d,
  0xc0, 0x06, 0xd8, 0x92, 0xa4, 0x96, 0x1e, 0x2a, 0xb2, 0x0b, 0x6d, 0xdb,
  0xaf, 0x98, 0x33, 0x83, 0x58, 0x1b, 0x88, 0xb6, 0xe1, 0x94, 0x1f, 0x7a,
  0x8b, 0x5b, 0x6c, 0xe0, 0xa0, 0xfe, 0x97, 0xd3, 0x67, 0xf2, 0xc2, 0x28,
  0x74, 0x7f, 0x8a, 0x44, 0xa3, 0x53, 0x9f, 0xa7, 0x0a, 0xff, 0x00, 0x65,
  0x52, 0xaa, 0x73, 0x36, 0xf3, 0x4c, 0x49, 0xa6, 0x38, 0xd2, 0xc4, 0xf8,

  0x90, 0x7a, 0x39, 0xd4, 0xc0, 0x3a, 0xbe, 0x85, 0xdc, 0x69, 0xa1, 0xce,
  0xf7, 0xcb, 0x42, 0x49, 0x88, 0x9e, 0xce, 0x4d, 0x3a, 0x8f, 0x04, 0x32,
  0x5f, 0xe1, 0x19, 0x40, 0xb4, 0xf2, 0xbe, 0xf9, 0xfc, 0xbe, 0x24, 0xc5,
  0x88, 0x7d, 0x4b, 0x1e, 0x73, 0xd9, 0x65, 0x75, 0x63, 0xb5, 0x7b, 0x85,
  0xd8, 0x70, 0x20, 0xd8, 0x06, 0x31, 0xb2, 0x0e, 0xbb, 0x64, 0xb5, 0x94,
  0xa1, 0x90, 0x9e, 0x13, 0x3b, 0xe5, 0xb3, 0x1b, 0x70, 0xb2, 0x26, 0x32,
  0x34, 0x1f, 0xdd, 0xde, 0x06, 0x14, 0xee, 0x19, 0xc4, 0x8c, 0x37, 0xc9,
  0xd6, 0xf2, 0xa3, 0x7d, 0x94, 0x39, 0x3e, 0xbe, 0xed, 0x18, 0xcd, 0xa3,
  0x38, 0x38, 0x24, 0xcb, 0x07, 0x62, 0x91, 0x93, 0x92, 0xa3, 0x70, 0xbc,
  0x69, 0x69, 0x64, 0x3b, 0x99, 0x3b, 0xdc, 0xa4, 0x39, 0x08, 0x22, 0x48,
  0x6d, 0x40, 0x2e, 0xa6, 0x6d, 0xf6, 0xaa, 0x51, 0x52, 0x34, 0x2d, 0x34,
  0x9a, 0x3f, 0x6d, 0xa5, 0xee, 0x93, 0xcd, 0x03, 0x98, 0x95, 0x6b, 0x40,
  0x61, 0x84, 0xdb, 0x45, 0x5f, 0xe1, 0xdd, 0xa7, 0x2b, 0x65, 0xe4, 0x55,
  0xbe, 0xa0, 0xd7, 0xf8, 0x62, 0xd7, 0xc9, 0x81, 0x39, 0x85, 0xbc, 0x58,
  0x37, 0x16, 0xae, 0x0f, 0xdf, 0xb4, 0xb0, 0x33, 0x91, 0xdd, 0x5f, 0x20,
  0xd1, 0x57, 0x2b, 0xe0, 0xe9, 0xf6, 0xd5, 0x5e, 0x74, 0x90, 0x6f, 0x09,
  0x34, 0x72, 0xdb, 0xd3, 0xd9, 0x97, 0xb2, 0x31, 0x57, 0x91, 0x0d, 0xc3,

  0x8a, 0x5c, 0xcd, 0x6e, 0xcd, 0x6e, 0x33, 0x8a, 0x92, 0x27, 0xd8, 0xac,
  0x48, 0x1b, 0x79, 0x5d, 0x28, 0x22, 0x99, 0x3f, 0x2d, 0x26, 0x6e, 0x9b,
  0x78, 0x81, 0xcf, 0x95, 0x8d, 0x5c, 0x49, 0xdb, 0x7c, 0x8d, 0xb5, 0xb6,
  0xf8, 0xd5, 0xe6, 0xfe, 0x69, 0x82, 0x57, 0xf3, 0xe4, 0x89, 0xad, 0x05,
  0xe6, 0x34, 0xce, 0x72, 0x69, 0x73, 0x36, 0x99, 0xb0, 0xdf, 0xe3, 0xcb,
  0x2f, 0x29, 0x62, 0xfc, 0x3c, 0x89, 0x69, 0x64, 0x4c, 0x42, 0x0a, 0x4b,
  0x6d, 0x78, 0x2f, 0x98, 0x01, 0x7c, 0xf6, 0x99, 0x02, 0x72, 0x13, 0x54,
  0x37, 0x5f, 0x55, 0xc2, 0xb2, 0x87, 0xfb, 0x1d, 0x46, 0x5c, 0x76, 0x1b,
  0x72, 0xe6, 0x98, 0xaa, 0xf3, 0x1b, 0xb2, 0xa3, 0x3a, 0x25, 0xf8, 0xc9,
  0x75, 0x73, 0xf5, 0x8f, 0x7c, 0x16, 0x85, 0x52, 0xa2, 0xbb, 0x60, 0x7e,
  0x6d, 0x0e, 0xad, 0x66, 0xef, 0x97, 0x62, 0x9b, 0x26, 0x3b, 0xf2, 0xda,
  0xee, 0x20, 0x99, 0xad, 0xe1, 0x92, 0x1b, 0xbf, 0x1c, 0x9f, 0x26, 0xe7,

  0xa7, 0x2f, 0x4f, 0xde, 0x99, 0x77, 0x86, 0xa1, 0x91, 0x6a, 0x11, 0xcb,
  0x06, 0x49, 0xb7, 0xc7, 0x18, 0xfc, 0x9d, 0x6d, 0x54, 0xb3, 0xf6, 0x87,
  0x42, 0x4c, 0xa3, 0x19, 0x84, 0x69, 0xab, 0xf6, 0x60, 0xb8, 0xd6, 0x8c,
  0xa7, 0x3e, 0x54, 0x1d, 0xbb, 0xa5, 0x9a, 0x26, 0x23, 0x79, 0xa8, 0x5e,
  0x98, 0x51, 0xee, 0xa2, 0x11, 0x5b, 0xd7, 0x0a, 0x5d, 0x11, 0x5b, 0x8d,
  0x59, 0xb9, 0x03, 0x6d, 0xe5, 0xc9, 0x9b, 0x39, 0x71, 0xcf, 0x2c, 0x43,
  0x16, 0xde, 0xd8, 0x40, 0x77, 0xeb, 0xe4, 0xb9, 0xc6, 0x9b, 0x7d, 0x23,
  0x9f, 0x93, 0x72, 0x43, 0x65, 0x97, 0x44, 0xc6, 0x7a, 0x19, 0xf9, 0x29,
  0xca, 0x86, 0x13, 0x6b, 0xa4, 0xa1, 0x6a, 0x69, 0xbb, 0x0e, 0x24, 0xf4,
  0xa4, 0xbc, 0x1d, 0x28, 0x08, 0x0d, 0x96, 0x80, 0xea, 0x26, 0x97, 0xe3,
  0x70, 0x69, 0xd8, 0x19, 0xa0, 0xa8, 0x78, 0xbc, 0xa6, 0x64, 0x94, 0x5e,
  0x02, 0xdf, 0x0d, 0x0b, 0x06, 0x96, 0x46, 0xbf, 0x35, 0x03, 0xfa, 0x7e,
  0xd1, 0x4d, 0x34, 0xf6, 0xa4, 0xd3, 0xcb, 0x1b, 0x34, 0x96, 0x77, 0x75,
  0x9c, 0x63, 0xe4, 0xd8, 0xda, 0x1c, 0x39, 0xcb, 0x9d, 0xcd, 0x10, 0xa0,
  0xa3, 0x36, 0x35, 0x6c, 0x04, 0x60, 0x3f, 0xe8, 0x7c, 0xef, 0x61, 0x28,
  0xb1, 0x3f, 0x19, 0x24, 0x96, 0x51, 0xbb, 0xfb, 0x1a, 0x5f, 0xd6, 0xcf,
  0xf1, 0x71, 0x87, 0x45, 0x1d, 0x4c, 0x85, 0x71, 0xbd, 0x50, 0xcb, 0xc4,
  0x1d, 0x4a, 0xd9, 0xb1, 0x14, 0xc1, 0xfe, 0x9a, 0xed, 0x49, 0x6a, 0xdc,
  0x7d, 0x19, 0x26, 0x0c, 0x3d, 0xab, 0x2b, 0x1f, 0x13, 0xf5, 0x53, 0x07,
  0xdf, 0x61, 0x0c, 0xc6, 0xca, 0x26, 0xcb, 0x8a, 0x9d, 0x55, 0xe3, 0x69,
  0x4a, 0x94, 0x6b, 0x84, 0xd2, 0xac, 0x1c, 0xa7, 0x31, 0x5c, 0xbe, 0x19,
  0x35, 0x40, 0x08, 0xdb, 0x25, 0x70, 0x1a, 0xc2, 0x9c, 0x9b, 0xa4, 0xea,
  0x0c, 0xbc, 0x31, 0x03, 0x3e, 0xcc, 0x3d, 0x34, 0xaa, 0xe4, 0xef, 0xeb,
  0x3c, 0x6b, 0x50, 0x8c, 0x38, 0x4a, 0x5e, 0x73, 0xba, 0xa4, 0x74, 0x1a,

  0xe5, 0x8e, 0xc6, 0x68, 0x7b, 0xcc, 0x10, 0x00, 0xfc, 0x7d, 0x9a, 0x40,
  0xc0, 0x87, 0xcd, 0x84, 0x50, 0xe5, 0xfa, 0x16, 0xb3, 0x4e, 0x5e, 0xd1,

  0xb4, 0x97, 0x46, 0x02, 0x02, 0x83, 0xc9, 0x43, 0xd7, 0xd3, 0x7c, 0x1a,
  0xad, 0x70, 0x41, 0x12, 0x77, 0xfd, 0x29, 0xac, 0x61, 0x19, 0xb4, 0x3a,
  0xb5, 0xc1, 0x97, 0x22, 0x7c, 0xa9, 0xa1, 0x36, 0x7f, 0x45, 0xba, 0xd8,
  0xab, 0x9b, 0x19, 0x69, 0x05, 0xeb, 0x62, 0x41, 0xf3, 0xa4, 0x91, 0x7a,
  0xfa, 0x86, 0x46, 0x70, 0xa8, 0x80, 0x83, 0x43, 0x27, 0xd4, 0x3a, 0x22,
  0xc9, 0x6d, 0xe9, 0xcb, 0x80, 0xf0, 0xb2, 0x9b, 0x42, 0x50, 0x2c, 0x7f,
  0xb7, 0x88, 0xe9, 0xf0, 0x7a, 0xb1, 0x97, 0xad, 0x73, 0xdb, 0x04, 0x11,
  0x72, 0x4d, 0xe7, 0x65, 0x08, 0x6d, 0x52, 0xd6, 0x0a, 0x9e, 0x6e, 0x16,
  0x69, 0x5e, 0x6f, 0xdd, 0x27, 0x40, 0xd0, 0xdd, 0x8b, 0xf2, 0xd3, 0xf6,
  0xaa, 0x71, 0xbf, 0xf4, 0x7b, 0xe1, 0x7d, 0xf8, 0x8d, 0xb0, 0xc9, 0xfc,


  0x4f, 0x06, 0xf8, 0x89, 0x23, 0x98, 0x91, 0x93, 0xc5, 0x26, 0x05, 0x4b,
  0xb6, 0x5f, 0x0b, 0xed, 0x86, 0x73, 0x21, 0xee, 0x22, 0x2d, 0x3a, 0x0d,
  0x31, 0xad, 0x05, 0x1b, 0x64, 0xba, 0x30, 0x4a, 0x50, 0xc4, 0x11, 0xa3,
  0xbd, 0x59, 0x09, 0x06, 0x6f, 0xd0, 0x15, 0xd9, 0xf5, 0x9a, 0x34, 0xf3,
  0xc5, 0x9a, 0xbe, 0xcc, 0x08, 0x72, 0x16, 0xc1, 0x4c, 0x21, 0x0d, 0xa2,
  0xa8, 0x7f, 0x16, 0x27, 0x88, 0xee, 0xa8, 0x07, 0x80, 0xa8, 0x98, 0xbe,
  0x16, 0x1b, 0xb0, 0x0b, 0xa2, 0x37, 0xea, 0x99, 0x1d, 0x79, 0x4b, 0x78,
  0x98, 0x4c, 0x00, 0x56, 0x3d, 0xc7, 0x14, 0x15, 0x79, 0xe9, 0x74, 0x04,
  0x21, 0x50, 0xba, 0xfe, 0xc4, 0x50, 0xdd, 0x6c, 0xca, 0x44, 0x6b, 0x66,
  0xaa, 0x9f, 0x28, 0x82, 0x00, 0x0a, 0x2f, 0x7c, 0x14, 0x40, 0x72, 0x38,
  0x17, 0x41, 0x3c, 0x10, 0x1d, 0x50, 0xd1, 0x58, 0x10, 0x3c, 0x87, 0xd5,
  0x69, 0x29, 0x22, 0xab, 0xf5, 0xee, 0xb5, 0xa6, 0xa4, 0xca, 0x74, 0x24,
  0x83, 0x9f, 0x5f, 0xda, 0x51, 0x90, 0x1e, 0xbc, 0xb6, 0xdb, 0x8a, 0x9b,

  0x95, 0x2d, 0x18, 0xea, 0xdf, 0x54, 0xe7, 0x7a, 0xdc, 0x6e, 0xa8, 0x27,
  0x90, 0x8e, 0x3f, 0xeb, 0x42, 0xa5, 0x0f, 0xbb, 0x51, 0x3d, 0xd5, 0x36,
  0xff, 0x6f, 0xde, 0xa8, 0x34, 0x79, 0xd8, 0x9d, 0x4a, 0xbb, 0x97, 0x2a,
  0x64, 0x4b, 0xb7, 0xbd, 0x33, 0xfe, 0x05, 0x6f, 0x19, 0x5f, 0xb3, 0x9f,
  0x74, 0xcf, 0x94, 0x28, 0xfe, 0x5f, 0xbe, 0x65, 0x9f, 0x77, 0xb4, 0x40,
  0xe0, 0xa3, 0x3e, 0xb0, 0x6f, 0x25, 0x69, 0xc7, 0xa4, 0x6b, 0xed, 0x59,
  0x28, 0xc3, 0x78, 0xe3, 0x13, 0x86, 0xde, 0x8a, 0x85, 0x2e, 0x4b, 0x3d,
  0xd9, 0xc7, 0x96, 0xe7, 0x29, 0xec, 0xc0, 0xc6, 0x81, 0x43, 0xe7, 0xad,
  0x02, 0x44, 0x23, 0xc7, 0xdb, 0xb6, 0x3a, 0x4d, 0xa4, 0x89, 0x8a, 0x2c,
  0xeb, 0xd2, 0x88, 0xf6, 0x55, 0x9e, 0x70, 0xa7, 0x76, 0x43, 0x80, 0x5f,
  0x8d, 0xc7, 0xc3, 0x97, 0xe7, 0x27, 0xf7, 0xd8, 0x5d, 0xc0, 0x85, 0x71,
  0x93, 0x8c, 0xd9, 0xcb, 0xfd, 0x69, 0x58, 0xed, 0x4f, 0x1b, 0x45, 0xb7,
  0xbb, 0xad, 0x2f, 0xeb, 0x56, 0x92, 0xb1, 0x4e, 0xc9, 0x36, 0xdc, 0x20,
  0x65, 0x5b, 0x31, 0x97, 0x91, 0x47, 0x41, 0xbe, 0x1a, 0xe2, 0x32, 0xfc,
  0x44, 0x90, 0x93, 0x0d, 0x84, 0x1d, 0x80, 0xe3, 0x24, 0x07, 0xcf, 0x9e,
  0x1c, 0x98, 0x6b, 0x71, 0xc7, 0xc0, 0x8f, 0xf2, 0xfe, 0xa3, 0xd1, 0xd1,
  0xde, 0xa3, 0xd1, 0x23, 0xe2, 0x6a, 0x2e, 0x5a, 0x2a, 0xe3, 0x1b, 0x6e,
  0x17, 0xc9, 0x4a, 0xa2, 0x69, 0xbd, 0x3b, 0x7e, 0x95, 0x70, 0xe2, 0x2a,
  0x60, 0x00, 0x3b, 0x36, 0x57, 0xc2, 0xc9, 0x33, 0xc4, 0x48, 0x47, 0xea,
  0x26, 0x66, 0x62, 0x0d, 0x9c, 0x14, 0xc1, 0x76, 0x24, 0x6a, 0x4b, 0x00,
  0x98, 0xa2, 0xb0, 0x33, 0x21, 0x7e, 0xc7, 0x66, 0x85, 0xec, 0x8c, 0xf9,
  0x4d, 0x58, 0x81, 0xe6, 0xed, 0x89, 0xb7, 0x63, 0xf7, 0xa4, 0x97, 0x3f,
  0xea, 0x3f, 0x1f, 0x35, 0x5f, 0x7a, 0x0c, 0x20, 0xe7, 0xb9, 0x0f, 0xec,
  0x1c, 0xe1, 0x87, 0xd6, 0x28, 0xad, 0x93, 0x6a, 0xba, 0xb4, 0x26, 0xc9,
  0xfc, 0xef, 0xb3, 0x62, 0xf4, 0x53, 0xed, 0xa9, 0x88, 0x42, 0xdc, 0x36,
  0x9b, 0x78, 0xee, 0xc2, 0xa8, 0xc5, 0x5c, 0xea, 0x5b, 0x11, 0x9b, 0x48,
  0x5d, 0x0f, 0x19, 0x08, 0x80, 0xee, 0x32, 0x1b, 0x50, 0xde, 0x40, 0x76,
  0xf4, 0x4d, 0x83, 0x47, 0x0c, 0x72, 0xf7, 0xad, 0xbd, 0x2a, 0x4b, 0x17,
  0xf2, 0xa2, 0x98, 0x6e, 0x40, 0x0c, 0x0e, 0x7e, 0x39, 0x47, 0x7b, 0xb9,
  0x3a, 0x00, 0x68, 0x63, 0x84, 0x73, 0x0b, 0x8f, 0xc8, 0x4f, 0xdb, 0x34,
  0x2d, 0xaf, 0x91, 0x4b, 0x65, 0xc4, 0x49, 0xbe, 0x4a, 0x17, 0xc9, 0x03,
  0x6a, 0x0b, 0xfa, 0x0f, 0xff, 0x5e, 0x7e, 0xe7, 0xd8, 0x45, 0xc8, 0xe5,
  0x6c, 0x21, 0xbf, 0x26, 0x90, 0x76, 0xa5, 0xaa, 0x70, 0x90, 0x16, 0x9f,
  0xeb, 0x19, 0x90, 0x92, 0xdd, 0x85, 0x9d, 0x39, 0x14, 0xa8, 0x6e, 0x02,
  0x8d, 0xb1, 0x24, 0x15, 0x11, 0x91, 0x1c, 0x72, 0x2e, 0x96, 0xa6, 0x83,
  0x4a, 0xd5, 0xeb, 0xee, 0x48, 0xcd, 0xa8, 0x4d, 0xcc, 0xdd, 0xb2, 0xc4,
  0x7b, 0x59, 0xef, 0x2f, 0xc1, 0x0c, 0x49, 0x85, 0x63, 0x3f, 0xc3, 0x4f,
  0xc5, 0x40, 0xf5, 0x85, 0x45, 0xb2, 0x83, 0x44, 0x10, 0x5b, 0xc5, 0x48,
  0x3f, 0xd2, 0xd4, 0x82, 0xd0, 0x59, 0x64, 0xa3, 0xc6, 0xbb, 0xa3, 0x87,
  0x80, 0x45, 0x0f, 0x04, 0x17, 0xda, 0x42, 0x41, 0x07, 0x7c, 0xf6, 0xff,
  0x09, 0x35, 0xf0, 0x71, 0x62, 0xcf, 0xea, 0x21, 0xda, 0x20, 0x23, 0xab,
  0x73, 0xbf, 0xf1, 0x00, 0xfa, 0xce, 0x99, 0x5c, 0xff, 0xbf, 0x36, 0xf8,
  0x7f, 0x92, 0x36, 0xf8, 0x93, 0x6f, 0x69, 0xeb, 0x92, 0x0e, 0x25, 0xb3,
  0xd9, 0xde, 0x4b, 0x77, 0x13, 0xe3, 0x05, 0x07, 0x8b, 0xbb, 0x07, 0x5e,
  0xd0, 0xee, 0x0d, 0x4d, 0x42, 0x52, 0xf8, 0x7f, 0xe3, 0x8a, 0x3e, 0xe8,
  0x66, 0xfe, 0xff, 0xbe, 0x8f, 0xff, 0xdd, 0xee, 0x61, 0xbf, 0x36, 0xb8,
  0x63, 0x88, 0xec, 0x86, 0xb2, 0xf6, 0xb8, 0xd7, 0x19, 0xec, 0xec, 0x5d,
  0xa7, 0xf9, 0x50, 0x3d, 0x1e, 0xef, 0xdd, 0xc9, 0xf9, 0xb7, 0x4f, 0x18,
  0x81, 0x67, 0xdc, 0x4d, 0x66, 0xa9, 0x92, 0xd3, 0xd7, 0x2f, 0xcf, 0x7f,
  0xc2, 0x6d, 0xff, 0x0b, 0xbc, 0xd0, 0xab, 0x2c, 0x9b, 0x0d, 0x39, 0x6e,
  0xf8, 0x02, 0xff, 0x88, 0x04, 0xdc, 0x53, 0x8b, 0xb0, 0x01, 0xb2, 0xa5,
  0x70, 0x62, 0x98, 0xc6, 0x80, 0x97, 0x8d, 0x9a, 0x52, 0x08, 0xe6, 0xcd,
  0x0a, 0x2d, 0x01, 0x03, 0x1f, 0x4b, 0x59, 0xcc, 0x76, 0xb9, 0xd0, 0x0f,
  0x5f, 0x06, 0xa9, 0x48, 0xf6, 0x09, 0xdd, 0xef, 0x4b, 0x42, 0xc5, 0xb3,
  0xc0, 0xa1, 0xde, 0x33, 0x8a, 0x04, 0x1d, 0x4d, 0x86, 0xba, 0x73, 0x4b,
  0xe1, 0x90, 0x27, 0xa3, 0xd7, 0x1d, 0xed, 0x93, 0xff, 0x1d, 0x5c, 0x24,
  0x6b, 0x7e, 0x45, 0xb4, 0x8d, 0xee, 0xe7, 0xfb, 0xd2, 0x69, 0x36, 0x6e,
  0xa5, 0x7f, 0x12, 0xad, 0x1d, 0xa4, 0x08, 0x39, 0x87, 0x0e, 0x83, 0x2e,




  0xe5, 0xde, 0x37, 0x39, 0x81, 0x84, 0xe7, 0x6b, 0x3f, 0xd1, 0xde, 0xcd,
  0x93, 0xb9, 0xff, 0x42, 0x60, 0x51, 0xdb, 0x9a, 0xb4, 0xcc, 0x1a, 0xd4,
  0x49, 0x6b, 0x56, 0xae, 0x62, 0xe0, 0x40, 0xbd, 0xfb, 0xae, 0xb4, 0xe0,
  0x2f, 0x61, 0x36, 0xa5, 0xf7, 0xee, 0xe6, 0x14, 0xc0, 0xb2, 0x68, 0x2a,
  0x6a, 0x31, 0xa2, 0xd9, 0x03, 0x8a, 0x34, 0x6f, 0xf8, 0xa2, 0x5f, 0xfb,
  0x9f, 0xa2, 0x52, 0x20, 0xc1, 0xae, 0x85, 0xed, 0x36, 0xf9, 0x7e, 0x27,
  0x59, 0x33, 0x1d, 0xb9, 0xb3, 0x05, 0x84, 0xa1, 0xf9, 0xe5, 0xd4, 0x28,
  0xb9, 0xda, 0x93, 0x7a, 0x90, 0x70, 0x82, 0x07, 0x99, 0x3c, 0x3d, 0xbe,
  0x0a, 0xcd, 0x84, 0xf9, 0xf5, 0xdb, 0xb3, 0x6d, 0xee, 0x7f, 0x18, 0x42,
  0x48, 0xa8, 0x79, 0x62, 0xd9, 0x42, 0x6a, 0xd8, 0x19, 0x90, 0x17, 0xd0,
  0x24, 0x99, 0x02, 0xc1, 0xf3, 0x45, 0x7a, 0x23, 0x45, 0x30, 0x5d, 0x7e,
  0x3f, 0x3e, 0x3d, 0xe2, 0x8c, 0xdf, 0x8b, 0xd3, 0xb1, 0x8f, 0x9f, 0x5f,
  0x23, 0x18, 0x8f, 0x0a, 0xc8, 0x3f, 0x1f, 0xbf, 0x1c, 0x5f, 0x8c, 0x22,


  0x6b, 0x0c, 0x13, 0xa6, 0x5c, 0x41, 0x34, 0x01, 0x9b, 0x2d, 0xd2, 0x3b,
  0x42, 0xcf, 0x94, 0xba, 0x4a, 0x9a, 0x1b, 0x4f, 0x4d, 0xc7, 0x26, 0x33,
  0x97, 0x3b, 0xc8, 0x20, 0xe5, 0x2e, 0x4c, 0x49, 0x32, 0x7b, 0x37, 0xc9,
  0x17, 0xb4, 0x02, 0x33, 0x2d, 0x63, 0x0c, 0x2d, 0xa5, 0x68, 0x02, 0x55,
  0xfa, 0xe5, 0x82, 0x12, 0x09, 0xe8, 0x3b, 0x6d, 0x4f, 0x04, 0x25, 0x24,
  0x0b, 0x74, 0x41, 0x7f, 0x21, 0xb2, 0xd1, 0x3b, 0x4a, 0x6a, 0xff, 0x64,
  0xe7, 0xaa, 0x7b, 0xc5, 0x51, 0x67, 0xaf, 0x61, 0x1f, 0x75, 0xa8, 0x27,
  0x10, 0x97, 0x30, 0xdd, 0x3b, 0xad, 0x3f, 0x69, 0x64, 0x17, 0x6d, 0x45,

  0x29, 0x68, 0xbc, 0x31, 0xe7, 0xb4, 0x6b, 0x09, 0x99, 0x83, 0x46, 0x4d,
  0x3c, 0x55, 0x47, 0x05, 0xc5, 0x11, 0xe4, 0x00, 0x28, 0xb2, 0xc5, 0xee,
  0x86, 0x13, 0xd7, 0xc4, 0x11, 0xbf, 0xed, 0x29, 0x8d, 0x16, 0xef, 0xb5,
  0x96, 0x4c, 0xaf, 0x32, 0x23, 0x45, 0x46, 0x1e, 0xb2, 0xc3, 0x83, 0x37,
  0xe4, 0xb3, 0x00, 0xfe, 0x2f, 0xb2, 0x3d, 0x3f, 0x79, 0x43, 0x1e, 0x3d,
  0x0a, 0x37, 0xa4, 0xca, 0xfe, 0x3e, 0x8b, 0x61, 0xa1, 0xa3, 0x02, 0x05,
  0xe5, 0x2f, 0x5c, 0x36, 0xf2, 0x9e, 0x01, 0xdd, 0x69, 0xaa, 0x7b, 0xd4,
  0xd2, 0x48, 0xf3, 0xe8, 0x1d, 0x98, 0x1e, 0x19, 0xd8, 0x14, 0x80, 0x0c,
  0xdb, 0xb1, 0x2b, 0xea, 0xa6, 0xd7, 0x7f, 0x33, 0x8f, 0xc3, 0x81, 0x48,
  0x76, 0xb3, 0x7c, 0x64, 0x23, 0xcb, 0xa2, 0x54, 0x16, 0x34, 0xc6, 0xa1,
  0x1a, 0x53, 0x7b, 0x77, 0x86, 0xc3, 0x79, 0xb3, 0xb2, 0x0b, 0xdb, 0x48,
  0x1d, 0xfb, 0xc1, 0x66, 0xf4, 0x2c, 0xfd, 0xa2, 0xd2, 0x06, 0x41, 0x9b,
  0x57, 0x1f, 0x66, 0x5b, 0x52, 0xd7, 0x1d, 0xed, 0xe4, 0x0e, 0xe0, 0x32,
  0x69, 0xa3, 0xfe, 0xd0, 0x8d, 0x08, 0x99, 0x07, 0xb6, 0xa5, 0xd5, 0x59,
  0x5a, 0xd7, 0x2b, 0x2c, 0x5c, 0x83, 0xa3, 0xb2, 0x03, 0x98, 0xa9, 0x14,
  0x34, 0x04, 0xb7, 0xbd, 0xa0, 0xb2, 0xda, 0xeb, 0x6c, 0x81, 0x72, 0xc3,
  0xac, 0x98, 0x56, 0x77, 0x2b, 0x1f, 0xbc, 0x7f, 0x76, 0x8f, 0x06, 0x7f,
  0xcf, 0x09, 0xb4, 0x6a, 0x83, 0x0e, 0x0c, 0xaf, 0xdb, 0x0d, 0xf5, 0xaf,
  0x54, 0x19, 0x3c, 0x1b, 0x27, 0x50, 0xbc, 0x1b, 0xbf, 0x54, 0x80, 0x0c,
  0x19, 0x65, 0xdc, 0x8c, 0x9f, 0x29, 0x88, 0x85, 0xc9, 0x3c, 0x74, 0x20,
  0xd3, 0xd6, 0xda, 0x4a, 0x80, 0x07, 0x9f, 0xfc, 0xe1, 0x80, 0xf7, 0xeb,
  0xfa, 0x30, 0xe0, 0x09, 0xe3, 0xd3, 0x5d, 0x82, 0xa7, 0xae, 0x08, 0x2e,
  0xa6, 0xe5, 0x96, 0xa2, 0x0b, 0xab, 0x0d, 0xca, 0x0e, 0xd9, 0x1b, 0xe5,
  0xb7, 0x6b, 0x66, 0x25, 0x3b, 0x48, 0xa1, 0x42, 0x69, 0x38, 0xdf, 0x75,
  0x2e, 0xd1, 0x1d, 0x1b, 0xbe, 0xca, 0x79, 0x8d, 0xed, 0x76, 0xaa, 0xb6,
  0xea, 0x99, 0x9e, 0xbe, 0x3e, 0xec, 0x05, 0xa2, 0x1f, 0xc9, 0xef, 0x51,
  0xc2, 0x3e, 0xcb, 0x80, 0xe5, 0xae, 0x58, 0x9a, 0x54, 0xc1, 0xc5, 0xd4,
  0x86, 0xbc, 0x5e, 0xf2, 0x4e, 0x3f, 0x39, 0x78, 0xfa, 0x64, 0x37, 0x1a,
  0x64, 0x67, 0x62, 0xa2, 0xd2, 0xc6, 0xa6, 0x59, 0x51, 0x81, 0xae, 0x90,
  0x11, 0xfd, 0xf3, 0x70, 0xe4, 0xef, 0x51, 0xd8, 0xdd, 0xa4, 0x2b, 0x92,
  0x8a, 0x19, 0x11, 0x04, 0x6d, 0x83, 0x76, 0x7b, 0x20, 0x42, 0xb1, 0x7d,
  0x62, 0xf5, 0x8e, 0x83, 0x90, 0x43, 0x93, 0x30, 0x40, 0xa2, 0x87, 0x89,
  0x38, 0x3c, 0xd2, 0x09, 0x1c, 0xf1, 0xcc, 0xbc, 0xf6, 0x9c, 0x3c, 0x53,
  0xfc, 0x7d, 0xd4, 0xfe, 0x97, 0x1f, 0xcc, 0x74, 0x03, 0xfc, 0xbc, 0x53,
  0x3e, 0xfa, 0xb5, 0x4f, 0xf9, 0xe8, 0x9e, 0x53, 0x3e, 0x7a, 0xe8, 0x29,
  0x3f, 0x7d, 0xfc, 0xe4, 0xf3, 0x9f, 0x77, 0xca, 0xde, 0x26, 0xff, 0xaf,
  0x39, 0x65, 0x8f, 0xcc, 0x7e, 0xde, 0x29, 0x4b, 0x52, 0x48, 0xb7, 0x20,
  0x53, 0x92, 0x5f, 0xb8, 0x9c, 0x96, 0xb0, 0x34, 0x38, 0x23, 0x99, 0x1f,
  0x0e, 0x0b, 0xad, 0xa4, 0xfb, 0x24, 0x77, 0xbd, 0x33, 0x6a, 0x58, 0xc4,
  0xc8, 0x76, 0xc0, 0x1e, 0xd0, 0x6f, 0x57, 0x0b, 0x6a, 0x9e, 0xb6, 0x3d,
  0xdc, 0xd6, 0xd0, 0xb5, 0x96, 0x4f, 0x2a, 0x2e, 0x16, 0x7f, 0xcd, 0x1c,
  0xf6, 0x6f, 0x88, 0xaa, 0x16, 0xe6, 0xcc, 0x78, 0x59, 0x4f, 0xed, 0x4d,
  0xbb, 0x5b, 0x18, 0x33, 0x81, 0x33, 0x90, 0xa2, 0xd9, 0x6f, 0xb5, 0xa6,

  0x0e, 0x32, 0xb4, 0x93, 0x7a, 0x69, 0x26, 0x46, 0x27, 0x34, 0x22, 0xa0,
  0xa0, 0x9c, 0x9e, 0xbb, 0x45, 0x26, 0x15, 0xc4, 0xb4, 0x66, 0xf8, 0xe4,
  0xc9, 0x94, 0xef, 0xba, 0x84, 0xa5, 0x57, 0x90, 0x05, 0xd4, 0xd3, 0x9c,
  0xa5, 0x91, 0x84, 0x0d, 0x8d, 0x82, 0xd6, 0x9a, 0x0e, 0x76, 0xce, 0x5c,
  0x14, 0x8e, 0x3b, 0x2c, 0x23, 0x60, 0x3f, 0x9b, 0x12, 0xfc, 0xba, 0x09,
  0x77, 0x3d, 0xbd, 0x89, 0x62, 0x09, 0x68, 0x41, 0x9b, 0x2a, 0x7b, 0x34,
  0x0c, 0xb3, 0x66, 0x5b, 0x27, 0xd9, 0xf2, 0x04, 0xd8, 0xc7, 0x54, 0x9b,
  0x10, 0x14, 0x22, 0xa3, 0x94, 0x5a, 0xd6, 0xa3, 0xbd, 0xa0, 0xbc, 0xd7,
  0xdb, 0xb9, 0xba, 0xf5, 0x3d, 0x35, 0x33, 0x94, 0x77, 0xde, 0x78, 0x6d,
  0x31, 0xc5, 0xfa, 0x7b, 0x4d, 0xd3, 0x9d, 0xad, 0x97, 0x2b, 0x85, 0x42,
  0xa4, 0xf2, 0xa6, 0x1c, 0x69, 0x5c, 0x8a, 0x86, 0xc0, 0x39, 0xd7, 0x11,
  0x37, 0x9a, 0xad, 0x76, 0xb2, 0x19, 0x6e, 0xec, 0xb3, 0xd2, 0xd3, 0x92,
  0x7a, 0x7e, 0x5e, 0x01, 0x12, 0xd7, 0x2c, 0x06, 0x5b, 0x90, 0x7a, 0x40,
  0xf7, 0xcc, 0x4c, 0x7b, 0x96, 0x4d, 0xd6, 0x97, 0x8a, 0x28, 0x60, 0xdb,
  0xdb, 0xb5, 0x69, 0x12, 0x05, 0x58, 0x84, 0x30, 0x94, 0x0d, 0x38, 0x8d,
  0x2e, 0x2d, 0xee, 0x42, 0x70, 0x95, 0x86, 0x5a, 0x3b, 0x4e, 0x37, 0x25,
  0x87, 0x05, 0x4b, 0x07, 0xb1, 0xe7, 0x03, 0x6f, 0xe9, 0xf8, 0x49, 0xeb,
  0x44, 0x23, 0xad, 0xb3, 0x7c, 0x52, 0x69, 0xa6, 0xab, 0xe1, 0x3c, 0x25,
  0x68, 0xd2, 0xa0, 0xb0, 0x5c, 0x12, 0x42, 0xe5, 0x0e, 0x5c, 0xbc, 0x3a,

  0x4f, 0xde, 0xa4, 0xd2, 0x6e, 0x28, 0xd9, 0x31, 0x1c, 0xf8, 0xe9, 0xa3,
  0x83, 0xa3, 0xdd, 0x8d, 0x7a, 0x78, 0x1b, 0x6e, 0x0b, 0xdf, 0x2a, 0xca,
  0x58, 0xc2, 0xfa, 0xc5, 0xda, 0x18, 0xcd, 0x02, 0xe3, 0x63, 0x3e, 0xf4,
  0xf1, 0xdd, 0xd9, 0xeb, 0xe3, 0xd3, 0x97, 0x7f, 0xb1, 0x80, 0x11, 0xb4,
  0x07, 0x5a, 0x79, 0xfc, 0xd1, 0x58, 0xaf, 0x77, 0x1f, 0xeb, 0xcc, 0x4c,
  0xb9, 0xd9, 0x39, 0xda, 0x05, 0xb0, 0x43, 0xd0, 0x14, 0xf2, 0x32, 0x6b,
  0xa1, 0x6d, 0x48, 0xf5, 0xc0, 0x06, 0xc0, 0xa8, 0xb1, 0xed, 0x29, 0xba,
  0x3f, 0x32, 0xec, 0x59, 0xd2, 0x2e, 0xb9, 0x71, 0x82, 0x23, 0x52, 0xaf,
  0x73, 0x4a, 0x2a, 0x98, 0x72, 0x02, 0x9d, 0x10, 0xb4, 0x1e, 0x5a, 0x2d,

  0xf2, 0x69, 0x4e, 0xd6, 0x8a, 0xdc, 0x6a, 0xaa, 0x4a, 0x98, 0xcf, 0xdb,
  0xb0, 0x94, 0x28, 0xde, 0x45, 0xb9, 0xc2, 0x46, 0x67, 0x5a, 0x9b, 0xf7,
  0x37, 0x10, 0x16, 0xd9, 0xa2, 0xc8, 0x9a, 0xa1, 0x4c, 0xeb, 0x85, 0xf9,
  0xf3, 0x8b, 0xeb, 0x74, 0x11, 0x94, 0x84, 0x53, 0x4f, 0x45, 0xa5, 0x4d,
  0x9b, 0x3c, 0x49, 0x6f, 0x7a, 0x2d, 0x57, 0xc6, 0xb6, 0xf3, 0x88, 0x3e,
  0x69, 0xae, 0x4a, 0xd0, 0x61, 0xe4, 0xe2, 0xe2, 0x2f, 0xe7, 0xc7, 0x5f,
  0xbc, 0x20, 0x36, 0xf6, 0x27, 0xaa, 0x3d, 0xa9, 0x5b, 0x5c, 0x2d, 0xa1,
  0x1e, 0xee, 0xc1, 0x1a, 0xbe, 0x7f, 0x7d, 0x32, 0x3e, 0x3f, 0x3d, 0x7b,
  0xf5, 0xc5, 0x8b, 0xef, 0xc9, 0xa6, 0x34, 0xc2, 0xe3, 0xce, 0x7b, 0xd7,
  0xfe, 0xcc, 0x36, 0x51, 0x08, 0x01, 0x45, 0x8e, 0xbf, 0xfb, 0x78, 0xfc,
  0xee, 0xdb, 0x2f, 0x5e, 0x5c, 0xa7, 0xd5, 0x80, 0xd6, 0xc7, 0x6f, 0xf7,
  0xb4, 0x2c, 0x6d, 0x91, 0x1a, 0x29, 0xe7, 0x93, 0xc5, 0xa7, 0x3a, 0xff,
  0x47, 0x96, 0x98, 0xd7, 0x17, 0xeb, 0x10, 0xc6, 0xfc, 0x42, 0xda, 0x60,

  0x19, 0xe9, 0x4d, 0xe6, 0xd0, 0x9f, 0x4f, 0xbf, 0x21, 0xa8, 0x5c, 0xeb,
  0x28, 0x5d, 0x72, 0xdf, 0xa5, 0xe4, 0x4f, 0x8f, 0x0f, 0x0e, 0x77, 0x5d,
  0xb7, 0x4f, 0x40, 0x6d, 0x9b, 0x19, 0x7f, 0x0a, 0xaa, 0xa6, 0xfe, 0xa1,
  0x90, 0x81, 0xb6, 0x9c, 0xa1, 0x71, 0x16, 0x15, 0x57, 0x1f, 0x88, 0xd7,

  0x09, 0xc9, 0xf9, 0x0c, 0xe2, 0x53, 0x12, 0x43, 0xa0, 0xac, 0xf5, 0xc0,
  0xe3, 0x76, 0xf1, 0xc6, 0x03, 0xb9, 0xf9, 0xb3, 0x23, 0x3c, 0x33, 0x1d,
  0xf1, 0xda, 0x6d, 0x94, 0x8f, 0xbf, 0x62, 0x2c, 0xa7, 0x6b, 0x52, 0x62,
  0xb3, 0x8d, 0x40, 0x13, 0xfa, 0x89, 0xef, 0xb3, 0x17, 0xf3, 0x46, 0x05,
  0x58, 0xc9, 0xb0, 0x8c, 0x58, 0xa5, 0x12, 0x9e, 0x62, 0x0a, 0x6c, 0x34,
  0x88, 0xf3, 0x25, 0x15, 0x1e, 0x53, 0x99, 0x0e, 0x3b, 0x77, 0x3c, 0xd7,
  0xcd, 0x22, 0xbb, 0x4c, 0xa7, 0x77, 0x89, 0x05, 0x98, 0x96, 0x7c, 0xfb,
  0x59, 0xf7, 0x76, 0xb2, 0x8f, 0x6f, 0x4a, 0xb6, 0x9c, 0x91, 0xc0, 0x84,
  0xfb, 0x41, 0x5c, 0x99, 0xb1, 0x54, 0xa8, 0x50, 0x53, 0xfd, 0x3e, 0xad,
  0xd9, 0x8d, 0x58, 0x5e, 0xd2, 0xa6, 0x76, 0xa5, 0x73, 0x7b, 0x8b, 0x3b,
  0xd4, 0x47, 0x64, 0x83, 0x5e, 0xc4, 0x1b, 0xf7, 0xf4, 0x51, 0xdb, 0x63,
  0xfe, 0x0f, 0x5c, 0x72, 0x42, 0xe1, 0x82, 0x53, 0xf6, 0x05, 0xfd, 0xb5,
  0x17, 0x87, 0x9f, 0xbd, 0x16, 0xdc, 0x6d, 0xda, 0x21, 0x57, 0xda, 0xd2,
  0x02, 0x69, 0x6c, 0x43, 0xa5, 0xf2, 0x8d, 0xba, 0x80, 0x7b, 0x31, 0xee,
  0xb4, 0xd2, 0x95, 0x3c, 0xc1, 0xe6, 0x71, 0xdb, 0xeb, 0xaa, 0x67, 0x48,

  0x5b, 0x9c, 0x19, 0x86, 0x68, 0x50, 0x18, 0x48, 0xa9, 0x08, 0x2f, 0x68,


  0x20, 0xe2, 0x88, 0xa4, 0x92, 0x98, 0x8d, 0xfa, 0x93, 0x06, 0x7d, 0x52,
  0x1f, 0x06, 0x08, 0x0f, 0x31, 0x94, 0x0c, 0x29, 0xd1, 0x55, 0x34, 0xbb,
  0x5d, 0xfd, 0x06, 0x9c, 0xa0, 0x41, 0x01, 0x35, 0x0b, 0x2b, 0x6d, 0x26,

  0x59, 0xab, 0x56, 0x4a, 0x35, 0x90, 0x30, 0xd2, 0x1d, 0xf0, 0x6c, 0xac,
  0x4d, 0xab, 0x56, 0xec, 0x29, 0x1c, 0x38, 0xaf, 0x4a, 0x92, 0x11, 0x30,
  0x9f, 0x9d, 0x25, 0x2d, 0x63, 0x57, 0xca, 0x4a, 0xb8, 0x17, 0x44, 0xd2,
  0xd7, 0xb0, 0xbd, 0x23, 0xa6, 0xcc, 0xa8, 0x34, 0x06, 0x89, 0x28, 0x23,
  0xa1, 0x20, 0x93, 0x18, 0x96, 0xa1, 0xb3, 0x1d, 0x91, 0xea, 0xe3, 0x86,
  0x93, 0xf8, 0xbb, 0x22, 0x8a, 0x40, 0xc5, 0x35, 0x71, 0xbe, 0x35, 0x82,
  0xdf, 0x8d, 0x6e, 0x67, 0xb8, 0x6b, 0x21, 0x04, 0xf2, 0xc6, 0x2a, 0x6d,
  0x11, 0xc8, 0x9d, 0xc4, 0x22, 0x9f, 0x5b, 0xe8, 0x36, 0xf6, 0x7d, 0x4a,
  0xbc, 0x25, 0x13, 0x92, 0xa0, 0xaf, 0xed, 0x71, 0xed, 0xa7, 0xf2, 0xa0,
  0x3c, 0x2c, 0x3d, 0x0f, 0xc6, 0x2a, 0xb2, 0x1b, 0x7f, 0x2c, 0x67, 0x76,
  0xd8, 0xf1, 0x7e, 0x4d, 0x6f, 0xb7, 0xb1, 0x99, 0xa8, 0x5e, 0x2d, 0x79,
  0xf1, 0xed, 0xf1, 0xfb, 0xf1, 0xc9, 0xd9, 0xbb, 0x3f, 0x45, 0xcd, 0x61,
  0xf9, 0xa5, 0x6d, 0xf4, 0xa6, 0x95, 0xae, 0xae, 0x1b, 0x17, 0x79, 0xc1,
  0xd4, 0xd7, 0xc2, 0xa0, 0x47, 0x79, 0x41, 0x8f, 0x04, 0x5d, 0xbe, 0xa6,
  0xd9, 0xaa, 0xe1, 0x72, 0x3b, 0x35, 0xa5, 0x5d, 0x47, 0x51, 0x4a, 0x1c,
  0x64, 0x23, 0x6e, 0x7f, 0xa0, 0x7f, 0x3b, 0xb0, 0x7f, 0x3b, 0x0c, 0xa9,
  0x9d, 0x7f, 0x71, 0x14, 0x6c, 0x50, 0x3c, 0x61, 0xc7, 0x8b, 0x97, 0xaf,
  0x57, 0x5c, 0x23, 0x49, 0x58, 0x26, 0x8c, 0x7c, 0xe4, 0x2f, 0x20, 0xe8,
  0xdb, 0x40, 0x0d, 0x7f, 0xfd, 0x17, 0xcd, 0xc3, 0xd7, 0x07, 0x5e, 0x05,
  0x8b, 0x7d, 0xee, 0x20, 0xf6, 0xdc, 0x41, 0xf8, 0xdc, 0x61, 0xec, 0xb9,
  0xc3, 0xf0, 0xb9, 0xa3, 0xd8, 0x73, 0xde, 0x7a, 0x3d, 0xc7, 0x9f, 0x6c,
  0xdc, 0x26, 0xcb, 0xb8, 0xf5, 0xaf, 0xa3, 0x91, 0x3b, 0xfe, 0xcf, 0xac,
  0xb7, 0xa2, 0xdb, 0xaa, 0xf6, 0x27, 0x19, 0xf6, 0xca, 0xa7, 0x75, 0x38,
  0xa3, 0x25, 0x76, 0x5c, 0xcc, 0xe6, 0x7b, 0x07, 0x47, 0xc3, 0x69, 0xbe,
  0xba, 0x22, 0xb9, 0xf3, 0x42, 0x3b, 0xbb, 0xd1, 0xe6, 0xd3, 0x62, 0xe5,
  0x17, 0x6b, 0xb2, 0xc8, 0x43, 0x3d, 0xe4, 0x74, 0xec, 0xc3, 0x15, 0x09,
  0x42, 0x27, 0xde, 0x48, 0xf8, 0x15, 0x07, 0x56, 0xd4, 0xf5, 0x2f, 0x87,
  0x30, 0x61, 0x79, 0x93, 0x58, 0xef, 0x0d, 0x39, 0x7a, 0x64, 0x0a, 0x4c,
  0xbc, 0x3a, 0x2f, 0x9d, 0xa8, 0x0c, 0xcf, 0x1d, 0x13, 0x39, 0xf4, 0xde,
  0x75, 0xed, 0xa2, 0xc5, 0x85, 0x3c, 0x2f, 0x10, 0x77, 0xd4, 0x99, 0xad,
  0xe8, 0xac, 0x8d, 0x87, 0x72, 0xf0, 0x76, 0x28, 0x9e, 0x09, 0x45, 0xe5,
  0x87, 0xf7, 0xa7, 0x81, 0x6a, 0x99, 0x90, 0x5f, 0xa6, 0x7e, 0xbe, 0xb7,
  0x87, 0x0e, 0xe3, 0x57, 0xe9, 0xed, 0xed, 0xa8, 0xce, 0xf6, 0x0c, 0x3f,
  0xa9, 0xf7, 0xe0, 0xf0, 0x95, 0x6f, 0x5f, 0x35, 0xcb, 0xc5, 0x66, 0x47,
  0x6d, 0xce, 0x7e, 0x2d, 0x69, 0x08, 0xcf, 0xbc, 0x03, 0xc8, 0x0b, 0xad,
  0x26, 0xbf, 0xf6, 0x88, 0xc3, 0x52, 0x2f, 0xe9, 0xa4, 0x8a, 0x3e, 0xce,
  0x07, 0x24, 0xf9, 0x20, 0x31, 0x11, 0xce, 0x44, 0x1c, 0x02, 0x70, 0xc8,
  0x9c, 0xf9, 0xe0, 0xb0, 0x73, 0xe8, 0x05, 0x2a, 0xa7, 0xcd, 0x82, 0x70,
  0x86, 0x45, 0xc9, 0xa9, 0x80, 0x88, 0x0f, 0x67, 0x41, 0x6c, 0xd7, 0x6a,
  0x3f, 0xf0, 0x81, 0x58, 0x21, 0x2f, 0x39, 0xaa, 0x66, 0xfc, 0xca, 0x4c,
  0x93, 0x52, 0xf2, 0x48, 0x99, 0x37, 0x2a, 0x87, 0xf9, 0xef, 0x9f, 0xc2,
  0xa2, 0x73, 0xac, 0xa0, 0x9b, 0xb8, 0x47, 0xda, 0x3f, 0x95, 0x7c, 0xf1,
  0xd6, 0xf3, 0xd7, 0x5a, 0x0d, 0x32, 0x80, 0xba, 0x14, 0x87, 0x06, 0xc0,
  0xb1, 0x6d, 0x8d, 0xdf, 0x9f, 0x6f, 0x0d, 0x38, 0x5f, 0x93, 0xbe, 0x30,
  0x34, 0xff, 0x4e, 0x60, 0x65, 0x52, 0x7b, 0x9d, 0xc7, 0x8f, 0x76, 0x05,
  0x27, 0x17, 0x73, 0xe4, 0xd2, 0xc9, 0x30, 0x7c, 0x84, 0x5f, 0xba, 0xe4,
  0xc2, 0xaa, 0xd5, 0x08, 0xcb, 0xd8, 0x7f, 0xed, 0x05, 0x72, 0xd6, 0xcf,
  0x80, 0xb3, 0x38, 0x36, 0xa8, 0x75, 0x3e, 0xec, 0x23, 0xcf, 0x73, 0xd4,
  0x89, 0xd0, 0x94, 0xd5, 0x27, 0xe9, 0x07, 0x22, 0x51, 0x0e, 0x30, 0x97,
  0xa0, 0xfb, 0x72, 0x8b, 0xd9, 0xb4, 0xbd, 0xa3, 0xde, 0x9a, 0x65, 0xc3,
  0x1c, 0x06, 0x5e, 0x4f, 0x8b, 0x61, 0xa5, 0x55, 0xb3, 0x61, 0x5f, 0x15,
  0x6b, 0x3a, 0x14, 0x0c, 0xa4, 0xe3, 0xc8, 0x30, 0xf7, 0x60, 0xd5, 0x3c,
  0xea, 0x9c, 0xbe, 0x6e, 0x5e, 0xe4, 0xd8, 0x6d, 0x07, 0x7b, 0x3e, 0x24,
  0xd8, 0x34, 0x8a, 0xc7, 0x19, 0x21, 0x09, 0xc5, 0x06, 0xec, 0xab, 0x26,
  0x53, 0x6c, 0x19, 0xef, 0x44, 0x46, 0x1a, 0x7c, 0x13, 0x36, 0xed, 0xce,
  0xda, 0xeb, 0x87, 0x71, 0xff, 0x82, 0xfc, 0xf5, 0xe0, 0xed, 0x68, 0xc2,
  0x35, 0x2d, 0x49, 0x13, 0x52, 0x1f, 0xb4, 0x20, 0x5d, 0xd1, 0x86, 0x25,
  0xc9, 0x51, 0x76, 0x16, 0xe5, 0x56, 0xe5, 0x2d, 0xcb, 0x51, 0x29, 0x2d,
  0x2d, 0x20, 0xbd, 0x07, 0x2d, 0xb4, 0xb5, 0x52, 0x12, 0x91, 0x51, 0xc1,
  0x22, 0x0e, 0x7f, 0xdf, 0xdf, 0xef, 0xa9, 0x04, 0x50, 0x01, 0x94, 0xd1,


  0xb5, 0xd3, 0x8d, 0x7b, 0xab, 0x2a, 0xc4, 0xf5, 0x4f, 0xa3, 0x68, 0x1f,


  0x93, 0x08, 0xaa, 0x11, 0xb9, 0x4c, 0xf5, 0x2b, 0xd2, 0x3d, 0x53, 0x5a,
  0x62, 0x77, 0x82, 0x9b, 0xaa, 0x38, 0x4a, 0x3d, 0xf5, 0x22, 0x4c, 0xb9,
  0xf8, 0x48, 0x77, 0xeb, 0xa3, 0xb0, 0xce, 0x7d, 0xae, 0xe8, 0x06, 0x6c,
  0x66, 0x4e, 0xcd, 0x17, 0x52, 0xc0, 0xa0, 0x52, 0xa4, 0xa0, 0x46, 0xdb,
  0x18, 0x57, 0xd9, 0x2d, 0x42, 0xa8, 0xcb, 0xe5, 0x69, 0x1c, 0x73, 0x0d,
  0xa9, 0xe5, 0xb5, 0x7a, 0x63, 0x55, 0x5b, 0xec, 0x80, 0xaa, 0xa1, 0x6d,
  0x88, 0x55, 0x0a, 0x65, 0xdb, 0x02, 0xdd, 0xff, 0xbe, 0x6a, 0xe8, 0x50,
  0x55, 0x20, 0x0d, 0xe6, 0xe7, 0x1d, 0xd6, 0xc1, 0xff, 0x59, 0x87, 0x75,
  0xf0, 0x7f, 0xc7, 0x61, 0x1d, 0xfe, 0xbc, 0xc3, 0x3a, 0xfc, 0x3f, 0xeb,
  0xb0, 0x0e, 0xff, 0xef, 0x38, 0xac, 0xa3, 0x9f, 0x77, 0x58, 0x47, 0xbf,
  0xfc, 0x61, 0xbd, 0xa3, 0xdf, 0x83, 0xe7, 0xab, 0xd6, 0x97, 0x8b, 0x9e,
  0xe0, 0xb4, 0xa2, 0xc9, 0x1d, 0x9a, 0xcf, 0x4f, 0x68, 0x43, 0xc4, 0x60,
  0x10, 0x65, 0xb2, 0xee, 0x5a, 0x4d, 0x2f, 0x1d, 0x36, 0xbb, 0x6d, 0x92,
  0x22, 0x31, 0x28, 0xc1, 0xaa, 0x27, 0x95, 0xe7, 0xcf, 0x25, 0xb9, 0x50,
  0x8c, 0x66, 0x30, 0x48, 0xde, 0x8d, 0xc7, 0x9c, 0x76, 0x34, 0x46, 0xe8,

  0xb4, 0x7b, 0x58, 0xe4, 0x8c, 0x84, 0x8d, 0xb3, 0x43, 0x6a, 0xe3, 0x99,
  0x99, 0xa1, 0xe3, 0x2e, 0xfc, 0xde, 0x32, 0x9d, 0xd2, 0x8f, 0xf7, 0x47,
  0x07, 0x6e, 0x77, 0x76, 0x7f, 0x02, 0x10, 0x9c, 0x8b, 0x6b, 0xc6, 0x83,
  0xd1, 0x11, 0xc8, 0x76, 0x20, 0xa0, 0xd7, 0x4d, 0xe7, 0x70, 0x6e, 0xdb,
  0x51, 0xe9, 0x5e, 0x70, 0xf0, 0xd8, 0xa9, 0x70, 0xfa, 0x85, 0xa2, 0x6b,
  0xd2, 0x2f, 0x9c, 0x85, 0x0e, 0x03, 0x38, 0xb0, 0xbe, 0xaf, 0xf2, 0x4b,
  0xc2, 0xc2, 0xfb, 0x19, 0x91, 0x65, 0x2f, 0x90, 0xfb, 0xbf, 0x26, 0xb2,
  0xfc, 0x20, 0xfb, 0xd8, 0xbf, 0x32, 0xd5, 0x50, 0x3b, 0xab, 0xc5, 0xf1,
  0xdb, 0x9d, 0x67, 0x91, 0x4a, 0x81, 0x80, 0xec, 0x38, 0x63, 0xd2, 0xa1,

  0x4c, 0x9b, 0x63, 0x79, 0xd7, 0x05, 0xf7, 0xd8, 0x8c, 0x09, 0xf1, 0x97,
  0xa4, 0xd2, 0xce, 0xc2, 0x0d, 0x29, 0xb0, 0x05, 0xaf, 0xb2, 0x66, 0x7a,
  0x5b, 0x17, 0xfa, 0x11, 0xc9, 0x0d, 0x25, 0x17, 0x39, 0x83, 0x9f, 0x05,
  0xe9, 0x07, 0xd3, 0x8c, 0xa1, 0xb1, 0xf2, 0xfb, 0x34, 0xa5, 0x27, 0xed,
  0xf5, 0xa6, 0xd3, 0x6c, 0x98, 0xd6, 0xd3, 0x3c, 0x8f, 0xb7, 0x76, 0xd5,
  0x38, 0x70, 0x9a, 0xcc, 0xd7, 0xf0, 0xe0, 0x9b, 0xe7, 0x13, 0x8a, 0xb9,

  0x69, 0xa3, 0x76, 0xe2, 0x88, 0x40, 0x8b, 0xa2, 0x09, 0x97, 0xeb, 0xe6,
  0xb2, 0x54, 0x67, 0xfe, 0x20, 0xe2, 0x18, 0xa4, 0xa8, 0x1c, 0x23, 0x93,
  0xd7, 0xd3, 0x2a, 0x5f, 0x01, 0x88, 0xd6, 0x6b, 0x0a, 0x37, 0xb0, 0x1d,
  0xd3, 0xe1, 0x69, 0xd3, 0xd0, 0x29, 0xf7, 0x10, 0x27, 0x0e, 0xda, 0xc5,
  0xeb, 0x1f, 0x6e, 0x91, 0x5b, 0xd3, 0x76, 0xd3, 0x32, 0x6f, 0x13, 0x7a,
  0xb8, 0x17, 0xb5, 0x4c, 0x14, 0xf3, 0xa8, 0x27, 0x0c, 0xaf, 0x61, 0x0c,
  0x43, 0x42, 0x77, 0x8a, 0x50, 0x8d, 0x86, 0x21, 0x1a, 0xa0, 0x9c, 0x70,
  0x13, 0x02, 0x72, 0xb0, 0x6b, 0x37, 0x88, 0xab, 0xec, 0x96, 0x0b, 0x49,

  0x43, 0x93, 0x8b, 0xb9, 0xd9, 0x95, 0x16, 0x59, 0xbe, 0x1c, 0xbf, 0x3a,

  0x39, 0x69, 0x15, 0x9d, 0xd2, 0xd6, 0x21, 0x92, 0xca, 0x68, 0x26, 0x49,
  0x4d, 0x20, 0xbf, 0x80, 0x13, 0x89, 0x45, 0xe1, 0xb9, 0x59, 0xa4, 0xb9,

  0x7e, 0x88, 0xbc, 0x18, 0x46, 0x90, 0x6b, 0x2b, 0xcf, 0x94, 0x53, 0xbc,
  0xd6, 0x85, 0x99, 0x66, 0x4e, 0xc8, 0x6b, 0x57, 0xeb, 0x65, 0x5a, 0xfc,
  0xfa, 0xc8, 0x71, 0xbe, 0xa1, 0xe7, 0x4a, 0x39, 0x64, 0xb7, 0xf8, 0x5e,
  0xf9, 0xb1, 0xde, 0x90, 0xd6, 0x22, 0x8d, 0x39, 0xce, 0x2b, 0x69, 0xdb,
  0x08, 0x78, 0x39, 0xf8, 0xdb, 0xb9, 0xb9, 0x86, 0x59, 0x29, 0x70, 0x2e,
  0x79, 0x70, 0xb3, 0x5c, 0x8d, 0x20, 0x03, 0xb6, 0xde, 0x06, 0x97, 0xba,
  0x4e, 0x41, 0x0e, 0xa3, 0x6d, 0xac, 0x96, 0x3b, 0xe8, 0x8a, 0x4a, 0x7c,
  0xe1, 0xb7, 0xbc, 0x01, 0xad, 0x2b, 0x70, 0xff, 0x1d, 0xe0, 0x2b, 0xf0,


  0x4b, 0xdc, 0x00, 0x29, 0x24, 0xda, 0xfa, 0xfd, 0x56, 0x12, 0x6f, 0xdd,
  0xf2, 0x80, 0x71, 0x5a, 0x00, 0x2c, 0xbf, 0x2d, 0xa5, 0x45, 0x10, 0x61,
  0x3c, 0x26, 0xe6, 0x9f, 0xe9, 0xba, 0xc8, 0x6f, 0x51, 0xd1, 0x61, 0x54,
  0x89, 0x17, 0xd4, 0xb9, 0xa4, 0xa7, 0x25, 0xc7, 0x2b, 0x56, 0x6c, 0x12,
  0xad, 0x4f, 0xc1, 0x2a, 0x3e, 0x98, 0x97, 0x8d, 0xc2, 0xb8, 0xa4, 0xfc,
  0x1e, 0x1e, 0x63, 0xe0, 0x63, 0xa3, 0x83, 0xad, 0x47, 0xf2, 0x83, 0x8a,
  0xac, 0x21, 0xf7, 0xc7, 0xc6, 0xc8, 0x56, 0x3b, 0x5a, 0x78, 0x01, 0x44,
  0xb0, 0x15, 0x15, 0x0d, 0x6c, 0xe8, 0xb0, 0x8d, 0xcd, 0x70, 0x49, 0xfa,
  0xed, 0x00, 0x82, 0xd7, 0x86, 0x4b, 0x48, 0xc7, 0xb6, 0x7a, 0xe2, 0xbe,
  0x2c, 0xb1, 0x54, 0x26, 0xdb, 0x3f, 0xc8, 0x35, 0xdf, 0xca, 0xbb, 0x91,
  0x09, 0x34, 0x78, 0x72, 0xe1, 0x5b, 0xe9, 0x8e, 0x19, 0xca, 0xee, 0x4e,

  0x1f, 0xb0, 0x91, 0xd7, 0x92, 0xb8, 0xd5, 0xa5, 0x0c, 0x28, 0x85, 0xf9,
  0x82, 0xc8, 0x7f, 0x4f, 0xd3, 0x1b, 0x16, 0x61, 0xee, 0xbd, 0x6b, 0x7e,
  0x25, 0xbc, 0x8e, 0x2a, 0xbd, 0x10, 0xe4, 0xa4, 0x7f, 0x03, 0x49, 0x49,
  0x95, 0x88, 0xf6, 0x2a, 0xb8, 0x97, 0x5d, 0x57, 0x7d, 0xf1, 0xe2, 0xcf,
  0x57, 0xd4, 0x0d, 0x5d, 0xe7, 0x55, 0x31, 0x21, 0xb6, 0xfb, 0xdd, 0x6b,
  0x48, 0xdb, 0x6b, 0xe8, 0x13, 0xe4, 0x35, 0xf3, 0xf5, 0x58, 0xd7, 0x99,
  0xe8, 0x52, 0x8c, 0x3c, 0x4b, 0xa5, 0x76, 0xd4, 0x40, 0x84, 0xf2, 0xf4,
  0x6c, 0xf7, 0x65, 0x3e, 0x58, 0x6e, 0xdb, 0x2e, 0x35, 0xbd, 0x01, 0xb2,
  0x6e, 0xbe, 0x18, 0xf9, 0x55, 0x13, 0xe2, 0xa6, 0xd5, 0x62, 0xad, 0x1d,
  0xa3, 0xac, 0xb3, 0xe6, 0xc6, 0x97, 0x87, 0x9a, 0x7f, 0x28, 0x32, 0x7b,
  0x3f, 0x6c, 0x77, 0x1c, 0xde, 0xa9, 0x9d, 0xc1, 0x46, 0xac, 0x63, 0x27,
  0x55, 0x78, 0x53, 0x0a, 0x96, 0xed, 0xaa, 0xda, 0x69, 0xae, 0x78, 0x5e,
  0xf8, 0xf4, 0x9e, 0x46, 0x83, 0xa3, 0x22, 0x97, 0x5f, 0x0a, 0xaa, 0x7c,
  0xa6, 0xae, 0x4e, 0xef, 0x1b, 0x23, 0xc3, 0x65, 0xcc, 0x47, 0xf4, 0x2b,
  0x52, 0x2c, 0xb3, 0x1b, 0x00, 0xb8, 0xdd, 0x71, 0x3f, 0x0c, 0xaf, 0xfe,
  0xd8, 0x6f, 0x46, 0x43, 0x53, 0xed, 0x4c, 0x0d, 0x79, 0xd5, 0x48, 0x3c,
  0x08, 0x6f, 0x22, 0x40, 0x0a, 0xd4, 0xc4, 0x83, 0xb0, 0x44, 0x0b, 0x21,
  0xe9, 0x97, 0xce, 0xdc, 0x4c, 0x20, 0x64, 0x79, 0x38, 0xf8, 0x5c, 0x27,
  0x99, 0x40, 0x8b, 0x06, 0x9e, 0x4a, 0x74, 0x38, 0x8c, 0x36, 0xb3, 0xe2,
  0xee, 0xab, 0x5a, 0xa5, 0x47, 0x3c, 0x2d, 0xbc, 0xd0, 0xb6, 0x59, 0x20,

  0xf5, 0x1f, 0x2a, 0x35, 0x64, 0xd1, 0xdf, 0x8f, 0x65, 0x94, 0x1c, 0xd3,
  0xd3, 0xe1, 0x40, 0x7f, 0xc0, 0x08, 0x00, 0x89, 0x77, 0x8d, 0x40, 0xcd,
  0x42, 0x80, 0xa1, 0xd7, 0xa5, 0x2b, 0xa1, 0x3c, 0xc6, 0xcb, 0xa5, 0xac,
  0x3b, 0x94, 0xf8, 0x8f, 0xa4, 0xd3, 0x15, 0xa9, 0xed, 0xaa, 0x6b, 0x26,
  0x5b, 0x97, 0x8b, 0x72, 0x32, 0x31, 0x8b, 0xdf, 0x52, 0x2d, 0xc5, 0x7c,
  0x3b, 0xf0, 0x25, 0xfb, 0x33, 0x49, 0xab, 0x4b, 0x58, 0xd2, 0x03, 0x98,
  0x11, 0xec, 0xa8, 0xa7, 0x59, 0xb8, 0x4e, 0xba, 0xfa, 0x79, 0x85, 0x42,
  0x8f, 0xc8, 0x19, 0xce, 0x06, 0xb4, 0x04, 0x48, 0x6b, 0x6b, 0xf9, 0xfd,
  0x51, 0xd0, 0x48, 0x3f, 0xd5, 0xe9, 0x71, 0xb6, 0x61, 0x5f, 0xba, 0xac,
  0xeb, 0x3f, 0x03, 0xb6, 0x25, 0xad, 0x08, 0xf3, 0x3a, 0x8c, 0xaf, 0x60,
  0x0b, 0xda, 0x0b, 0xda, 0xfa, 0x4f, 0xfa, 0xe3, 0x60, 0x40, 0xff, 0x3d,
  0xfc, 0xe7, 0x16, 0x42, 0x30, 0xcf, 0xf7, 0xf6, 0x6e, 0x6e, 0x6e, 0x46,

  0x0a, 0x28, 0x68, 0x8e, 0xec, 0xb3, 0xb0, 0xf2, 0x8f, 0x70, 0xd8, 0x7a,
  0x3e, 0x70, 0x91, 0x6c, 0xe5, 0xcb, 0xcb, 0xbf, 0x1e, 0x0c, 0x0f, 0xf6,
  0xf7, 0xf7, 0x7f, 0x1c, 0xad, 0x68, 0x7f, 0xe7, 0x18, 0xd6, 0xfc, 0xd7,
  0x1f, 0x76, 0x8f, 0x67, 0xb2, 0x17, 0x85, 0x7c, 0xe5, 0xdf, 0xa9, 0x95,
  0x5d, 0x70, 0xd3, 0x0e, 0x26, 0xe5, 0xe7, 0x1e, 0x8b, 0xe1, 0x38, 0x72,
  0xba, 0xa9, 0x8e, 0x9e, 0x53, 0x07, 0x29, 0x84, 0xf0, 0xf8, 0xe8, 0xf0,
  0x30, 0x61, 0x85, 0x83, 0xcb, 0xd3, 0x38, 0x95, 0x81, 0x90, 0x09, 0xa4,
  0xc3, 0x38, 0xcb, 0x32, 0x82, 0x5e, 0x4c, 0x39, 0x58, 0x63, 0x28, 0xa3,
  0x27, 0xa5, 0x93, 0x0d, 0xe3, 0xdc, 0x08, 0xf2, 0x72, 0x76, 0xe7, 0x46,
  0x35, 0x24, 0x5e, 0x11, 0x63, 0xa5, 0x26, 0xa1, 0x77, 0x3e, 0xc4, 0x63,
  0x2a, 0xd9, 0xd6, 0x41, 0x39, 0xa1, 0xb4, 0xbe, 0x83, 0x94, 0x03, 0x4c,
  0x6e, 0x51, 0x4a, 0x9f, 0x6b, 0x44, 0xee, 0xe7, 0xeb, 0x4a, 0xba, 0x1c,
  0x21, 0xd1, 0xe1, 0x26, 0xbd, 0x6b, 0x09, 0x7b, 0xb3, 0xe3, 0x2f, 0xcc,
  0x7f, 0x02, 0xbf, 0xb6, 0x5c, 0x4d, 0x52, 0x2d, 0x6d, 0x9b, 0xe6, 0x79,
  0xd6, 0x4c, 0xaf, 0xba, 0xe9, 0x96, 0xe0, 0xe0, 0x66, 0xb6, 0x57, 0x66,
  0x41, 0x77, 0xb6, 0xa1, 0x7a, 0xac, 0x03, 0xa4, 0x57, 0x97, 0x6b, 0x86,
  0xa4, 0x86, 0x1f, 0x28, 0x4d, 0xe0, 0x86, 0xf0, 0xcc, 0x14, 0x7b, 0xd0,


  0x3d, 0x6d, 0xdf, 0x44, 0x7c, 0x2f, 0xaf, 0xb5, 0x6c, 0x78, 0x7a, 0x95,
  0x2d, 0x85, 0x63, 0xee, 0x68, 0xce, 0xe4, 0x96, 0xd0, 0xe0, 0x56, 0xc4,
  0x22, 0xdf, 0x9a, 0xeb, 0xaf, 0xcc, 0x4a, 0x76, 0xa5, 0xf0, 0xd6, 0x8a,
  0x39, 0xe9, 0x85, 0x74, 0xb9, 0x26, 0xc3, 0x71, 0x92, 0x8a, 0x3c, 0xd1,
  0x7a, 0xf0, 0x9e, 0xcc, 0x66, 0xc3, 0x16, 0xb3, 0x0a, 0x42, 0xac, 0x5e,
  0x4f, 0x86, 0xa2, 0xf9, 0x60, 0x46, 0x48, 0x2e, 0xa1, 0xdb, 0xfa, 0xfa,
  0xe4, 0xd5, 0x05, 0x97, 0xc0, 0x9a, 0xff, 0x52, 0xb5, 0x8c, 0xf9, 0x83,
  0x2a, 0x5f, 0xc3, 0x46, 0x55, 0xe7, 0x47, 0x9c, 0x42, 0x04, 0x62, 0xb5,
  0x11, 0xa5, 0xd4, 0xa5, 0xd9, 0xb5, 0x54, 0xbf, 0x81, 0xd7, 0xf6, 0x24,
  0x92, 0x3b, 0xdc, 0xd2, 0x12, 0x6d, 0xe5, 0xf4, 0xa3, 0xc7, 0xa3, 0x7d,
  0x5e, 0x22, 0xed, 0xa1, 0x64, 0xd0, 0x48, 0xa5, 0x16, 0xdc, 0x48, 0x1a,
  0x61, 0x4c, 0xe3, 0x39, 0x03, 0x76, 0x2a, 0x83, 0x84, 0xf1, 0xcf, 0x19,
  0x4a, 0x41, 0x7f, 0xeb, 0x65, 0x4b, 0xde, 0x53, 0x0e, 0xa3, 0xb2, 0x4b,
  0x72, 0x84, 0xef, 0xba, 0xd8, 0xd5, 0x40, 0x16, 0xd7, 0x2a, 0x1d, 0x30,
  0xe1, 0x58, 0xb9, 0x9c, 0xd0, 0x84, 0xe4, 0x8d, 0x0f, 0x5c, 0xe7, 0xa9,
  0x92, 0xa4, 0x80, 0xc8, 0x2c, 0xa9, 0x3e, 0x42, 0xa7, 0x56, 0xd7, 0xea,
  0x30, 0xa6, 0x9f, 0x04, 0x2d, 0xbd, 0x86, 0x7f, 0x16, 0xe4, 0x59, 0xd6,
  0x93, 0x63, 0xa5, 0x5f, 0x38, 0xcb, 0x5d, 0x4d, 0x73, 0x65, 0xd3, 0x55,
  0x55, 0xce, 0x11, 0x39, 0x0c, 0xf9, 0xe4, 0x9b, 0x6e, 0x57, 0xf6, 0x2c,
  0xb0, 0x71, 0x80, 0x6f, 0xe2, 0x55, 0xf7, 0xa5, 0x58, 0x1e, 0x8b, 0x08,
  0x36, 0xf4, 0x38, 0x32, 0xb4, 0xf5, 0x47, 0x0a, 0x09, 0x7d, 0xf1, 0xd2,
  0x46, 0x10, 0xe3, 0x50, 0x46, 0x50, 0xa7, 0x6a, 0xe6, 0x6f, 0x6d, 0x63,
  0x46, 0x78, 0x1a, 0xf1, 0xfd, 0xec, 0x96, 0x31, 0x3b, 0x71, 0x72, 0x37,
  0x79, 0x71, 0x74, 0x98, 0xd4, 0x77, 0x46, 0x83, 0x58, 0xfa, 0x9b, 0xd0,
  0x6d, 0x38, 0x1e, 0x0d, 0x85, 0xb5, 0x3a, 0xf5, 0x31, 0xeb, 0xfa, 0x40,
  0xaf, 0xbc, 0xc4, 0x2b, 0xd2, 0xdd, 0x4b, 0xf3, 0xf5, 0x1e, 0xd0, 0xc5,
  0xbe, 0x54, 0x26, 0x36, 0x59, 0xa4, 0xc5, 0x27, 0x9b, 0x55, 0xcd, 0x03,
  0x0d, 0xa8, 0x39, 0x2c, 0x17, 0x92, 0xba, 0x1f, 0xca, 0xf6, 0xb0, 0x60,
  0x0c, 0xba, 0xa8, 0x41, 0xb1, 0x5f, 0xa6, 0x15, 0x6a, 0x0c, 0xb1, 0x6d,
  0x92, 0xfe, 0xec, 0x1f, 0x8a, 0x2d, 0x0f, 0x06, 0x11, 0x79, 0x3d, 0xd5,
  0x43, 0x11, 0xc6, 0x31, 0x76, 0xc6, 0xfd, 0xd1, 0x1c, 0xf2, 0x9e, 0x8e,
  0x70, 0xbf, 0x5c, 0x6c, 0xdd, 0x02, 0x21, 0x1b, 0xae, 0x6d, 0xfe, 0xfb,
  0x5c, 0x03, 0x80, 0x7d, 0xfc, 0xbb, 0x11, 0xac, 0x32, 0xd7, 0xf1, 0xdc,
  0x86, 0x0c, 0xfd, 0x16, 0xb6, 0xac, 0xe2, 0xb9, 0x50, 0x65, 0x2c, 0xc2,
  0x3e, 0x4a, 0xce, 0x9c, 0x39, 0x59, 0x0c, 0x80, 0x89, 0xdb, 0x54, 0x53,

  0x31, 0x26, 0xf1, 0x77, 0x49, 0xdd, 0x4c, 0x17, 0xd1, 0x96, 0xec, 0xd0,
  0x72, 0xea, 0x1c, 0xd0, 0xdc, 0x56, 0x12, 0x78, 0x22, 0x8e, 0xbb, 0xa5,
  0x3a, 0x7e, 0x6c, 0xb6, 0x96, 0xda, 0x8a, 0x02, 0xba, 0x2a, 0xc8, 0xcc,
  0xe6, 0x45, 0x44, 0x1b, 0xec, 0xc4, 0xd7, 0x5b, 0x4b, 0x24, 0x7f, 0x61,
  0x64, 0xe2, 0x7a, 0x65, 0x43, 0x0f, 0x89, 0x80, 0x34, 0x10, 0xfa, 0x4b,
  0x59, 0x0c, 0x02, 0x7c, 0x27, 0xc4, 0xce, 0xc5, 0xe9, 0x44, 0x59, 0x81,
  0x4b, 0xe9, 0xe1, 0x9d, 0x59, 0x57, 0x33, 0xbf, 0xa9, 0xe4, 0xe9, 0x3e,
  0x7e, 0x4f, 0xab, 0x61, 0xee, 0x05, 0xa4, 0x87, 0x61, 0x68, 0x70, 0xc0,
  0xb5, 0x7c, 0xc1, 0x92, 0xce, 0x0a, 0xbd, 0x91, 0x02, 0x37, 0x95, 0x73,
  0x21, 0x75, 0xed, 0xef, 0xd5, 0x15, 0x35, 0x6d, 0xf2, 0xbc, 0x1f, 0x82,

  0xd9, 0x65, 0xf4, 0xcd, 0x40, 0x5f, 0x46, 0x0b, 0x02, 0xce, 0x44, 0x34,
  0x3b, 0x0c, 0x98, 0x68, 0xca, 0xe7, 0xa1, 0x84, 0x49, 0x97, 0x9e, 0x4c,
  0x1a, 0x45, 0x56, 0xb0, 0x5d, 0x5f, 0x2a, 0xf8, 0x5a, 0x32, 0x0d, 0xb1,
  0x13, 0x67, 0x0c, 0xad, 0x5b, 0xf3, 0x88, 0xb6, 0xc1, 0xf9, 0xa5, 0x48,
  0x91, 0x9a, 0xd2, 0x3c, 0x0d, 0x43, 0x63, 0x54, 0x6b, 0xda, 0x9c, 0xda,
  0xed, 0x7c, 0xa4, 0xa9, 0x14, 0xaf, 0x34, 0xd1, 0x36, 0x1a, 0x77, 0x3e,
  0xe4, 0xaf, 0xb9, 0x0d, 0xd7, 0x39, 0xef, 0x3d, 0xc3, 0x99, 0x4d, 0xaa,
  0x3c, 0x9b, 0x1b, 0xee, 0x85, 0x25, 0x71, 0x0a, 0x69, 0xe0, 0x35, 0xca,
  0x08, 0xf7, 0x9a, 0xb2, 0xd3, 0xcd, 0x39, 0x52, 0x01, 0x71, 0x0e, 0xc7,
  0x11, 0xf3, 0x44, 0x0b, 0x2e, 0xc7, 0x20, 0xf3, 0xd7, 0xda, 0xb8, 0x39,
  0xd5, 0x92, 0xa6, 0x68, 0x7e, 0x26, 0xfa, 0xb0, 0x8b, 0xc7, 0x93, 0x08,
  0xac, 0xa0, 0x5b, 0x6c, 0x1b, 0x39, 0xe2, 0x8b, 0xcc, 0x56, 0x45, 0xbb,
  0xf1, 0xba, 0x81, 0xf5, 0x74, 0xd6, 0x85, 0xfd, 0xf4, 0x4d, 0x56, 0x19,
  0xf1, 0x57, 0x9a, 0x75, 0x7f, 0xfb, 0x58, 0xa3, 0x10, 0xd2, 0x94, 0x5e,
  0x94, 0x11, 0xb9, 0xa5, 0x68, 0x90, 0x88, 0xa9, 0x07, 0xe1, 0x0b, 0x2e,
  0xde, 0xa0, 0xbd, 0xd5, 0x37, 0x7d, 0x85, 0xa4, 0x4b, 0xa1, 0x03, 0x80,
  0x14, 0x1b, 0xea, 0x23, 0xf5, 0x32, 0xde, 0x7d, 0x4c, 0xbf, 0x09, 0xf5,
  0xcf, 0x68, 0x58, 0x44, 0x2d, 0xe4, 0xce, 0x33, 0xf7, 0xb6, 0x9c, 0x34,
  0x29, 0x37, 0xf0, 0xb6, 0x33, 0xbf, 0xc8, 0xc9, 0xe1, 0xa3, 0x79, 0x4e,
  0xd1, 0xb2, 0x9e, 0xe6, 0x4a, 0x1a, 0x13, 0x28, 0x3e, 0x78, 0x27, 0x3d,
  0x82, 0xb4, 0xc8, 0xfa, 0x8a, 0x14, 0x31, 0xd2, 0x0f, 0x60, 0xe4, 0xc7,


  0xd5, 0x7b, 0x6c, 0xda, 0xbb, 0x8b, 0xd3, 0xb7, 0x83, 0xce, 0xb5, 0x13,
  0x95, 0xc6, 0xb3, 0x88, 0x95, 0xe5, 0x08, 0x4d, 0x85, 0x98, 0x00, 0x55,
  0x22, 0xfb, 0x61, 0x4b, 0x0c, 0x19, 0x93, 0x82, 0xb6, 0x6e, 0x20, 0xc9,
  0x38, 0x95, 0x94, 0xae, 0xa9, 0xd9, 0xcf, 0xfb, 0x1a, 0x7a, 0xb2, 0x89,
  0x08, 0x6b, 0x9c, 0x3d, 0x5c, 0x25, 0x46, 0x9e, 0x18, 0x66, 0xb3, 0x09,
  0x60, 0xfd, 0xc2, 0x69, 0xc5, 0xee, 0xab, 0xbc, 0x14, 0x62, 0x2f, 0xdc,
  0x30, 0x23, 0x79, 0x5d, 0xde, 0x14, 0xc3, 0x53, 0xaa, 0x3e, 0x4e, 0x4e,
  0xcb, 0x4b, 0xba, 0x41, 0xef, 0x00, 0x1f, 0x15, 0x9c, 0xda, 0x87, 0xf3,


  0x77, 0xc9, 0x0e, 0xc9, 0xdd, 0xe4, 0xdc, 0x62, 0xce, 0xd1, 0xa3, 0xbb,
  0x62, 0x62, 0xd4, 0xac, 0x92, 0xc8, 0x6c, 0x06, 0xc9, 0xf1, 0xf7, 0x2f,
  0xdf, 0x9e, 0x9f, 0x1e, 0xff, 0xc0, 0x09, 0x32, 0xc1, 0x72, 0xe8, 0xc7,
  0x5f, 0x7a, 0x36, 0x17, 0x22, 0x34, 0x94, 0x34, 0x68, 0x66, 0x12, 0x05,
  0x9c, 0x21, 0xea, 0x64, 0xb6, 0xa8, 0x24, 0x38, 0x1e, 0x9f, 0x9f, 0x0c,
  0x15, 0x2d, 0x8e, 0x7b, 0x95, 0xe6, 0x05, 0x99, 0x47, 0x30, 0xb1, 0xb5,
  0xcd, 0x09, 0x51, 0xd1, 0x30, 0x70, 0xca, 0xc8, 0x7d, 0x18, 0x24, 0xef,
  0x34, 0x15, 0x71, 0x80, 0x43, 0xa7, 0x3b, 0xf8, 0x3a, 0xbf, 0x44, 0x44,
  0xa9, 0x93, 0x43, 0x26, 0x06, 0x08, 0xd1, 0x41, 0x80, 0xc5, 0xe8, 0x75,

  0x99, 0xab, 0xb3, 0x05, 0x3b, 0x2f, 0x7b, 0xe5, 0x23, 0xb3, 0x48, 0x9c,



  0x22, 0xea, 0x44, 0x82, 0x50, 0x99, 0xd4, 0x8d, 0x4c, 0x5a, 0xed, 0xed,
  0x2c, 0x85, 0xb0, 0x54, 0x10, 0x5d, 0xc2, 0xb2, 0xfd, 0xe7, 0xc9, 0xd6,
  0x70, 0x9d, 0x3c, 0xdf, 0xfa, 0x15, 0x55, 0x04, 0xdf, 0xd3, 0x1b, 0x69,
  0x96, 0xa5, 0x45, 0xbb, 0x36, 0x28, 0xa0, 0x5d, 0x1e, 0xb8, 0x8d, 0x82,
  0x38, 0xdc, 0xe0, 0x33, 0x37, 0x37, 0x5d, 0x14, 0xfa, 0xc9, 0xfa, 0xf2,
  0x32, 0x02, 0xe7, 0x42, 0x9d, 0xf8, 0x32, 0xb8, 0x7f, 0xc8, 0x9b, 0xb2,
  0x5d, 0x27, 0xec, 0xc3, 0x37, 0xf3, 0xdf, 0x42, 0x5c, 0x92, 0x79, 0xc8,
  0x55, 0x59, 0xce, 0x48, 0x55, 0x7d, 0x99, 0x70, 0x00, 0x82, 0xa2, 0x14,
  0x55, 0x13, 0x0e, 0xc7, 0xda, 0xdb, 0xf6, 0x9f, 0xb6, 0x6d, 0x94, 0x75,
  0x4b, 0xf4, 0x2a, 0xf0, 0xeb, 0x2d, 0x56, 0x62, 0x27, 0xdc, 0xf0, 0x76,

  0x90, 0x6c, 0xbf, 0xd8, 0x96, 0xe7, 0xb6, 0xa2, 0x2a, 0x1a, 0xbf, 0xc3,
  0x11, 0x3e, 0xd6, 0xaa, 0xa7, 0xd6, 0x05, 0x4a, 0xca, 0x5f, 0x3e, 0x9b,
  0x65, 0x10, 0xdb, 0xd2, 0x33, 0x32, 0x61, 0x84, 0xc7, 0x81, 0xf8, 0x7e,
  0xba, 0x2a, 0x07, 0xa6, 0xae, 0x33, 0xe7, 0xb9, 0x52, 0x2b, 0x43, 0x9e,
  0x81, 0xd7, 0x59, 0x99, 0x42, 0x12, 0xae, 0xc7, 0x9f, 0x7c, 0xb5, 0xef,
  0xa6, 0x70, 0x5a, 0x29, 0x19, 0xc7, 0xd0, 0x84, 0xa3, 0x05, 0x84, 0x83,
  0x4e, 0x6d, 0x1e, 0xe2, 0x5a, 0xa1, 0xfb, 0xd2, 0xeb, 0x82, 0x61, 0x46,
  0xde, 0xae, 0x08, 0xbb, 0xac, 0xfc, 0x84, 0x9e, 0xae, 0x65, 0xd5, 0xf7,
  0x7d, 0xf5, 0xec, 0x3a, 0xc2, 0x63, 0x51, 0xab, 0x05, 0x12, 0xa4, 0x4d,

  0xe0, 0x41, 0xd1, 0x05, 0xd4, 0xb6, 0x1b, 0x84, 0x68, 0x36, 0xdc, 0x59,
  0x4e, 0x7a, 0x06, 0x0f, 0x6d, 0xe8, 0xa9, 0x1d, 0x2b, 0xd5, 0x2a, 0xe1,
  0x98, 0x9b, 0xd5, 0x2f, 0xb7, 0x6d, 0x77, 0x2f, 0x14, 0x57, 0x36, 0x1a,
  0x0c, 0x6c, 0xac, 0xd4, 0x6e, 0xd5, 0x6f, 0x8e, 0xfa, 0x21, 0xd4, 0xfc,
  0xc0, 0x5b, 0x98, 0xfc, 0x19, 0x0d, 0x8b, 0x7c, 0x2b, 0xb7, 0xaa, 0x0e,
  0xed, 0xac, 0xd7, 0x12, 0x38, 0xf3, 0xa3, 0x51, 0x52, 0x2a, 0xc8, 0x5e,
  0xc3, 0x42, 0x5b, 0x74, 0x71, 0x7c, 0x5e, 0xd3, 0x06, 0x72, 0x78, 0xf7,
  0xeb, 0x51, 0x44, 0x85, 0x65, 0x9d, 0x14, 0x24, 0x27, 0xab, 0x61, 0xf7,
  0x3a, 0x42, 0x69, 0xfa, 0xbe, 0x66, 0xec, 0xa0, 0x27, 0x3b, 0x0f, 0x1d,
  0x0b, 0xad, 0x42, 0x7e, 0x1c, 0x55, 0x33, 0x04, 0x2b, 0xee, 0x24, 0xb1,
  0x86, 0xdb, 0x76, 0x17, 0x9f, 0x34, 0x83, 0x92, 0x06, 0xcf, 0x6e, 0xb3,
  0xe9, 0xba, 0x69, 0x97, 0xc0, 0x79, 0x73, 0x52, 0x64, 0x27, 0x9e, 0xd6,
  0x0e, 0xae, 0x82, 0x00, 0xde, 0x6c, 0x9d, 0x2b, 0x2c, 0xcf, 0xf3, 0xad,
  0x5d, 0x89, 0xe3, 0xa6, 0xac, 0xc1, 0xf3, 0x8f, 0x63, 0xf1, 0x59, 0x9d,
  0x73, 0x95, 0xb1, 0x3b, 0xd5, 0x25, 0x2b, 0x44, 0x3f, 0x6f, 0x88, 0xb4,
  0x9a, 0xc5, 0xbe, 0xfd, 0x86, 0x7d, 0x6f, 0xde, 0xa7, 0x6d, 0xbb, 0x4e,
  0x71, 0xcb, 0xd5, 0xc1, 0x55, 0x0e, 0xbe, 0x8c, 0xb6, 0xe5, 0xa3, 0xe4,
  0xe5, 0xb5, 0xa1, 0x6e, 0xd8, 0xf1, 0xfa, 0xaa, 0xee, 0x7f, 0xe0, 0x0e,

  0x3d, 0x39, 0xbf, 0x7e, 0x22, 0xde, 0x6c, 0x52, 0x39, 0x48, 0xe6, 0xe1,
  0x47, 0x96, 0xe3, 0x07, 0xab, 0xf8, 0x54, 0x4d, 0x1e, 0x99, 0x3f, 0xbe,
  0xa1, 0x3f, 0xe6, 0xec, 0x16, 0x10, 0x50, 0x3d, 0xf6, 0xc3, 0x86, 0xa4,
  0x3d, 0x3e, 0xb5, 0x7f, 0xd8, 0x44, 0x2d, 0x73, 0xea, 0x54, 0xa9, 0x48,
  0x10, 0x7c, 0x0e, 0x0c, 0x09, 0xa6, 0x8d, 0x8e, 0x33, 0xd0, 0xfa, 0xe1,
  0x78, 0x7d, 0x07, 0x10, 0xe3, 0x06, 0x40, 0x64, 0x1b, 0xc0, 0xe7, 0x34,
  0x66, 0x46, 0x5e, 0xc6, 0xea, 0x47, 0xcd, 0x56, 0xfd, 0x83, 0xe2, 0x70,
  0xb6, 0x94, 0x7d, 0x96, 0x69, 0x6e, 0x85, 0x90, 0xa0, 0x97, 0xcf, 0xc1,
  0xde, 0x69, 0xba, 0x66, 0xcc, 0xce, 0xc2, 0x84, 0x54, 0x0b, 0x94, 0xd7,
  0xb7, 0x64, 0x08, 0x77, 0xf9, 0x23, 0xc4, 0x9c, 0xed, 0x7f, 0xef, 0x35,
  0xea, 0xa7, 0xe5, 0xc2, 0xf3, 0x55, 0x80, 0xf3, 0x23, 0xb5, 0x87, 0xcd,
  0x19, 0x31, 0x38, 0x1d, 0x3c, 0x2c, 0xb6, 0x0e, 0x2b, 0x26, 0x3d, 0xf3,
  0x5c, 0xa2, 0x65, 0x24, 0x35, 0xdd, 0x00, 0x57, 0xf8, 0xa4, 0xd1, 0xea,
  0x65, 0xb6, 0xa4, 0xc0, 0x97, 0x95, 0x8b, 0x82, 0xe1, 0x45, 0x8a, 0x15,
  0x3e, 0x3e, 0x8c, 0x0f, 0x37, 0x23, 0xfd, 0x8d, 0x44, 0x2c, 0xa7, 0x6f,
  0xfd, 0x5b, 0x10, 0xed, 0xac, 0xef, 0x8a, 0xe9, 0xd5, 0xeb, 0x77, 0xe3,
  0xf8, 0xeb, 0xe1, 0xe2, 0xf0, 0xbc, 0xd1, 0x43, 0x88, 0x18, 0xa0, 0xc0,
  0x08, 0x88, 0xa5, 0x51, 0xf2, 0x5e, 0x7a, 0xbf, 0x8b, 0x0f, 0xd7, 0x7a,
  0xc1, 0x7a, 0x02, 0x49, 0xb1, 0x60, 0x26, 0x2e, 0x9a, 0x27, 0xc2, 0x2e,
  0xc3, 0x94, 0xae, 0x02, 0x2d, 0x2f, 0x54, 0xa0, 0xed, 0x9d, 0xa6, 0x80,
  0x91, 0xa1, 0x02, 0x19, 0xb2, 0xf2, 0x12, 0xd0, 0xba, 0x74, 0x8d, 0x86,
  0x3b, 0xfa, 0xc7, 0x4f, 0x39, 0xe6, 0x53, 0x63, 0xd1, 0x66, 0x91, 0xe0,
  0xa2, 0xbf, 0x43, 0xad, 0x84, 0x20, 0x2f, 0xf8, 0x6b, 0x68, 0x75, 0x41,
  0xaf, 0x33, 0x99, 0x0e, 0x84, 0x5a, 0xf1, 0xa3, 0xaa, 0x6f, 0x49, 0x66,
  0x53, 0x0e, 0xbf, 0xfa, 0x73, 0x28, 0x3d, 0x5f, 0xbf, 0xeb, 0xf9, 0x1c,
  0xfd, 0x66, 0xa8, 0xd5, 0x84, 0xa2, 0x11, 0x78, 0x2a, 0x7d, 0xb8, 0x17,
  0x82, 0x85, 0x1c, 0x9f, 0x80, 0x02, 0x25, 0xdf, 0xc3, 0x25, 0xcc, 0x13,
  0xf2, 0xc7, 0xc6, 0x07, 0x25, 0xa7, 0x3f, 0xfe, 0x29, 0x4a, 0xf6, 0xdf,
  0xe1, 0x04, 0xbf, 0xe4, 0x3d, 0x07, 0x71, 0xcf, 0x45, 0x13, 0xde, 0x8d,
  0x1c, 0x91, 0xfb, 0x4c, 0x7c, 0x38, 0xe2, 0x6f, 0x31, 0x48, 0x2a, 0xe2,
  0x0b, 0x87, 0xfc, 0xc7, 0xde, 0xa1, 0x4d, 0x4e, 0xb3, 0x05, 0xa1, 0xb8,
  0xa4, 0x46, 0x80, 0x87, 0x0a, 0x42, 0x91, 0xdf, 0x8e, 0x91, 0x4f, 0xd0,
  0x43, 0xcd, 0x48, 0x3c, 0xe0, 0x8c, 0x03, 0xbb, 0x07, 0x34, 0x51, 0xd5,
  0xc4, 0xa2, 0x33, 0x19, 0xb3, 0xfb, 0xee, 0x3e, 0x62, 0xca, 0x23, 0xf9,
  0x74, 0x9b, 0x70, 0x37, 0xdf, 0x1a, 0x25, 0x89, 0x84, 0xeb, 0xfd, 0xd7,
  0xd8, 0xd2, 0x8d, 0x7d, 0x27, 0xd9, 0x99, 0x18, 0x89, 0xed, 0xe1, 0xe8,
  0x10, 0xbf, 0x79, 0x84, 0x12, 0x96, 0xf8, 0x70, 0x8f, 0x3f, 0x7f, 0xfc,
  0x68, 0x77, 0x77, 0x20, 0xae, 0x2a, 0xce, 0x8e, 0x99, 0x50, 0x31, 0x56,
  0x4e, 0x7c, 0x8b, 0xe3, 0x4c, 0xb4, 0xc1, 0x57, 0xdc, 0x57, 0x89, 0xbf,
  0x1b, 0x89, 0x80, 0x3b, 0x83, 0xcf, 0xbe, 0x4a, 0x87, 0x48, 0x26, 0x38,
  0x38, 0xba, 0x35, 0x83, 0x53, 0xe5, 0x89, 0xb5, 0x0b, 0xba, 0xf4, 0x72,

  0x05, 0x38, 0x52, 0x9c, 0x87, 0x91, 0xdc, 0x4a, 0x1c, 0x2f, 0x4e, 0x55,
  0xd2, 0x86, 0x89, 0xa0, 0xe7, 0x2c, 0xf6, 0xe8, 0x0f, 0xa2, 0xe7, 0x2b,

  0x6d, 0xe0, 0x7c, 0xbe, 0x9e, 0x2c, 0x8c, 0x04, 0x1a, 0xaf, 0xe7, 0x73,
  0x73, 0xd6, 0xa7, 0xb9, 0xb4, 0xe2, 0x16, 0x5b, 0x41, 0x7b, 0xa2, 0xf5,
  0xc9, 0x1c, 0x5e, 0x38, 0x51, 0x1a, 0x93, 0x5a, 0xab, 0x6e, 0xc6, 0x95,
  0x70, 0xb3, 0xde, 0xb6, 0xb5, 0xe2, 0x6f, 0xd5, 0xeb, 0xf9, 0xb0, 0x6f,
  0x61, 0xb7, 0x59, 0x1d, 0x9a, 0x71, 0x6f, 0x29, 0x6e, 0x6b, 0x04, 0xf6,
  0x83, 0xf9, 0x93, 0xed, 0x79, 0xdd, 0x4e, 0xd9, 0xb5, 0x7a, 0xe7, 0x0d,
  0xe9, 0x9d, 0xc0, 0xe0, 0xa1, 0x68, 0x46, 0xf2, 0x82, 0x35, 0xcc, 0x68,

  0x17, 0x64, 0x6e, 0xd5, 0x29, 0x60, 0x08, 0xbe, 0x2e, 0x0a, 0xb5, 0x1e,
  0x7e, 0xff, 0x94, 0x1a, 0x20, 0x4a, 0x12, 0xe6, 0x22, 0x43, 0x46, 0x37,
  0xf1, 0xc7, 0x10, 0x95, 0xa4, 0x12, 0xfc, 0x77, 0xf1, 0x1a, 0x24, 0xe2,
  0xfc, 0x10, 0x27, 0x3e, 0xd2, 0xeb, 0x52, 0x00, 0x2b, 0xc1, 0x09, 0xc4,

  0x78, 0x3e, 0x1c, 0x4b, 0x30, 0xfb, 0x32, 0x8b, 0x19, 0x76, 0xed, 0x10,
  0x8f, 0x82, 0x2d, 0xd4, 0xec, 0x07, 0x95, 0xaf, 0x84, 0xbe, 0x1b, 0x3a,
  0xae, 0xd0, 0x12, 0x6b, 0x60, 0x13, 0x27, 0x5b, 0x3c, 0x9f, 0x2d, 0x81,
  0x43, 0xd1, 0x3a, 0x39, 0x24, 0x60, 0xa9, 0xe1, 0xc0, 0xaa, 0xb7, 0x8c,
  0xcf, 0xde, 0xbd, 0x48, 0x4c, 0x5d, 0x54, 0xc9, 0x2f, 0x35, 0x8f, 0x6b,
  0x8b, 0x95, 0xf6, 0xb2, 0xdb, 0x99, 0x5e, 0x86, 0xb3, 0xbb, 0x12, 0x41,
  0x5c, 0xe0, 0xcc, 0x08, 0x24, 0xa9, 0xd3, 0xa9, 0x99, 0x41, 0x87, 0x5b,
  0x71, 0x7d, 0xda, 0xee, 0x41, 0x62, 0x9b, 0x4c, 0xb6, 0x0c, 0x3f, 0xfd,

  0x8a, 0xda, 0xf9, 0x94, 0xde, 0xdd, 0xe4, 0xcd, 0x3a, 0x64, 0xba, 0x12,
  0x29, 0x06, 0x3e, 0x05, 0x42, 0x13, 0x74, 0x12, 0x0e, 0x44, 0x02, 0x56,

  0x1e, 0x25, 0xbb, 0x35, 0x00, 0x87, 0xb6, 0x4c, 0x82, 0x7a, 0x91, 0x18,
  0x85, 0xe4, 0x26, 0xc8, 0x10, 0x27, 0x00, 0x53, 0x37, 0xbb, 0x76, 0x05,
  0x9c, 0x19, 0xe0, 0xf7, 0xff, 0xa9, 0xbf, 0xfc, 0x48, 0x9b, 0xf5, 0x4f,
  0xdd, 0x2c, 0x99, 0x76, 0x1a, 0xc0, 0x24, 0xc0, 0xbc, 0xfe, 0x3d, 0x36,
  0xe5, 0x6f, 0x94, 0xd4, 0xc4, 0x3b, 0x43, 0x00, 0x45, 0x18, 0xee, 0xf7,
  0x23, 0xab, 0x46, 0xeb, 0x10, 0x54, 0xf6, 0xcd, 0xce, 0x82, 0xc9, 0x5d,

  0xe0, 0x92, 0x22, 0x1a, 0xfc, 0xa1, 0x18, 0x00, 0x6a, 0xd9, 0x58, 0x74,
  0x84, 0xd2, 0xc2, 0x9d, 0x74, 0xf9, 0x18, 0x7f, 0xa8, 0x04, 0x73, 0xc8,

  0xd8, 0x32, 0x66, 0xe2, 0x64, 0xe7, 0xf1, 0xcf, 0xe3, 0x86, 0x85, 0x4d,
  0x97, 0xd5, 0x7d, 0x6e, 0x81, 0x50, 0x99, 0x91, 0xa8, 0x49, 0xbc, 0x9a,
  0xe2, 0x13, 0xc5, 0x7f, 0x61, 0x52, 0xed, 0x9e, 0x3d, 0x30, 0x5a, 0x04,
  0x82, 0x5a, 0x5f, 0xe5, 0xa6, 0x6d, 0x36, 0xa8, 0xf7, 0xfb, 0xff, 0xe4,
  0x44, 0xc0, 0x7f, 0x86, 0xba, 0xef, 0xd9, 0xc5, 0xf1, 0x73, 0x4c, 0xe9,
  0xf7, 0xc3, 0xfa, 0x6e, 0x39, 0x29, 0x17, 0x72, 0xeb, 0x68, 0xef, 0xcd,
  0x06, 0xea, 0xcf, 0x98, 0x46, 0x10, 0xab, 0x1b, 0x7a, 0x00, 0x26, 0x83,
  0x68, 0x6f, 0x0a, 0xd8, 0x61, 0x49, 0x39, 0xe5, 0x82, 0x56, 0xaa, 0x5d,
  0x30, 0xb7, 0xef, 0xf7, 0x89, 0xa2, 0x92, 0x70, 0x6b, 0x5a, 0x69, 0x40,
  0xec, 0x81, 0x66, 0xc6, 0x8b, 0x2c, 0xa3, 0xfb, 0xe7, 0x11, 0x8a, 0xb5,
  0x9e, 0x62, 0xd0, 0x2f, 0xc4, 0x2c, 0xcc, 0x34, 0x3f, 0xa2, 0x6a, 0x92,
  0x5f, 0x7d, 0xc5, 0x3f, 0x1a, 0x5e, 0xd0, 0x8f, 0x24, 0x87, 0x46, 0xa1,
  0x06, 0x88, 0x3a, 0xb5, 0xf2, 0x64, 0x10, 0x29, 0x50, 0x4e, 0x62, 0xa9,
  0x79, 0x94, 0xfa, 0x6e, 0x18, 0x4d, 0x30, 0x4f, 0xbd, 0xd7, 0x1f, 0x33,
  0x20, 0xf2, 0xe6, 0xd7, 0xd9, 0xe6, 0xd1, 0x40, 0x17, 0xc4, 0x99, 0x97,
  0xe8, 0xf8, 0x68, 0xd3, 0x3b, 0x7d, 0x64, 0x16, 0xc6, 0x45, 0xe3, 0x68,


  0xea, 0xe8, 0xbe, 0xe1, 0x38, 0xaa, 0x02, 0x77, 0x8f, 0xa4, 0xfe, 0x90,
  0x73, 0xcd, 0xeb, 0x90, 0xd1, 0x50, 0x39, 0x0e, 0xf2, 0x8d, 0x68, 0xdc,

  0x7b, 0xd6, 0x0a, 0x80, 0x4c, 0x66, 0x5c, 0x7e, 0x93, 0xdb, 0x76, 0x7c,
  0x5b, 0xb2, 0xfa, 0x28, 0x14, 0xbe, 0x79, 0x38, 0x17, 0x27, 0x97, 0xc8,




  0xd4, 0x09, 0xba, 0x75, 0x97, 0x9c, 0x7d, 0x88, 0x79, 0xa2, 0x8e, 0x65,

  0x49, 0x7e, 0xdb, 0x48, 0x9c, 0x39, 0x89, 0xb9, 0xf1, 0x10, 0x1d, 0xfd,
  0x8f, 0x81, 0x9b, 0x0e, 0xfb, 0xb6, 0x86, 0x5e, 0x98, 0x7d, 0x24, 0x90,
  0x97, 0x9b, 0x87, 0xe3, 0xfc, 0xfb, 0x27, 0xa3, 0xfd, 0xdd, 0xe0, 0x50,

  0x9b, 0xd5, 0x47, 0x43, 0x1c, 0xd5, 0xdd, 0x47, 0xca, 0x52, 0xc5, 0x99,
  0x69, 0x54, 0x01, 0x3f, 0xc0, 0xd6, 0x32, 0x7a, 0xc1, 0x7a, 0x45, 0xe3,
  0x80, 0xc8, 0x17, 0x25, 0x9b, 0x6c, 0xf7, 0x2d, 0x43, 0x22, 0xd4, 0x92,
  0xd0, 0xe8, 0x83, 0xe8, 0xec, 0xb4, 0x7b, 0xc0, 0x3d, 0x0a, 0x26, 0x46,
  0x19, 0x28, 0x1f, 0x11, 0xba, 0xb6, 0xc4, 0x64, 0x24, 0x5f, 0x56, 0xe5,
  0x53, 0xbf, 0x21, 0x2a, 0x1e, 0x00, 0x3d, 0x31, 0x32, 0x28, 0xc5, 0xb2,
  0xa3, 0x20, 0xc8, 0x9d, 0xff, 0xc1, 0xff, 0xeb, 0x22, 0x56, 0x9a, 0xec,

  0x08, 0x11, 0x68, 0xa6, 0x49, 0x79, 0x35, 0x5e, 0xfe, 0x41, 0x88, 0x52,
  0xdf, 0xf9, 0x1f, 0x50, 0xd6, 0x0f, 0xa5, 0xd9, 0xed, 0x22, 0x4f, 0x6b,
  0x3b, 0x43, 0x5e, 0x02, 0xae, 0x14, 0x16, 0x2c, 0x78, 0x67, 0xf7, 0xde,
  0x43, 0xce, 0x40, 0x23, 0x05, 0x64, 0xd4, 0xb3, 0x33, 0x9c, 0x38, 0xdc,
  0xdd, 0x99, 0xfe, 0x0d, 0xd1, 0x35, 0x0f, 0x37, 0x7f, 0x5b, 0x81, 0xe1,
  0x76, 0x24, 0x8a, 0x07, 0xed, 0x7c, 0x97, 0xb3, 0xe5, 0x40, 0x0c, 0x0a,
  0x22, 0x27, 0x2c, 0xe6, 0x9e, 0x5b, 0xbb, 0xd3, 0xee, 0xaf, 0xdc, 0x73,
  0xce, 0xb6, 0x08, 0x88, 0x99, 0x06, 0xfd, 0xcc, 0xab, 0x0c, 0x62, 0xad,

  0x94, 0xd6, 0x93, 0x58, 0xd6, 0xa3, 0xa0, 0x02, 0x3f, 0xe1, 0xf3, 0x8f,
  0xf7, 0x23, 0xf4, 0x8f, 0xf4, 0xe1, 0x8f, 0xf9, 0xca, 0xe7, 0x59, 0x27,
  0xe7, 0x68, 0x3b, 0x8a, 0xda, 0x17, 0x61, 0xa8, 0x9c, 0x65, 0x4c, 0x49,
  0x17, 0xf2, 0x03, 0xdc, 0xec, 0x7b, 0x37, 0x73, 0xca, 0xf0, 0x07, 0x70,
  0x08, 0x78, 0x48, 0x11, 0x43, 0x55, 0xd2, 0xd4, 0x3f, 0x40, 0x5e, 0xaf,
  0x47, 0x91, 0x40, 0x54, 0x12, 0x71, 0x97, 0xf9, 0x4b, 0x3a, 0x7c, 0xd6,
  0xbb, 0x24, 0x18, 0x58, 0x76, 0x49, 0x3c, 0xff, 0x56, 0xa7, 0x8d, 0xf6,
  0x42, 0xbc, 0x99, 0xde, 0xb3, 0x24, 0xb7, 0x8c, 0x7b, 0x67, 0x62, 0xbe,
  0xf4, 0xd1, 0x61, 0xb4, 0x27, 0xef, 0xec, 0x87, 0x8d, 0x62, 0xe2, 0xc0,
  0xdb, 0x09, 0xbe, 0x50, 0x69, 0x94, 0x27, 0x92, 0xc4, 0x35, 0xea, 0x24,

  0xa2, 0x60, 0x77, 0xe8, 0xeb, 0x28, 0x3a, 0x07, 0xed, 0x44, 0x5b, 0xfb,





  0x73, 0x70, 0x3f, 0xe4, 0xeb, 0x42, 0xa2, 0x6f, 0x5e, 0x4a, 0xd7, 0x74,
  0x3b, 0x9d, 0x7b, 0xe6, 0xc0, 0x57, 0xe0, 0xfe, 0x59, 0xe0, 0x16, 0x7d,
  0xac, 0xeb, 0x05, 0x91, 0x7a, 0x3e, 0xbf, 0x33, 0x53, 0xaa, 0x7b, 0xc1,

  0x63, 0x7c, 0x01, 0xca, 0xcf, 0xe9, 0x61, 0x79, 0x06, 0xf3, 0x76, 0x0d,
  0x9f, 0xe6, 0x2a, 0xa3, 0xe4, 0x1b, 0x06, 0x07, 0xbf, 0x8f, 0x18, 0x49,
  0x0c, 0xe3, 0xf3, 0x2e, 0xce, 0x27, 0x7c, 0xc2, 0xaa, 0x0b, 0xa3, 0x64,
  0x5f, 0x6c, 0xc1, 0x7b, 0x59, 0x68, 0x6b, 0x24, 0x1a, 0xc4, 0x85, 0xb6,
  0xdb, 0x1b, 0x42, 0x85, 0x88, 0xc1, 0x86, 0xe8, 0xee, 0x7f, 0x84, 0x45,
  0xc9, 0xf1, 0x68, 0xc9, 0x3a, 0xb7, 0x38, 0x49, 0x34, 0x28, 0x88, 0x43,
  0x23, 0xca, 0xc3, 0x53, 0x92, 0x85, 0x8b, 0x08, 0xf8, 0x79, 0x12, 0x03,
  0xb3, 0x40, 0xb7, 0x2b, 0x49, 0xc3, 0xd6, 0xb3, 0xde, 0x29, 0xa5, 0xa6,
  0x74, 0x48, 0xa5, 0xb0, 0x43, 0xfc, 0xa2, 0xd7, 0xc5, 0xea, 0xd2, 0x3d,
  0x9a, 0x5d, 0x49, 0x3e, 0x53, 0x45, 0x4d, 0x72, 0x2a, 0x08, 0xba, 0x92,
  0xbb, 0xa0, 0x4f, 0xa9, 0x2b, 0x8c, 0xe4, 0x79, 0xa6, 0x9b, 0x87, 0xd3,
  0xd9, 0x48, 0xbb, 0x34, 0x98, 0x5a, 0x97, 0x00, 0xf6, 0x2a, 0x3b, 0xa4,
  0x64, 0x84, 0x4a, 0x64, 0xe7, 0x48, 0x98, 0x5a, 0x96, 0x75, 0xe1, 0x97,
  0x5c, 0x18, 0xce, 0xd5, 0x61, 0x5c, 0xff, 0xc2, 0xf5, 0xb6, 0x5c, 0x4a,
  0x98, 0x14, 0x78, 0x54, 0x59, 0x75, 0xb8, 0xd0, 0x7d, 0x82, 0x31, 0xca,
  0x18, 0x64, 0x0d, 0xca, 0xa3, 0xfc, 0x35, 0xfc, 0xc6, 0x2c, 0x4a, 0xd2,
  0x5f, 0xfd, 0x2b, 0x47, 0x47, 0x28, 0x3f, 0xde, 0xa9, 0x1d, 0x8e, 0x32,
  0xd5, 0xca, 0xcd, 0x12, 0x1b, 0x2f, 0xd8, 0x4d, 0x62, 0x48, 0x6b, 0x5d,
  0x35, 0xce, 0x50, 0xb0, 0x2f, 0xb2, 0x10, 0x8e, 0xbe, 0xf7, 0x6e, 0x10,
  0x54, 0xdd, 0x47, 0xdb, 0xcd, 0x83, 0x03, 0x37, 0x65, 0x43, 0x79, 0x1e,
  0x4b, 0x23, 0xcf, 0xc1, 0x0c, 0x18, 0x74, 0xd0, 0x31, 0x2e, 0x7d, 0x3a,
  0xe2, 0xa3, 0xc3, 0x68, 0x1a, 0x03, 0xde, 0x34, 0x9a, 0x56, 0x09, 0xda,
  0xa1, 0x10, 0x4a, 0xbd, 0xe7, 0xa6, 0x11, 0x1a, 0x50, 0xf4, 0x8b, 0x16,
  0xa1, 0xf6, 0x41, 0xf3, 0x87, 0xe1, 0x0e, 0x15, 0xf9, 0x5e, 0xbe, 0xe3,
  0xb3, 0x88, 0xf8, 0xa7, 0x35, 0xff, 0xff, 0x61, 0x9f, 0xd6, 0x1c, 0xf6,
  0x70, 0x2c, 0x6a, 0x64, 0xe2, 0xce, 0x81, 0xc6, 0x4a, 0x29, 0x91, 0xe0,
  0xd2, 0x6b, 0xb5, 0xc2, 0xed, 0x6f, 0x9c, 0x41, 0x63, 0x78, 0x67, 0xbd,
  0x26, 0x8c, 0xec, 0xf9, 0x7d, 0xb2, 0x5c, 0x2a, 0x31, 0xe0, 0x41, 0xb2,
  0xe3, 0x11, 0xb8, 0x64, 0xbb, 0x07, 0x4c, 0xcf, 0xac, 0xec, 0x12, 0xfd,
  0x59, 0xc9, 0x0f, 0xbb, 0x73, 0x72, 0x93, 0xfa, 0x89, 0xb3, 0xe2, 0xf1,
  0x1e, 0x32, 0xa7, 0x9f, 0x2e, 0xd7, 0x3a, 0x82, 0xad, 0x2b, 0xca, 0x5a,
  0xb2, 0xea, 0x21, 0xcc, 0xfe, 0x1e, 0x51, 0xd6, 0x92, 0x56, 0xf7, 0xdf,
  0xd9, 0x3e, 0x51, 0x76, 0x10, 0x65, 0x21, 0x0c, 0xe9, 0xad, 0xff, 0x7b,
  0x83, 0x94, 0x17, 0x08, 0x0b, 0xc3, 0xcc, 0x72, 0xa2, 0x6b, 0x14, 0x56,
  0x92, 0x2d, 0xd7, 0x71, 0x44, 0x46, 0xeb, 0x6e, 0x93, 0x78, 0x06, 0xba,
  0x3a, 0x54, 0x38, 0x8b, 0x4c, 0xfd, 0x22, 0xec, 0x18, 0x19, 0x59, 0x45,
  0xf7, 0x01, 0x0c, 0xf9, 0xc9, 0x51, 0x7c, 0x0d, 0x40, 0x85, 0xff, 0x6d,
  0xd6, 0x10, 0x3a, 0x85, 0x46, 0xce, 0xbe, 0xbf, 0x9f, 0x03, 0x48, 0x9e,
  0xfc, 0x80, 0xfb, 0xd6, 0x72, 0xcd, 0xcf, 0x44, 0x11, 0xa5, 0x1d, 0x76,

  0x37, 0x39, 0x82, 0xd9, 0x59, 0x7b, 0x8f, 0xc5, 0x83, 0xc7, 0x35, 0xb1,

  0x9a, 0x0b, 0x4c, 0xdb, 0x96, 0x43, 0x74, 0xcb, 0x48, 0x2c, 0x7c, 0x4c,
  0x57, 0x2b, 0x91, 0x36, 0xf7, 0x93, 0x3c, 0xc3, 0x36, 0x72, 0x8f, 0x5e,
  0xea, 0x13, 0x05, 0x84, 0xcc, 0xa6, 0x2c, 0x3f, 0xb1, 0x4b, 0x95, 0x53,
  0xb0, 0xa9, 0x16, 0x32, 0x09, 0x91, 0xa2, 0x03, 0x92, 0x5f, 0x24, 0x7a,
  0x6f, 0xf6, 0xc6, 0xe3, 0xaf, 0xf7, 0xb2, 0x66, 0xaa, 0x62, 0x6f, 0xcf,
  0xa5, 0xff, 0x59, 0xf3, 0xfb, 0x9e, 0xe1, 0x20, 0x78, 0xd1, 0xaf, 0x8f,
  0x88, 0xdf, 0xfa, 0xb5, 0x1f, 0x40, 0xfb, 0xd8, 0x84, 0xb6, 0x2d, 0xfa,
  0x0b, 0x2f, 0x53, 0x60, 0xa8, 0x75, 0x75, 0x1d, 0x97, 0x02, 0x26, 0x4d,
  0x3a, 0x1d, 0x9b, 0xa9, 0xf7, 0xdf, 0x6c, 0xb7, 0xb8, 0xe8, 0x52, 0xc8,
  0xb3, 0x42, 0x29, 0x3f, 0xeb, 0xd5, 0x6f, 0x7e, 0x9e, 0x28, 0x7b, 0x72,
  0xe1, 0x64, 0x24, 0x48, 0xdd, 0x3f, 0xe1, 0x15, 0x39, 0x31, 0xd8, 0x4f,
  0xf1, 0x00, 0xa6, 0xfb, 0xe0, 0x29, 0x3f, 0x78, 0xc6, 0x5c, 0xf9, 0x2b,
  0x33, 0xc0, 0x84, 0xe1, 0x9c, 0x96, 0x10, 0x10, 0x98, 0xd5, 0x24, 0xbb,

  0xcc, 0x8b, 0x07, 0x39, 0xf7, 0x34, 0x4b, 0x87, 0xd3, 0x5e, 0xb2, 0xa1,
  0x1d, 0x57, 0x12, 0x80, 0x6b, 0xc9, 0x15, 0xbe, 0x2c, 0xef, 0x9d, 0x5d,
  0x2a, 0x40, 0xdb, 0x24, 0x16, 0x3c, 0xdf, 0xfb, 0x54, 0xe9, 0x87, 0xf2,
  0x78, 0xf2, 0xe9, 0x9a, 0xf2, 0x8f, 0x23, 0x1d, 0xa7, 0x03, 0x37, 0x96,
  0x51, 0xf8, 0xb8, 0xd6, 0xea, 0x9a, 0xc2, 0xf2, 0x3d, 0x67, 0x61, 0xf5,
  0xfa, 0xfb, 0xc8, 0x83, 0x12, 0xaf, 0x17, 0x0b, 0x6b, 0x07, 0xdc, 0x2b,

  0x92, 0x8c, 0x38, 0x5b, 0xe9, 0xf6, 0x10, 0x5d, 0x48, 0x57, 0x4d, 0x22,
  0xd3, 0x81, 0x5e, 0x8c, 0x41, 0xf2, 0x60, 0x52, 0xe0, 0xb2, 0x4c, 0xdd,
  0x5b, 0xc5, 0x0d, 0xd6, 0x44, 0x7e, 0x40, 0x88, 0xd3, 0x2f, 0xd3, 0xa9,
  0x9a, 0x76, 0xf7, 0xcd, 0x2e, 0xe5, 0x4e, 0x73, 0xed, 0x4d, 0x70, 0x48,
  0x14, 0x56, 0xa1, 0xe0, 0xec, 0xa8, 0x87, 0xd9, 0x6e, 0xb9, 0xb6, 0x8c,
  0x76, 0xd1, 0x3d, 0x6f, 0xbf, 0xea, 0xd1, 0xc3, 0x2d, 0x90, 0xa8, 0x41,
  0x8e, 0xb9, 0x62, 0xe6, 0x0f, 0xbf, 0x3e, 0xbf, 0x06, 0x03, 0xd7, 0xca,
  0x09, 0xd2, 0x4a, 0xdd, 0xf5, 0x11, 0x8c, 0x7c, 0x54, 0xd3, 0x3c, 0xd0,

  0x15, 0x82, 0x0c, 0xfd, 0xf6, 0x35, 0xea, 0x32, 0x08, 0x4d, 0xca, 0x5c,
  0xd4, 0xe5, 0xfd, 0x5a, 0xa0, 0x9c, 0x80, 0xd7, 0x28, 0x8a, 0xd0, 0xf5,
  0x59, 0xc0, 0x1a, 0x5b, 0x88, 0xae, 0x0e, 0x87, 0x9f, 0x1e, 0xe0, 0x52,
  0x34, 0x07, 0x18, 0xbf, 0x31, 0xac, 0x9b, 0xb7, 0x35, 0xf5, 0x70, 0x97,
  0x2d, 0x50, 0x2c, 0x32, 0xf7, 0x38, 0xbf, 0xf6, 0x21, 0x44, 0x44, 0x0e,
  0xcf, 0xc8, 0x5d, 0x45, 0xdf, 0x02, 0x35, 0xca, 0x9c, 0xc9, 0xe7, 0x9c,

  0xa6, 0x19, 0xc7, 0x9f, 0xe8, 0x75, 0x57, 0xcc, 0x01, 0x23, 0x94, 0xf4,
  0xc9, 0xe1, 0x7d, 0xae, 0x76, 0x8d, 0x4a, 0x50, 0x06, 0x29, 0x60, 0x03,
  0x16, 0x33, 0x05, 0x05, 0xa3, 0xfa, 0x4f, 0xf6, 0x48, 0x58, 0xa0, 0xfd,
  0xe7, 0x9b, 0x87, 0xd3, 0xfe, 0x1c, 0xbf, 0x22, 0xd2, 0xe8, 0x6d, 0x6a,
  0xee, 0x40, 0xb4, 0xaa, 0xa2, 0x4e, 0xaf, 0x19, 0x61, 0x4c, 0x82, 0x7b,
  0x70, 0x02, 0x13, 0xc7, 0x6f, 0x37, 0xb5, 0x6d, 0x77, 0xac, 0xab, 0x9b,

  0x48, 0x09, 0x89, 0xd1, 0xea, 0x29, 0xba, 0x0d, 0x69, 0x61, 0x2c, 0xea,
  0x14, 0xb5, 0x23, 0xe6, 0x07, 0xd9, 0x6d, 0xc3, 0xc1, 0x05, 0x09, 0xc4,
  0xd0, 0x54, 0x72, 0xa3, 0xd5, 0x21, 0xcf, 0xc2, 0x81, 0x98, 0x46, 0xaa,
  0x2a, 0xa4, 0x68, 0x11, 0x5f, 0xb3, 0xfe, 0xba, 0xdb, 0xd9, 0xe5, 0xa8,
  0xac, 0x72, 0x92, 0x37, 0x48, 0x1a, 0xd5, 0xd1, 0x88, 0xf0, 0x07, 0xe0,
  0x26, 0x64, 0x3d, 0xc6, 0x86, 0x93, 0xc0, 0x5a, 0xa2, 0x70, 0xa4, 0xed,
  0x71, 0x97, 0x20, 0x56, 0xc4, 0xdc, 0xec, 0x98, 0x82, 0x82, 0x1a, 0x6a,
  0xab, 0xbc, 0x12, 0x2d, 0xc2, 0xb1, 0xed, 0x5c, 0x35, 0xe9, 0xc5, 0x2e,
  0xd9, 0xad, 0x95, 0xa2, 0xb0, 0x37, 0x69, 0x85, 0x62, 0xf6, 0xc0, 0x17,
  0x95, 0xd7, 0xf5, 0x1a, 0x07, 0xf6, 0xe6, 0xe4, 0xf4, 0xd8, 0x66, 0xb5,
  0xfd, 0xcf, 0xbd, 0x11, 0x6d, 0x78, 0x35, 0x0d, 0x72, 0xf8, 0xb8, 0x86,
  0xd4, 0x2b, 0x08, 0x96, 0x22, 0xd3, 0x6f, 0x06, 0xdc, 0xf9, 0x12, 0x3f,
  0x6e, 0x55, 0x98, 0x1e, 0xbf, 0xfb, 0xf6, 0xe4, 0xfd, 0xd9, 0xbb, 0xb7,
  0xc7, 0xef, 0x2e, 0x3e, 0xf3, 0xd8, 0x5d, 0xac, 0xaf, 0x43, 0x1d, 0xa6,
  0x17, 0xe4, 0x14, 0x0e, 0xba, 0x41, 0x09, 0x20, 0xf7, 0x57, 0x31, 0xeb,
  0x94, 0x7f, 0x8d, 0xfc, 0xe1, 0xbc, 0x87, 0xd4, 0xb3, 0x4f, 0x89, 0x24,
  0x2b, 0x72, 0xec, 0xcc, 0x28, 0xaa, 0x3a, 0xe2, 0x58, 0x80, 0xed, 0x1d,
  0x4c, 0xad, 0x25, 0x6e, 0x09, 0xca, 0x1b, 0xa9, 0xc0, 0xd4, 0x27, 0xf6,
  0x33, 0xbb, 0x25, 0x1c, 0x05, 0x74, 0xb1, 0xd2, 0xd6, 0x24, 0x1c, 0x71,
  0x7f, 0xe0, 0x12, 0xd0, 0x78, 0x8f, 0x0a, 0xc5, 0xbe, 0x73, 0x6d, 0xe5,
  0xaf, 0xd2, 0xda, 0xc5, 0x5e, 0xc4, 0x71, 0xe3, 0x03, 0xd5, 0x78, 0xb8,
  0xc0, 0x5e, 0x9b, 0xe3, 0x2e, 0x16, 0xb0, 0xb7, 0x8a, 0xbf, 0xaa, 0xb7,
  0xe8, 0xf9, 0xde, 0xde, 0x8f, 0xe8, 0xaf, 0xfd, 0x27, 0x69, 0xb0, 0x1d,

  0x42, 0xa0, 0xd6, 0xde, 0x44, 0x84, 0xe3, 0x7a, 0xd5, 0x85, 0x44, 0xb7,
  0x76, 0x3b, 0xe1, 0x06, 0xfe, 0x78, 0xfe, 0xfe, 0xec, 0xfb, 0xbf, 0xfc,
  0xc2, 0x9f, 0xf0, 0x92, 0xcd, 0xfe, 0x4a, 0x39, 0x98, 0x3a, 0xf8, 0x8f,
  0x3f, 0xeb, 0x6b, 0x1b, 0x3f, 0xd7, 0x1e, 0x7f, 0x20, 0xa1, 0x76, 0x79,
  0x23, 0x08, 0x9c, 0xa3, 0x70, 0x9b, 0xfb, 0x5e, 0x69, 0x19, 0xb7, 0xf3,
  0x70, 0xd8, 0x44, 0x20, 0x96, 0x6f, 0x75, 0x07, 0xcb, 0x23, 0x74, 0xc8,
  0x02, 0x9a, 0x06, 0x15, 0xc5, 0x2e, 0x83, 0x77, 0x20, 0x65, 0xe5, 0x54,
  0x37, 0x3e, 0x40, 0x3d, 0x32, 0x32, 0x52, 0xed, 0x7e, 0xbc, 0x3c, 0x3d,


  0xfd, 0xf9, 0x9b, 0xa0, 0x1d, 0x98, 0xda, 0xdb, 0x80, 0x36, 0xc5, 0x76,

  0x41, 0x43, 0xab, 0xa3, 0xea, 0x15, 0xd8, 0x84, 0x44, 0xfb, 0xee, 0x4c,
  0x66, 0xf3, 0x02, 0xca, 0xf1, 0xb0, 0xce, 0x8c, 0x4a, 0x9b, 0x52, 0xc4,
  0x5f, 0x81, 0xc5, 0x69, 0x62, 0xf5, 0x1e, 0x27, 0x4e, 0x06, 0x48, 0xe7,
  0xfe, 0x43, 0x9c, 0x55, 0xc9, 0xfb, 0xc9, 0x45, 0x71, 0x28, 0x5b, 0x28,
  0x2d, 0x2a, 0x11, 0x77, 0x4b, 0x97, 0x86, 0xdd, 0xf3, 0x58, 0x43, 0x66,
  0xc6, 0x87, 0x20, 0x79, 0x5b, 0xe5, 0xf5, 0x27, 0x14, 0x75, 0xd0, 0x0d,
  0x85, 0x86, 0xa4, 0x35, 0xfc, 0xa4, 0xf2, 0x62, 0x4e, 0x02, 0x32, 0xe2,
  0xea, 0xe9, 0xf2, 0x3a, 0x36, 0x3b, 0x12, 0xba, 0x29, 0x8b, 0x62, 0x72,
  0xa3, 0xb2, 0x13, 0x3a, 0x6d, 0x15, 0x77, 0x09, 0x3e, 0x3b, 0x67, 0x50,
  0xd5, 0x16, 0x66, 0x20, 0x56, 0x96, 0x3e, 0xd0, 0x72, 0x63, 0x7a, 0x80,
  0x3f, 0xdd, 0xd4, 0xd9, 0x62, 0xde, 0x53, 0x61, 0xef, 0x33, 0x0c, 0xc7,
  0x31, 0xb4, 0xc8, 0xdf, 0xf6, 0x8c, 0x77, 0x04, 0x4e, 0x60, 0x1c, 0x88,

  0x2c, 0x84, 0xfe, 0x3a, 0xa1, 0x44, 0x57, 0x12, 0x7d, 0x8b, 0x14, 0x03,
  0x21, 0x09, 0x8d, 0xe3, 0x0b, 0x36, 0x22, 0x7d, 0x5c, 0xcf, 0xf6, 0x8b,
  0x59, 0x58, 0x30, 0x65, 0x58, 0x92, 0x8f, 0xdf, 0xa1, 0x39, 0x79, 0xc3,

  0xdb, 0x44, 0x81, 0x43, 0xf8, 0xa4, 0x5a, 0xcf, 0xc8, 0x6f, 0x1e, 0x32,

  0x5c, 0x0a, 0xcf, 0x57, 0xa6, 0x74, 0x9b, 0x34, 0x94, 0xdb, 0xdb, 0x24,


  0x12, 0xd9, 0x10, 0xc4, 0x22, 0x3a, 0xd9, 0x58, 0x9d, 0x84, 0x37, 0xf1,

  0x70, 0xe4, 0x07, 0xcc, 0x34, 0x12, 0x1b, 0x36, 0x8f, 0x91, 0x13, 0x9e,
  0x11, 0x64, 0xfc, 0xf1, 0xec, 0x44, 0x01, 0xc4, 0xc9, 0xb3, 0x64, 0x3d,
  0x4e, 0xa1, 0xb4, 0xb2, 0x58, 0x10, 0x2e, 0x9e, 0xbe, 0x04, 0x82, 0x43,
  0x31, 0x08, 0x2e, 0x84, 0xdc, 0x88, 0x56, 0x55, 0xbb, 0x96, 0x0e, 0xb9,
  0x58, 0x3b, 0xa2, 0x2d, 0x41, 0x2d, 0x2f, 0xf2, 0xf8, 0x05, 0x44, 0x11,

  0xa1, 0x12, 0x5b, 0x75, 0x20, 0xb5, 0xb2, 0xa8, 0xae, 0x9b, 0x68, 0x95,
  0xb1, 0x6d, 0xc8, 0x68, 0x44, 0xe0, 0xa2, 0xac, 0x63, 0x70, 0x9a, 0x13,
  0x4a, 0x9b, 0xcf, 0xd0, 0x8a, 0x87, 0xaf, 0xbc, 0xf9, 0xef, 0xc5, 0xd9,
  0xab, 0xb3, 0x53, 0xf3, 0x97, 0xe3, 0x37, 0x27, 0xdf, 0x3b, 0xad, 0x40,
  0x3a, 0x67, 0xd9, 0xda, 0x34, 0x8e, 0x9f, 0x03, 0x7a, 0xf1, 0xe9, 0xa0,
  0xc5, 0x8e, 0x39, 0x09, 0x91, 0xf2, 0x0f, 0x5b, 0xc2, 0xbc, 0xdd, 0x5f,
  0xd2, 0xe3, 0x73, 0x24, 0xa7, 0x29, 0x63, 0xd4, 0xc3, 0x1f, 0x49, 0x05,
  0x7a, 0x89, 0xb4, 0x68, 0x1e, 0xd5, 0xd6, 0x52, 0xb8, 0x4d, 0x3e, 0x69,
  0xb1, 0x38, 0x68, 0x56, 0xbe, 0xe6, 0xd0, 0x66, 0x8e, 0x3c, 0x29, 0x24,
  0x61, 0xe4, 0x73, 0x2d, 0x9e, 0x6d, 0xfc, 0x1e, 0xe8, 0x5a, 0x53, 0x25,
  0x5d, 0x67, 0x28, 0x83, 0xc7, 0x47, 0xb5, 0x2f, 0xb2, 0x81, 0xb7, 0x48,
  0x55, 0x78, 0x9b, 0x2a, 0x03, 0x63, 0x44, 0x5e, 0x53, 0x0b, 0xe5, 0xa3,
  0x43, 0x11, 0x44, 0x0a, 0x6e, 0xb8, 0xf6, 0x9a, 0x64, 0x03, 0x24, 0x95,
  0x0f, 0xb9, 0x15, 0xa4, 0xc8, 0x7b, 0x10, 0x3f, 0x42, 0xad, 0xd1, 0x72,
  0x41, 0x2e, 0x53, 0xa2, 0x3f, 0xdc, 0x24, 0x94, 0xa5, 0xd2, 0x57, 0x6d,
  0x33, 0x17, 0x6c, 0x97, 0x06, 0xa5, 0x56, 0xa1, 0x69, 0x45, 0x67, 0x20,
  0xca, 0x7e, 0x5b, 0xe3, 0xa8, 0x37, 0x7c, 0x3a, 0xdc, 0x80, 0x20, 0xeb,
  0x9a, 0xb2, 0xbe, 0xeb, 0x47, 0x9b, 0xc6, 0x20, 0x8d, 0xf0, 0xef, 0xeb,
  0xfc, 0x3a, 0x45, 0x6d, 0x99, 0xb9, 0x2a, 0xc3, 0x21, 0xbf, 0xd4, 0x19,
  0x23, 0xfd, 0x59, 0x83, 0xa4, 0xed, 0x51, 0x1e, 0xff, 0x9c, 0x41, 0x1e,
  0x77, 0xc6, 0xb8, 0xfa, 0x59, 0x83, 0x0c, 0x55, 0x40, 0x18, 0xc5, 0xf8,
  0xfb, 0x93, 0x8b, 0xe4, 0xd5, 0xd9, 0x6b, 0x77, 0xc1, 0x2e, 0x24, 0x1f,
  0x90, 0x48, 0x20, 0x99, 0xac, 0x0b, 0x43, 0x83, 0xd4, 0x2f, 0xc9, 0x36,
  0xa0, 0xe0, 0x3c, 0x45, 0x4a, 0xc2, 0xd1, 0x6e, 0xf6, 0x59, 0x5e, 0x31,
  0x1c, 0x11, 0x25, 0xd6, 0xc0, 0x7b, 0xe3, 0xd5, 0xe8, 0xd2, 0xc3, 0x4b,
  0x02, 0x3a, 0xba, 0x54, 0xf9, 0x4b, 0x37, 0x92, 0xb0, 0xee, 0xd2, 0x4a,
  0x4b, 0x4a, 0x27, 0x29, 0xe1, 0x19, 0x15, 0x5c, 0x1b, 0x49, 0x45, 0x29,
  0x21, 0xf4, 0xb0, 0x0e, 0xe7, 0x23, 0x10, 0x1b, 0xdd, 0x39, 0x6f, 0x74,
  0x26, 0x7e, 0x26, 0xe1, 0x81, 0xe6, 0xfa, 0xb7, 0x28, 0x5d, 0x1a, 0xd0,
  0x41, 0xf8, 0x51, 0x52, 0x37, 0x12, 0x5d, 0xc0, 0x47, 0xa4, 0xed, 0xa2,
  0x9a, 0x2f, 0xdc, 0x86, 0x3a, 0x90, 0xd8, 0x76, 0x08, 0xfb, 0x9d, 0x43,
  0x09, 0x25, 0x18, 0x15, 0x9d, 0xbd, 0x06, 0x92, 0x57, 0x96, 0xff, 0xc3,
  0x53, 0xd0, 0x8f, 0xac, 0x3e, 0x66, 0x56, 0xbe, 0x40, 0x67, 0xe7, 0x19,
  0xdf, 0x88, 0xfa, 0xce, 0x08, 0xf5, 0x5b, 0x18, 0xe4, 0x64, 0x3d, 0x09,
  0xa2, 0x93, 0x7b, 0xf3, 0x91, 0x68, 0x65, 0x16, 0x36, 0xaa, 0xac, 0xac,

  0x3d, 0xaa, 0x96, 0xbc, 0xf3, 0x58, 0x68, 0x85, 0x34, 0x43, 0xd9, 0x66,
  0x75, 0x8e, 0x70, 0x58, 0x78, 0xbd, 0x24, 0x66, 0xa9, 0x5f, 0xd5, 0x8a,



  0x6b, 0x41, 0xe0, 0xf6, 0x3a, 0x09, 0x5a, 0xb4, 0x1f, 0xf3, 0x29, 0xec,
  0xd7, 0x90, 0xbb, 0x28, 0x05, 0x75, 0xe9, 0xae, 0x02, 0x53, 0x6d, 0x8e,
  0x59, 0x89, 0x0d, 0x1c, 0x20, 0x95, 0x97, 0x9a, 0xde, 0xa7, 0x04, 0xf6,

  0x80, 0xde, 0x85, 0x69, 0xc1, 0x95, 0x86, 0x7a, 0x02, 0xf1, 0x9a, 0x3b,
  0x57, 0xf3, 0xf4, 0x98, 0xff, 0x78, 0xa5, 0x3a, 0x9b, 0xd6, 0x0d, 0x25,
  0x56, 0x5d, 0xbb, 0xb0, 0x70, 0x16, 0x62, 0xe2, 0x90, 0x78, 0x9b, 0x42,
  0x0e, 0x71, 0x1d, 0x41, 0x64, 0x13, 0xea, 0x8e, 0x8f, 0xf3, 0x49, 0xe7,
  0x2b, 0xfa, 0x11, 0x46, 0x74, 0x72, 0x5f, 0xf0, 0x7d, 0xf2, 0xba, 0x83,


  0xf2, 0xac, 0x37, 0xda, 0xd3, 0x2e, 0x5d, 0x78, 0x9e, 0x7d, 0x8c, 0x68,
  0x9f, 0xfc, 0x5c, 0x7c, 0x11, 0x19, 0x15, 0x2d, 0x8a, 0xe6, 0x5c, 0x65,
  0xab, 0x85, 0xf0, 0x4c, 0xf9, 0x09, 0x42, 0xc7, 0xf0, 0x27, 0x60, 0x97,
  0xa7, 0x3a, 0x4b, 0xa3, 0x0e, 0xfb, 0xa6, 0xe0, 0x33, 0xf9, 0xac, 0xe1,
  0xbb, 0xac, 0x39, 0x10, 0xea, 0x46, 0x6e, 0xa9, 0x4d, 0x7a, 0xa1, 0xe3,
  0x47, 0x94, 0xde, 0x68, 0x64, 0x53, 0x69, 0xff, 0xad, 0x6f, 0x84, 0x48,
  0x77, 0x2c, 0xbe, 0x9c, 0x2f, 0x19, 0xeb, 0x5d, 0x57, 0x5c, 0xb6, 0xeb,
  0xd0, 0x1d, 0x15, 0x6e, 0x9d, 0x17, 0x5c, 0x11, 0x22, 0xdf, 0x28, 0x79,
  0x5b, 0x06, 0xe8, 0x93, 0xe5, 0xbc, 0x91, 0xca, 0x7b, 0xca, 0x4c, 0xe4,
  0xdd, 0xb9, 0x4a, 0x8b, 0x4b, 0x46, 0x14, 0xf4, 0x06, 0x04, 0x89, 0x5b,
  0x61, 0x68, 0xae, 0x3a, 0xd4, 0x97, 0x22, 0x32, 0xbb, 0x2e, 0x1e, 0xfa,
  0xc1, 0xbe, 0xdd, 0x07, 0xe9, 0x94, 0x85, 0xf2, 0x14, 0xda, 0x88, 0xef,

  0x00, 0x4b, 0x78, 0x93, 0x72, 0x2b, 0x5d, 0xed, 0x37, 0xef, 0x4c, 0x16,
  0x3d, 0x28, 0x0a, 0xac, 0x85, 0x79, 0xd2, 0xc8, 0xdf, 0x49, 0xd9, 0xa9,
  0xc6, 0x99, 0x9e, 0x5c, 0xde, 0x28, 0xd2, 0x6a, 0x00, 0x33, 0xdc, 0xb2,


  0x47, 0x0e, 0xb3, 0x42, 0xbb, 0xa6, 0xca, 0x98, 0x1e, 0x8f, 0x0c, 0xc1,
  0x56, 0x79, 0xd9, 0x1c, 0x0e, 0x34, 0xc4, 0x5b, 0xcf, 0x81, 0x5b, 0xcf,
  0x0d, 0x28, 0xe5, 0xfc, 0xe5, 0x78, 0xac, 0x74, 0xf2, 0x2a, 0x24, 0x09,
  0xf1, 0x59, 0x12, 0x9a, 0x85, 0x02, 0x3a, 0x85, 0xaa, 0xa2, 0x8c, 0xd1,


  0x49, 0x32, 0x38, 0x60, 0x9e, 0xf6, 0x9a, 0x19, 0x73, 0x7c, 0xb9, 0x37,

  0xad, 0x4d, 0x64, 0x0f, 0x76, 0x07, 0x05, 0xe4, 0xb3, 0x68, 0xba, 0x0a,
  0xc7, 0x2b, 0x69, 0x9b, 0x51, 0x8e, 0xac, 0x3c, 0x9e, 0x74, 0x43, 0xc3,
  0x77, 0xf2, 0x56, 0xcf, 0xc2, 0x83, 0xa3, 0xc8, 0xa2, 0xbf, 0xe5, 0x55,
  0x0d, 0xfe, 0x95, 0x45, 0x7f, 0x1b, 0x59, 0xf4, 0x23, 0xfb, 0x2d, 0xfe,
  0xd4, 0xe1, 0xe1, 0x53, 0xa9, 0xaa, 0x60, 0x1f, 0x1d, 0x15, 0xfd, 0x5b,
  0x06, 0xc4, 0x5f, 0xe3, 0x15, 0x9b, 0x07, 0x87, 0x5c, 0x7f, 0x10, 0x7e,
  0xcb, 0xbb, 0xbc, 0xde, 0xa7, 0x1e, 0xbb, 0x65, 0x19, 0xd5, 0x9b, 0xc6,
  0x23, 0xad, 0x9e, 0xf9, 0x4c, 0xc0, 0x7e, 0xd4, 0x98, 0x23, 0x3d, 0xfc,
  0x86, 0x32, 0xa8, 0x9a, 0x78, 0xea, 0xaf, 0x4e, 0xc3, 0xfb, 0xce, 0x13,
  0xeb, 0x46, 0xd9, 0x3b, 0xd4, 0x10, 0xfa, 0x4b, 0xf0, 0xe2, 0x45, 0xb6,
  0xe4, 0x7e, 0x0d, 0x19, 0x81, 0xf5, 0x38, 0x0f, 0x20, 0xd7, 0xdc, 0xcd,
  0xab, 0x14, 0x68, 0xcb, 0x8b, 0xf4, 0x2e, 0x02, 0xb6, 0x25, 0x9e, 0x62,
  0x36, 0x57, 0xcc, 0xfd, 0xbc, 0xcc, 0x0a, 0xb2, 0x14, 0xa0, 0x08, 0x88,
  0xdb, 0x8c, 0xfc, 0xb0, 0x88, 0x9a, 0xcf, 0xad, 0xab, 0x56, 0xbe, 0x1a,
  0xc0, 0x01, 0xd4, 0xd2, 0xc0, 0x90, 0xef, 0x8c, 0x68, 0x09, 0x71, 0x6c,
  0xb8, 0x83, 0xa7, 0x76, 0xdf, 0xec, 0x49, 0x90, 0x67, 0x8b, 0x31, 0x42,
  0xbc, 0xad, 0x53, 0x66, 0xa2, 0x01, 0x01, 0xe9, 0xa3, 0x83, 0x28, 0x5d,
  0x1e, 0x5a, 0xcd, 0x95, 0xa7, 0x20, 0x1e, 0x30, 0x37, 0x3e, 0x27, 0x5e,
  0x27, 0x80, 0xbb, 0xa3, 0xe4, 0x0c, 0x5e, 0xb8, 0x16, 0xc8, 0x38, 0x57,
  0x02, 0xa5, 0xae, 0x68, 0xb4, 0x4d, 0xb8, 0xcf, 0xbc, 0x13, 0xd6, 0x59,
  0x69, 0xf6, 0xcb, 0x9e, 0xb0, 0x59, 0x07, 0xc1, 0xa4, 0xbe, 0xe6, 0x2c,
  0x79, 0x7f, 0x7c, 0xf1, 0x1e, 0x81, 0x5e, 0x62, 0x00, 0x01, 0x48, 0x6a,
  0x5a, 0xed, 0x5a, 0x90, 0x20, 0xe1, 0x66, 0x4e, 0x0f, 0x71, 0x0c, 0x82,
  0xf1, 0xcb, 0xec, 0x79, 0xf3, 0x3f, 0xf5, 0x3d, 0xae, 0x7e, 0xc9, 0xb4,
  0xd6, 0xc4, 0x85, 0x74, 0xda, 0xc8, 0x6a, 0x87, 0x87, 0x2e, 0x0b, 0x09,
  0xbd, 0x8d, 0x59, 0xca, 0x49, 0x26, 0xf9, 0x48, 0x92, 0x36, 0xb5, 0xfa,
  0x42, 0x5b, 0x09, 0xd0, 0x43, 0x9c, 0x8c, 0x5d, 0x56, 0x31, 0xbd, 0x43,
  0x3e, 0x6d, 0x15, 0x00, 0x99, 0x84, 0x5f, 0x98, 0xc0, 0xd5, 0xe0, 0x1e,

  0x07, 0xe5, 0x1a, 0xc0, 0x47, 0xfb, 0xfb, 0x61, 0xde, 0x70, 0x3a, 0x31,

  0x4c, 0x55, 0xb4, 0x39, 0xa9, 0xea, 0xc1, 0x2b, 0xec, 0x35, 0x85, 0x7a,
  0x59, 0x93, 0xad, 0x31, 0x9c, 0x93, 0x1b, 0x93, 0x76, 0x2c, 0x34, 0x2a,
  0x0e, 0x99, 0xc7, 0x7c, 0x87, 0x32, 0x23, 0xd9, 0xb3, 0x36, 0x67, 0xe1,
  0x0a, 0x24, 0xed, 0x9d, 0x9b, 0x6a, 0x92, 0x31, 0x6a, 0x82, 0xc5, 0xfb,
  0x1d, 0xcc, 0x2c, 0xe0, 0xdf, 0x87, 0x8f, 0x23, 0x14, 0x91, 0x8c, 0x2f,
  0xce, 0xde, 0x2b, 0xf6, 0x7e, 0x28, 0x9f, 0x91, 0xf9, 0x40, 0x4f, 0x58,
  0xa8, 0x95, 0x41, 0x08, 0xb9, 0x33, 0xb3, 0xf8, 0x00, 0x16, 0xc6, 0xd4,
  0xfb, 0x2a, 0x73, 0x00, 0xb4, 0xd0, 0x93, 0xb5, 0x7d, 0x2b, 0x80, 0x00,
  0x0a, 0xd9, 0xab, 0xf7, 0xd2, 0x7b, 0x89, 0xaf, 0xd9, 0x19, 0xdf, 0x5f,
  0xae, 0x5f, 0x27, 0x3a, 0x92, 0x4a, 0x76, 0x42, 0xfc, 0x95, 0x74, 0x58,
  0xdb, 0xe9, 0xb3, 0x4b, 0x8b, 0x7c, 0x89, 0xce, 0x1c, 0x24, 0x33, 0x73,
  0x78, 0x59, 0xa4, 0xb5, 0x8c, 0xd1, 0x6d, 0x96, 0xf8, 0x04, 0x43, 0x16,
  0x4b, 0x62, 0x53, 0xca, 0xbe, 0xb0, 0x69, 0x00, 0xeb, 0x5e, 0x56, 0x0a,
  0xd2, 0x2a, 0x82, 0x53, 0x8d, 0x05, 0xa7, 0x67, 0x7b, 0x52, 0xff, 0xfc,
  0xec, 0xfd, 0x45, 0x62, 0x85, 0x3e, 0xbe, 0x8c, 0x1f, 0x75, 0x2e, 0x10,
  0xb5, 0x4c, 0x81, 0xcf, 0xce, 0x95, 0x6d, 0x04, 0x0e, 0x49, 0xb1, 0x09,
  0x9a, 0xce, 0x10, 0x03, 0xb4, 0xd9, 0x9b, 0x95, 0x8c, 0xe5, 0xe3, 0xc2,
  0x8f, 0x82, 0xd2, 0x05, 0x39, 0xd3, 0x87, 0x0c, 0xe6, 0x94, 0xdb, 0xa3,
  0x83, 0x08, 0x65, 0x90, 0x15, 0xfd, 0xfe, 0x78, 0x7c, 0xc1, 0x3b, 0x46,
  0x7f, 0x0b, 0xe6, 0xcd, 0x05, 0xa2, 0xf2, 0xc3, 0xc0, 0x50, 0xb1, 0x94,
  0x41, 0x09, 0x68, 0xc6, 0xda, 0xc0, 0xf8, 0xb6, 0xc0, 0xdd, 0xdb, 0xb1,
  0x23, 0x2f, 0xdb, 0x10, 0x5c, 0x53, 0xe8, 0x04, 0x17, 0x1c, 0x3f, 0xd8,
  0x92, 0x8f, 0x6c, 0x19, 0xc5, 0x8c, 0x2f, 0x44, 0x0b, 0x7e, 0xfd, 0xe8,
  0x91, 0xc7, 0x29, 0x48, 0x4e, 0xc9, 0x00, 0x27, 0xda, 0x26, 0x97, 0x7e,

  0x38, 0x54, 0x52, 0x81, 0xb0, 0x60, 0xa2, 0xe0, 0xe7, 0xdc, 0x38, 0x8f,
  0xa5, 0x44, 0xfd, 0xd4, 0xaa, 0x0a, 0xde, 0x54, 0xe8, 0xc7, 0x9a, 0xf1,
  0x03, 0xb5, 0xad, 0x43, 0x72, 0x47, 0x4c, 0xe9, 0x7f, 0x36, 0x84, 0x6e,
  0xb3, 0x16, 0x79, 0xe9, 0xbe, 0x5c, 0x30, 0xba, 0x56, 0x5e, 0xac, 0x33,
  0xe8, 0x68, 0x69, 0xb5, 0xa0, 0x56, 0x0f, 0x86, 0x87, 0x54, 0x52, 0x40,
  0x76, 0x53, 0xc4, 0x60, 0xa9, 0xbd, 0x6f, 0x88, 0xfc, 0x39, 0x39, 0x3d,
  0x76, 0x27, 0xc5, 0x7d, 0x22, 0x70, 0x83, 0x9d, 0xae, 0x4f, 0xad, 0xed,
  0xad, 0x98, 0x18, 0x25, 0xe7, 0xd4, 0xb3, 0x1c, 0x7a, 0x53, 0xfd, 0xef,
  0x6e, 0x34, 0xbe, 0x24, 0xf0, 0xc0, 0x1b, 0xb1, 0x09, 0x33, 0x25, 0x2f,
  0xcc, 0xc1, 0xe2, 0x27, 0xf4, 0x57, 0x0f, 0xd3, 0x3c, 0x58, 0xee, 0x33,
  0xf7, 0x72, 0x6d, 0x96, 0x62, 0x0c, 0xf4, 0xee, 0x23, 0x8f, 0x84, 0xae,
  0x8c, 0xf5, 0x8e, 0x21, 0x2c, 0x6f, 0xa6, 0xbb, 0x2c, 0xad, 0x62, 0x66,
  0x3c, 0xc2, 0x5c, 0x9f, 0x69, 0xf1, 0x70, 0x6f, 0x28, 0x16, 0x06, 0x2f,
  0x27, 0xb6, 0x81, 0x10, 0xa5, 0x09, 0x93, 0x22, 0x67, 0xc6, 0x2a, 0x88,
  0xd3, 0x2e, 0x6c, 0xae, 0xbd, 0x0d, 0x03, 0x13, 0xaf, 0x9c, 0xe8, 0xb5,


  0xa1, 0x95, 0x74, 0x37, 0xb7, 0xd3, 0x80, 0xfd, 0x11, 0x53, 0xa2, 0x25,
  0x1b, 0x2b, 0xbf, 0x5a, 0xb3, 0x93, 0xfc, 0x64, 0x01, 0xbd, 0x23, 0xa7,
  0x01, 0xc5, 0x03, 0x8c, 0x80, 0xf7, 0x95, 0xff, 0x47, 0x8f, 0xdd, 0x50,
  0x73, 0xaa, 0xe9, 0xb4, 0x63, 0x39, 0xde, 0x63, 0xbb, 0x48, 0x30, 0x02,
  0x03, 0x1e, 0x13, 0x8b, 0x91, 0x9b, 0x75, 0x4f, 0x22, 0xe8, 0x6f, 0xfe,
  0x9e, 0x3c, 0x15, 0xd3, 0x97, 0x6c, 0xdf, 0xe2, 0xce, 0xe5, 0xde, 0x4b,
  0xd3, 0x6e, 0xf6, 0x9b, 0x71, 0xa3, 0x1a, 0xf9, 0x8d, 0x80, 0x30, 0x5e,
  0x89, 0x5f, 0x86, 0x5a, 0x51, 0x05, 0x88, 0x8b, 0xeb, 0xa5, 0xe4, 0xf0,

  0x7a, 0x5f, 0xfa, 0x5c, 0x3c, 0x19, 0x54, 0x79, 0x6e, 0xf1, 0x1a, 0x3d,
  0x2e, 0x5a, 0xaa, 0xc5, 0x6c, 0x61, 0x8c, 0x0c, 0xf1, 0x20, 0xb7, 0xd4,

  0xd6, 0xba, 0x87, 0x18, 0x7b, 0x84, 0x5d, 0x06, 0x51, 0x2c, 0xea, 0xae,
  0x3a, 0x15, 0x4a, 0x0f, 0xfa, 0x8a, 0x36, 0x5c, 0x9e, 0xe3, 0x5f, 0x29,
  0x40, 0x4a, 0xe8, 0x12, 0xaf, 0xb2, 0xbf, 0x41, 0x91, 0x74, 0xfd, 0x5a,
  0x35, 0xa6, 0x9c, 0x16, 0xeb, 0xd4, 0xb3, 0xe5, 0x1f, 0x3d, 0x13, 0x0f,
  0x95, 0xb8, 0x41, 0x28, 0xac, 0x5e, 0x64, 0x4d, 0x10, 0x5e, 0x7c, 0x7c,
  0x60, 0x7d, 0x95, 0x94, 0x31, 0x2b, 0x75, 0x20, 0x7e, 0xde, 0xac, 0x61,
  0x6e, 0xe3, 0xf1, 0xd7, 0xc9, 0xdb, 0xd7, 0x8f, 0x29, 0x9d, 0xe7, 0x32,
  0xab, 0x56, 0x15, 0xa5, 0x70, 0x2a, 0x0d, 0x9f, 0x7d, 0xe3, 0x0d, 0x76,
  0xe8, 0x1c, 0x9f, 0x22, 0x62, 0x73, 0xb9, 0xbd, 0x64, 0x2b, 0x98, 0xf3,
  0xa3, 0xba, 0xe7, 0x4b, 0x45, 0x46, 0x60, 0xef, 0x17, 0xa0, 0x17, 0x04,
  0xac, 0x8a, 0x95, 0x96, 0xcf, 0xba, 0x49, 0xe1, 0x2d, 0x06, 0xf6, 0xf8,
  0xc8, 0x31, 0xb0, 0xea, 0x6e, 0x45, 0x9d, 0x55, 0x8a, 0x4b, 0xb2, 0x0b,
  0x22, 0x37, 0xea, 0x31, 0x33, 0xcd, 0x57, 0x7c, 0xef, 0x49, 0x89, 0x0d,

  0x5f, 0x83, 0x7a, 0x0e, 0x7f, 0xa9, 0xf7, 0xde, 0x63, 0xdf, 0xab, 0x50,
  0x4b, 0x6f, 0x34, 0x69, 0x89, 0x01, 0x1d, 0xc5, 0x7b, 0xf6, 0x89, 0x7d,
  0x96, 0x1c, 0x47, 0x79, 0xe1, 0xb5, 0x30, 0xea, 0x79, 0x43, 0x94, 0x5f,
  0x35, 0x10, 0x34, 0x92, 0xc3, 0x1a, 0x8f, 0xb7, 0xf7, 0xde, 0x2b, 0xcf,
  0xda, 0x4e, 0x13, 0xf4, 0x0f, 0xb0, 0xa4, 0x89, 0x45, 0xa1, 0xb3, 0xac,
  0xe7, 0x66, 0x61, 0x19, 0x7d, 0x4e, 0x69, 0xd0, 0xad, 0xf3, 0x54, 0x26,
  0x98, 0xf9, 0x18, 0x22, 0x7a, 0xd7, 0x99, 0xf6, 0x5f, 0xbd, 0xec, 0x2b,
  0x02, 0x02, 0xb5, 0x7b, 0x1f, 0x39, 0x90, 0x3b, 0x43, 0x7d, 0xa9, 0x2f,

  0x8b, 0xfc, 0x1f, 0x0a, 0x5f, 0x40, 0x02, 0x5a, 0xdb, 0x4f, 0x79, 0x8f,
  0x1f, 0x0a, 0xc3, 0xe0, 0xde, 0xc3, 0x60, 0x8a, 0x14, 0x3c, 0x75, 0x0f,
  0x1c, 0x09, 0xd5, 0x72, 0xf7, 0x38, 0x68, 0xff, 0x94, 0x84, 0x8f, 0xd0,
  0x7d, 0xd6, 0x4a, 0xab, 0x7f, 0xf2, 0x48, 0x74, 0x2e, 0x55, 0x8e, 0x49,
  0xf2, 0xd2, 0x46, 0x2c, 0x00, 0xc9, 0xd8, 0x65, 0xd3, 0x4f, 0x44, 0xec,
  0xc9, 0x51, 0x4a, 0xaf, 0xf5, 0xd4, 0x35, 0xf3, 0xa2, 0xbf, 0xde, 0xe4,
  0x85, 0xa4, 0xba, 0x07, 0xaf, 0x3f, 0xe9, 0x71, 0x3f, 0xd6, 0x2c, 0x33,
  0x8f, 0x41, 0x4b, 0xde, 0xf3, 0x4f, 0xed, 0x4d, 0xf0, 0xc0, 0x3d, 0x15,
  0xc8, 0x70, 0xe0, 0x03, 0x96, 0xea, 0x45, 0x12, 0xff, 0x49, 0xa6, 0x9d,
  0x0e, 0x22, 0xc8, 0xf2, 0x73, 0xfb, 0xf9, 0x45, 0x79, 0x99, 0xf8, 0x98,
  0x2c, 0x4f, 0x98, 0xa4, 0xde, 0xa0, 0x5d, 0x85, 0xb3, 0x0e, 0x8a, 0xe4,

  0xc2, 0x2b, 0x93, 0x75, 0x4f, 0x3f, 0x13, 0xda, 0x50, 0x79, 0x69, 0x8d,
  0xd5, 0xbe, 0x37, 0x9e, 0xee, 0xfb, 0xca, 0xea, 0x8c, 0xa2, 0xb2, 0x5c,
  0xc6, 0xdf, 0xfb, 0x02, 0x53, 0xc6, 0x89, 0x11, 0x23, 0x97, 0x86, 0xa8,
  0xf1, 0x8c, 0x83, 0x32, 0x74, 0x8f, 0x1d, 0xb6, 0x98, 0xee, 0x85, 0xaf,
  0x3e, 0x25, 0x27, 0xaf, 0xbd, 0x07, 0x8f, 0xdc, 0x02, 0xd3, 0x05, 0x69,
  0x03, 0x77, 0xec, 0xa8, 0xaa, 0x93, 0x1d, 0x7a, 0xcb, 0xc3, 0x2c, 0x79,
  0xca, 0x94, 0xf1, 0xae, 0x64, 0xd0, 0x2d, 0xec, 0x7f, 0xf0, 0x0c, 0x93,
  0xc3, 0xab, 0x2b, 0x23, 0xd5, 0xa6, 0x0d, 0x72, 0x42, 0x0b, 0x8d, 0x70,
  0x75, 0xcf, 0xfe, 0xe9, 0x93, 0x0d, 0xcf, 0x8a, 0xd0, 0xac, 0xad, 0xa8,
  0xf7, 0xde, 0x7b, 0x1a, 0x5e, 0x73, 0x35, 0x07, 0xb4, 0x4a, 0x41, 0x6e,
  0x5a, 0xb2, 0x43, 0xe5, 0xd1, 0xff, 0xae, 0x9e, 0xc1, 0x8a, 0xf0, 0x04,
  0xeb, 0x7f, 0xf7, 0xe7, 0xfb, 0xb9, 0x5f, 0xc3, 0xc7, 0x3e, 0xc1, 0x2a,
  0x43, 0x98, 0x60, 0xda, 0x6a, 0x17, 0xe1, 0x32, 0x84, 0xb0, 0x3b, 0xde,

  0x08, 0x7c, 0xe6, 0x46, 0x8f, 0x58, 0x17, 0x8e, 0x73, 0xb0, 0x01, 0x28,
  0x58, 0x04, 0x33, 0x1f, 0x77, 0x92, 0x78, 0xbe, 0x78, 0xa1, 0x3c, 0x1f,
  0xea, 0x7e, 0xe7, 0x1a, 0xd4, 0x57, 0x6b, 0xb6, 0xb8, 0xed, 0x8a, 0x9c,
  0x83, 0xcd, 0x7b, 0xed, 0xd0, 0x71, 0x2f, 0x11, 0xfb, 0x5c, 0x70, 0xf2,

  0x8a, 0xa2, 0xc0, 0x6c, 0x96, 0xdb, 0x26, 0x02, 0x70, 0x8f, 0x57, 0x25,
  0xfb, 0x0c, 0x09, 0x6c, 0x63, 0x27, 0x8d, 0xa7, 0x66, 0x4a, 0x12, 0xb9,
  0xf7, 0x19, 0x51, 0x6d, 0x28, 0xc5, 0xc9, 0x9c, 0xd2, 0x55, 0x36, 0xfd,
  0xa4, 0x57, 0xc6, 0x8e, 0x11, 0x79, 0xeb, 0x91, 0xdd, 0x5a, 0xa2, 0xbe,
  0xf3, 0xf7, 0xc7, 0x5d, 0x23, 0xc0, 0x3d, 0xca, 0x54, 0xf3, 0xfe, 0x62,
  0x7c, 0xfe, 0x9c, 0xe6, 0xcb, 0x61, 0x43, 0x73, 0x21, 0x5e, 0x8d, 0xb3,
  0xbf, 0x4b, 0x99, 0x59, 0xed, 0x9e, 0x7e, 0xd2, 0xf3, 0xf4, 0x58, 0x9c,
  0x7b, 0x27, 0x40, 0x6a, 0x36, 0xe7, 0xe0, 0xbf, 0xc4, 0x44, 0xb3, 0x2e,
  0xd4, 0xbf, 0xcf, 0x2e, 0x30, 0x9a, 0x19, 0xb8, 0x21, 0x85, 0x96, 0xdd,
  0xc3, 0x9f, 0x3b, 0x4f, 0xcd, 0xd5, 0xba, 0xf8, 0x64, 0xf5, 0x45, 0xc1,
  0xd1, 0xd3, 0x03, 0x76, 0x2f, 0x3c, 0xd3, 0xab, 0xe1, 0xf9, 0x41, 0x6d,
  0xde, 0xd3, 0x40, 0x3c, 0x14, 0xe2, 0x7a, 0x94, 0x78, 0xa7, 0xe1, 0xaf,
  0x6b, 0x6f, 0x0f, 0x9e, 0xed, 0x5b, 0xf1, 0x2b, 0x88, 0x3c, 0x9f, 0xb2,
  0x3b, 0x47, 0x75, 0x9a, 0x63, 0xb1, 0xca, 0x0b, 0x72, 0x41, 0xb8, 0x47,
  0xdc, 0x00, 0x07, 0x2d, 0x21, 0xd0, 0x55, 0x37, 0xea, 0x26, 0x6d, 0xd6,
  0x9e, 0x88, 0x79, 0xc6, 0xb4, 0x33, 0xa6, 0xa8, 0xe3, 0x52, 0xe8, 0x35,
  0x2f, 0xd4, 0xdb, 0xd6, 0x71, 0xa1, 0xe9, 0x4b, 0xdf, 0x7f, 0xcf, 0x72,
  0xc4, 0x82, 0xc5, 0x49, 0xe8, 0xca, 0x36, 0x7f, 0x32, 0x7c, 0x97, 0x01,
  0x84, 0xe9, 0x0a, 0x23, 0xe0, 0x53, 0x65, 0xd4, 0x9e, 0x52, 0xd1, 0x6f,
  0x70, 0x79, 0x62, 0xd1, 0xf3, 0xb2, 0x90, 0x98, 0x2d, 0x25, 0x6f, 0xc2,
  0xf3, 0xc9, 0x60, 0xd3, 0xec, 0x0b, 0x33, 0x33, 0x78, 0xf9, 0xe1, 0xe2,
  0xeb, 0xb3, 0xf7, 0xe3, 0x64, 0x8f, 0x4a, 0xdb, 0x2f, 0xde, 0x9f, 0xfc,
  0xf9, 0xc3, 0x85, 0xf9, 0xa7, 0x8e, 0xf4, 0x3a, 0x2d, 0x72, 0x23, 0x9d,
  0xcc, 0x72, 0xb2, 0xc2, 0x10, 0xcb, 0xa5, 0x36, 0x69, 0x62, 0xe8, 0x62,
  0x23, 0x8f, 0xcb, 0x4a, 0x11, 0x4d, 0x28, 0x1f, 0xa5, 0x94, 0x13, 0x67,
  0x54, 0xbf, 0x82, 0x33, 0xfc, 0x4a, 0x67, 0x39, 0xe7, 0x9d, 0xa2, 0x7c,
  0x4d, 0xdb, 0x49, 0x2e, 0xbe, 0x7e, 0xf9, 0xee, 0x9b, 0xb1, 0x76, 0xf0,
  0xf8, 0xee, 0xbb, 0xef, 0xba, 0xc1, 0x5d, 0xe8, 0xb1, 0x57, 0xe9, 0xed,
  0xed, 0xa8, 0xce, 0x3e, 0xfb, 0x6c, 0x7c, 0x7c, 0x9c, 0xbc, 0x3c, 0x1d,
  0x9f, 0x7d, 0xe6, 0x70, 0x1c, 0x76, 0x0e, 0x08, 0xc1, 0xea, 0x32, 0x6b,
  0xcc, 0x5f, 0x3e, 0xfb, 0xec, 0xff, 0x03, 0x4d, 0xda, 0xc1, 0xce, 0xef,
  0x98, 0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
{
  (void) opaque;
  /* not a typo, keep it calloc() */
  return (voidpf) calloc(items, size);







|
|


|
|
|
|
|
|
|
|
|
>
|
<
>
|
|
<
|
|
|
|
|
|
<
|
>
|
<
|
>
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
>
|
|
<
|
|
|
|
|
|
|
>
|
|
<
|
>
|
>
>
|
|
<
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
>
|
>
|
<
<
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
<
|
<
<
>
>
|
>
|
|
>
|
>
>
|
<
|
|
>
|
<
<
<
|
<
>
|
|
>
|
>
|
|
<
<
|
|
<
<
<
>
>
>
|
|
>
|
|
|
|
|
|
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
<
>
>
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
>
|
<
>
|
>
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
>
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
>
|
<
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
>
|
|
>
|
<
<
|
|
|
<
<
<
<
<
|
|
<
>
|
|
|
>
>
>
>
|
>
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
>
|
<
|
|
<
|
<
|
<
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
|
>
|
<
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
>
>
|
|
<
>
|
|
<
<
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
>
|
|
>
>
|
>
|
>
|
<
<
|
<
|
<
<
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
|
>
>
|
|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
|
|
|
|
|
|
<
<
>
>
>
|
|
<
|
|
>
|
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
>
<
<
<
<
<
<
<
<
<
<
<
|
|
|
|
|
>
|
<
<
<
|
>
|
>
>
|
|
<
<
>
|
|
|
>
|
|
>
>
>
>
>
>
>
|
>
>
>
|
|
|
<
|
<
<
<
<
<
|
|
|
<
>
|
<
<
<
<
|
>
|
<
|
<
|
|
|
|
|
>
>
|
>
>
>
>
>
>
>
|
>
>
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
>
|
<
|
<
|
>
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
<
<
|
>
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
|
<
|
|
<
|
|
|
|
|
<
|
|
>
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
>
|
|
|
<
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
<
<
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
>
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
|
|
|
>
|
|
|
<
|
<
<
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
>
|
>
|
|
|
<
<
|
|
|
<
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
|
|
<
<
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
>
|
<
|
>
|
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
<
<
|
|
>
>
|
>
|
|
|
>
>
|
|
|
|
<
|
|
|
>
>
|
|
<
|
<
|
<
|
|
|
|
|
|
|
>
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
>
|
<
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
<
|
<
>
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
<
<
|
|
|
|
|
|
|
|
>
>
|
>
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
<
|
|
>
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<
|
>
|
<
|
>
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
<
|
>
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
>
>
|
>
>
|
|
<
|
>
>
>
|
|
>
>
>
>
>
>
|
>
|
<
>
|
|
|
<
|
>
|
<
<
<
<
<
<
<
<
<
<
<
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
<
|
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
<
|
>
|
>
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
>
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
>
|
<
|
|
|
<
|
>
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
<
|
>
>
|
>
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
<
|
|
|
|
|
|
>
|
<
|
|
<
|
>
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
<
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
<
|
|
<
>
|
<
>
|
|
>
|
|
|
>
|
|
|
|
|
<
|
|
>
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
>
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
<
|
|
>
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
<
|
>
|
|
>
|
|
<
|
|
<
|
<
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
<
<
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
<
|
|
|
|
|
|
|
|
<
|
|
>
|
>
>
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
>
>
|
|
|
<
<
|
|
|
<
<
|
|
|
<
|
>
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
>
|
|
|
<
|
|
<
|
>
|
>
|
|
>
|
|
<
|
|
|
|
|
>
>
|
|
|
<
<
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
>
>
|
|
|
|
|
|
|
|
>
>
|
|
|
|
<
|
<
|
|
>
|
>
>
>
|
|
|
<
<
|
|
|
|
|
>
|
<
|
|
|
|
|
<
|
>
|
|
|
<
<
|
|
|
|
|
|
|
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
>
|
|
|
<
|
|
|
>
|
|
<
|
>
|
|
|
|
|
<
|
<
>
|
|
>
|
|
<
<
|
|
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
>
|
|
>
>
>
>
|
>
|
|
|
>
|
<
<
<
|
|
<
>
|
<
<
|
<
|
<
<
>
|
|
|
|
|
|
|
|
|
|
>
|
>
>
>
>
>
|
|
<
>
|
<
|
<
<
<
<
|
<
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
<
|
|
|
>
|
|
|
|
|
|
|
|
>
|
|
<
<
|
|
>
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
>
>
|
>
|
|
<
|
|
|
|
|
|
<
|
|
>
|
|
|
>
|
>
|
>
>
|
>
|
<
|
<
|
>
|
|
<
<
<
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
>
>
>
<
|
|
>
|
|
|
|
|
>
>
|
|
<
<
|
|
|
|
|
|
<
|
>
|
|
|
>
>
|
<
|
<
>
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
>
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
<
|
|
|
>
>
|
|
|
<
|
|
|
<
>
|
<
>
|
|
<
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
>
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488

4489
4490
4491

4492
4493
4494
4495
4496
4497

4498
4499
4500

4501
4502
4503
4504
4505
4506


4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531

4532
4533
4534

4535
4536
4537
4538
4539
4540
4541
4542
4543
4544

4545
4546
4547
4548
4549
4550
4551

4552


4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569

4570
4571
4572
4573

4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585

4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596


4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626

4627
4628
4629
4630
4631
4632

4633


4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644

4645
4646
4647
4648



4649

4650
4651
4652
4653
4654
4655
4656
4657


4658
4659



4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672

4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696

4697
4698
4699
4700
4701
4702

4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769



4770

4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797

4798
4799
4800
4801


4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818

4819
4820
4821
4822
4823
4824
4825

4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837


4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861

4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884

4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897


4898
4899
4900





4901
4902

4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942

4943
4944

4945

4946

4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985

4986
4987
4988

4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018

5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048

5049
5050
5051
5052
5053
5054
5055
5056
5057
5058

5059
5060
5061


5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084

5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098


5099

5100


5101
5102
5103
5104

5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128

5129

5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142










5143
5144
5145
5146
5147
5148


5149
5150
5151
5152
5153

5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185

5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196

5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209

5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231

5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246

5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261











5262
5263
5264
5265
5266
5267
5268



5269
5270
5271
5272
5273
5274
5275


5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296

5297





5298
5299
5300

5301
5302




5303
5304
5305

5306

5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333

5334
5335
5336
5337
5338
5339
5340
5341
5342
5343

5344

5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359

5360


5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390

5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440

5441
5442

5443
5444
5445
5446
5447

5448
5449
5450
5451
5452
5453
5454
5455
5456

5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498

5499
5500
5501
5502
5503
5504

5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545

5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563

5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576

5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618

5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633


5634
5635
5636
5637


5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655

5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671

5672
5673
5674
5675
5676
5677
5678
5679

5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717

5718



5719

5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747

5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842

5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853


5854
5855
5856

5857
5858
5859

5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876

5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939


5940
5941
5942

5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953

5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973

5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992

5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007

6008
6009
6010
6011

6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038

6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051

6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081

6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101

6102
6103


6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118

6119
6120
6121
6122
6123
6124
6125

6126

6127

6128
6129
6130
6131
6132
6133
6134
6135
6136

6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157


6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177

6178
6179
6180
6181
6182
6183
6184
6185
6186
6187


6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247

6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261



6262

6263

6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276

6277
6278
6279
6280
6281
6282
6283
6284

6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326

6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349


6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369

6370
6371
6372
6373
6374
6375
6376
6377

6378
6379
6380
6381

6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401

6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430

6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464

6465
6466
6467

6468
6469
6470
6471
6472
6473
6474
6475
6476

6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534

6535
6536
6537
6538
6539
6540
6541
6542
6543

6544
6545
6546
6547
6548
6549
6550
6551
6552

6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572

6573

6574
6575
6576
6577
6578
6579
6580
6581

6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622

6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637

6638
6639
6640
6641

6642
6643
6644











6645
6646
6647
6648
6649
6650
6651
6652

6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673

6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687

6688
6689
6690
6691
6692
6693

6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710

6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732

6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744

6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773

6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790

6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802



6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816

6817
6818
6819
6820
6821
6822
6823
6824
6825
6826

6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843

6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863

6864
6865
6866
6867
6868
6869
6870
6871
6872
6873

6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898

6899

6900

6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919

6920
6921
6922
6923
6924

6925
6926
6927
6928
6929
6930
6931
6932
6933
6934

6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946

6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957

6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971

6972
6973
6974
6975
6976
6977
6978
6979
6980
6981

6982
6983
6984

6985
6986
6987
6988
6989
6990

6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009

7010
7011
7012
7013
7014
7015
7016
7017

7018
7019
7020
7021
7022
7023

7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046

7047
7048
7049
7050
7051
7052
7053

7054
7055
7056
7057
7058
7059
7060
7061

7062
7063

7064
7065
7066
7067
7068

7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114



7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128

7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146

7147

7148
7149
7150
7151

7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190

7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205

7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235

7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254

7255
7256
7257
7258
7259
7260
7261

7262
7263

7264
7265

7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278

7279
7280
7281
7282
7283

7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302


7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331

7332
7333
7334
7335


7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361

7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393

7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418

7419
7420
7421
7422

7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450

7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461

7462

7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478

7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494

7495
7496
7497

7498
7499
7500
7501
7502
7503
7504

7505
7506

7507

7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605


7606

7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619


7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666

7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682

7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694

7695
7696
7697
7698
7699

7700
7701
7702
7703
7704
7705
7706
7707

7708
7709
7710
7711
7712
7713
7714

7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784


7785
7786
7787


7788
7789
7790

7791
7792
7793
7794
7795
7796
7797
7798
7799

7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811

7812
7813

7814
7815
7816
7817
7818
7819
7820
7821
7822

7823
7824
7825
7826
7827
7828
7829
7830
7831
7832


7833
7834
7835

7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860

7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883


7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925

7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951


7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969

7970

7971
7972
7973
7974
7975
7976
7977
7978
7979
7980


7981
7982
7983
7984
7985
7986
7987

7988
7989
7990
7991
7992

7993
7994
7995
7996
7997


7998
7999
8000
8001
8002
8003
8004
8005

8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025

8026

8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051

8052
8053
8054
8055

8056
8057
8058
8059
8060
8061

8062
8063
8064
8065
8066
8067
8068

8069

8070
8071
8072
8073
8074
8075


8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115



8116
8117

8118
8119


8120

8121


8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141

8142
8143

8144




8145

8146
8147
8148
8149
8150
8151
8152
8153

8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170

8171

8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190


8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205


8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236

8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252

8253
8254
8255
8256
8257
8258

8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273

8274

8275
8276
8277
8278




8279

8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303

8304
8305
8306
8307
8308
8309
8310
8311

8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323


8324
8325
8326
8327
8328
8329

8330
8331
8332
8333
8334
8335
8336
8337

8338

8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366

8367

8368
8369
8370
8371
8372
8373

8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396

8397
8398
8399
8400
8401
8402
8403
8404
8405

8406
8407
8408
8409
8410
8411
8412
8413

8414
8415
8416

8417
8418

8419
8420
8421

8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434

8435
8436
8437
8438
8439
8440
8441
8442

8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454

8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465

8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
#include <zlib.h>
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
  /* This mumbo-jumbo is the huge help text compressed with gzip.
     Thanks to this operation, the size of this data shrank from 172264
     to 48278 bytes. You can disable the use of compressed help
     texts by NOT passing -c to the mkhelp.pl tool. */
  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
  0x6b, 0x77, 0xdb, 0x46, 0x96, 0x2e, 0xfc, 0x3d, 0xbf, 0x02, 0xcd, 0x5e,
  0x7d, 0x24, 0x4d, 0x93, 0xd4, 0xdd, 0x8e, 0x15, 0x39, 0x13, 0x45, 0x96,
  0x63, 0x4d, 0x64, 0x49, 0x23, 0xca, 0x49, 0xfa, 0x74, 0xb2, 0xbc, 0x40,
  0x12, 0xa4, 0xd0, 0x22, 0x01, 0x36, 0x00, 0xea, 0x92, 0x9e, 0x3e, 0xbf,
  0xfd, 0xdd, 0xd7, 0xaa, 0x02, 0xaa, 0x40, 0x29, 0xe9, 0x38, 0x73, 0x2e,
  0x6f, 0xcf, 0x9a, 0xd8, 0x96, 0x80, 0x42, 0x5d, 0x76, 0xed, 0xfb, 0x7e,
  0x76, 0x14, 0x3d, 0xf5, 0xbf, 0x8f, 0xf4, 0xff, 0x1f, 0xe1, 0x7f, 0xf0,
  0xe7, 0x67, 0x51, 0x74, 0x59, 0xe4, 0x7f, 0x4b, 0x46, 0x55, 0xf8, 0xd9,
  0x8f, 0x1f, 0xff, 0x2b, 0xe2, 0xff, 0x83, 0x77, 0x7e, 0x84, 0x3f, 0x3f,
  0x5b, 0x39, 0xf6, 0x66, 0x64, 0x5f, 0xf8, 0xaf, 0x8f, 0x1b, 0xd1, 0x53,
  0x2f, 0xfc, 0x57, 0xb4, 0x4e, 0x2f, 0x7c, 0x94, 0x2f, 0x1c, 0xe2, 0xdf,

  0x3f, 0x7e, 0x5c, 0xfd, 0x91, 0x1f, 0x71, 0x56, 0xf8, 0x9f, 0x4d, 0x7c,
  0xef, 0xc7, 0x8f, 0xf8, 0x57, 0xf8, 0xc9, 0x67, 0x9f, 0x9d, 0x1f, 0xbd,
  0x3f, 0xd1, 0x57, 0x47, 0xcb, 0x62, 0x16, 0xf5, 0xa2, 0xaa, 0x88, 0xb3,

  0x72, 0x92, 0x14, 0x51, 0x1c, 0x7d, 0xb8, 0x3a, 0xfb, 0xec, 0xb3, 0xc1,
  0x5f, 0xce, 0x2f, 0x2e, 0x07, 0xa7, 0x83, 0xda, 0x63, 0x7f, 0xcd, 0x17,
  0x55, 0x9a, 0x67, 0x25, 0x4c, 0x1f, 0x1e, 0x2a, 0x7f, 0xfa, 0xec, 0xb3,
  0x37, 0x27, 0x83, 0xe3, 0xab, 0xd3, 0xcb, 0xeb, 0xd3, 0x8b, 0xf3, 0xda,
  0x93, 0x51, 0x5a, 0x46, 0x30, 0x54, 0x95, 0xe7, 0x33, 0xf8, 0x8f, 0x1d,
  0x7d, 0x1c, 0x57, 0x71, 0x34, 0x29, 0xf2, 0x79, 0x94, 0x17, 0xf8, 0x8b,

  0x38, 0x2a, 0x93, 0xe2, 0x2e, 0x29, 0xba, 0xd1, 0xb2, 0x4c, 0xb3, 0x69,
  0x94, 0x67, 0x49, 0x94, 0x4f, 0xa2, 0xea, 0x26, 0xd1, 0xe1, 0xca, 0xe5,
  0x62, 0x91, 0x17, 0x55, 0x32, 0x8e, 0x16, 0x45, 0x5e, 0xe5, 0xa3, 0x7c,

  0x56, 0x46, 0xeb, 0x6f, 0x4e, 0x8f, 0xaf, 0xbb, 0xd1, 0xdb, 0xd3, 0xb3,
  0x13, 0xf8, 0xef, 0xf5, 0x25, 0xfd, 0x67, 0xd0, 0x8d, 0xbe, 0xb9, 0xb8,
  0x7c, 0x77, 0x72, 0xd5, 0x8d, 0xde, 0x5d, 0xe3, 0xcf, 0xf0, 0xbf, 0xf0,
  0xc3, 0xe8, 0xf4, 0xfd, 0xd1, 0x65, 0x57, 0x87, 0xc3, 0x7f, 0xe0, 0x0f,
  0xcf, 0xde, 0xc0, 0x0f, 0xf9, 0x0f, 0xfc, 0xe7, 0xe5, 0xc5, 0xe5, 0xae,
  0xfc, 0x81, 0xff, 0xbc, 0xba, 0x7e, 0x0f, 0xbf, 0xbd, 0xba, 0x1e, 0xc0,


  0x7f, 0x07, 0xc7, 0xf8, 0x1f, 0xfa, 0xca, 0xe0, 0xfd, 0xd7, 0xf4, 0x9f,
  0x81, 0x19, 0x6e, 0xf0, 0x9e, 0x7f, 0x4e, 0x5f, 0xba, 0x3e, 0x39, 0x3b,
  0x3f, 0xb9, 0x8e, 0xe2, 0x6c, 0x1c, 0x5d, 0xc3, 0xf3, 0x1b, 0xfd, 0xe8,
  0xfa, 0x26, 0x89, 0x46, 0xf9, 0x7c, 0x8e, 0x3f, 0x82, 0x1d, 0x19, 0x27,
  0x65, 0x3a, 0xcd, 0x60, 0x29, 0xb0, 0xf2, 0xfb, 0xbc, 0xb8, 0x8d, 0xa2,
  0xfb, 0xb4, 0xba, 0xc9, 0x97, 0x95, 0x0e, 0xb7, 0x84, 0xdd, 0x88, 0xd2,
  0xac, 0x4a, 0x8a, 0x78, 0x84, 0x3b, 0xdd, 0xff, 0xac, 0xb6, 0xab, 0xf9,
  0x04, 0xf6, 0xb0, 0x84, 0x4d, 0x1b, 0x2e, 0xcb, 0x59, 0x1e, 0x8f, 0x71,
  0xab, 0xe0, 0x95, 0xc9, 0x12, 0x36, 0xb9, 0x48, 0x47, 0xb7, 0x65, 0x34,
  0x4b, 0x6f, 0x13, 0xdc, 0xa8, 0x87, 0x47, 0xdd, 0xb8, 0x2e, 0x0f, 0x1a,
  0x2f, 0x61, 0x4f, 0xb3, 0x9e, 0x0e, 0x57, 0xa5, 0xa3, 0x18, 0x3f, 0x40,
  0x3b, 0x17, 0x2d, 0x17, 0x38, 0x1a, 0xef, 0x58, 0xb4, 0xc8, 0x4b, 0x78,
  0x69, 0x30, 0x38, 0x83, 0x99, 0x67, 0x59, 0x42, 0xf3, 0x28, 0xbb, 0xf0,
  0x8f, 0xfc, 0x36, 0x4d, 0xe0, 0x2f, 0x93, 0x74, 0x96, 0x44, 0x7c, 0xa2,
  0x66, 0x38, 0x3c, 0xda, 0xa8, 0x48, 0xca, 0xe5, 0x3c, 0x81, 0xdd, 0x7b,
  0x9f, 0x54, 0xf1, 0x2c, 0xcd, 0x6e, 0xe1, 0xaf, 0xb8, 0xf0, 0x79, 0x5e,
  0x24, 0xfd, 0xe8, 0xa8, 0x8c, 0x1e, 0xf3, 0x25, 0x2c, 0x78, 0x36, 0x83,
  0x33, 0x4f, 0xa2, 0x61, 0x32, 0xcb, 0xef, 0xbb, 0x78, 0xd2, 0x51, 0xb6,
  0x9c, 0x0f, 0x61, 0x80, 0x7c, 0x62, 0x87, 0x8b, 0xab, 0x25, 0x0c, 0xc7,
  0x4f, 0xcf, 0x63, 0x58, 0x13, 0xbc, 0x5b, 0x44, 0x37, 0x09, 0xac, 0xb9,
  0x5c, 0xa4, 0xd9, 0x1f, 0xea, 0xfb, 0x02, 0x5b, 0xbb, 0xc8, 0xef, 0x93,
  0x02, 0x76, 0x76, 0xf8, 0x18, 0xc1, 0x26, 0x0c, 0x99, 0x08, 0x27, 0x40,
  0x64, 0x51, 0x0c, 0x43, 0x18, 0x02, 0xec, 0x15, 0xc9, 0x2c, 0x46, 0x62,
  0x32, 0xdf, 0xe8, 0xc3, 0x21, 0x26, 0x86, 0xda, 0xe4, 0xd5, 0xf5, 0xdd,
  0x0d, 0x7a, 0x79, 0x0c, 0x2b, 0x49, 0x67, 0x25, 0x1c, 0x03, 0x5e, 0x0a,

  0x79, 0x06, 0x0f, 0x15, 0xe9, 0x1f, 0x68, 0xf3, 0x31, 0xab, 0xe2, 0x07,
  0xfa, 0xbc, 0xd0, 0x66, 0x6f, 0x9c, 0x2c, 0x92, 0x6c, 0x9c, 0x64, 0x55,
  0x3f, 0xfa, 0x4b, 0xbe, 0x5c, 0x83, 0x6f, 0x4f, 0x52, 0xd8, 0x83, 0x58,

  0x86, 0x82, 0x2f, 0x03, 0x11, 0x8c, 0x8a, 0x74, 0xe1, 0x1c, 0x45, 0x9e,
  0xc1, 0x99, 0x47, 0x57, 0x6f, 0x8f, 0xa3, 0xdd, 0x57, 0x9f, 0xbf, 0xb0,
  0x67, 0x0e, 0x03, 0x44, 0xa3, 0x38, 0x83, 0x15, 0x27, 0xa3, 0x74, 0xf2,
  0x18, 0xcd, 0x97, 0xb3, 0x2a, 0x5d, 0xc0, 0xee, 0xe3, 0xe5, 0xc3, 0x0b,
  0xb4, 0x88, 0x8b, 0xaa, 0x44, 0x22, 0xa0, 0x1f, 0xd0, 0xda, 0xef, 0x8b,
  0xb4, 0xc2, 0x8b, 0x44, 0xbf, 0x83, 0x19, 0x26, 0x55, 0xa9, 0xc3, 0x21,
  0xad, 0xc1, 0x77, 0x86, 0x40, 0x5b, 0xb0, 0xb5, 0x71, 0x09, 0x1f, 0x3d,
  0xf8, 0xcc, 0x72, 0x90, 0x9b, 0xaa, 0x5a, 0x1c, 0x6c, 0x6e, 0x96, 0x69,
  0x95, 0xf4, 0xff, 0x01, 0xf7, 0xb0, 0x5b, 0xdd, 0xe7, 0xdd, 0xea, 0xa6,
  0x48, 0x92, 0x7f, 0xf6, 0x81, 0x86, 0xcd, 0x93, 0xf0, 0xdd, 0x47, 0x99,

  0xd8, 0x34, 0xa9, 0xe0, 0x0b, 0x7f, 0x5f, 0x26, 0x19, 0x8e, 0x08, 0xf3,
  0x88, 0x67, 0x8b, 0x9b, 0x18, 0x8e, 0x33, 0x01, 0x6a, 0xc4, 0x9b, 0x0d,
  0x04, 0x83, 0xb3, 0xe2, 0xbb, 0xfd, 0xd7, 0x9f, 0xfc, 0x8f, 0x4e, 0xe8,
  0x9b, 0xf0, 0xdf, 0x7e, 0xf2, 0x10, 0xcf, 0x61, 0x6d, 0xf8, 0xa9, 0x4d,
  0x24, 0xb1, 0xbf, 0x6e, 0xf7, 0xb6, 0xb7, 0xb6, 0x7e, 0xea, 0x57, 0x0f,
  0xd5, 0xf3, 0x9e, 0xdf, 0xda, 0xb2, 0x6f, 0xe0, 0xa3, 0xeb, 0xb8, 0xde,
  0x68, 0x06, 0x24, 0x83, 0x1f, 0xff, 0x39, 0x29, 0xf2, 0x72, 0xe3, 0x79,

  0x23, 0xc5, 0xbd, 0x9f, 0xeb, 0xdf, 0x3d, 0x4f, 0x4a, 0xa2, 0x19, 0xbb,


  0xd6, 0x28, 0x2e, 0x80, 0x6e, 0xf3, 0xca, 0xb2, 0xa7, 0x2e, 0x5c, 0xca,
  0xca, 0xec, 0x0c, 0xdc, 0x39, 0x78, 0x1a, 0x18, 0x5b, 0x3c, 0x43, 0x9e,
  0x56, 0x46, 0x59, 0xf2, 0x60, 0x6e, 0x39, 0xdc, 0xfe, 0x24, 0x1e, 0xdd,
  0x44, 0x39, 0x10, 0x7f, 0x11, 0x38, 0x02, 0x77, 0x42, 0x71, 0x31, 0xba,
  0x49, 0xef, 0x60, 0x37, 0x5e, 0xbd, 0x7a, 0xd1, 0x83, 0xff, 0xbc, 0xfa,
  0x69, 0xf3, 0x2e, 0x9f, 0xc1, 0xe6, 0xec, 0xfd, 0xb4, 0x89, 0x47, 0xfc,
  0x8f, 0xb8, 0x3b, 0xec, 0x8e, 0xfe, 0xd9, 0xbf, 0xa9, 0xe6, 0xb3, 0x56,
  0xc2, 0x89, 0x33, 0xf8, 0xff, 0x79, 0xbe, 0xcc, 0x2a, 0x43, 0x2c, 0x40,
  0x73, 0x95, 0xc3, 0x9c, 0xe0, 0xba, 0xc2, 0x1d, 0x45, 0xd2, 0x46, 0x1a,
  0xc2, 0x5b, 0x07, 0x17, 0xd4, 0x5e, 0xc7, 0x6a, 0x74, 0x83, 0xeb, 0x07,
  0xea, 0x89, 0x65, 0x13, 0xaa, 0x34, 0xc6, 0x9b, 0x09, 0x0c, 0x02, 0x19,
  0x16, 0x8d, 0xc5, 0x5f, 0x4b, 0xe1, 0xc1, 0xbc, 0x18, 0x27, 0x45, 0xbf,
  0x39, 0x0d, 0x73, 0x65, 0x9d, 0x6f, 0x46, 0x2a, 0x51, 0xf0, 0x07, 0x34,
  0xb1, 0x79, 0xfa, 0x00, 0x23, 0x10, 0xc3, 0xcc, 0x68, 0xe2, 0x3c, 0x5a,
  0x84, 0x33, 0xa6, 0xcf, 0xe8, 0xfb, 0xf6, 0xca, 0xc2, 0xd4, 0x6b, 0x4b,
  0xa7, 0x8f, 0xda, 0xc5, 0x47, 0x70, 0x78, 0x0b, 0x78, 0x6b, 0x89, 0x7c,
  0x95, 0xae, 0x35, 0x0e, 0x03, 0x0c, 0x61, 0x0a, 0xe7, 0x02, 0x67, 0x81,

  0x54, 0x8c, 0x47, 0xf5, 0x18, 0x9d, 0x03, 0xc1, 0x30, 0x33, 0x72, 0x88,
  0x7d, 0x96, 0x54, 0xd5, 0x93, 0xc7, 0x64, 0x29, 0xf6, 0x60, 0xdb, 0x23,
  0xda, 0xb6, 0xe7, 0x81, 0xce, 0x0e, 0x76, 0xea, 0x0f, 0x7f, 0x0f, 0x4c,
  0xda, 0x5e, 0x17, 0xf8, 0xfa, 0x3f, 0xfe, 0xe9, 0x50, 0xdd, 0x3d, 0xfe,

  0x36, 0xcd, 0xee, 0xf2, 0x5b, 0xd8, 0x22, 0x92, 0xa2, 0x71, 0x7d, 0x37,
  0x91, 0x0f, 0xcd, 0x17, 0x95, 0x11, 0x4f, 0x48, 0x8e, 0xf0, 0xa3, 0x61,
  0x3c, 0x9c, 0x3d, 0x46, 0x37, 0xf1, 0x5d, 0x82, 0xeb, 0x5d, 0x00, 0x9d,
  0xe2, 0x0e, 0x80, 0xd8, 0x98, 0x11, 0x1f, 0x13, 0xc6, 0x30, 0xce, 0x97,
  0x43, 0x60, 0x2e, 0x7f, 0x5f, 0xe6, 0x15, 0x6f, 0x4c, 0x7c, 0x97, 0xa7,
  0xe3, 0x9a, 0x2c, 0xbe, 0x49, 0x90, 0xa1, 0xe1, 0x87, 0x49, 0x48, 0x01,
  0x43, 0xc5, 0x99, 0xd2, 0x45, 0x4b, 0x2b, 0x14, 0x77, 0xc0, 0x0a, 0xe3,
  0x59, 0x99, 0x47, 0xd1, 0x34, 0xc7, 0x5b, 0x42, 0x0c, 0x98, 0xc8, 0x1c,
  0x0e, 0xe5, 0x26, 0x46, 0xa9, 0x06, 0x02, 0xcc, 0xdc, 0x83, 0x22, 0x21,
  0x5e, 0x4c, 0x27, 0x15, 0xcf, 0xba, 0x2c, 0xbd, 0xf0, 0x1d, 0xd9, 0xaa,
  0x68, 0xed, 0x7f, 0xac, 0x75, 0xa3, 0xb5, 0x7f, 0x5f, 0x23, 0x7a, 0x58,
  0xfb, 0xb7, 0x35, 0x7b, 0xce, 0xa0, 0x8c, 0xdd, 0xa5, 0xe3, 0x84, 0x49,

  0xe2, 0xf4, 0xf2, 0xee, 0x45, 0xf4, 0x33, 0xea, 0x0e, 0xc0, 0x6b, 0x93,
  0x07, 0x25, 0x48, 0x5d, 0x1b, 0xbc, 0x1d, 0x01, 0xd3, 0x8d, 0x17, 0xa8,
  0x44, 0x24, 0xc5, 0x08, 0xa8, 0x37, 0x9e, 0x02, 0xbd, 0x82, 0x2c, 0xd6,
  0xe1, 0x70, 0x7c, 0x7c, 0x85, 0x97, 0x05, 0x0c, 0x32, 0xca, 0xe2, 0x39,
  0xdc, 0x88, 0x33, 0x9c, 0x51, 0x9a, 0xf9, 0x87, 0xf9, 0xd7, 0x49, 0xf2,
  0xf9, 0xd6, 0xc1, 0xc1, 0xee, 0x9f, 0x76, 0xf6, 0x93, 0xea, 0x66, 0xeb,
  0xa7, 0x4d, 0xf3, 0xc8, 0xe9, 0x84, 0xb6, 0x5d, 0xc9, 0x4f, 0x27, 0x01,
  0x52, 0xde, 0x48, 0x09, 0x78, 0x1f, 0xfe, 0x9e, 0x4c, 0xd2, 0x87, 0xae,
  0xea, 0x4b, 0x7c, 0xe7, 0x62, 0x20, 0x35, 0x38, 0x3f, 0x64, 0x11, 0x3a,
  0xdc, 0x74, 0x99, 0x94, 0xb0, 0x93, 0xf7, 0x37, 0x71, 0x15, 0x99, 0x01,
  0xf8, 0x64, 0xe7, 0xe9, 0xf4, 0xa6, 0x8a, 0xee, 0x63, 0x14, 0x36, 0xa7,


  0x15, 0x0f, 0x81, 0x52, 0x1e, 0x44, 0xcc, 0x24, 0x06, 0x59, 0x81, 0x67,
  0x48, 0x22, 0x7d, 0x68, 0x35, 0x8c, 0x0a, 0xc8, 0x9c, 0x0f, 0xc4, 0xaa,
  0x53, 0xc3, 0xb8, 0xc4, 0x4b, 0x9b, 0x01, 0x73, 0xa8, 0x40, 0x47, 0x58,
  0xe2, 0xbf, 0x6e, 0x40, 0x0b, 0xa0, 0x3d, 0x90, 0x89, 0x92, 0xa0, 0x7c,
  0x8b, 0xc7, 0x89, 0x67, 0x63, 0x84, 0x17, 0x1c, 0x52, 0x57, 0x8e, 0xd9,
  0xbc, 0x51, 0xc2, 0x85, 0x03, 0xce, 0x64, 0x28, 0xa3, 0x83, 0x4c, 0xb6,
  0xc3, 0xeb, 0xa4, 0x39, 0xc6, 0x25, 0x2a, 0x0a, 0xac, 0x0e, 0xc0, 0xe4,
  0x9d, 0xc5, 0xc2, 0xa6, 0xc5, 0xb7, 0xa8, 0x92, 0x34, 0x14, 0x1f, 0x7a,
  0x6d, 0x9c, 0x03, 0x91, 0xc1, 0x6c, 0x81, 0x19, 0xe3, 0xca, 0x90, 0xc5,
  0xd2, 0xae, 0x10, 0x91, 0xc3, 0x98, 0xf8, 0xc3, 0xb4, 0x42, 0x19, 0x43,
  0x3a, 0x2c, 0xcc, 0x17, 0x36, 0x85, 0x14, 0x51, 0x60, 0xd4, 0xce, 0xfa,
  0x49, 0x3c, 0xc2, 0xb3, 0xd1, 0x1d, 0x68, 0x29, 0xa0, 0x90, 0x26, 0xe6,
  0x2d, 0x92, 0xe7, 0x23, 0xd4, 0x8d, 0x66, 0x70, 0x5f, 0x46, 0x79, 0x51,
  0xa0, 0xbe, 0x8f, 0x27, 0x38, 0x64, 0x26, 0x3a, 0x4f, 0x40, 0x8d, 0x70,
  0xb7, 0x33, 0x45, 0x81, 0x06, 0xfc, 0x05, 0xf4, 0x12, 0xe2, 0x20, 0xa0,
  0x3f, 0x10, 0xcf, 0xa7, 0x85, 0xd3, 0xec, 0x70, 0xec, 0xd1, 0x28, 0x59,
  0x54, 0x65, 0x68, 0x4d, 0x7a, 0xe0, 0x30, 0x9d, 0x22, 0xc1, 0x9d, 0x77,
  0x95, 0x2e, 0xda, 0x57, 0x23, 0xf4, 0x49, 0xef, 0x52, 0x3d, 0x06, 0xf4,
  0xb0, 0xd2, 0xec, 0x5a, 0x45, 0xb4, 0x01, 0x6c, 0x8c, 0xf6, 0x7c, 0x8e,
  0x13, 0xc5, 0x87, 0x4b, 0xbe, 0xa9, 0xc4, 0x9a, 0xf1, 0x20, 0x59, 0xd3,
  0xe6, 0xef, 0xa2, 0xe8, 0x82, 0xfd, 0x34, 0x83, 0xc3, 0x57, 0xcd, 0x99,
  0xe2, 0xe7, 0x51, 0xc5, 0x07, 0x49, 0x3e, 0x2e, 0x6f, 0x40, 0xf9, 0x2a,
  0xe5, 0x66, 0xa7, 0x73, 0xa0, 0x99, 0x3b, 0x3c, 0xdf, 0x45, 0x92, 0x8c,
  0xfb, 0xd1, 0xc5, 0x04, 0xb9, 0x6a, 0x01, 0x93, 0xae, 0xe8, 0xd7, 0x28,
  0x55, 0x60, 0xdf, 0xc6, 0xa4, 0xc4, 0x9b, 0xab, 0xc5, 0x53, 0x71, 0xa4,
  0x03, 0x71, 0xf2, 0x18, 0x7e, 0x02, 0xb3, 0x9d, 0xd5, 0x45, 0x10, 0xdd,
  0x43, 0xe0, 0xde, 0x38, 0xbd, 0x61, 0x12, 0x11, 0x25, 0x0e, 0x93, 0xea,
  0x3e, 0x49, 0xcc, 0x70, 0x65, 0x02, 0x62, 0x0f, 0x0f, 0x8d, 0x35, 0x3f,
  0x62, 0x86, 0xb8, 0xb5, 0x97, 0x57, 0x17, 0xdf, 0x5c, 0x9d, 0x0c, 0x06,
  0xd1, 0xfb, 0x93, 0xeb, 0x93, 0xab, 0xda, 0x4e, 0x67, 0x79, 0x31, 0xa7,

  0x13, 0x1d, 0xa7, 0xe5, 0x62, 0x16, 0x3f, 0xe2, 0x51, 0xc3, 0x4a, 0xa6,
  0x05, 0xde, 0xac, 0x79, 0x82, 0x52, 0x61, 0xbc, 0x24, 0x4e, 0x06, 0xe2,
  0x08, 0x8e, 0x4f, 0x34, 0x5e, 0x64, 0x26, 0xa4, 0x26, 0x67, 0x53, 0xbb,
  0xd3, 0xc0, 0x71, 0x44, 0x92, 0xa2, 0x28, 0x35, 0xe7, 0x81, 0xaa, 0x27,
  0x19, 0x37, 0x5d, 0xfb, 0x33, 0xde, 0x26, 0x16, 0x6d, 0x40, 0xb3, 0xe9,
  0x9c, 0x98, 0x1d, 0xfc, 0x69, 0xb5, 0xcd, 0x64, 0x02, 0xaa, 0x36, 0x48,

  0x57, 0xb6, 0x14, 0x9a, 0x73, 0xd2, 0xd9, 0x1a, 0xfd, 0x18, 0xc8, 0x10,


  0x59, 0x33, 0x0e, 0xc8, 0x53, 0xe1, 0x2f, 0x18, 0x26, 0x06, 0x3a, 0x09,
  0xf2, 0x3e, 0x79, 0x6c, 0x81, 0x53, 0x48, 0xe0, 0x64, 0xc7, 0x3c, 0x7c,
  0xb9, 0x9c, 0xd0, 0x45, 0x8e, 0xd6, 0x41, 0x33, 0x7f, 0x0f, 0xd6, 0x12,
  0x58, 0x2c, 0xdd, 0xe8, 0x72, 0x83, 0xde, 0xdb, 0xde, 0xda, 0xd9, 0x63,
  0x46, 0xd0, 0xd7, 0xe1, 0xde, 0x3a, 0x8c, 0x78, 0xfb, 0x16, 0x8f, 0x97,
  0x1f, 0xc2, 0xc1, 0xfb, 0xd1, 0xf6, 0x7b, 0xfe, 0xc9, 0xde, 0xe7, 0xfb,
  0x2f, 0x5f, 0xc8, 0x0f, 0xeb, 0x04, 0x6e, 0xe6, 0x4f, 0xd4, 0x41, 0x96,
  0x1f, 0x9a, 0x82, 0x30, 0x13, 0x58, 0xdd, 0x3c, 0xcd, 0xe0, 0x9a, 0xc0,
  0xb5, 0x12, 0x5e, 0x85, 0xf4, 0x0c, 0x93, 0x9f, 0x30, 0x67, 0x93, 0x73,
  0xad, 0x9b, 0x94, 0xf0, 0x32, 0x90, 0x2c, 0xf0, 0x72, 0x73, 0x48, 0xac,
  0x26, 0x54, 0x38, 0x91, 0x78, 0x88, 0x0c, 0x16, 0xed, 0x2a, 0x50, 0x80,

  0x93, 0xe0, 0xd7, 0x8c, 0x54, 0x84, 0x37, 0x60, 0x6e, 0x20, 0x13, 0x51,
  0xcc, 0xf9, 0xfb, 0x0e, 0xac, 0x80, 0x38, 0xe4, 0x7d, 0x5a, 0x12, 0x6b,
  0xb8, 0xcf, 0x97, 0x33, 0xb0, 0x62, 0xf0, 0x81, 0xe5, 0x82, 0x5e, 0x80,
  0x4f, 0x2d, 0x2c, 0x0f, 0x00, 0x8d, 0x05, 0x69, 0xa7, 0x39, 0x0a, 0x4c,



  0x0d, 0xfe, 0xb9, 0x00, 0x52, 0xe2, 0xe9, 0xf4, 0x9b, 0x12, 0x82, 0x78,

  0x9f, 0x47, 0x89, 0x78, 0xe7, 0x89, 0x69, 0x5f, 0x5e, 0x0c, 0xae, 0x51,
  0x03, 0xb8, 0xfc, 0x70, 0x0d, 0x03, 0x81, 0x0a, 0x50, 0x56, 0x40, 0x94,
  0xf8, 0x62, 0x96, 0x90, 0x09, 0xa9, 0xc3, 0x01, 0xed, 0xa5, 0xc4, 0xa8,
  0x48, 0xad, 0xd1, 0x4f, 0xf2, 0x1c, 0xd9, 0xc6, 0xc6, 0x2b, 0xa8, 0x16,
  0x36, 0xcb, 0x70, 0xf3, 0x4e, 0xb4, 0xfe, 0xe5, 0x06, 0xd0, 0x6c, 0x2f,
  0x37, 0xbb, 0xd3, 0xeb, 0xc9, 0xab, 0xf0, 0xed, 0x32, 0x9d, 0xa7, 0xb3,
  0xb8, 0x70, 0xa6, 0xce, 0x1c, 0x15, 0xef, 0xa7, 0xe1, 0x2b, 0x23, 0xa0,
  0x1a, 0x9a, 0xb6, 0x35, 0x25, 0x71, 0x0f, 0x89, 0x2b, 0xd9, 0xa3, 0x1a,


  0xa3, 0x42, 0x40, 0x1a, 0xf3, 0x22, 0x35, 0x5b, 0x87, 0x67, 0x86, 0xec,
  0xaa, 0xb6, 0x51, 0xcd, 0x73, 0xf3, 0x36, 0x0e, 0x25, 0x12, 0x79, 0x2a,



  0xcc, 0xd6, 0x45, 0x9d, 0x61, 0x5c, 0x74, 0x22, 0xc3, 0x8b, 0xf9, 0x6e,
  0xe2, 0x0d, 0x29, 0x92, 0xe9, 0x12, 0x56, 0x10, 0xf1, 0xee, 0xe2, 0x4a,
  0xff, 0xe8, 0xac, 0x54, 0x07, 0xe8, 0x0d, 0xf1, 0x91, 0xb4, 0x64, 0x33,
  0x73, 0x02, 0x76, 0x0b, 0x5e, 0x1a, 0xd5, 0x5f, 0x49, 0xa3, 0x11, 0x8a,
  0x09, 0x10, 0x8c, 0xa3, 0xd7, 0xc2, 0x55, 0xa9, 0x12, 0x60, 0x34, 0xc4,
  0xfe, 0xf1, 0xc9, 0x1e, 0x1c, 0x59, 0xaf, 0x57, 0xc2, 0xfe, 0xa3, 0xee,
  0xbd, 0x10, 0x9b, 0xfe, 0x82, 0x1c, 0x26, 0xc6, 0xb7, 0x72, 0x21, 0x3a,
  0x30, 0x89, 0x4d, 0x7e, 0x97, 0x58, 0x28, 0x28, 0xaa, 0xf7, 0xf0, 0xe1,
  0x18, 0x8e, 0x0c, 0x2e, 0xdc, 0x7b, 0xdc, 0x28, 0xf6, 0x8d, 0x44, 0x46,
  0x6d, 0x26, 0xca, 0x48, 0xf1, 0xde, 0xc7, 0x56, 0x97, 0x19, 0x8f, 0x53,
  0xfc, 0x2d, 0xdc, 0x2f, 0x90, 0x70, 0xcb, 0x84, 0x6c, 0x0f, 0xd9, 0xd4,
  0xb9, 0xdd, 0x4c, 0x32, 0x63, 0xcb, 0x9b, 0x1c, 0xcd, 0xc4, 0x0e, 0xf3,
  0xe2, 0x1e, 0x7e, 0xab, 0x43, 0xf2, 0x7c, 0x1e, 0xe9, 0xb7, 0xe4, 0x53,

  0xb0, 0x8e, 0xb1, 0xab, 0x9b, 0x75, 0x41, 0xd0, 0x3c, 0x3a, 0x46, 0x02,
  0xf1, 0x6a, 0x9e, 0x7b, 0x61, 0x14, 0x1e, 0x10, 0xa9, 0x0b, 0x54, 0xa6,
  0x84, 0x87, 0x93, 0x30, 0xa4, 0x2b, 0x5b, 0xf2, 0xd4, 0xba, 0xb0, 0xb7,
  0xf8, 0xe4, 0xf4, 0x46, 0x1f, 0x75, 0x04, 0x6b, 0x0c, 0x8b, 0x43, 0xe1,
  0x80, 0xf6, 0xf4, 0x58, 0xf9, 0x7e, 0x5e, 0x30, 0x33, 0x9b, 0xe5, 0x40,
  0xcb, 0x1d, 0x56, 0x59, 0x65, 0xda, 0x38, 0x6b, 0x9c, 0x25, 0xee, 0x38,
  0xfb, 0x99, 0x72, 0x73, 0x36, 0x66, 0xd2, 0xb2, 0x5f, 0xe5, 0x93, 0x53,
  0xb3, 0x1b, 0x35, 0xa0, 0x3d, 0x02, 0xd1, 0x59, 0x22, 0x1d, 0xeb, 0xce,
  0x13, 0x79, 0x83, 0xa8, 0x5b, 0xab, 0xf8, 0x3e, 0x92, 0x8d, 0xd5, 0xd8,
  0xf9, 0x92, 0xc8, 0x47, 0x04, 0x99, 0x59, 0x19, 0xac, 0x68, 0x9c, 0xc6,
  0x44, 0x27, 0x7c, 0x34, 0xa4, 0x8c, 0x58, 0x8b, 0x30, 0xa0, 0x07, 0x3f,
  0x36, 0x0d, 0xba, 0xd9, 0xcc, 0x15, 0x49, 0x3a, 0xa7, 0xde, 0x05, 0xac,
  0xfd, 0x8c, 0xd6, 0xd1, 0xbb, 0x8b, 0xf0, 0xfa, 0x81, 0xd9, 0x80, 0x77,
  0xb1, 0x77, 0x71, 0x76, 0xe7, 0x5c, 0x23, 0xb4, 0xdc, 0x33, 0xd4, 0x53,
  0xba, 0xe4, 0x1d, 0x19, 0xe6, 0x39, 0x98, 0xc9, 0x76, 0x69, 0x28, 0x0f,
  0x92, 0x0c, 0xa9, 0x5d, 0x4e, 0x14, 0x58, 0xc2, 0xc2, 0xf0, 0xdb, 0x47,
  0x30, 0x97, 0xe2, 0x69, 0x9c, 0x1a, 0x7a, 0x93, 0x9b, 0x31, 0x8e, 0xf4,
  0xe1, 0x2c, 0x97, 0xe7, 0xf1, 0xa8, 0x50, 0x05, 0x12, 0xbe, 0xb5, 0x2c,
  0xf9, 0xfa, 0xc0, 0xaa, 0x80, 0xf3, 0x10, 0xef, 0x90, 0x71, 0x51, 0x6d,
  0xd4, 0xe1, 0x86, 0xa4, 0x28, 0xa3, 0xce, 0x49, 0xcc, 0x97, 0x34, 0x48,
  0x18, 0xb1, 0xd3, 0x8f, 0xde, 0xe5, 0xf7, 0x09, 0xf9, 0x0a, 0x49, 0xbf,
  0x4f, 0xd1, 0xdb, 0x05, 0xaa, 0xe0, 0x7d, 0x12, 0xcd, 0x41, 0xf5, 0x84,
  0xdd, 0x24, 0xed, 0x83, 0x7e, 0xe6, 0x98, 0x87, 0x40, 0xe1, 0xf7, 0xbc,
  0x4b, 0x66, 0x15, 0xe6, 0x28, 0x27, 0x7c, 0x25, 0xa2, 0x75, 0x52, 0x6f,

  0x46, 0xb8, 0x5b, 0x8b, 0xca, 0xae, 0xc2, 0x6c, 0xc8, 0x7d, 0x5c, 0x3a,
  0x97, 0x2b, 0x21, 0xd3, 0xf4, 0x65, 0x7f, 0xfb, 0x55, 0x7f, 0xab, 0x0f,
  0x86, 0x48, 0x72, 0x97, 0xe6, 0xcb, 0x12, 0x3e, 0x8d, 0xd3, 0xb0, 0xef,
  0x24, 0x78, 0x2b, 0xab, 0x7c, 0x3a, 0x9d, 0xb1, 0xce, 0xb3, 0x99, 0x4f,
  0x26, 0xac, 0xfb, 0x80, 0xa6, 0x67, 0xf4, 0x67, 0xb6, 0x80, 0x70, 0x67,
  0xe4, 0xba, 0x31, 0x4b, 0xf5, 0x4d, 0xe4, 0xbe, 0x75, 0x5e, 0xf4, 0x7a,

  0xf1, 0xb0, 0xac, 0xd0, 0x98, 0xea, 0x2d, 0xb3, 0xf4, 0xa1, 0x57, 0xe6,
  0xa3, 0x5b, 0x38, 0x94, 0xc3, 0x45, 0x5c, 0xdd, 0x7c, 0xd9, 0x70, 0x09,
  0xaf, 0xa3, 0x2c, 0xd9, 0x88, 0xa2, 0x63, 0x56, 0x2b, 0x71, 0x27, 0x0a,
  0xbe, 0x6f, 0x70, 0x9a, 0x32, 0x4a, 0xf4, 0x01, 0x46, 0x01, 0x5a, 0x9e,
  0xc3, 0xa1, 0x46, 0x3c, 0x58, 0x57, 0x59, 0x69, 0x63, 0x38, 0x72, 0x38,
  0xa2, 0x18, 0x21, 0xbf, 0x1d, 0x5c, 0x9d, 0xbc, 0xb8, 0x05, 0x45, 0xfb,
  0x1c, 0x4c, 0xc6, 0x03, 0xfc, 0x37, 0xb0, 0xb0, 0x8a, 0xb6, 0x5c, 0x24,
  0x2b, 0xcc, 0x88, 0x99, 0x31, 0x5a, 0xe4, 0xf1, 0xb0, 0xd7, 0x18, 0x4e,
  0xbe, 0x2f, 0x1f, 0x8d, 0xd4, 0xd6, 0x50, 0x52, 0x8a, 0xd6, 0xbe, 0x02,
  0xfb, 0xef, 0x86, 0x8f, 0x9d, 0x06, 0xe4, 0x35, 0x02, 0x85, 0x4e, 0xc1,
  0x82, 0xc8, 0xaa, 0xe6, 0x70, 0x37, 0x24, 0xaa, 0x51, 0xca, 0xb0, 0xb1,
  0x4b, 0x44, 0x22, 0x1e, 0x20, 0x63, 0x7f, 0xf6, 0x3f, 0x6b, 0xbc, 0x76,
  0x64, 0xcf, 0x74, 0x7f, 0x17, 0xce, 0xd4, 0xdd, 0xe8, 0x59, 0xd5, 0x2b,
  0xef, 0x46, 0xd1, 0x21, 0x69, 0xdf, 0x48, 0xa6, 0xc1, 0x0d, 0x1e, 0x6c,
  0x44, 0xdf, 0x1f, 0x5d, 0x9d, 0x9f, 0x9e, 0x7f, 0x73, 0xc0, 0x1f, 0x15,
  0x4a, 0x83, 0xbf, 0x25, 0x0f, 0x20, 0x02, 0x53, 0x9c, 0x2c, 0x48, 0xb2,
  0xe8, 0x4d, 0x4e, 0xb3, 0xc3, 0xf3, 0x86, 0xef, 0x81, 0x1c, 0x69, 0xee,
  0xc8, 0x78, 0xd9, 0x70, 0xfc, 0x1a, 0x6e, 0x6d, 0x47, 0xe5, 0xbb, 0xc9,
  0x3b, 0xac, 0x13, 0x04, 0xe6, 0xc8, 0xbe, 0x63, 0x52, 0x96, 0xfa, 0x28,
  0x2a, 0xc9, 0xc6, 0xd7, 0x69, 0x37, 0x86, 0x5b, 0xe4, 0x60, 0xe9, 0xb2,
  0x91, 0x0f, 0xe3, 0x3d, 0xc0, 0x9d, 0xc1, 0x2d, 0xd2, 0xc1, 0x46, 0xc0,
  0x8b, 0x12, 0xd1, 0x1a, 0x88, 0xcf, 0x91, 0xcd, 0x20, 0x7c, 0xac, 0x1f,
  0x1d, 0x4d, 0x9a, 0xb3, 0x46, 0xc5, 0x05, 0x55, 0x7a, 0x15, 0x81, 0x63,
  0xab, 0x05, 0xb3, 0x8b, 0x97, 0x47, 0xd4, 0x61, 0x4a, 0x38, 0x9c, 0xb1,
  0x8a, 0x79, 0xfc, 0x4c, 0x63, 0x38, 0xb2, 0x3b, 0x89, 0xc7, 0xa0, 0x46,
  0x98, 0xe2, 0x69, 0xa2, 0xdd, 0x07, 0x5c, 0x7a, 0x9e, 0x8f, 0xc9, 0x88,
  0xf0, 0xf6, 0x67, 0x60, 0xbc, 0x3d, 0x9d, 0x8e, 0x5d, 0x75, 0xb4, 0x8e,
  0x7e, 0x3f, 0x20, 0x81, 0x6c, 0x5a, 0xdd, 0x6c, 0x58, 0x9f, 0x06, 0xea,
  0x28, 0xb0, 0xe0, 0x4d, 0x98, 0x08, 0xad, 0x3b, 0x6b, 0xd2, 0x39, 0xf9,
  0x9c, 0x49, 0xed, 0xfc, 0xdb, 0xb2, 0xac, 0xc8, 0x14, 0x12, 0xd9, 0xcf,
  0x2b, 0x81, 0x99, 0xcd, 0x93, 0x79, 0x5e, 0x3c, 0x7a, 0x13, 0x39, 0x25,
  0xcd, 0x03, 0xad, 0x4e, 0x39, 0x2d, 0x24, 0x02, 0x12, 0x8e, 0xea, 0x0f,
  0x44, 0x0b, 0x00, 0x1d, 0xea, 0xc6, 0x08, 0x24, 0x8d, 0x09, 0xb8, 0x0f,
  0x18, 0xdf, 0xd6, 0x5b, 0xab, 0xd6, 0x13, 0x79, 0x79, 0xd8, 0xb0, 0x17,
  0x53, 0x6a, 0x28, 0xfe, 0x1b, 0xfc, 0xff, 0x59, 0x8c, 0x2c, 0x27, 0x4b,
  0x6a, 0x27, 0x44, 0xa2, 0x83, 0x97, 0xb6, 0x8a, 0xd6, 0x5f, 0xec, 0xf5,
  0xb7, 0x6b, 0xb4, 0x9e, 0x3d, 0x62, 0x94, 0x20, 0xcc, 0x40, 0xae, 0x41,
  0x6b, 0x2c, 0x79, 0xce, 0xb0, 0x8b, 0x93, 0x74, 0xba, 0x2c, 0x12, 0x56,
  0xdf, 0x28, 0xb0, 0xa0, 0xf1, 0x04, 0xd4, 0x88, 0x6e, 0x72, 0x72, 0xc3,
  0x83, 0x24, 0x4d, 0x66, 0x93, 0x6e, 0x63, 0x38, 0xb2, 0x5d, 0x90, 0xfc,
  0x69, 0xfa, 0xc4, 0x31, 0xc1, 0x46, 0xa1, 0xc1, 0xb2, 0x44, 0x34, 0xd8,
  0x39, 0x70, 0x93, 0x08, 0xfd, 0xd0, 0xd1, 0x68, 0x16, 0xa7, 0x73, 0x22,
  0x53, 0xf1, 0xb3, 0xf6, 0x43, 0xd7, 0x02, 0xad, 0x0b, 0x7c, 0x7b, 0x88,
  0x76, 0x6f, 0x51, 0xa2, 0x58, 0xa6, 0x53, 0x55, 0xb5, 0x99, 0xad, 0xca,
  0x9b, 0x64, 0x74, 0xab, 0x9c, 0x4b, 0xf5, 0xcd, 0x26, 0x1d, 0x63, 0x80,
  0x81, 0x8c, 0x6b, 0x78, 0x6a, 0x59, 0xe2, 0x35, 0x29, 0xcb, 0x14, 0x7d,
  0x67, 0x68, 0x0b, 0x2e, 0x47, 0x64, 0x22, 0xd2, 0x85, 0x01, 0xea, 0x56,
  0xf6, 0x17, 0x01, 0x3f, 0xcd, 0xc6, 0xbd, 0xaa, 0x48, 0x17, 0x6d, 0xb3,
  0xe3, 0x53, 0xa9, 0x6b, 0xa7, 0xa5, 0x98, 0xeb, 0x64, 0x09, 0xb3, 0x6d,
  0x3c, 0x8a, 0x1a, 0xbb, 0xd9, 0x24, 0x4a, 0xda, 0xdb, 0x2e, 0x3a, 0x83,
  0x52, 0x50, 0x16, 0xd8, 0x52, 0x22, 0x5f, 0x27, 0xd8, 0x45, 0x22, 0xb5,
  0xc0, 0x84, 0x4b, 0x47, 0xa4, 0x01, 0xa5, 0xd3, 0x04, 0x03, 0x39, 0x20,
  0xc8, 0xaa, 0x19, 0xe8, 0x45, 0x3e, 0x8d, 0xc3, 0x6f, 0x92, 0x69, 0x5e,
  0xa1, 0x2a, 0xe2, 0x91, 0xc9, 0x07, 0x62, 0xf2, 0x86, 0x26, 0x54, 0xe7,
  0x77, 0x15, 0xb2, 0x94, 0x95, 0x71, 0xf8, 0x34, 0xeb, 0xfc, 0xe2, 0x6e,
  0x28, 0x2b, 0xb8, 0x59, 0xcd, 0x53, 0x87, 0xd1, 0x46, 0x09, 0x19, 0x5e,
  0xa4, 0x35, 0xaa, 0xd2, 0xaa, 0xda, 0x3e, 0xb2, 0x04, 0x54, 0x90, 0xab,
  0xfb, 0x74, 0x94, 0xa8, 0x2f, 0x4e, 0x1c, 0xd4, 0xb3, 0xd4, 0xe7, 0xf3,
  0x73, 0xbc, 0x93, 0xf0, 0x12, 0x2b, 0xe4, 0xe8, 0x3a, 0xb9, 0x4f, 0x51,
  0x61, 0x17, 0xa6, 0x47, 0xfa, 0x98, 0xc8, 0x82, 0xb8, 0x48, 0xc9, 0x4f,
  0x04, 0xc3, 0xc9, 0x3c, 0x1d, 0x73, 0xde, 0xbd, 0x63, 0x3c, 0x6f, 0x7a,
  0x5f, 0x6c, 0x18, 0x6b, 0xbb, 0xd0, 0xe5, 0x9a, 0xc4, 0xe9, 0x2c, 0xb0,
  0x4f, 0xc4, 0xc8, 0xa6, 0x09, 0xb9, 0xd4, 0xf8, 0x0c, 0x96, 0xb8, 0xe9,
  0x18, 0x74, 0xf3, 0x99, 0x54, 0x92, 0xb0, 0x31, 0x41, 0x96, 0xc7, 0xc3,
  0xa3, 0xd9, 0x5e, 0xd2, 0xd8, 0xf8, 0xec, 0xe4, 0xef, 0x7c, 0x7c, 0xce,
  0xf5, 0x8c, 0x71, 0xd4, 0x78, 0x81, 0xd1, 0xa5, 0xe6, 0x0d, 0x45, 0xbb,
  0x0b, 0x03, 0x94, 0x1b, 0xea, 0x3e, 0x4e, 0xc4, 0x79, 0x6e, 0x02, 0x7b,



  0xc4, 0x90, 0x90, 0xa7, 0xc9, 0x15, 0xe6, 0x71, 0x84, 0x03, 0x37, 0x79,

  0x39, 0x08, 0x57, 0x90, 0xc5, 0xc4, 0x43, 0x6b, 0x14, 0x9b, 0x03, 0xfb,
  0x32, 0xe1, 0x25, 0x74, 0xf7, 0x0a, 0xaf, 0x23, 0x2b, 0x8b, 0xee, 0x6c,
  0x88, 0x97, 0xa3, 0xdd, 0x87, 0x4a, 0x32, 0x4b, 0x99, 0x6e, 0xc4, 0x4a,
  0x1d, 0x33, 0xab, 0x11, 0x3b, 0x80, 0x45, 0x81, 0x60, 0x51, 0x43, 0x53,
  0x9d, 0xcc, 0xe2, 0x29, 0xf9, 0xd6, 0xa6, 0xcd, 0x1b, 0x9a, 0xe5, 0x12,
  0xe5, 0x2b, 0x73, 0x60, 0xef, 0xb8, 0x6a, 0xf1, 0x6b, 0x95, 0xd1, 0x3a,
  0x10, 0xd9, 0x6c, 0x49, 0xb2, 0xfe, 0x02, 0x96, 0x37, 0x18, 0xbc, 0xdb,
  0x70, 0xd9, 0x1b, 0xed, 0xee, 0x73, 0x98, 0x1b, 0x72, 0x27, 0xb2, 0xc0,
  0xbf, 0xe6, 0xf3, 0xa8, 0x33, 0x38, 0x63, 0xda, 0xb9, 0x6a, 0x9c, 0xd2,
  0x25, 0xae, 0x02, 0xfd, 0xa0, 0x7d, 0x73, 0xf5, 0xf1, 0x49, 0x75, 0xc7,
  0x32, 0x61, 0xd7, 0xb4, 0x83, 0x65, 0xb9, 0x24, 0xcf, 0x14, 0xc9, 0xe3,
  0xe6, 0x70, 0xc0, 0xec, 0x81, 0x15, 0x2d, 0x33, 0xfc, 0xd3, 0x28, 0xd0,
  0x29, 0x99, 0x72, 0x78, 0x16, 0x05, 0xfa, 0xbf, 0xd1, 0x08, 0x36, 0x0a,
  0x28, 0xf0, 0x14, 0x1d, 0x1b, 0xf7, 0xb2, 0x79, 0x09, 0x41, 0x3d, 0x23,
  0x76, 0x03, 0x22, 0x14, 0x04, 0x33, 0x5e, 0xb8, 0x16, 0xee, 0xbd, 0x5e,
  0x2e, 0x81, 0xbf, 0xa0, 0xdd, 0x20, 0xcc, 0x03, 0xe9, 0xb1, 0x39, 0x3b,
  0x66, 0x2f, 0x20, 0x69, 0x1c, 0x3e, 0xb2, 0xf1, 0x5b, 0x5f, 0x10, 0x3a,
  0x34, 0xf7, 0x14, 0x41, 0xfc, 0x26, 0x60, 0x8d, 0x91, 0x3e, 0xe6, 0xa9,
  0x62, 0xd7, 0x67, 0x83, 0xd0, 0x61, 0xd6, 0x83, 0x53, 0xf8, 0x3e, 0x32,
  0x5b, 0xf4, 0x21, 0xb2, 0x4f, 0x35, 0x47, 0x8b, 0xc0, 0x09, 0x50, 0xb9,
  0xce, 0xbe, 0x45, 0x82, 0x91, 0x2c, 0x36, 0x96, 0x39, 0xf2, 0x8d, 0x0c,
  0x0c, 0x85, 0x35, 0x6a, 0x27, 0xc6, 0x7f, 0x7a, 0x7c, 0xe4, 0x8e, 0x4b,
  0x0e, 0xd3, 0xe6, 0x45, 0x70, 0x7e, 0xbf, 0x5e, 0x6e, 0x18, 0x1e, 0x06,
  0xa3, 0x5c, 0x9e, 0xbc, 0x27, 0xe3, 0x35, 0x06, 0xba, 0x39, 0x57, 0x5f,
  0xa5, 0x06, 0xb6, 0x87, 0xcb, 0x74, 0x56, 0x0b, 0x08, 0x58, 0x7b, 0x9b,
  0xa2, 0xca, 0x4c, 0x5a, 0x34, 0x35, 0x0e, 0x6d, 0xa5, 0xe4, 0x1b, 0x6e,
  0x12, 0x5a, 0xf5, 0xb8, 0x10, 0xb7, 0xf6, 0xb2, 0xac, 0x79, 0x8f, 0x54,

  0x2e, 0xcf, 0x2a, 0x52, 0xb1, 0xd1, 0xa8, 0x75, 0xc6, 0xf4, 0x4e, 0x88,
  0xa6, 0x85, 0x62, 0x60, 0x9a, 0xa5, 0x3f, 0x8b, 0x0e, 0x9a, 0x64, 0x77,
  0x69, 0x91, 0x67, 0xa8, 0xe3, 0x82, 0xdd, 0x5b, 0xa4, 0xc4, 0x96, 0x51,
  0xfd, 0x02, 0xc6, 0xb1, 0x76, 0xfc, 0xe1, 0xea, 0xec, 0xe3, 0xf1, 0xd1,


  0xc7, 0xaf, 0x3f, 0x9c, 0xbf, 0x39, 0x3b, 0x59, 0x6b, 0x0c, 0x87, 0x0e,
  0xbf, 0x54, 0xbc, 0xf4, 0x25, 0x9a, 0x1d, 0x74, 0x49, 0x60, 0x8a, 0x3c,
  0xf2, 0x34, 0xbd, 0x03, 0x86, 0x46, 0x56, 0x04, 0x39, 0xe8, 0xe9, 0x6f,
  0xe4, 0xd2, 0x92, 0x0d, 0x6f, 0x0c, 0x37, 0x5c, 0xa2, 0x9e, 0xd6, 0xaf,
  0x69, 0xcb, 0x7a, 0x55, 0xc4, 0x64, 0xd7, 0x09, 0x06, 0x34, 0x6c, 0xd4,
  0xa2, 0xb2, 0x31, 0xda, 0x2e, 0x8e, 0x85, 0xe8, 0xf8, 0xea, 0x97, 0x15,
  0x98, 0x48, 0x1a, 0x1d, 0x00, 0xad, 0x2d, 0xbf, 0xd5, 0x14, 0x03, 0xb0,
  0xaf, 0x8e, 0x02, 0xc7, 0x5d, 0x5a, 0x4d, 0x74, 0x1c, 0xad, 0xe1, 0x48,
  0x40, 0xbf, 0x3d, 0x99, 0xe4, 0xa8, 0xa8, 0xc0, 0xb8, 0x49, 0x52, 0xba,
  0x18, 0x1a, 0x42, 0x45, 0x9d, 0x95, 0x3c, 0x73, 0x9e, 0x86, 0x0d, 0xba,
  0x26, 0xee, 0x01, 0x69, 0xf7, 0xc9, 0x43, 0x42, 0x37, 0x4f, 0xde, 0x3a,
  0x5e, 0x16, 0x74, 0x9b, 0xbf, 0x07, 0x6d, 0x04, 0xb9, 0xdf, 0x1b, 0x72,
  0xed, 0xc1, 0x0b, 0xfa, 0x10, 0x88, 0x99, 0xa6, 0xc8, 0xcb, 0x67, 0x18,
  0x54, 0x8d, 0xc9, 0x8d, 0x42, 0x4e, 0xaf, 0xcb, 0xa3, 0xeb, 0x77, 0x41,
  0x65, 0xd6, 0xe6, 0xf3, 0x08, 0x29, 0x92, 0x62, 0x5e, 0x56, 0x72, 0x41,
  0xce, 0x07, 0x83, 0x88, 0xb2, 0x45, 0x66, 0xe9, 0xb0, 0x88, 0xf1, 0x9b,
  0xf8, 0x63, 0xfc, 0x29, 0x90, 0x75, 0x63, 0xb8, 0xcb, 0x6f, 0x8f, 0x07,

  0x7f, 0xdc, 0xde, 0x46, 0x2d, 0x7e, 0x09, 0xfb, 0xb2, 0x0e, 0xaf, 0x64,
  0x25, 0xdc, 0xcc, 0x79, 0xbf, 0xcc, 0x37, 0x48, 0x6c, 0x97, 0xa2, 0x0e,
  0xc4, 0x77, 0x20, 0x6d, 0x89, 0x8e, 0x94, 0xa8, 0xe1, 0x38, 0xbd, 0x3d,
  0x21, 0x46, 0x27, 0xa9, 0x34, 0xc0, 0x2f, 0x40, 0x5e, 0xcf, 0x7c, 0x85,
  0x7c, 0x3d, 0xbd, 0x18, 0x48, 0x22, 0x4a, 0x3c, 0x82, 0xbf, 0xa2, 0x97,
  0x60, 0x03, 0x57, 0x56, 0xbf, 0x61, 0xba, 0xaa, 0x01, 0x6b, 0xa3, 0xd7,
  0x68, 0xbe, 0x50, 0xfe, 0x8c, 0xcf, 0x15, 0xb2, 0xe6, 0xe5, 0xb2, 0x39,

  0x4a, 0x44, 0x0e, 0xc3, 0x78, 0x74, 0x7b, 0x1f, 0x17, 0x63, 0xb6, 0x87,
  0x80, 0x62, 0x86, 0xe9, 0x2c, 0xad, 0x1e, 0xd9, 0xa8, 0x6d, 0x1a, 0xd4,
  0x1c, 0x1c, 0xc5, 0x0d, 0x84, 0x7b, 0x34, 0x05, 0x7b, 0x1f, 0xb5, 0x4f,
  0x54, 0xf1, 0xd3, 0xca, 0xb5, 0x67, 0x49, 0x45, 0xaa, 0x8c, 0x8a, 0x63,
  0xbe, 0xed, 0x89, 0xc7, 0x8a, 0xef, 0x11, 0x4d, 0xd3, 0xd2, 0xae, 0xb2,
  0x41, 0x97, 0x49, 0x29, 0xf9, 0x44, 0xe5, 0x23, 0x48, 0xf9, 0x79, 0x14,
  0x50, 0x11, 0x29, 0x75, 0x28, 0xfa, 0x36, 0x79, 0x04, 0xe3, 0x39, 0xcd,
  0x2c, 0xa7, 0x64, 0xe3, 0x3e, 0x41, 0xeb, 0x8e, 0x75, 0xd1, 0x54, 0x3d,
  0xe9, 0x89, 0x04, 0x43, 0x58, 0x92, 0xf8, 0xde, 0x03, 0x7e, 0x5f, 0xf5,
  0x70, 0x1c, 0x62, 0xad, 0xac, 0xb1, 0x64, 0xfa, 0x92, 0x7f, 0x88, 0x03,
  0xf8, 0x79, 0x96, 0x25, 0x33, 0x39, 0xbe, 0xeb, 0x55, 0x07, 0x60, 0x9e,
  0x85, 0x29, 0x7f, 0xcf, 0x37, 0xba, 0x31, 0xdc, 0x4b, 0x8e, 0xec, 0xc7,


  0x95, 0xca, 0x24, 0x4d, 0x19, 0x02, 0xab, 0x68, 0xcb, 0xfc, 0xaa, 0xdf,
  0xfa, 0x19, 0xef, 0x36, 0x15, 0xf6, 0xd0, 0xeb, 0x67, 0xce, 0x1e, 0x51,
  0x3a, 0x64, 0x3c, 0x63, 0x39, 0xe2, 0x2f, 0x8c, 0x66, 0x45, 0xd1, 0x8b,
  0xc6, 0x70, 0xae, 0x96, 0xad, 0x32, 0x4c, 0xd6, 0xb1, 0x06, 0x7a, 0x6a,
  0x5e, 0x90, 0xb3, 0xa8, 0xc8, 0xe1, 0xac, 0x6b, 0xe7, 0xb9, 0xce, 0xca,
  0x46, 0xf3, 0x9a, 0x08, 0x37, 0x77, 0x36, 0x66, 0x23, 0x74, 0xd1, 0x3d,
  0xcd, 0xc4, 0x37, 0x59, 0x5b, 0x2d, 0xce, 0xba, 0x84, 0x26, 0x2e, 0x7d,
  0x08, 0x6c, 0xec, 0x5f, 0x17, 0xd0, 0xcc, 0x0c, 0x89, 0xf9, 0xf9, 0x32,
  0x4b, 0x68, 0xb1, 0x26, 0xa8, 0xdf, 0xab, 0x44, 0xc6, 0x49, 0x18, 0xff,
  0xeb, 0x82, 0xb3, 0x05, 0x58, 0x71, 0x64, 0x47, 0xb2, 0x6f, 0x06, 0xa0,
  0x2f, 0x50, 0xfc, 0x8d, 0x07, 0x9d, 0x68, 0x3d, 0xe9, 0x4f, 0x61, 0xbc,
  0x0e, 0x8e, 0xb3, 0x7d, 0x80, 0xff, 0xdd, 0xa1, 0xff, 0xee, 0x76, 0x34,
  0xaf, 0xcf, 0xdd, 0x7a, 0x94, 0xe6, 0x4d, 0x59, 0xc4, 0xc1, 0x38, 0x2b,
  0xdc, 0xbb, 0xec, 0x60, 0x6e, 0x63, 0x3c, 0xac, 0xb3, 0x9e, 0xf1, 0x2e,
  0xfb, 0xea, 0x96, 0x6e, 0xc3, 0x9c, 0xfd, 0x11, 0x77, 0x09, 0x3b, 0x44,
  0x60, 0x65, 0x23, 0x50, 0x0f, 0xc9, 0x87, 0xa8, 0xb7, 0x6a, 0xf4, 0xb1,
  0x48, 0x6e, 0xe2, 0xf2, 0x26, 0x5a, 0x56, 0x4c, 0x84, 0x40, 0xb7, 0xcd,
  0xe1, 0x16, 0xb3, 0xd4, 0xba, 0xd9, 0xe4, 0xd3, 0x7d, 0xb5, 0xfb, 0xec,
  0x29, 0x72, 0xf8, 0x63, 0x96, 0xdf, 0xeb, 0x33, 0x3d, 0x49, 0xb4, 0x0b,
  0xa9, 0x05, 0x70, 0x9a, 0xe4, 0x37, 0xc1, 0xc7, 0xdc, 0x30, 0xf6, 0x1c,
  0xb5, 0x49, 0xcc, 0x02, 0x04, 0x16, 0x37, 0x81, 0x1d, 0x43, 0x8b, 0x6e,
  0x46, 0xe7, 0x86, 0xb6, 0x2b, 0xcd, 0xdb, 0x33, 0x4d, 0x45, 0xcf, 0x4b,
  0x27, 0xe2, 0xba, 0x95, 0x7f, 0x93, 0x3c, 0x15, 0xed, 0xab, 0xe4, 0x50,
  0x77, 0x53, 0xf5, 0x7a, 0x9a, 0xb4, 0x95, 0x41, 0x1a, 0x4d, 0x47, 0x16,

  0xcb, 0xd1, 0x12, 0xa5, 0xeb, 0x74, 0x4a, 0xb6, 0x46, 0xc8, 0x81, 0xc1,
  0x4e, 0xa9, 0x7f, 0xe9, 0x92, 0xc0, 0x8c, 0x7b, 0xe8, 0x2c, 0x5d, 0x96,
  0xcf, 0xb8, 0x23, 0x0e, 0xd3, 0xe5, 0x77, 0x8c, 0xb3, 0x98, 0x43, 0xfa,
  0xee, 0x06, 0x34, 0xa9, 0xf0, 0xd1, 0x21, 0x8c, 0x63, 0xe7, 0x66, 0x0d,
  0x78, 0xa0, 0x2b, 0x71, 0x91, 0xac, 0xc7, 0xb7, 0x71, 0x3f, 0xba, 0x38,
  0x1e, 0x5c, 0xe2, 0x27, 0x80, 0x3a, 0xb2, 0x29, 0xcc, 0xe2, 0x6c, 0xd0,
  0x18, 0x2e, 0x79, 0xa8, 0x92, 0xac, 0x0c, 0x39, 0x28, 0xfd, 0x6d, 0xd6,
  0x10, 0x82, 0xe6, 0xd6, 0xc8, 0x64, 0xc1, 0xd2, 0xa7, 0xa0, 0x38, 0xc6,
  0x78, 0x31, 0x01, 0x23, 0xe2, 0xab, 0xe6, 0x7d, 0x68, 0x01, 0x37, 0x7f,
  0xbc, 0x61, 0x5c, 0x35, 0x5d, 0xa5, 0x05, 0x13, 0x2b, 0x2c, 0x97, 0x53,
  0xb4, 0x41, 0x4a, 0xb5, 0x1b, 0xcd, 0x17, 0x60, 0x37, 0x7c, 0x55, 0x41,
  0x96, 0x6d, 0x3c, 0x89, 0x60, 0x35, 0x61, 0x1a, 0x15, 0xa9, 0x48, 0x59,
  0x6e, 0x47, 0xc5, 0x54, 0x0a, 0x4a, 0x19, 0x4d, 0x29, 0xba, 0x36, 0x4a,
  0x40, 0x05, 0x1d, 0x07, 0x94, 0x00, 0x3e, 0x14, 0x35, 0x9c, 0x26, 0x92,
  0x26, 0x1a, 0xf0, 0xff, 0xd0, 0x40, 0x23, 0x56, 0xd1, 0x90, 0xea, 0x29,
  0x4a, 0x91, 0xa2, 0x9f, 0x14, 0x15, 0x66, 0x36, 0xd5, 0x71, 0x3c, 0x73,
  0xff, 0xbf, 0xc9, 0x96, 0xb0, 0xf1, 0x01, 0x69, 0x8c, 0x4a, 0x15, 0x8a,
  0x19, 0xdc, 0xc0, 0x55, 0x8e, 0xbd, 0xbd, 0xed, 0xba, 0x13, 0x9b, 0x88,
  0x0d, 0x0c, 0x80, 0x24, 0x3a, 0xc4, 0xff, 0x3e, 0xc9, 0x95, 0x29, 0x6f,
  0x85, 0x9e, 0x97, 0x60, 0x27, 0xf3, 0x4e, 0xf1, 0xc5, 0x44, 0x75, 0x06,
  0xed, 0x49, 0x2f, 0x22, 0xb7, 0x3e, 0xf2, 0xbd, 0x6e, 0xf4, 0x06, 0xb3,
  0xb1, 0x4f, 0xce, 0xbf, 0x21, 0x1a, 0xb8, 0xdc, 0xde, 0xa1, 0xd0, 0x92,
  0xb1, 0x1e, 0xc6, 0xf4, 0x91, 0x92, 0x1d, 0x09, 0x1c, 0x1a, 0xf6, 0x15,

  0x5f, 0x92, 0x09, 0x5d, 0x62, 0xa3, 0x18, 0x13, 0xa4, 0xd4, 0xa1, 0xf1,
  0xa7, 0x93, 0x5f, 0x9e, 0x21, 0x7a, 0xd2, 0x95, 0x1d, 0x14, 0xc7, 0xcc,
  0x6d, 0xf2, 0x68, 0xff, 0x46, 0xbb, 0xea, 0x6c, 0xb5, 0x7d, 0xf8, 0xd0,
  0xd9, 0xa4, 0xbf, 0x1e, 0x60, 0x7a, 0x12, 0x68, 0xa9, 0xe3, 0x9f, 0x7e,
  0x9d, 0x44, 0x0c, 0xef, 0x7c, 0xc0, 0xd9, 0x42, 0x7e, 0x2e, 0x4d, 0x04,
  0xe2, 0xb8, 0x3f, 0xb3, 0x78, 0xc9, 0x85, 0xc7, 0x34, 0x79, 0x24, 0xf8,
  0x38, 0x33, 0x2a, 0x49, 0x8f, 0xb3, 0xbf, 0x28, 0x1b, 0xac, 0xb9, 0xf7,
  0xa3, 0x7c, 0xe6, 0xc9, 0xba, 0x9a, 0xe1, 0x4a, 0xfa, 0xfc, 0x8e, 0xc8,
  0x37, 0x32, 0xe6, 0x98, 0xd9, 0x88, 0x16, 0xdd, 0xbc, 0x0e, 0x46, 0xa7,
  0x26, 0xf5, 0xcb, 0x4a, 0x46, 0x7c, 0x93, 0x5f, 0xa4, 0x18, 0x37, 0x4d,
  0x8d, 0x35, 0xa5, 0x7e, 0x64, 0x35, 0xde, 0x90, 0xfa, 0x0f, 0x67, 0xab,
  0x7b, 0x0b, 0x87, 0x8e, 0x7e, 0x26, 0xb3, 0x6b, 0x5d, 0xd7, 0xd3, 0x04,
  0x4c, 0xae, 0x48, 0x55, 0x3f, 0x97, 0x4c, 0x52, 0x3f, 0x86, 0xc1, 0xe9,


  0x06, 0xe2, 0x8d, 0x92, 0xb4, 0xaa, 0x9a, 0x2f, 0x9f, 0xc9, 0x0f, 0x2d,
  0xd1, 0x8e, 0xb3, 0x25, 0x9d, 0xd0, 0x51, 0x54, 0x1c, 0xf9, 0x94, 0x2b,
  0x94, 0xde, 0xe1, 0xd6, 0x29, 0xed, 0x58, 0xc7, 0x66, 0x5d, 0xf5, 0xcd,





  0x33, 0xfc, 0x33, 0x43, 0x9f, 0xd8, 0x1f, 0x02, 0x04, 0x19, 0xa4, 0x45,
  0xf4, 0x8d, 0x4b, 0xec, 0x83, 0x14, 0x18, 0xcc, 0x80, 0x94, 0x14, 0xf4,

  0xd9, 0xe3, 0xb3, 0x0c, 0x3a, 0x55, 0x40, 0xd4, 0x6e, 0x73, 0x8c, 0x39,
  0xcf, 0xda, 0x69, 0x12, 0x08, 0xb0, 0xf1, 0x0a, 0xf3, 0x49, 0x98, 0x76,
  0xd1, 0xf7, 0x9a, 0x8e, 0x6e, 0x29, 0xf2, 0x22, 0x12, 0xca, 0x5d, 0x9f,
  0x26, 0xed, 0x71, 0xba, 0x69, 0xe0, 0x08, 0xc8, 0x96, 0x44, 0xa7, 0x30,
  0xd2, 0x24, 0x4a, 0xe7, 0x34, 0x63, 0x9d, 0xad, 0xd5, 0xcb, 0x00, 0x73,
  0xfd, 0xf8, 0xe6, 0xf4, 0x2a, 0x5a, 0x47, 0x0d, 0xbc, 0x69, 0xe4, 0xaa,
  0x78, 0xdf, 0x4c, 0xaa, 0xd1, 0xe6, 0xe2, 0x36, 0xdd, 0x04, 0x63, 0x73,
  0x3c, 0xdc, 0x30, 0x46, 0x14, 0x7d, 0x0e, 0xa9, 0xd0, 0x18, 0xa6, 0x6a,
  0x99, 0x92, 0x69, 0xea, 0xb9, 0x1e, 0xad, 0xa9, 0xca, 0xe5, 0x2d, 0xc6,
  0x46, 0xe5, 0x6d, 0x62, 0x82, 0xa6, 0x10, 0x0d, 0xa7, 0x46, 0x50, 0x60,
  0x27, 0x61, 0xbf, 0x34, 0xd8, 0xd8, 0xcd, 0xbb, 0xca, 0xa9, 0x8f, 0xe2,
  0xc8, 0x61, 0x07, 0x8e, 0xe6, 0xeb, 0x89, 0xb8, 0xb0, 0xda, 0x6f, 0x17,
  0x33, 0x2d, 0x71, 0x53, 0x16, 0x28, 0x92, 0xc6, 0xe8, 0x06, 0x6c, 0x0e,
  0x47, 0x9a, 0x5c, 0xa7, 0xbf, 0xd9, 0x89, 0x4c, 0x6e, 0x29, 0xec, 0x32,
  0x27, 0x4f, 0x9b, 0xc0, 0x17, 0x90, 0xd8, 0x64, 0x59, 0x1a, 0x3f, 0x66,
  0x6c, 0xce, 0xab, 0x1f, 0x62, 0xa8, 0xce, 0x71, 0x1a, 0x9d, 0x0b, 0x74,
  0x63, 0xba, 0x59, 0xae, 0xb5, 0x2e, 0x93, 0xa2, 0xa3, 0xea, 0xfc, 0xd8,
  0x89, 0x9c, 0xdc, 0xc4, 0x5a, 0x8a, 0x62, 0x6a, 0xb3, 0x87, 0x1c, 0x21,
  0x00, 0x12, 0xd9, 0xdc, 0xe1, 0x71, 0x32, 0x4b, 0xe7, 0x29, 0xd9, 0x5e,
  0xee, 0x14, 0x7a, 0xa1, 0x00, 0xa1, 0x9d, 0xd2, 0x8f, 0xfe, 0x94, 0x34,
  0xdf, 0x37, 0xc6, 0x5f, 0xc3, 0x94, 0xc8, 0x23, 0xc6, 0xe9, 0x98, 0x61,
  0xab, 0xb9, 0x3e, 0x21, 0x93, 0x31, 0xbc, 0x22, 0x6c, 0x6c, 0xee, 0x52,
  0x9b, 0x2a, 0x6f, 0x5d, 0x22, 0x7a, 0xe9, 0x99, 0xa9, 0x45, 0x8b, 0xdb,
  0x51, 0xb9, 0xbd, 0xdd, 0x14, 0x74, 0xa5, 0xa5, 0x28, 0xb1, 0xdf, 0x63,
  0x43, 0x98, 0x1f, 0xae, 0x4e, 0xa3, 0x75, 0xac, 0x10, 0x79, 0xb9, 0xbf,
  0xbd, 0xb3, 0xe1, 0xa6, 0x95, 0x28, 0x03, 0xf0, 0xe5, 0xe6, 0x23, 0x87,
  0x64, 0x9d, 0x0b, 0x38, 0xcb, 0x47, 0xb1, 0x68, 0x1c, 0x76, 0xe8, 0x71,
  0x72, 0x97, 0x8e, 0xb0, 0x40, 0x07, 0xa3, 0xf1, 0xc8, 0x83, 0x87, 0x09,
  0x4c, 0xd2, 0xdb, 0x71, 0x9b, 0xce, 0xcb, 0xb3, 0x07, 0x13, 0xc9, 0x68,
  0xca, 0x98, 0x34, 0x0d, 0x34, 0x50, 0xc9, 0xde, 0xb9, 0xb3, 0x96, 0x28,
  0x41, 0xdc, 0xe2, 0x09, 0xc2, 0x75, 0x71, 0xf9, 0x0c, 0xe9, 0x18, 0x5d,
  0x1b, 0xf8, 0xe9, 0xf5, 0x64, 0xb3, 0x84, 0xf5, 0x9a, 0xd8, 0x31, 0xa6,
  0x9f, 0x34, 0x0f, 0x50, 0xe6, 0xd4, 0x41, 0x41, 0x92, 0x91, 0x70, 0x8f,
  0xed, 0xa0, 0x66, 0xf7, 0x5d, 0x4d, 0xa8, 0x3e, 0xaa, 0xef, 0x29, 0x27,
  0xc2, 0x01, 0xcd, 0x25, 0x3c, 0xe4, 0xef, 0xe4, 0x64, 0xaa, 0xb3, 0x4f,
  0x39, 0x1e, 0x3c, 0x7b, 0xf1, 0x1a, 0x0e, 0x59, 0x51, 0x50, 0x7e, 0x1b,
  0xeb, 0xe3, 0x9e, 0x1c, 0x87, 0xd7, 0x37, 0x55, 0x08, 0x91, 0x14, 0x52,
  0x7f, 0x23, 0x7b, 0x7e, 0x80, 0x79, 0x92, 0xa7, 0xe7, 0x56, 0x1c, 0x3d,
  0xa4, 0x14, 0x9b, 0xfc, 0x0d, 0xdf, 0x57, 0xac, 0x82, 0x1f, 0x8e, 0x68,
  0x94, 0x8f, 0x1b, 0x26, 0x3b, 0x6e, 0x82, 0x23, 0xf0, 0x88, 0xfb, 0x71,

  0xa8, 0x92, 0x38, 0x5e, 0xd8, 0x93, 0x8d, 0x94, 0xca, 0xee, 0xf5, 0x5f,
  0xc4, 0x03, 0x43, 0x1e, 0x35, 0x62, 0x81, 0xbf, 0x8a, 0x03, 0x3e, 0xe1,

  0x73, 0x3a, 0xf6, 0x24, 0x76, 0x69, 0x94, 0x21, 0xab, 0xab, 0x61, 0xa6,

  0x78, 0x44, 0x1b, 0xe7, 0x5b, 0x34, 0x98, 0x33, 0x48, 0x29, 0x01, 0x98,

  0xf0, 0xd5, 0xb8, 0x9b, 0xec, 0xd8, 0x81, 0xeb, 0xb2, 0x7e, 0xc6, 0x41,
  0xca, 0xe8, 0xf2, 0xed, 0x0f, 0xca, 0x2d, 0x43, 0x06, 0x3c, 0x39, 0xa2,
  0xbe, 0x30, 0xa9, 0x61, 0x60, 0x51, 0x60, 0x9a, 0x5a, 0x2a, 0x29, 0x9f,
  0xec, 0x26, 0xa2, 0x70, 0xf8, 0x86, 0xcd, 0x64, 0xc4, 0xad, 0xee, 0x1c,
  0xd2, 0xef, 0x9a, 0xb1, 0xa6, 0x9c, 0x2d, 0x99, 0x2f, 0x7f, 0xe4, 0x5f,
  0x33, 0x8f, 0x85, 0x7f, 0x55, 0x37, 0xcb, 0xf9, 0x10, 0xce, 0x33, 0xab,
  0xbe, 0xec, 0x44, 0x1c, 0x6c, 0x9d, 0xc8, 0x7e, 0xae, 0x30, 0x3b, 0x53,
  0x2d, 0xd6, 0x51, 0xdf, 0x62, 0x6d, 0xd7, 0x78, 0x76, 0x5a, 0x38, 0x60,
  0x93, 0xf3, 0xe0, 0xf0, 0xd8, 0x97, 0xed, 0xa9, 0x7a, 0x1f, 0x80, 0x3c,
  0x7f, 0x7c, 0xff, 0x97, 0x1f, 0x5f, 0xed, 0xee, 0xc5, 0x2f, 0xe3, 0xd1,
  0x8b, 0xc9, 0xe7, 0xf1, 0xfe, 0x78, 0xff, 0xe5, 0xab, 0x9d, 0xcf, 0xf7,
  0xe3, 0x97, 0x7b, 0x93, 0xf8, 0xc5, 0x76, 0xb2, 0xfd, 0x6a, 0xb2, 0xb3,
  0x3b, 0x1e, 0x4f, 0x92, 0xcf, 0xc7, 0x2f, 0xe3, 0x4e, 0x9f, 0xcc, 0x2f,
  0x9d, 0xba, 0xcf, 0x6a, 0x35, 0xf0, 0x16, 0x47, 0x83, 0x77, 0x47, 0xbd,
  0xed, 0xe8, 0x26, 0x79, 0xd0, 0x0b, 0xc6, 0x1e, 0x4d, 0x93, 0x72, 0x97,
  0x48, 0x52, 0x75, 0xfb, 0x62, 0xb5, 0x4a, 0x10, 0x53, 0xa6, 0xd1, 0x57,
  0x42, 0x1a, 0x30, 0xef, 0xa2, 0x6e, 0x2b, 0x27, 0xd5, 0x19, 0xff, 0xe1,
  0x81, 0xfa, 0xec, 0x71, 0x5d, 0xcd, 0xcb, 0x7f, 0x06, 0xef, 0xcc, 0xde,
  0xc7, 0x23, 0x50, 0x92, 0x60, 0x4f, 0xe4, 0xc1, 0x01, 0x98, 0xb6, 0xc0,
  0xa6, 0xbb, 0x91, 0xfc, 0x05, 0xbd, 0xc4, 0xce, 0x18, 0xdf, 0x14, 0xf9,
  0x72, 0x71, 0x99, 0xcf, 0xd2, 0xd1, 0xe3, 0xaa, 0xe1, 0xdc, 0xc7, 0x6a,
  0xbf, 0x38, 0x61, 0x16, 0x9e, 0x96, 0xc9, 0xef, 0x68, 0x5a, 0x39, 0xec,
  0xf8, 0x19, 0xb6, 0x55, 0x6f, 0x94, 0x2e, 0x6e, 0x30, 0xce, 0x7b, 0x48,
  0x29, 0x7e, 0x18, 0x9a, 0xe1, 0x1f, 0x84, 0x6d, 0xaa, 0x81, 0xdc, 0xc8,
  0x52, 0xce, 0x53, 0xdf, 0x16, 0x8d, 0x2b, 0xd5, 0xfa, 0x37, 0x75, 0x53,
  0x49, 0x5a, 0x69, 0xea, 0xf9, 0xf1, 0xec, 0x87, 0xf8, 0xb6, 0xab, 0xb6,
  0xcd, 0xce, 0x0b, 0xf9, 0x55, 0x3f, 0xba, 0xa2, 0x38, 0xf9, 0x72, 0xc1,
  0xe6, 0x05, 0xf9, 0xf3, 0xf9, 0x77, 0xcd, 0x8b, 0x86, 0x93, 0x17, 0x8a,
  0xe1, 0x2a, 0x3c, 0xd8, 0xd1, 0x0f, 0x57, 0x67, 0x07, 0xcd, 0x7d, 0xa2,
  0x4a, 0xa3, 0xf2, 0x60, 0x73, 0x93, 0x42, 0x3e, 0x37, 0xf1, 0xc3, 0x43,
  0xbf, 0x4c, 0x36, 0xc7, 0xf9, 0xa8, 0xdc, 0x2c, 0xcb, 0x99, 0xee, 0x46,
  0xbd, 0xf0, 0xef, 0x13, 0x78, 0x73, 0xf3, 0x39, 0xb1, 0xad, 0x64, 0xdc,
  0x2b, 0x4b, 0x2f, 0x37, 0x68, 0x70, 0xac, 0x99, 0x07, 0x27, 0x92, 0x93,
  0x46, 0x72, 0xae, 0x07, 0xbb, 0x3b, 0x18, 0xbc, 0x8b, 0xf4, 0x65, 0xda,
  0x5e, 0x13, 0x12, 0x37, 0x79, 0x39, 0xdd, 0x80, 0x1a, 0x16, 0x0b, 0xc3,
  0xfe, 0xc2, 0x75, 0xe8, 0xa0, 0x3a, 0x9d, 0xf3, 0x1f, 0x52, 0xb8, 0x92,
  0x56, 0x2b, 0xb3, 0xf8, 0x5e, 0x34, 0x1c, 0x20, 0x66, 0x11, 0xe1, 0xf8,
  0xbf, 0x3a, 0xc1, 0xe2, 0xc8, 0x3e, 0x69, 0x3d, 0x42, 0xcd, 0xca, 0x74,
  0xa0, 0xde, 0x69, 0x5e, 0x80, 0xf0, 0x98, 0x97, 0x21, 0x2f, 0xa8, 0xde,

  0xf2, 0x92, 0xd5, 0xbe, 0x92, 0x13, 0x11, 0x61, 0x98, 0xcc, 0x19, 0x1c,
  0x8e, 0x91, 0x12, 0x18, 0xfb, 0xee, 0x61, 0x05, 0xe3, 0x5b, 0x7a, 0x78,
  0x6d, 0x5e, 0xb4, 0x65, 0x66, 0x83, 0x1f, 0x24, 0x8e, 0x61, 0xb2, 0x52,

  0x55, 0xe6, 0x59, 0x08, 0x94, 0xf8, 0x4f, 0x62, 0x02, 0x75, 0x88, 0xa2,
  0xc8, 0x1d, 0xa5, 0xb6, 0xf7, 0x2d, 0x19, 0x97, 0x20, 0x1d, 0xd3, 0xa9,
  0x86, 0xd7, 0x5b, 0x72, 0xec, 0x50, 0x74, 0x55, 0x94, 0xb8, 0x2c, 0xb5,
  0xe0, 0x28, 0x14, 0x30, 0x85, 0x8d, 0x52, 0x4b, 0x24, 0x35, 0x93, 0xd3,
  0x81, 0x6a, 0x25, 0xf0, 0xde, 0x4d, 0xc0, 0x82, 0x1f, 0xfb, 0x38, 0xa6,
  0x51, 0xe9, 0xbd, 0xa4, 0xe1, 0xc5, 0x7d, 0xe1, 0x24, 0xb6, 0xa1, 0x56,
  0x46, 0x6e, 0x06, 0x78, 0xa6, 0x69, 0xed, 0x51, 0xc2, 0xad, 0xd1, 0xf9,
  0x42, 0xf5, 0xad, 0xcd, 0xf5, 0x68, 0xde, 0xbd, 0xee, 0x6d, 0x4a, 0x15,
  0xd5, 0x31, 0x25, 0xf5, 0x87, 0x44, 0x7b, 0xee, 0x04, 0x69, 0x71, 0x40,
  0x5f, 0xe6, 0x55, 0x26, 0x6d, 0x52, 0xcb, 0x94, 0x48, 0x21, 0x00, 0x0e,
  0x04, 0x62, 0x0f, 0xd3, 0xcd, 0xb1, 0x8e, 0x7e, 0x96, 0x5b, 0x05, 0x0b,
  0x08, 0x0f, 0x78, 0x21, 0x95, 0x22, 0xf6, 0x3d, 0xbe, 0xcd, 0x05, 0x49,
  0x9c, 0x44, 0xc8, 0x85, 0x75, 0x9c, 0xed, 0xc5, 0x3f, 0x23, 0xf1, 0x35,
  0xd4, 0x18, 0xb9, 0xe5, 0x67, 0x78, 0x7e, 0x21, 0xd7, 0x90, 0xa4, 0xe4,
  0x73, 0x95, 0x63, 0x4a, 0xf5, 0xbb, 0x52, 0xf1, 0xc9, 0x15, 0x06, 0xea,
  0xd9, 0x2e, 0x73, 0x49, 0xd9, 0xc4, 0x89, 0xe2, 0x3c, 0x79, 0x8e, 0x4d,
  0x52, 0x37, 0xd5, 0x9c, 0x35, 0x63, 0x24, 0x2e, 0x6d, 0xa2, 0x7e, 0xe9,
  0x47, 0x2b, 0xed, 0x66, 0x86, 0xac, 0x57, 0xaf, 0xe8, 0x81, 0x26, 0x52,
  0x24, 0xfa, 0x85, 0x2c, 0x6f, 0x4e, 0x4a, 0xe7, 0x11, 0xca, 0x47, 0xd5,
  0xc4, 0x7e, 0x67, 0x02, 0x9a, 0xe0, 0x6f, 0x4e, 0xb9, 0x25, 0x7b, 0x33,
  0x89, 0xec, 0x23, 0x91, 0xb5, 0x33, 0xed, 0x31, 0x92, 0xbf, 0x81, 0xca,
  0x35, 0x4a, 0x9e, 0xfa, 0x01, 0xce, 0xe9, 0xf5, 0x46, 0xc8, 0x4f, 0x6c,
  0x47, 0x52, 0x8a, 0xc2, 0x7b, 0x3a, 0xcb, 0x4b, 0x8d, 0xbf, 0xa0, 0x72,
  0xc1, 0x45, 0xb7, 0xc0, 0x0d, 0xbe, 0x97, 0x1f, 0xf0, 0xd1, 0x34, 0x86,
  0xe3, 0xa7, 0xba, 0x32, 0xc5, 0x89, 0x55, 0x36, 0xc4, 0x56, 0xb5, 0x95,
  0xc2, 0xa8, 0x6d, 0x18, 0x6b, 0xf2, 0x20, 0xfa, 0xf1, 0xc7, 0x6e, 0x04,
  0x46, 0x72, 0x63, 0xb8, 0x1f, 0x2b, 0xf8, 0x29, 0xd0, 0xe2, 0x8f, 0x5c,
  0xad, 0xf4, 0xe3, 0x1d, 0x1a, 0x81, 0xe8, 0x60, 0x2e, 0x67, 0x18, 0x3d,
  0x62, 0x35, 0xbb, 0xee, 0x95, 0xe3, 0x62, 0xe8, 0x15, 0xa9, 0x59, 0xd6,
  0x6e, 0xe7, 0x54, 0x4c, 0x38, 0xb0, 0xe5, 0x3c, 0x13, 0xeb, 0x84, 0x89,

  0x93, 0xee, 0x3d, 0xc9, 0x81, 0xb5, 0x3f, 0xae, 0x59, 0x42, 0x0a, 0xed,
  0x5d, 0x91, 0xb0, 0xa4, 0x27, 0x51, 0x95, 0x3a, 0x62, 0x4a, 0x4b, 0x87,
  0xc9, 0xdc, 0x8c, 0x38, 0x5c, 0x8a, 0xcc, 0xf4, 0x02, 0x9d, 0xeb, 0x5c,
  0x03, 0xd6, 0x14, 0xe3, 0xd6, 0x94, 0xc4, 0xc2, 0xb8, 0xc5, 0xcd, 0x63,
  0x89, 0x99, 0x1c, 0x32, 0x1b, 0xef, 0xf6, 0xb4, 0x26, 0x18, 0xcb, 0xde,
  0x63, 0x45, 0x0f, 0xf2, 0x01, 0x64, 0x7e, 0x35, 0xd6, 0x09, 0x33, 0x5a,
  0xeb, 0xad, 0x99, 0x58, 0x98, 0xe4, 0xcb, 0x78, 0x89, 0xf4, 0x26, 0x39,
  0xdb, 0x26, 0x1f, 0x7a, 0x9f, 0x74, 0x92, 0xe2, 0x72, 0x37, 0xdd, 0xd1,
  0x56, 0xb6, 0x63, 0x69, 0xaa, 0x46, 0xf1, 0xe5, 0xfb, 0xc2, 0x7f, 0x02,
  0x0e, 0x27, 0x4a, 0x8b, 0x24, 0xd3, 0x43, 0x07, 0x20, 0x6f, 0x88, 0x0d,
  0x0f, 0xf5, 0x7a, 0x04, 0x32, 0xb2, 0x60, 0x60, 0x10, 0x24, 0x09, 0xca,
  0x3c, 0x78, 0xc4, 0x32, 0xb0, 0xc5, 0xcc, 0xe3, 0xb7, 0x92, 0x0a, 0xa8,
  0x95, 0xd6, 0x78, 0xc1, 0x11, 0x8d, 0xe2, 0x3e, 0x13, 0x34, 0x81, 0x41,
  0x4e, 0x5e, 0x99, 0x11, 0xe5, 0x30, 0x48, 0xba, 0x8c, 0x14, 0x94, 0x05,
  0xac, 0x40, 0x94, 0x81, 0x9e, 0x0e, 0x84, 0xf3, 0x79, 0x1d, 0x75, 0xda,
  0x35, 0xa1, 0x4e, 0xf3, 0x0d, 0xca, 0x80, 0xb4, 0x2e, 0x4e, 0x29, 0x96,
  0xa7, 0x89, 0xac, 0x4b, 0x26, 0x5d, 0xef, 0xef, 0x9c, 0xd0, 0xc6, 0xf5,
  0x5c, 0x22, 0x5f, 0x37, 0x38, 0x41, 0xb8, 0x0c, 0x44, 0xf6, 0x6d, 0x96,
  0x95, 0x43, 0x1f, 0x36, 0x4f, 0x29, 0x25, 0xf7, 0x35, 0x49, 0x2f, 0x96,
  0x76, 0xce, 0xd3, 0x5e, 0x28, 0x5e, 0xdf, 0xc6, 0x72, 0x13, 0xfc, 0x9e,
  0xb8, 0xa4, 0x55, 0x74, 0x98, 0x1b, 0xbd, 0x98, 0x11, 0x48, 0x87, 0x16,
  0xba, 0x90, 0x4a, 0xe4, 0xed, 0xce, 0xf6, 0x86, 0x29, 0x8d, 0x24, 0xa4,
  0x0d, 0xce, 0xcc, 0x16, 0x3d, 0xa1, 0x73, 0x93, 0x73, 0x2e, 0x51, 0xe7,
  0x00, 0xab, 0xf6, 0xe4, 0x36, 0xd2, 0x1a, 0x15, 0x03, 0xa1, 0x31, 0x1c,
  0x65, 0x6a, 0xbd, 0xbb, 0x78, 0x7f, 0x52, 0xcf, 0xc0, 0xa5, 0x9f, 0x84,
  0x9c, 0xaf, 0xc0, 0xae, 0xde, 0x02, 0x87, 0x61, 0x1a, 0x88, 0x3d, 0x6d,
  0x8e, 0x69, 0x0b, 0xa6, 0x35, 0x4d, 0xaa, 0xc5, 0xfd, 0x32, 0x1d, 0xaf,
  0x6f, 0x20, 0x8d, 0x60, 0xad, 0x49, 0x8f, 0x0a, 0x9c, 0xd8, 0x34, 0x2c,
  0xa3, 0x75, 0x56, 0xd0, 0x8b, 0xa4, 0x5a, 0x16, 0x19, 0x3b, 0xcc, 0x71,
  0xee, 0x4d, 0x23, 0x0b, 0xa4, 0x33, 0x8b, 0x3a, 0xd7, 0x39, 0x20, 0x80,

  0x39, 0x9c, 0xc2, 0xc4, 0x03, 0x82, 0xb9, 0x7b, 0x61, 0xf2, 0x3e, 0xe8,
  0xe0, 0x69, 0x2d, 0x9e, 0xfc, 0x72, 0x77, 0x22, 0x3a, 0xba, 0xbc, 0x7c,
  0x73, 0x74, 0x7d, 0x64, 0xd6, 0x46, 0x02, 0x9a, 0x98, 0x0b, 0x69, 0xc8,
  0xc0, 0x87, 0x50, 0x6b, 0xc2, 0x27, 0xd7, 0xfe, 0xf4, 0x61, 0x70, 0x72,
  0xd5, 0x3c, 0xd8, 0xcb, 0xab, 0x0b, 0x44, 0x23, 0xfa, 0xd3, 0x8f, 0x47,
  0x8b, 0xc5, 0x4c, 0x83, 0x82, 0x6f, 0xe2, 0x2a, 0x5e, 0xf3, 0x6e, 0xf5,
  0xce, 0x06, 0xce, 0xef, 0xde, 0xcc, 0x6f, 0x22, 0x42, 0x8e, 0x4c, 0xfd,
  0xa8, 0x8f, 0x07, 0x5a, 0x8c, 0x34, 0xfd, 0xd6, 0xec, 0x06, 0x6d, 0x00,
  0x65, 0xcf, 0xb6, 0x2f, 0x24, 0xb7, 0x9c, 0x4c, 0x13, 0xc9, 0x74, 0xb3,
  0x66, 0x60, 0x64, 0x27, 0xa3, 0x65, 0xa5, 0x24, 0x4f, 0xf4, 0x85, 0x25,

  0xdc, 0xcd, 0x7d, 0xf1, 0x8e, 0xc7, 0x86, 0x51, 0x98, 0x0b, 0x10, 0x82,
  0x00, 0x10, 0x1a, 0xa5, 0x48, 0xeb, 0x6c, 0x99, 0x8b, 0x05, 0x68, 0x6a,
  0x9c, 0x70, 0x58, 0x85, 0x10, 0x05, 0x78, 0x4a, 0xde, 0x86, 0xfc, 0x11,


  0x6e, 0x63, 0x2f, 0x3a, 0x91, 0x52, 0x37, 0x5a, 0x38, 0xfc, 0xc0, 0x7b,
  0xa8, 0x32, 0xe6, 0x83, 0xb0, 0xfb, 0x30, 0xaf, 0x70, 0x50, 0x36, 0x3a,
  0x4d, 0x11, 0xc0, 0x75, 0xad, 0xf0, 0x10, 0x4e, 0x1b, 0x37, 0x9d, 0xac,
  0xa7, 0x4e, 0x20, 0xe9, 0xa9, 0x17, 0x4f, 0x91, 0xbc, 0xe0, 0x51, 0xd0,
  0xae, 0xc1, 0x68, 0xc2, 0x7f, 0x6d, 0x6e, 0xf7, 0xb7, 0x3a, 0xfe, 0xe4,
  0xf1, 0xb2, 0x10, 0x42, 0x8a, 0x89, 0xaa, 0x21, 0x37, 0xac, 0xf2, 0xfc,
  0xc9, 0xf9, 0x31, 0x0b, 0x03, 0xfd, 0x74, 0x01, 0xe3, 0x07, 0xa7, 0xd2,
  0xbb, 0xf0, 0xb2, 0x40, 0x30, 0x73, 0xb7, 0x50, 0xa6, 0x08, 0x3c, 0x31,
  0xcb, 0xef, 0x71, 0x25, 0x40, 0x6a, 0xb3, 0x59, 0x0d, 0xca, 0xa6, 0x13,
  0xde, 0xe6, 0x8c, 0x50, 0xa3, 0x92, 0xe6, 0x6e, 0x07, 0x23, 0xd7, 0xaa,
  0x7c, 0xba, 0x1a, 0x9e, 0x49, 0x79, 0x25, 0x2b, 0xd2, 0x50, 0x82, 0x8b,
  0x24, 0x00, 0x5c, 0xce, 0xe3, 0x7b, 0x33, 0x37, 0x33, 0xa3, 0xa7, 0xe9,
  0x21, 0x3d, 0x1c, 0x04, 0xb5, 0xd2, 0x43, 0x2e, 0x54, 0xf7, 0x6c, 0xf9,
  0xf7, 0xf1, 0x43, 0x3a, 0x5f, 0xce, 0xe9, 0x63, 0x48, 0xdb, 0xf2, 0x98,
  0xc4, 0x13, 0xc8, 0xab, 0xc8, 0xe9, 0x29, 0x44, 0xe4, 0x6b, 0x65, 0xe4,
  0x58, 0xf4, 0x21, 0x21, 0x03, 0x22, 0xb9, 0x6f, 0x97, 0x47, 0xca, 0x02,
  0x05, 0x1c, 0xca, 0x86, 0x37, 0x00, 0xf4, 0x83, 0x18, 0x73, 0x0e, 0xca,
  0xdc, 0x24, 0xec, 0x04, 0xd8, 0x39, 0x23, 0x25, 0x88, 0x0e, 0xe7, 0xe4,
  0xab, 0x26, 0x45, 0x9a, 0x8f, 0xcd, 0xbd, 0x41, 0xfd, 0x31, 0xcd, 0x96,
  0xb0, 0xcf, 0xec, 0x4b, 0xe6, 0x20, 0x04, 0xfe, 0xca, 0xf3, 0x10, 0x52,
  0x56, 0xfd, 0x80, 0x8a, 0x25, 0x34, 0x05, 0xf5, 0x65, 0x7f, 0x77, 0xa7,
  0xbf, 0xd5, 0xad, 0x19, 0xf4, 0x02, 0x28, 0x01, 0xb7, 0x6b, 0x94, 0xce,
  0x4d, 0xb1, 0x69, 0xff, 0x77, 0x73, 0xdc, 0x50, 0x46, 0xf8, 0x3c, 0x7e,

  0xa0, 0xe3, 0x0b, 0x1e, 0x6b, 0x1e, 0x1d, 0xbe, 0xbb, 0x18, 0x5c, 0x6f,
  0x1f, 0x5c, 0x5e, 0x5c, 0xc1, 0x7f, 0xf1, 0xef, 0x3b, 0xf4, 0xf7, 0x1d,
  0xcf, 0xaa, 0x7c, 0x2b, 0x19, 0xb4, 0x5a, 0xac, 0x43, 0x1a, 0x0a, 0x69,
  0x34, 0xbc, 0x9b, 0x91, 0x33, 0x10, 0xea, 0xe5, 0xc4, 0x06, 0x47, 0xa6,
  0x9c, 0xb1, 0x79, 0xc4, 0xce, 0xa7, 0x34, 0xc9, 0xae, 0x1f, 0xf9, 0x89,
  0x7c, 0x69, 0xa5, 0xda, 0x94, 0x14, 0xc2, 0x6b, 0x89, 0x7d, 0xd3, 0xd7,
  0xcd, 0x45, 0xcc, 0x52, 0x9f, 0xa3, 0x60, 0x75, 0x94, 0x1b, 0x56, 0xff,
  0xd5, 0x68, 0x06, 0xda, 0x7d, 0x82, 0xb9, 0x24, 0xe3, 0x84, 0x03, 0x2c,
  0xf8, 0x93, 0x90, 0x61, 0x02, 0xd7, 0x4f, 0x4a, 0x16, 0xbc, 0x04, 0x43,
  0xa2, 0x48, 0x8d, 0xea, 0xc0, 0x6c, 0x60, 0x8e, 0x29, 0x68, 0xe2, 0xbc,
  0x1d, 0x59, 0xe2, 0x55, 0x08, 0x30, 0x88, 0x9c, 0xeb, 0xc4, 0xa2, 0x0a,
  0x7d, 0xaa, 0xb5, 0x3f, 0xbf, 0xb8, 0x8e, 0xe2, 0xc9, 0x44, 0x81, 0x01,
  0xb0, 0x2c, 0x01, 0x35, 0xd6, 0xcd, 0x05, 0x4b, 0xb2, 0xb8, 0x0a, 0xa5,
  0x6e, 0x88, 0x3e, 0x72, 0x7d, 0x36, 0xd8, 0x44, 0x17, 0x16, 0x27, 0xc1,


  0x0d, 0xce, 0x4f, 0xbb, 0x35, 0x5f, 0xb5, 0x9b, 0xfa, 0xb2, 0x81, 0x92,

  0x32, 0xac, 0x50, 0xc4, 0x8e, 0x2c, 0xb4, 0x70, 0x33, 0x98, 0x54, 0x47,


  0x47, 0xda, 0x91, 0x6a, 0xb0, 0x0e, 0x1d, 0x6d, 0x27, 0xd2, 0xa8, 0x29,
  0xd9, 0xc5, 0xf3, 0x45, 0xf5, 0xe8, 0x17, 0x8b, 0x92, 0x6f, 0x03, 0x41,
  0x58, 0x50, 0xe9, 0xe8, 0xa0, 0x59, 0x82, 0xcb, 0xa2, 0x25, 0x75, 0xfa,
  0x3c, 0xec, 0x4e, 0x87, 0x46, 0xa5, 0x41, 0xe1, 0xef, 0x38, 0x26, 0x11,

  0xed, 0x30, 0x09, 0xa5, 0xf7, 0xf3, 0x87, 0x9c, 0xc1, 0x23, 0x33, 0x3c,
  0x4c, 0xcc, 0xd4, 0xa9, 0x29, 0x75, 0x20, 0x83, 0xc9, 0x8b, 0x74, 0x8a,
  0x79, 0x02, 0xcd, 0xd2, 0x31, 0x3b, 0x11, 0xcf, 0x33, 0x85, 0xca, 0x58,
  0x59, 0x75, 0x1c, 0x57, 0x42, 0xe5, 0x25, 0xe8, 0x53, 0xda, 0x68, 0xa1,
  0x26, 0x8d, 0x4e, 0x07, 0xf9, 0x4f, 0x15, 0xd0, 0xe3, 0x59, 0xd9, 0x83,
  0xd5, 0xa1, 0xdc, 0xb1, 0x41, 0x20, 0x2d, 0xfd, 0xd1, 0xbb, 0x44, 0x30,
  0x38, 0xa7, 0x95, 0x32, 0x70, 0x0e, 0x1b, 0x35, 0x87, 0x63, 0xb8, 0x36,
  0xe0, 0x08, 0x5a, 0xf5, 0xd1, 0xd9, 0xde, 0x79, 0xd9, 0xdf, 0x82, 0xff,
  0x83, 0x43, 0x11, 0xfd, 0x88, 0xb0, 0xa2, 0x2c, 0x26, 0x90, 0x79, 0x32,
  0x79, 0x68, 0x92, 0x24, 0x0b, 0xa0, 0xbc, 0x98, 0x76, 0x56, 0xd6, 0xb0,
  0xd6, 0x44, 0x0a, 0x1e, 0xa4, 0x11, 0x27, 0xf1, 0x58, 0x7e, 0xa2, 0x77,
  0xbc, 0x58, 0xce, 0x02, 0x69, 0x7d, 0x8e, 0x1b, 0x19, 0xb5, 0xb3, 0xd9,
  0x9d, 0x38, 0x91, 0xdf, 0x21, 0x6f, 0xe2, 0x3a, 0xbe, 0x7e, 0x2d, 0x29,
  0xea, 0x55, 0xcd, 0x27, 0x78, 0x2c, 0x26, 0x1b, 0x71, 0xe6, 0x1e, 0x5c,
  0x86, 0xc3, 0x7c, 0x32, 0x29, 0x93, 0xaa, 0x29, 0x80, 0x8e, 0xe5, 0x91,
  0xcd, 0x2b, 0x42, 0x37, 0x24, 0x4e, 0xa5, 0x15, 0x37, 0x51, 0x1d, 0x93,
  0x27, 0x92, 0x2c, 0x34, 0x66, 0x5b, 0x3c, 0x5c, 0x3f, 0x50, 0x64, 0xe0,
  0xfe, 0x5e, 0x33, 0x44, 0xb8, 0x24, 0x5e, 0x91, 0x5e, 0xa8, 0xdc, 0x8a,
  0x41, 0x5c, 0x44, 0xd2, 0x35, 0x21, 0xd9, 0xf4, 0x4a, 0xdc, 0xa6, 0x8b,
  0x05, 0x9a, 0x37, 0x0c, 0x6f, 0x46, 0x64, 0x6b, 0x02, 0x68, 0x14, 0xc7,
  0x25, 0x52, 0xd6, 0x6c, 0x41, 0x50, 0x92, 0x47, 0x22, 0xf3, 0x87, 0xc9,
  0xc4, 0x0f, 0x02, 0x71, 0x52, 0xa3, 0x8b, 0x69, 0x23, 0x35, 0xba, 0x63,
  0xc4, 0xaf, 0xc9, 0x62, 0x65, 0x31, 0x13, 0x07, 0xed, 0x41, 0x8a, 0xff,
  0xba, 0x81, 0xfb, 0x6f, 0x8b, 0xb3, 0x8c, 0x1f, 0x6e, 0x70, 0xfa, 0x3f,

  0x4f, 0x2c, 0x02, 0x91, 0x81, 0xf8, 0xe1, 0x72, 0x97, 0x50, 0xf1, 0x10,

  0xdc, 0xc2, 0xde, 0x31, 0x9c, 0x57, 0x87, 0xa6, 0x62, 0x53, 0x4d, 0xf2,
  0x46, 0x39, 0x06, 0xd9, 0x3d, 0xa8, 0x49, 0x90, 0x36, 0xb4, 0x89, 0x45,
  0xff, 0x9e, 0x68, 0x60, 0x80, 0x4a, 0xf6, 0x2f, 0xca, 0x1a, 0xe9, 0x76,
  0x54, 0x52, 0x35, 0xe7, 0xd6, 0x9c, 0x88, 0xb2, 0xb8, 0x99, 0x66, 0xa8,
  0x32, 0xb2, 0x02, 0xe3, 0x95, 0x64, 0x68, 0x1d, 0x2c, 0x43, 0x9d, 0x2c,
  0xab, 0xdf, 0x31, 0x76, 0x52, 0x20, 0xfd, 0x12, 0x86, 0x9d, 0x43, 0xd4,
  0x23, 0x26, 0x6a, 0x04, 0xea, 0xec, 0xfd, 0x0d, 0xac, 0xec, 0x43, 0x75,
  0x53, 0xb4, 0xa1, 0x02, 0xa8, 0x53, 0x03, 0x8b, 0x28, 0xc8, 0x08, 0x23,
  0xda, 0x30, 0xe0, 0x34, 0xba, 0xd5, 0x8c, 0xa9, 0x13, 0x93, 0x2e, 0x43,
  0x28, 0xa0, 0xcd, 0x3b, 0x3f, 0x21, 0xc4, 0x1b, 0xa7, 0xfc, 0xdb, 0xd4,
  0x4e, 0xf6, 0x31, 0x4a, 0x35, 0xe3, 0x11, 0x4a, 0x4e, 0xac, 0x94, 0x31,
  0xd4, 0x68, 0x48, 0x3d, 0x99, 0x9b, 0x66, 0x3d, 0x2e, 0xae, 0xd6, 0x67,
  0x29, 0x98, 0x86, 0x90, 0x6d, 0x42, 0x8e, 0x7c, 0x44, 0x6c, 0x86, 0x57,










  0x92, 0x58, 0x41, 0x6a, 0x2d, 0x7d, 0x36, 0xe4, 0x46, 0x67, 0x5f, 0x24,
  0x39, 0x10, 0xf9, 0xe3, 0xe8, 0x20, 0xbb, 0x05, 0xdd, 0x39, 0xeb, 0xe2,
  0x4f, 0xa9, 0x10, 0xd5, 0x5c, 0x32, 0xf6, 0x6d, 0x54, 0x09, 0x07, 0x2d,
  0x92, 0x80, 0x2e, 0xeb, 0x3c, 0x2b, 0x8f, 0x3a, 0x6e, 0x94, 0xf3, 0xa4,
  0x92, 0xd4, 0x11, 0x9e, 0xbc, 0xd6, 0x66, 0x51, 0x7d, 0xd7, 0xe9, 0xa4,
  0x31, 0x1c, 0x61, 0xc5, 0x25, 0x55, 0xbd, 0x5a, 0x5f, 0x62, 0xb8, 0x0c,


  0x90, 0x85, 0xbe, 0xd0, 0x2e, 0x5c, 0x83, 0x8e, 0xfa, 0x65, 0x79, 0x05,
  0xe1, 0xd4, 0x05, 0x9d, 0x0e, 0xba, 0x89, 0xaa, 0x71, 0x88, 0x26, 0x59,
  0xf7, 0xd5, 0x0b, 0x29, 0xb8, 0x81, 0x6e, 0x3a, 0x04, 0x22, 0xa0, 0x51,
  0xf4, 0xde, 0x7e, 0x4d, 0x13, 0x57, 0x02, 0x55, 0x85, 0x4e, 0x55, 0x29,
  0xa6, 0xd0, 0x14, 0x63, 0xf5, 0x8c, 0xe8, 0x44, 0x81, 0x0b, 0x8b, 0x5d,

  0x74, 0x1f, 0x13, 0xa5, 0x99, 0xf1, 0x43, 0xb5, 0x0f, 0x4e, 0xfe, 0x63,
  0x6f, 0x68, 0xc9, 0xd9, 0x62, 0xe7, 0x04, 0xd3, 0x94, 0xe4, 0x21, 0xa4,
  0x79, 0x10, 0x2c, 0x6b, 0x95, 0x53, 0x5c, 0x4a, 0x70, 0x34, 0x66, 0x53,
  0x78, 0x0b, 0xef, 0x6f, 0xf2, 0x59, 0x12, 0x0a, 0x91, 0x38, 0x25, 0xbf,
  0x84, 0xec, 0x82, 0x69, 0xbd, 0xe4, 0x6d, 0xbe, 0xa3, 0x8c, 0xe1, 0x5a,
  0xe8, 0x04, 0xf4, 0xbb, 0x24, 0xc6, 0x82, 0x23, 0x93, 0x34, 0x7f, 0xd7,
  0xf5, 0xd2, 0xd8, 0xe1, 0x9e, 0x0f, 0xf3, 0xd2, 0xd0, 0x0b, 0x16, 0xd6,
  0xa2, 0x04, 0xb9, 0x8f, 0x0b, 0x62, 0xcc, 0x02, 0x91, 0xa5, 0xe8, 0xa1,
  0x6e, 0xce, 0x20, 0xaa, 0x82, 0xcd, 0x7a, 0x87, 0x14, 0x8b, 0xd1, 0x81,
  0x4c, 0x40, 0x01, 0x40, 0x37, 0x2d, 0xd1, 0x0e, 0x0e, 0x29, 0xe0, 0x57,
  0x37, 0x84, 0x83, 0x2b, 0x15, 0xeb, 0x70, 0x0f, 0x6f, 0x50, 0xa6, 0xa7,
  0xd5, 0x32, 0xae, 0x9e, 0x97, 0xb0, 0xdd, 0xc6, 0x9b, 0x98, 0x39, 0xb9,
  0xf9, 0xa8, 0x6d, 0x98, 0x0d, 0x2d, 0x51, 0x44, 0xf7, 0x20, 0x0f, 0xf1,
  0xae, 0xfd, 0xd7, 0x13, 0x8c, 0xe9, 0x92, 0xe0, 0xfc, 0x6e, 0xea, 0x78,
  0x50, 0x54, 0x93, 0x2b, 0xf2, 0x44, 0x2b, 0xdf, 0x78, 0x4c, 0x15, 0xf7,
  0xa7, 0x81, 0x40, 0x3f, 0x45, 0xc7, 0x60, 0x3a, 0xb3, 0x47, 0x3b, 0xa0,
  0x53, 0x32, 0xab, 0x19, 0xde, 0x0e, 0x56, 0x9e, 0xf9, 0x82, 0x97, 0xb5,
  0xd4, 0x19, 0x80, 0x0a, 0xce, 0xdf, 0x3c, 0xe8, 0x28, 0xf4, 0xa8, 0xc1,
  0x52, 0x12, 0x2e, 0x22, 0x45, 0x5b, 0x5a, 0xff, 0xa1, 0xbe, 0x7a, 0xbc,
  0xfe, 0xcd, 0xe1, 0x10, 0x87, 0x7b, 0xfb, 0xf5, 0x77, 0x47, 0x67, 0x1f,
  0x4e, 0xb6, 0xbf, 0x88, 0xf0, 0x5f, 0x3b, 0xfc, 0xaf, 0x9d, 0x4e, 0xe8,
  0xb8, 0x80, 0x51, 0xad, 0xbd, 0x5e, 0x8b, 0xca, 0xc7, 0xf9, 0x30, 0x9f,
  0x99, 0x03, 0x93, 0xad, 0xd0, 0x40, 0x5a, 0x57, 0xa4, 0xb8, 0x29, 0xdd,
  0x16, 0x57, 0x79, 0x93, 0x65, 0x97, 0x92, 0x74, 0xa8, 0xec, 0x86, 0x22,
  0x78, 0x6e, 0x2d, 0x71, 0x45, 0x95, 0xd6, 0xca, 0xc3, 0x24, 0x96, 0xd7,
  0x96, 0x08, 0x4a, 0x42, 0x49, 0x2f, 0x76, 0x19, 0xe0, 0x1c, 0x2c, 0x5e,
  0x2c, 0x9e, 0xb3, 0xcb, 0x30, 0xfc, 0x6c, 0x33, 0xe0, 0x4e, 0x74, 0xa5,
  0x0c, 0xe8, 0x34, 0xbf, 0x2e, 0x06, 0x02, 0xa2, 0x71, 0x3c, 0x0a, 0xfe,
  0xc0, 0x5a, 0x91, 0x18, 0xd6, 0x4b, 0xab, 0xc6, 0x77, 0x9b, 0xc3, 0x0d,
  0x45, 0x77, 0x71, 0x70, 0xb9, 0xce, 0x10, 0x0a, 0xac, 0xa7, 0xe9, 0x19,
  0xd6, 0xd5, 0x81, 0xc6, 0xe8, 0x18, 0x35, 0x6b, 0xf5, 0x67, 0x44, 0x0e,
  0xf2, 0xb3, 0xc1, 0x90, 0x14, 0x10, 0xc6, 0xa8, 0x16, 0x12, 0x64, 0x5f,

  0xb3, 0x0f, 0xbd, 0xc2, 0x28, 0x30, 0xb0, 0x39, 0x94, 0x6e, 0x32, 0xf7,
  0xb2, 0xb3, 0x32, 0xd0, 0x24, 0xd7, 0x81, 0xbd, 0x6f, 0xb8, 0x98, 0x20,
  0x7a, 0x7c, 0xe2, 0x96, 0xa8, 0x4c, 0x44, 0xb5, 0x25, 0x56, 0x70, 0x7d,
  0x53, 0x13, 0x34, 0xaa, 0xf2, 0x69, 0x81, 0x33, 0xc7, 0x67, 0x45, 0x72,
  0xf0, 0x30, 0x4c, 0xa6, 0x98, 0xbd, 0x39, 0x73, 0xc0, 0x9c, 0xd4, 0x8a,
  0xc6, 0xbb, 0xa6, 0x70, 0x18, 0x18, 0xe8, 0x37, 0x84, 0x0f, 0xdf, 0x7f,
  0x9c, 0x25, 0x1b, 0x6a, 0x18, 0xa8, 0xb0, 0xdb, 0x7c, 0x9f, 0xff, 0x0c,
  0xf3, 0x8e, 0xe5, 0x23, 0x21, 0x99, 0x29, 0x22, 0xb0, 0x75, 0xe6, 0x96,
  0xbf, 0x70, 0x99, 0xb8, 0xcb, 0x35, 0x6a, 0xb6, 0x31, 0x05, 0x81, 0x51,
  0x2f, 0xa3, 0x54, 0x6d, 0x8f, 0x74, 0x44, 0xbb, 0xf0, 0x24, 0xb4, 0x83,
  0x37, 0x03, 0xa4, 0x9c, 0x4b, 0x86, 0x8e, 0x21, 0x31, 0x11, 0x3b, 0x4d,

  0x16, 0xde, 0xd4, 0xa9, 0x5a, 0x04, 0xd1, 0xc9, 0x43, 0x52, 0x8c, 0x10,
  0x6a, 0x62, 0x04, 0x7a, 0x29, 0xf1, 0xd3, 0x89, 0xb8, 0xa7, 0x30, 0x97,
  0x4a, 0xb2, 0xe2, 0xeb, 0xb8, 0x30, 0x24, 0x7e, 0x95, 0xce, 0x5a, 0x49,
  0x8c, 0x72, 0x1f, 0x46, 0x40, 0x18, 0x7d, 0x83, 0x7f, 0xa7, 0x02, 0xb2,
  0xce, 0x3e, 0xb4, 0xc8, 0x8c, 0xc2, 0x09, 0x5e, 0xc6, 0x1e, 0xed, 0xb0,
  0xbe, 0xe8, 0x9c, 0xa6, 0x90, 0x0b, 0xcd, 0x85, 0xd1, 0xcc, 0x6c, 0x74,
  0x08, 0xa1, 0x02, 0x08, 0x14, 0xaa, 0x3d, 0x3d, 0xd1, 0x9c, 0x0e, 0xe1,
  0x77, 0x50, 0xb4, 0x24, 0x7b, 0x54, 0x28, 0xa9, 0x75, 0x12, 0x9b, 0xac,
  0x1c, 0x2a, 0xe0, 0x20, 0x69, 0x5e, 0x7e, 0x31, 0xf2, 0x2c, 0xbf, 0xc7,
  0x18, 0x4c, 0x1d, 0xfe, 0x53, 0xc1, 0x7e, 0x38, 0xa7, 0x8e, 0xf9, 0x72,
  0x0f, 0x75, 0x25, 0xfe, 0x6c, 0x5f, 0xa3, 0xb5, 0x41, 0x0a, 0xd0, 0x72,
  0xda, 0x66, 0x25, 0x52, 0x6c, 0x33, 0x28, 0x2a, 0x76, 0x26, 0xb3, 0x7e,
  0x61, 0xd1, 0xb7, 0x42, 0x82, 0x8d, 0x56, 0x3c, 0xcc, 0xab, 0x1b, 0x27,

  0x0f, 0x15, 0x11, 0xfd, 0xd0, 0xcf, 0x33, 0x59, 0x56, 0x64, 0x04, 0xa8,
  0x19, 0x58, 0x49, 0xaa, 0xb1, 0x38, 0x8b, 0xbc, 0xac, 0x87, 0x5b, 0x44,
  0x7e, 0xc3, 0x25, 0x1a, 0xf4, 0x5a, 0x4c, 0xa0, 0xcd, 0x28, 0x53, 0x1c,
  0xe9, 0x12, 0x0c, 0x60, 0x02, 0x17, 0x84, 0x6f, 0x62, 0xa2, 0x52, 0x59,
  0x22, 0x90, 0x1c, 0xa5, 0xa4, 0xc2, 0xc6, 0x7a, 0x90, 0x13, 0x04, 0x92,
  0x94, 0xb9, 0x47, 0xba, 0xce, 0xf0, 0x37, 0x16, 0xb8, 0x89, 0x71, 0x31,
  0xd0, 0x6a, 0x1f, 0xca, 0xd1, 0x94, 0x74, 0x7f, 0x91, 0x1e, 0x02, 0x4e,
  0x11, 0xa3, 0xbf, 0xb6, 0x5c, 0xd8, 0x7f, 0xd9, 0xa8, 0xf1, 0x8c, 0xbc,
  0xa2, 0x64, 0xf4, 0x5c, 0xc2, 0x1f, 0x36, 0x89, 0xf1, 0xb4, 0xdd, 0x3e,
  0xe3, 0x8a, 0x6d, 0xfc, 0x2d, 0x14, 0xe7, 0x5d, 0x2e, 0xc6, 0xa4, 0xf6,
  0xe9, 0x3b, 0xa4, 0x28, 0x39, 0x28, 0x98, 0x65, 0x2e, 0xb7, 0x91, 0x86,
  0x47, 0x26, 0x63, 0xb9, 0x4c, 0x08, 0x24, 0xa7, 0x79, 0xff, 0xdd, 0x00,
  0x4b, 0x0d, 0xa6, 0x8d, 0x7d, 0x38, 0x73, 0x97, 0x37, 0xc0, 0x8b, 0x24,
  0x7c, 0x7b, 0x40, 0xfb, 0x65, 0x28, 0x50, 0xa9, 0x02, 0x1c, 0x38, 0xfc,
  0xdf, 0x96, 0xd9, 0xa8, 0x21, 0xa3, 0xf2, 0xae, 0x03, 0xc6, 0x29, 0x51,
  0x59, 0x23, 0x21, 0x9a, 0x44, 0x4f, 0x1f, 0x12, 0xf8, 0x1b, 0xac, 0x08,
  0xc5, 0xea, 0x0d, 0x14, 0x6f, 0x33, 0xa7, 0x84, 0xf6, 0x26, 0x85, 0x13,
  0x2a, 0x46, 0x37, 0x84, 0x24, 0x40, 0x7e, 0xa4, 0x44, 0x9d, 0xa3, 0x9e,
  0x22, 0x2c, 0x9e, 0x7f, 0x1a, 0x56, 0x74, 0xb1, 0x14, 0xd9, 0x11, 0xa2,
  0x85, 0xe4, 0x99, 0x32, 0xe9, 0xb6, 0x79, 0xfa, 0x99, 0x5d, 0x37, 0xb8,
  0xe7, 0xc9, 0xac, 0xb4, 0x02, 0xd2, 0xbc, 0x63, 0x25, 0x25, 0x19, 0xe1,
  0x19, 0xf9, 0x64, 0x59, 0x14, 0xa7, 0xc1, 0x1b, 0x4e, 0x33, 0x01, 0x35,

  0x47, 0x26, 0x83, 0x76, 0x25, 0xd2, 0xc9, 0xa3, 0x62, 0xcc, 0xc8, 0x08,
  0x4d, 0x98, 0x19, 0x4f, 0xf2, 0xe4, 0x66, 0xdf, 0x04, 0xc0, 0x46, 0xb7,
  0x2a, 0x55, 0xb0, 0x75, 0x26, 0x15, 0x74, 0x64, 0x60, 0xf9, 0x34, 0x35,
  0x01, 0xc1, 0xf8, 0x57, 0xaf, 0x37, 0xa9, 0xbc, 0x74, 0x2d, 0xe7, 0xac,
  0xeb, 0x24, 0x30, 0x9b, 0x08, 0x46, 0xcf, 0x7b, 0x85, 0xe2, 0xbb, 0xc3,
  0x1a, 0x9e, 0xe8, 0xec, 0x2d, 0x7b, 0xf1, 0x8e, 0xaf, 0xf0, 0x6f, 0xa9,
  0x41, 0x28, 0xa2, 0x3a, 0x5c, 0xea, 0xea, 0xc1, 0x09, 0xb2, 0xef, 0xbf,
  0x6b, 0x96, 0x61, 0xae, 0x5f, 0x0c, 0x36, 0x77, 0x5f, 0x6d, 0x6d, 0x04,
  0x72, 0x96, 0xe1, 0x1b, 0x2e, 0x48, 0xe1, 0xde, 0x56, 0x7f, 0x6b, 0xa3,
  0x31, 0x1b, 0xdc, 0xee, 0x15, 0x00, 0x2a, 0x0a, 0xad, 0x6e, 0x84, 0x06,
  0x25, 0x23, 0xdb, 0x62, 0x2d, 0xc9, 0x9b, 0x76, 0x8b, 0x49, 0xaf, 0x92,
  0x3b, 0x20, 0xb5, 0x60, 0xfe, 0xda, 0x59, 0x5a, 0x8a, 0x61, 0x83, 0x92,
  0x4c, 0x65, 0x0b, 0x56, 0x6b, 0xd7, 0x73, 0x82, 0xe9, 0x11, 0x14, 0x96,
  0x9c, 0xeb, 0x10, 0x88, 0xb6, 0x94, 0x30, 0xa9, 0x82, 0x12, 0xf3, 0x28,
  0xa6, 0xff, 0xc9, 0x9d, 0x2d, 0x47, 0x35, 0xa8, 0xc7, 0x97, 0xee, 0x99,

  0xa2, 0xa6, 0xdf, 0x8b, 0xcb, 0x51, 0x9a, 0xb2, 0x3d, 0xd3, 0x62, 0xc6,
  0x68, 0xc6, 0x23, 0x61, 0xc8, 0x51, 0x25, 0x75, 0x1a, 0x73, 0xa8, 0xd6,
  0xa2, 0x94, 0x7a, 0xc3, 0xa2, 0xb2, 0x0a, 0x24, 0xb6, 0x6a, 0x5c, 0xb1,
  0xe1, 0xb1, 0x53, 0x8b, 0x00, 0x2b, 0x1b, 0xfd, 0xb2, 0x6c, 0xaa, 0x51,
  0x70, 0x17, 0x18, 0xae, 0x2c, 0x00, 0x36, 0x88, 0x7c, 0x82, 0x33, 0x9e,
  0xe3, 0xaa, 0xcc, 0x71, 0x9f, 0x42, 0x9b, 0x4a, 0x1e, 0x0a, 0x82, 0xa6,
  0x35, 0x06, 0x94, 0xb9, 0xfb, 0x92, 0x0f, 0xf4, 0x55, 0xd7, 0xa6, 0xeb,
  0xd4, 0x0c, 0xa0, 0x38, 0xa0, 0x08, 0x32, 0xb2, 0x7e, 0x44, 0xe1, 0x71,
  0xae, 0xa4, 0xc2, 0x85, 0x48, 0x7f, 0x09, 0x72, 0x7b, 0x70, 0x8e, 0x88,
  0x74, 0x97, 0x40, 0x18, 0x22, 0xb3, 0x5b, 0x01, 0x70, 0xa9, 0x2e, 0xac,
  0x8f, 0x70, 0x3b, 0x89, 0x82, 0xb2, 0xe4, 0x1e, 0xb9, 0x71, 0x29, 0xaa,
  0x44, 0x51, 0xa4, 0xe8, 0x37, 0x32, 0xc9, 0x05, 0xac, 0x8e, 0x61, 0x16,
  0x26, 0x0a, 0xe7, 0x71, 0xa0, 0xb6, 0x7b, 0x44, 0xb7, 0xb3, 0x34, 0x39,
  0xdb, 0x19, 0x61, 0x4f, 0x22, 0xbe, 0x9c, 0xb7, 0x37, 0xd4, 0x1c, 0x80,
  0x26, 0xa7, 0x88, 0xb3, 0x55, 0x3d, 0xfd, 0x03, 0xb5, 0x76, 0xce, 0x6f,











  0x66, 0x78, 0xb3, 0xbc, 0x66, 0x60, 0x96, 0xed, 0xe1, 0x92, 0xcd, 0x87,
  0xde, 0xfd, 0xfd, 0x7d, 0x0f, 0x2f, 0x1c, 0xe6, 0xe4, 0x48, 0x99, 0x45,
  0xbf, 0x86, 0x1c, 0x4d, 0x76, 0x25, 0x9b, 0x9c, 0xc8, 0x44, 0xfc, 0xf8,
  0x86, 0x93, 0x22, 0x55, 0x0c, 0xd3, 0x8a, 0xea, 0xf9, 0x84, 0xb8, 0xe8,
  0x35, 0xa9, 0xab, 0x93, 0xe9, 0x90, 0x86, 0xa3, 0x8e, 0xa8, 0xc0, 0xed,
  0xb3, 0x6b, 0x41, 0xf8, 0xa9, 0x51, 0x95, 0x60, 0xfd, 0x3a, 0x7c, 0x62,
  0x7e, 0x10, 0xf5, 0xde, 0x45, 0x9d, 0x63, 0x59, 0xed, 0x35, 0x3c, 0x71,



  0x50, 0x5f, 0x0b, 0x3f, 0xec, 0x07, 0x73, 0xe0, 0xdd, 0xce, 0xf3, 0xe0,
  0x13, 0x5b, 0x2f, 0x32, 0xb5, 0x56, 0xb1, 0x59, 0x33, 0x55, 0xc0, 0x59,
  0x87, 0x69, 0x2f, 0xec, 0xd6, 0x62, 0xcc, 0x33, 0x5a, 0x7a, 0x5c, 0x4a,
  0x1b, 0x9e, 0x21, 0xdf, 0xf0, 0x15, 0xd7, 0xb1, 0x88, 0xef, 0x9f, 0xbe,
  0xe3, 0xce, 0x4d, 0x14, 0xea, 0x9d, 0x91, 0xab, 0xcb, 0x01, 0x23, 0x46,
  0xff, 0x8e, 0x49, 0xc2, 0x0c, 0xcc, 0x54, 0x9a, 0x60, 0xd8, 0x62, 0x2a,
  0x36, 0x4c, 0x45, 0x2f, 0xfd, 0x6a, 0x45, 0x1d, 0x9a, 0x75, 0x0a, 0xdb,


  0x55, 0xd4, 0x22, 0x1f, 0x0d, 0x4c, 0x53, 0x5a, 0x96, 0xa1, 0xaa, 0x67,
  0x30, 0x1a, 0xbb, 0xba, 0xae, 0xb9, 0x9c, 0x42, 0xcb, 0xec, 0xd8, 0x73,
  0x96, 0x29, 0xf0, 0xb7, 0xa1, 0xf4, 0x4e, 0x8e, 0x73, 0xe0, 0x55, 0x55,
  0x80, 0x32, 0x71, 0x59, 0x25, 0x05, 0x12, 0x3a, 0x65, 0xc1, 0xf7, 0x34,
  0x85, 0x39, 0x24, 0xac, 0x81, 0xa1, 0x1c, 0x7f, 0x73, 0x4a, 0xd9, 0xdc,
  0xc0, 0x48, 0x33, 0x01, 0x71, 0xe0, 0xf9, 0x73, 0xbf, 0x23, 0x63, 0xd4,
  0x4e, 0x91, 0x95, 0x70, 0x49, 0x64, 0x1c, 0x85, 0x00, 0x50, 0xd5, 0xe6,
  0x88, 0xd4, 0xb8, 0x90, 0xa4, 0x55, 0xb1, 0x11, 0xe4, 0xf2, 0x9a, 0xf0,
  0x6e, 0x6c, 0x4b, 0x04, 0x82, 0xfb, 0x45, 0x5f, 0x57, 0xb0, 0x91, 0xb8,
  0x94, 0x08, 0x2e, 0x29, 0x6b, 0x5e, 0xfa, 0xb8, 0xa5, 0x57, 0xee, 0x1f,
  0x95, 0xf8, 0x79, 0x6f, 0xf2, 0xf9, 0x70, 0x7b, 0x37, 0x3a, 0x93, 0x86,
  0x27, 0xc5, 0x6c, 0x5d, 0xe2, 0x7a, 0x0c, 0xb8, 0x16, 0x0b, 0x7d, 0x69,
  0x21, 0xcf, 0xad, 0x49, 0x8c, 0x04, 0x66, 0xfc, 0x1f, 0x28, 0xa1, 0x48,
  0xee, 0x02, 0xcf, 0x43, 0xcd, 0x43, 0xeb, 0x25, 0xdd, 0xd1, 0x14, 0xca,
  0x4f, 0x12, 0x62, 0xc3, 0xc3, 0xa1, 0xfd, 0xf7, 0x1a, 0xb5, 0xa5, 0xaf,
  0xc4, 0x51, 0x85, 0x79, 0xf0, 0xa5, 0x63, 0x8d, 0x48, 0xb1, 0x2c, 0xcd,
  0x5d, 0x6b, 0x84, 0x70, 0x1b, 0xc2, 0xc3, 0x71, 0x84, 0xd3, 0xd9, 0x3d,
  0xa6, 0x38, 0xc4, 0x9c, 0x2f, 0xb9, 0x87, 0xd8, 0x1f, 0x9a, 0x9b, 0xf7,
  0xfa, 0xe9, 0xdd, 0xfb, 0xa5, 0xdb, 0xb7, 0x7a, 0xf7, 0xb8, 0x77, 0x83,
  0x26, 0xcb, 0xbe, 0x76, 0x1c, 0x74, 0x94, 0xec, 0xc1, 0xd6, 0x97, 0x71,
  0xd4, 0xd5, 0xb9, 0x8c, 0x63, 0x64, 0xbe, 0xfe, 0xad, 0x4e, 0x9d, 0x88,

  0x91, 0x2c, 0x7a, 0x9c, 0x7c, 0x78, 0x38, 0x0e, 0x2b, 0xd2, 0xd9, 0xbb,





  0xd8, 0x8b, 0xa2, 0x87, 0xd3, 0x08, 0x02, 0x5e, 0x3c, 0xaa, 0x98, 0x98,
  0x87, 0x94, 0xe6, 0xd9, 0x0b, 0x0f, 0xa7, 0x85, 0x80, 0xa2, 0x88, 0x7b,
  0xeb, 0xfb, 0x4a, 0x05, 0xff, 0xf3, 0x17, 0x47, 0x69, 0x45, 0xb6, 0x5f,

  0xa0, 0x9b, 0x11, 0xc2, 0x21, 0x98, 0x75, 0xdf, 0x6f, 0xa8, 0xd7, 0x47,
  0x60, 0x20, 0xb9, 0x7f, 0x94, 0xaa, 0x04, 0x1b, 0xdd, 0xfa, 0x86, 0x21,




  0xd4, 0x1d, 0x09, 0x03, 0x3d, 0xe5, 0xb4, 0xf5, 0x8c, 0xf5, 0xec, 0xb0,
  0x27, 0x43, 0xf0, 0xec, 0xfe, 0x6f, 0x5a, 0x1f, 0xd1, 0xb3, 0x25, 0x03,
  0x8c, 0x30, 0x94, 0x0c, 0xe0, 0x4d, 0x49, 0xf7, 0x11, 0x55, 0x2b, 0xa0,

  0x88, 0x6f, 0x99, 0x1d, 0xa1, 0x0f, 0xa0, 0x52, 0x84, 0xf1, 0xd6, 0x99,

  0xc0, 0x85, 0x32, 0xc6, 0xfb, 0x6b, 0xab, 0xcc, 0xf4, 0x70, 0x91, 0x3d,
  0x21, 0xd9, 0x3e, 0x11, 0xe1, 0x0a, 0x4a, 0x35, 0x94, 0x19, 0x26, 0x4a,
  0x8f, 0xfc, 0xda, 0x45, 0xa3, 0xe2, 0xab, 0x8a, 0x6c, 0xaf, 0x49, 0xca,
  0xed, 0xcf, 0x6b, 0x92, 0xd2, 0xbe, 0xb3, 0x4a, 0x46, 0x0e, 0x12, 0x4e,
  0x48, 0x73, 0x1d, 0x98, 0xf4, 0x12, 0x57, 0x59, 0x63, 0x17, 0x0f, 0x3f,
  0xb5, 0x09, 0x5f, 0xf5, 0x8a, 0x8e, 0x39, 0xb7, 0xc8, 0xa9, 0x9d, 0xa4,
  0x04, 0x73, 0x8c, 0x9a, 0x89, 0x75, 0x14, 0x0d, 0x8b, 0xfc, 0xbe, 0x24,
  0x75, 0x54, 0x0d, 0xd4, 0x98, 0x53, 0x60, 0x6f, 0xbc, 0x92, 0x68, 0xd8,
  0xde, 0x99, 0xc1, 0x81, 0x7d, 0x77, 0xfd, 0xfe, 0x8c, 0xbb, 0x3a, 0x70,
  0x75, 0x2e, 0x16, 0x21, 0xc9, 0x9c, 0x97, 0xc3, 0x39, 0x58, 0xd2, 0xa0,
  0x9d, 0x54, 0xcc, 0xca, 0x94, 0x3b, 0x7a, 0x25, 0xc4, 0x14, 0xd2, 0x93,
  0x80, 0xf0, 0x22, 0x14, 0x9f, 0x11, 0x45, 0xd2, 0xc1, 0xa1, 0x72, 0x34,
  0xe0, 0x5f, 0xae, 0xeb, 0x82, 0x9d, 0x4c, 0x19, 0x31, 0xa4, 0x47, 0xbd,
  0xc5, 0xa3, 0xc0, 0x47, 0xbc, 0xdb, 0xe7, 0xa8, 0x69, 0xd4, 0x7c, 0x8c,
  0x20, 0xa5, 0x8d, 0x87, 0x06, 0xb5, 0x2e, 0xd3, 0x79, 0x84, 0x50, 0xb3,
  0xe2, 0xba, 0xa6, 0xe5, 0x95, 0xd5, 0x1a, 0xcd, 0xcb, 0xf6, 0x10, 0x71,
  0x95, 0x2f, 0xd4, 0x43, 0x50, 0x1f, 0x92, 0x40, 0xd2, 0xb2, 0x40, 0x67,
  0x1e, 0x6b, 0xd5, 0xdd, 0x40, 0xce, 0xbd, 0x28, 0x24, 0xea, 0xcd, 0x37,
  0xa1, 0xcd, 0x9a, 0xa9, 0xa7, 0xcd, 0x12, 0x70, 0x6c, 0xe7, 0x06, 0x07,
  0x94, 0x44, 0x46, 0xa8, 0xa2, 0x62, 0x0a, 0x3a, 0x4d, 0x20, 0x36, 0x18,
  0x9d, 0x7a, 0x81, 0xc5, 0xe4, 0x1c, 0xf7, 0xd4, 0xbb, 0xa0, 0x82, 0x6d,
  0x3b, 0x89, 0x94, 0xb6, 0x79, 0x84, 0xda, 0xcb, 0x04, 0xd4, 0x45, 0xd0,
  0x5c, 0xd4, 0x3d, 0x22, 0xaf, 0xfb, 0xbb, 0x7c, 0xff, 0xa3, 0xf8, 0xbf,
  0xba, 0x4e, 0x78, 0x2d, 0x45, 0x0f, 0x94, 0x1b, 0x2f, 0xb4, 0x91, 0xf5,
  0x79, 0x52, 0x4c, 0xb9, 0x0c, 0x81, 0x21, 0x61, 0x83, 0x28, 0x16, 0x71,
  0xe4, 0xa0, 0xb4, 0x45, 0xd1, 0xff, 0xe8, 0xb1, 0x44, 0x25, 0x57, 0xd5,
  0x12, 0xeb, 0x5f, 0xc4, 0x9f, 0xbe, 0xd6, 0x1b, 0x33, 0x5b, 0x19, 0xc7,

  0x19, 0xec, 0x04, 0xdc, 0x58, 0x3f, 0x3f, 0x66, 0x36, 0x7b, 0x3d, 0xcb,
  0x97, 0xe5, 0xe3, 0x5a, 0x24, 0x8d, 0x7c, 0xa4, 0xf7, 0x45, 0x25, 0xb9,
  0x3c, 0x78, 0x96, 0x70, 0xbe, 0xcb, 0xec, 0x56, 0x85, 0x22, 0x56, 0x2a,
  0x94, 0xec, 0xa8, 0x6d, 0x0c, 0xb7, 0xe6, 0x7c, 0xec, 0x7f, 0xb8, 0x63,
  0x07, 0x77, 0x99, 0xdc, 0xff, 0x6c, 0x38, 0x3f, 0xcf, 0x72, 0xb6, 0x21,
  0x99, 0x90, 0xd9, 0x1c, 0xd5, 0x22, 0x75, 0x66, 0x40, 0x14, 0x1e, 0x0c,
  0xc3, 0xab, 0x21, 0x07, 0x9b, 0xba, 0x41, 0xfc, 0xa6, 0xa5, 0xf8, 0xc4,
  0x4a, 0x1e, 0x0e, 0x28, 0x59, 0xe4, 0x3c, 0x86, 0x30, 0x31, 0x8d, 0x6f,
  0xdc, 0x12, 0xb8, 0x7e, 0x74, 0x09, 0xfb, 0xe5, 0x41, 0x4d, 0x60, 0x24,
  0xdb, 0x0c, 0x17, 0xd7, 0x40, 0x4f, 0x27, 0x79, 0x3e, 0x8c, 0x8b, 0x35,

  0xd9, 0x7b, 0x42, 0x55, 0x87, 0x01, 0xc7, 0xec, 0x7c, 0xc1, 0xb3, 0xee,

  0x8d, 0xbb, 0xc1, 0x1b, 0x8d, 0x3a, 0x03, 0xbd, 0xdb, 0xd7, 0xa2, 0x0e,
  0xfd, 0x39, 0x06, 0xc8, 0xf3, 0xd9, 0xd8, 0x6c, 0x85, 0xfb, 0xd5, 0xc0,
  0xa1, 0x51, 0x6d, 0x82, 0x75, 0x05, 0xa8, 0x27, 0x80, 0xca, 0x5b, 0xd4,
  0x59, 0x60, 0x9c, 0xfa, 0x88, 0xe2, 0x8e, 0xb0, 0x21, 0x98, 0x38, 0x11,
  0x86, 0x6d, 0x91, 0x20, 0x89, 0x31, 0xc1, 0x1d, 0xe6, 0x80, 0x33, 0x0a,
  0xf1, 0x18, 0xcb, 0x53, 0x7c, 0x87, 0xbb, 0xcb, 0xbe, 0x24, 0x5b, 0x75,
  0x45, 0xa6, 0x9b, 0xcb, 0x35, 0x1c, 0x39, 0x66, 0x8d, 0xb9, 0xa6, 0x70,
  0x5b, 0xe1, 0xda, 0xb5, 0xb8, 0xb8, 0xc4, 0x5e, 0x85, 0xbf, 0xb2, 0x13,
  0xa4, 0x77, 0xaa, 0x59, 0x74, 0xfc, 0xcf, 0x6b, 0x42, 0x6c, 0x26, 0xe7,
  0x64, 0x2f, 0x40, 0x9a, 0x35, 0xeb, 0x32, 0x99, 0x25, 0x53, 0x5e, 0xed,
  0xe1, 0xd9, 0xc9, 0x77, 0x27, 0x67, 0x9e, 0xd8, 0xfc, 0x66, 0x30, 0xd8,
  0xbc, 0x4d, 0x8a, 0x21, 0x75, 0x64, 0xc5, 0xc0, 0x45, 0x44, 0xcf, 0x99,
  0x04, 0x2f, 0x47, 0x96, 0xdc, 0x5b, 0xc8, 0x16, 0x49, 0xf4, 0xf6, 0x7c,
  0x36, 0x98, 0xc1, 0xcb, 0x9f, 0x14, 0x98, 0x77, 0x2a, 0x39, 0x92, 0x5c,
  0x42, 0x92, 0x8d, 0xa3, 0x22, 0x19, 0x73, 0xc3, 0x52, 0x3f, 0x8b, 0x90,

  0x90, 0x3d, 0xa2, 0xe8, 0x0d, 0x1d, 0x2a, 0x67, 0x92, 0x53, 0x00, 0xcb,


  0x2c, 0xc2, 0x7b, 0x63, 0x41, 0xd5, 0xf3, 0xd1, 0x1b, 0xf9, 0xa6, 0xd4,
  0xa3, 0xe2, 0x2e, 0x31, 0xb0, 0x1b, 0x5b, 0x29, 0x17, 0xdf, 0xf6, 0x8e,
  0x06, 0xbd, 0x37, 0x27, 0x67, 0x27, 0xdf, 0x1c, 0x5d, 0x9f, 0x18, 0x3c,
  0xf3, 0x32, 0x69, 0x51, 0xc1, 0x44, 0xff, 0xfa, 0x56, 0xb6, 0x85, 0xd6,
  0x8f, 0x58, 0xf8, 0x55, 0xca, 0xdd, 0x58, 0x14, 0xf2, 0x9f, 0xdb, 0x6a,
  0xa3, 0x55, 0x54, 0x71, 0x9e, 0x60, 0x78, 0x38, 0xb8, 0x17, 0xb3, 0xb9,
  0x4c, 0xd5, 0x5b, 0x41, 0x3c, 0xbb, 0xc7, 0xae, 0x6c, 0x1f, 0x32, 0x4c,
  0xa5, 0x4f, 0x4d, 0x29, 0x29, 0xaf, 0xde, 0xf5, 0x08, 0xd9, 0x9d, 0xad,
  0x1d, 0x30, 0x21, 0xd3, 0xb7, 0xf8, 0x0b, 0xb4, 0x0c, 0x9c, 0xe2, 0xc7,
  0x6f, 0xe8, 0xc9, 0x06, 0xc6, 0xb8, 0x85, 0x46, 0x47, 0x06, 0x23, 0xbf,
  0x0a, 0x00, 0x96, 0x20, 0x01, 0x95, 0xa3, 0x9b, 0x64, 0x2e, 0xaa, 0x2c,
  0xa6, 0x26, 0x50, 0x10, 0x9c, 0x6b, 0x2a, 0x05, 0x2f, 0x88, 0x53, 0xc8,
  0x86, 0x09, 0x43, 0x2e, 0x10, 0x46, 0x1a, 0xd2, 0x75, 0x28, 0xd5, 0xf7,
  0x1e, 0x3b, 0x0e, 0x60, 0xac, 0x05, 0xd3, 0x76, 0xa8, 0xc0, 0xb8, 0x4f,
  0x09, 0x86, 0x4e, 0xde, 0x80, 0x9f, 0x27, 0xc0, 0xad, 0x03, 0x9b, 0x77,
  0xd6, 0x00, 0x98, 0x1b, 0xb4, 0xf5, 0x9c, 0x5c, 0x67, 0xf4, 0x23, 0x6e,
  0x5e, 0x22, 0x3a, 0x37, 0x4e, 0xf2, 0x57, 0x3a, 0xaa, 0xa5, 0x3c, 0x41,
  0xca, 0x0d, 0xd1, 0x8d, 0x45, 0x66, 0x70, 0x38, 0x6b, 0x3b, 0xc8, 0x34,
  0xa4, 0x15, 0xab, 0x33, 0x5d, 0x66, 0x0f, 0x0c, 0xad, 0x3e, 0x96, 0xd3,
  0xa1, 0x1f, 0x49, 0x23, 0x02, 0x93, 0xe2, 0x11, 0x74, 0xe5, 0x5b, 0x8e,
  0x51, 0xef, 0x55, 0x80, 0x18, 0xf1, 0xfa, 0x57, 0xbf, 0xa3, 0x84, 0x29,
  0xb5, 0xeb, 0x25, 0x0b, 0x0f, 0xb0, 0x7b, 0xfd, 0xad, 0xe2, 0xef, 0x1b,
  0xdd, 0xd2, 0x6d, 0xb4, 0xe6, 0xf4, 0x45, 0x3a, 0xb9, 0xbc, 0xe2, 0xd6,
  0xea, 0x67, 0xf8, 0x17, 0x89, 0xbc, 0x95, 0x21, 0xfc, 0x3b, 0xe9, 0xfe,
  0x81, 0xc9, 0x28, 0x09, 0x85, 0x6e, 0x4c, 0x30, 0x5d, 0x93, 0x11, 0x39,
  0xff, 0x54, 0x80, 0xd6, 0xe5, 0x3a, 0xd0, 0x16, 0x7b, 0xc9, 0xff, 0xa6,
  0x3b, 0x27, 0xce, 0x04, 0xa7, 0x20, 0x08, 0x45, 0x34, 0x09, 0xce, 0xa1,
  0xd5, 0x00, 0xc9, 0x05, 0xfe, 0x12, 0xf5, 0x4d, 0x96, 0x6b, 0x55, 0x1b,
  0xe7, 0xe5, 0x16, 0x08, 0xa2, 0x12, 0xe1, 0xb0, 0xf8, 0x66, 0x54, 0x50,
  0x2f, 0xd7, 0x18, 0xa6, 0xd2, 0x6f, 0x2c, 0x95, 0xba, 0x71, 0x21, 0xec,

  0xa6, 0x1f, 0x0f, 0xa1, 0x3e, 0x64, 0xe2, 0x88, 0x93, 0xac, 0x74, 0x5a,
  0xb0, 0xe6, 0xda, 0x77, 0x25, 0xc7, 0x00, 0x2d, 0x08, 0x54, 0x80, 0xa5,
  0x5e, 0x80, 0x92, 0x0f, 0x3c, 0x0d, 0x5f, 0x6a, 0x12, 0x34, 0x13, 0x2d,
  0x79, 0x94, 0xb0, 0x39, 0x2b, 0x84, 0x13, 0x09, 0x4f, 0xc6, 0x04, 0x28,
  0x4b, 0xa6, 0xcd, 0x90, 0x35, 0x18, 0xca, 0xea, 0xbb, 0x89, 0xb3, 0xc0,
  0x9d, 0x83, 0x8d, 0x37, 0x0d, 0xd1, 0x68, 0x95, 0x72, 0x6c, 0x01, 0x25,
  0x1e, 0x69, 0xa3, 0x09, 0x6b, 0x05, 0x86, 0x1e, 0x30, 0xb0, 0x14, 0xe3,
  0x1a, 0x32, 0x15, 0xde, 0x19, 0x6a, 0x0c, 0x24, 0xf4, 0x96, 0x87, 0xa8,
  0x4a, 0x98, 0x8b, 0x8d, 0xb6, 0xd4, 0x48, 0xb0, 0xbd, 0xe8, 0xdb, 0x78,
  0xe6, 0xa9, 0xc2, 0xc6, 0x41, 0xd5, 0xc5, 0x06, 0xc3, 0xf5, 0x12, 0x1c,
  0x3a, 0x3e, 0x12, 0xf6, 0x59, 0x33, 0x03, 0x25, 0xe1, 0xa2, 0x0b, 0xf8,
  0x36, 0x4d, 0x17, 0xdd, 0x40, 0x26, 0x22, 0x8b, 0xc4, 0xe3, 0x7d, 0xff,
  0x0d, 0x4d, 0x0e, 0xbf, 0x43, 0x2f, 0xd0, 0xbd, 0x47, 0xe8, 0xa1, 0xa9,
  0xf6, 0x78, 0x62, 0x52, 0x1e, 0x26, 0xf0, 0xbd, 0x14, 0x1b, 0xe0, 0xb9,
  0x61, 0x00, 0x3f, 0xcd, 0xb9, 0x04, 0x02, 0xa4, 0xaa, 0x80, 0x9c, 0x1d,
  0x40, 0xf8, 0x2e, 0xe6, 0x52, 0x24, 0x91, 0xdb, 0x3d, 0xd2, 0xf4, 0xa1,
  0xea, 0x5d, 0x76, 0x25, 0x9e, 0x49, 0xe9, 0x8d, 0x79, 0xe1, 0x97, 0xc0,
  0x8e, 0x0c, 0xd6, 0x92, 0x3e, 0x19, 0x97, 0x77, 0xe1, 0x1b, 0x5e, 0xde,
  0x05, 0x6f, 0xf8, 0x33, 0xee, 0xb9, 0xb5, 0xb7, 0x4e, 0x2e, 0x07, 0xdf,
  0x45, 0x2d, 0xa0, 0x11, 0xdc, 0xc9, 0x85, 0xaf, 0xb8, 0x5d, 0x1d, 0x12,
  0xbd, 0x7b, 0xcd, 0xdb, 0xef, 0x79, 0x30, 0x3e, 0xe0, 0xdd, 0x73, 0xf8,
  0xbe, 0x5c, 0xee, 0xcb, 0xa3, 0xc1, 0x77, 0xce, 0xb5, 0x76, 0x48, 0x20,
  0x54, 0x8c, 0x69, 0x32, 0xdb, 0x31, 0x48, 0xcc, 0xa4, 0x83, 0x83, 0x05,
  0xe9, 0xbd, 0xbc, 0x7b, 0x0e, 0xbd, 0xc3, 0x4c, 0x3c, 0x7a, 0xf7, 0xf6,
  0x78, 0x15, 0xbd, 0xbb, 0x07, 0x55, 0x4f, 0x9a, 0x75, 0xa8, 0x3d, 0xe3,
  0x16, 0xda, 0x58, 0xe0, 0xd1, 0x46, 0xe6, 0x18, 0x48, 0x14, 0xd2, 0xf6,
  0x53, 0x09, 0x69, 0x9e, 0xbf, 0x8c, 0xd0, 0xe1, 0x05, 0x8f, 0xd0, 0xf5,
  0x3c, 0xc3, 0x94, 0xde, 0x46, 0xe8, 0x9a, 0x52, 0x9c, 0x30, 0x91, 0xbb,
  0x34, 0xee, 0xd3, 0xb7, 0x43, 0xb5, 0x6e, 0x19, 0xb8, 0xbf, 0x43, 0x9a,
  0x69, 0x66, 0xa1, 0x0c, 0x2c, 0x90, 0x43, 0x00, 0x5c, 0x44, 0x41, 0x19,
  0xb8, 0x20, 0xd6, 0x77, 0xe7, 0x9b, 0xd2, 0xfc, 0x5a, 0xf5, 0x43, 0xa1,
  0x1a, 0x36, 0x37, 0x56, 0x43, 0xa1, 0x4d, 0xee, 0x01, 0x17, 0x50, 0x60,
  0xe2, 0xdd, 0xc8, 0x1a, 0x7a, 0x50, 0x12, 0xac, 0x4e, 0x2f, 0x13, 0xcc,
  0xf3, 0x20, 0x18, 0xb2, 0xe6, 0x3d, 0x45, 0x35, 0x8f, 0xb4, 0x01, 0x54,
  0x54, 0x7a, 0x69, 0xd6, 0xf3, 0xd3, 0xa0, 0xdd, 0xd0, 0x56, 0x55, 0xc3,
  0xa6, 0xc5, 0x12, 0x45, 0x52, 0x78, 0x25, 0xc8, 0x81, 0xca, 0x28, 0x59,
  0x9a, 0x12, 0x13, 0x60, 0xaf, 0x64, 0xa0, 0xa0, 0x36, 0x88, 0xb0, 0x56,
  0x6f, 0xf7, 0x52, 0xe5, 0x35, 0x67, 0xdc, 0x8b, 0x06, 0x8a, 0xf1, 0x38,
  0x2b, 0x7b, 0xb6, 0x3d, 0xfb, 0xa1, 0xf9, 0xab, 0x67, 0x5f, 0xbc, 0x39,
  0x1f, 0x60, 0xe4, 0x2a, 0xa1, 0x5a, 0x03, 0x35, 0x83, 0xcb, 0x84, 0xeb,
  0x43, 0xa6, 0xc4, 0x39, 0xe0, 0x11, 0x53, 0xf0, 0x67, 0x3a, 0x22, 0x1e,
  0x06, 0x1d, 0x42, 0xf4, 0x09, 0xaf, 0x50, 0x2f, 0xe6, 0x82, 0x1b, 0xb0,
  0xed, 0x28, 0x2e, 0x8e, 0x2b, 0xb0, 0x73, 0xd3, 0x8a, 0x76, 0xf2, 0x3c,
  0x05, 0x30, 0x8e, 0xb4, 0x2c, 0x0f, 0xa7, 0xb1, 0xa1, 0xbd, 0x99, 0x17,
  0x8c, 0xc8, 0x2e, 0x18, 0x64, 0xa6, 0xc3, 0x55, 0xd6, 0x68, 0x49, 0xdf,
  0x5c, 0xac, 0x60, 0x26, 0x49, 0xce, 0xd8, 0xc6, 0x4a, 0xe3, 0x11, 0x37,
  0x70, 0x71, 0xb7, 0xd7, 0xc3, 0x87, 0x25, 0xfd, 0xd0, 0xfc, 0xf4, 0x05,
  0xfd, 0xb4, 0xef, 0x6d, 0xb4, 0x57, 0x42, 0x23, 0xed, 0x53, 0x0d, 0x3a,
  0x2e, 0x66, 0x37, 0x66, 0x63, 0xec, 0xbc, 0x41, 0x67, 0xaf, 0x8d, 0x14,
  0x10, 0x2d, 0x91, 0x31, 0x0f, 0x6d, 0xf3, 0xb6, 0xc8, 0xc3, 0x69, 0x01,

  0xdd, 0xa6, 0xac, 0x1d, 0xfa, 0xee, 0x6e, 0xe0, 0xd0, 0xcd, 0x9c, 0x0f,
  0x65, 0x99, 0xe1, 0x23, 0xaf, 0x49, 0x97, 0x61, 0xca, 0xfd, 0xad, 0x0e,

  0xd3, 0x45, 0x4f, 0xdf, 0x62, 0xe1, 0x31, 0x8f, 0x6f, 0x45, 0xa4, 0xef,
  0x09, 0x1d, 0xf4, 0x3c, 0x98, 0x15, 0xee, 0xb5, 0x4c, 0x2d, 0xa9, 0xed,
  0x3a, 0x6b, 0x44, 0x23, 0xfa, 0x56, 0x65, 0x40, 0x5b, 0x91, 0x28, 0xf8,
  0x3b, 0xa1, 0x9a, 0x2f, 0xcd, 0xce, 0x76, 0x7d, 0x3c, 0x5a, 0xdf, 0x41,
  0x33, 0x31, 0xef, 0x3e, 0x71, 0x7e, 0x96, 0xc8, 0x56, 0x9f, 0x9f, 0xee,

  0xd9, 0xff, 0x1e, 0xe7, 0xf7, 0xe2, 0x93, 0x9c, 0xdf, 0x8b, 0xff, 0x6d,
  0xce, 0xef, 0xc5, 0xbf, 0x7c, 0x7e, 0x7b, 0xde, 0xf9, 0xbd, 0xf8, 0xdf,
  0xe5, 0xfc, 0xb4, 0xbf, 0x9a, 0x9e, 0x5e, 0xe2, 0x9d, 0xdf, 0x40, 0xd2,
  0x46, 0x14, 0x98, 0x0f, 0x77, 0x5a, 0xdf, 0xe2, 0x20, 0x8d, 0x24, 0x3a,
  0xb2, 0x17, 0x5c, 0x73, 0x6d, 0x19, 0x1a, 0xb2, 0xa5, 0x61, 0x49, 0x5f,
  0xcb, 0x2a, 0x74, 0xd0, 0xd3, 0xcb, 0xc8, 0x4c, 0xc0, 0x39, 0x06, 0x0b,
  0xb4, 0x45, 0x0a, 0x5a, 0xd0, 0x45, 0x5d, 0xa2, 0xdf, 0x12, 0xd6, 0xcf,
  0xe5, 0x95, 0xa5, 0x2d, 0x0a, 0x0e, 0x21, 0x69, 0xc1, 0xc6, 0x1d, 0x1c,
  0xe2, 0x76, 0xf5, 0xf8, 0xf1, 0x2f, 0x83, 0xc5, 0x6e, 0xd4, 0xae, 0xd9,

  0x4e, 0x29, 0x14, 0x96, 0x70, 0xb6, 0xce, 0x9e, 0x9b, 0x89, 0x66, 0x39,
  0x87, 0x16, 0x3a, 0xb3, 0xa6, 0xaa, 0x63, 0x4e, 0xf0, 0xe9, 0x23, 0xcb,
  0x6f, 0x08, 0xc7, 0xe7, 0xf0, 0xc3, 0x95, 0xef, 0x7b, 0x83, 0xa5, 0xfa,
  0xd0, 0x88, 0x70, 0x5c, 0x3d, 0xb4, 0xed, 0x7b, 0x84, 0x12, 0x0f, 0xb7,
  0xf1, 0xe2, 0xdd, 0x86, 0xe3, 0x04, 0xa2, 0xa0, 0x45, 0x1e, 0xea, 0x77,
  0xc7, 0x65, 0xb7, 0xa6, 0xb4, 0xbc, 0xec, 0x36, 0x7a, 0x5c, 0x9a, 0xb4,
  0x77, 0xab, 0xa4, 0x90, 0x77, 0x44, 0x0a, 0x76, 0x0b, 0xaf, 0xbf, 0x25,
  0x2a, 0x83, 0x69, 0x29, 0xa8, 0x71, 0x08, 0xa3, 0xa1, 0x72, 0x90, 0x66,
  0xf6, 0x7b, 0x66, 0xfc, 0xbd, 0xd8, 0xa9, 0xed, 0xea, 0x1b, 0xd2, 0x15,
  0x97, 0xf3, 0x85, 0x94, 0x16, 0x3f, 0x51, 0x5a, 0x19, 0x71, 0x37, 0x46,
  0x2a, 0x9b, 0x64, 0xf7, 0xbe, 0x54, 0x19, 0xa9, 0x65, 0x6e, 0x4a, 0x2b,
  0xc4, 0x7c, 0x6f, 0x05, 0x46, 0x0b, 0x62, 0x51, 0x5d, 0x37, 0x13, 0xa4,
  0xb8, 0x22, 0x46, 0xf1, 0xd5, 0x91, 0x4b, 0x3a, 0x5a, 0xb3, 0x14, 0x3a,
  0x10, 0x08, 0x00, 0x7f, 0x35, 0x04, 0xce, 0x4d, 0x51, 0x42, 0x2c, 0xb0,
  0xc2, 0x39, 0x33, 0xba, 0x20, 0xbc, 0x0a, 0xc3, 0xf4, 0xa5, 0xca, 0xaa,
  0x74, 0xe2, 0xd4, 0xa6, 0x30, 0x84, 0xc0, 0x9d, 0x42, 0xd5, 0x01, 0x14,
  0xec, 0x21, 0xf5, 0x56, 0xb2, 0xfa, 0x04, 0xba, 0xc3, 0x60, 0x33, 0x65,
  0x77, 0x5a, 0x7b, 0x53, 0x6b, 0x51, 0xd2, 0x1b, 0xfa, 0xe1, 0x80, 0x5a,
  0x09, 0xe0, 0x1f, 0x88, 0x36, 0x5a, 0xca, 0x32, 0x58, 0x35, 0x73, 0x1c,
  0x13, 0x81, 0x9b, 0xe4, 0x56, 0x7d, 0x04, 0x5d, 0x01, 0x68, 0xe8, 0xe8,
  0x02, 0xa5, 0x5f, 0x05, 0x37, 0x01, 0xa9, 0xbb, 0xa4, 0x1a, 0x46, 0x12,
  0x67, 0xff, 0x7a, 0x09, 0x85, 0x02, 0x30, 0x10, 0x3c, 0xc6, 0x5a, 0x0a,
  0x38, 0xe7, 0x16, 0xdf, 0x24, 0x6e, 0xd5, 0xb4, 0x81, 0xa0, 0xe4, 0x28,
  0x05, 0x27, 0x2f, 0xc2, 0x2e, 0x4a, 0x26, 0xac, 0xd7, 0x70, 0x88, 0x50,
  0x11, 0x64, 0xea, 0x1d, 0x41, 0x71, 0x5a, 0x0a, 0xf4, 0x2c, 0xb7, 0x5c,
  0x26, 0xd0, 0x9b, 0xdf, 0xaf, 0x4a, 0xd9, 0xc9, 0x0c, 0x77, 0x59, 0x54,
  0x32, 0xe5, 0xf0, 0xff, 0xaa, 0x2c, 0xe4, 0x06, 0xe0, 0x1a, 0x77, 0x12,
  0x37, 0x90, 0x6b, 0xe4, 0x11, 0xcc, 0xaa, 0x22, 0x5f, 0x3c, 0x46, 0xdf,
  0xc4, 0xb8, 0x2c, 0x52, 0xeb, 0xe3, 0x64, 0xee, 0x95, 0xa6, 0x71, 0x6f,
  0x71, 0x51, 0xb3, 0xb9, 0xcf, 0xb8, 0xae, 0x90, 0xec, 0x02, 0xde, 0x16,
  0x20, 0x56, 0xd8, 0x2f, 0x74, 0x26, 0x4b, 0xd9, 0x08, 0xa7, 0x5e, 0x0f,
  0x06, 0x67, 0xbe, 0x2d, 0xa7, 0x8d, 0x8d, 0x56, 0x62, 0x12, 0xd0, 0x68,
  0xbd, 0x66, 0x74, 0x44, 0x06, 0x3f, 0x0c, 0x72, 0x0e, 0x59, 0x77, 0x32,
  0x53, 0xcc, 0x0e, 0xc5, 0x91, 0x1f, 0x15, 0x8f, 0x0b, 0x34, 0xbe, 0xa4,
  0x08, 0x97, 0xaf, 0x39, 0xce, 0x8f, 0x41, 0x60, 0x57, 0x96, 0x3d, 0x7f,
  0x28, 0x1d, 0x2c, 0x75, 0x92, 0xa5, 0x18, 0xbf, 0x47, 0x50, 0x64, 0x04,
  0xb7, 0x12, 0xd9, 0x8a, 0x52, 0x67, 0x4c, 0x68, 0x2e, 0xad, 0x3d, 0xce,
  0xa4, 0x73, 0x59, 0xa3, 0x3b, 0x06, 0x9b, 0x33, 0x68, 0x69, 0x21, 0x22,
  0x22, 0x85, 0x53, 0x36, 0x54, 0xbe, 0xcb, 0x1b, 0x52, 0xb5, 0xd7, 0xbc,
  0x19, 0xa6, 0x79, 0x42, 0x8c, 0x08, 0x0f, 0x99, 0x07, 0x25, 0x03, 0x36,
  0xee, 0xb4, 0x27, 0xa0, 0x18, 0x2d, 0x74, 0xe2, 0x58, 0xa9, 0x42, 0xba,
  0x5c, 0x8c, 0x4c, 0xe9, 0x7b, 0xc6, 0xf1, 0x48, 0x5c, 0x4d, 0x33, 0x30,

  0x14, 0xef, 0x0b, 0xd8, 0xad, 0x17, 0x73, 0x20, 0x18, 0x97, 0x93, 0xeb,
  0x78, 0xea, 0x84, 0x15, 0x1b, 0xd5, 0xe6, 0xd4, 0x3e, 0x2c, 0x63, 0x4c,
  0x44, 0x60, 0x64, 0xc0, 0x4b, 0xe6, 0x70, 0x7b, 0x7a, 0xe7, 0xb0, 0xec,
  0x9e, 0x87, 0x5c, 0x84, 0xbe, 0x09, 0x91, 0x16, 0x96, 0xbf, 0x51, 0x2e,
  0x36, 0x65, 0xaf, 0xe0, 0x97, 0xfa, 0x21, 0x30, 0x9c, 0x51, 0x5e, 0x08,
  0x22, 0x0d, 0xa6, 0xcf, 0xc0, 0xcd, 0xa3, 0x9c, 0xa1, 0xd2, 0x00, 0x0d,

  0xd8, 0xb8, 0x7a, 0xbd, 0x1b, 0x56, 0xa0, 0x62, 0xd8, 0xe8, 0xa8, 0x02,
  0x9e, 0x48, 0x89, 0xfb, 0xe3, 0xa4, 0xc4, 0xd6, 0x4a, 0x3c, 0x81, 0xe8,
  0xc8, 0x65, 0x51, 0x04, 0x0d, 0x86, 0x9d, 0xe4, 0xa5, 0x09, 0x42, 0x93,
  0x06, 0xe8, 0xc1, 0xe0, 0xc4, 0x3f, 0x48, 0x66, 0x83, 0x1c, 0x84, 0x9c,
  0x1f, 0x83, 0xdf, 0xe6, 0xe2, 0x40, 0x31, 0x50, 0xb8, 0xbc, 0xcb, 0x12,
  0xbc, 0x89, 0x83, 0x9a, 0x85, 0xf4, 0x7c, 0x32, 0x48, 0x74, 0x4b, 0x8d,
  0xd4, 0xd8, 0x88, 0x8b, 0x12, 0x87, 0xdd, 0x5c, 0x66, 0x72, 0x38, 0xb8,
  0x0f, 0xcd, 0x1a, 0x63, 0xaa, 0x0b, 0x03, 0x64, 0x1a, 0xb0, 0x1f, 0x1f,
  0x11, 0xf6, 0xfd, 0xe5, 0xd1, 0xd5, 0xe9, 0xe0, 0xe2, 0xfc, 0x00, 0xd9,
  0x05, 0x62, 0x68, 0xc2, 0xff, 0xef, 0x70, 0x9b, 0x22, 0x02, 0x82, 0xa6,
  0x4f, 0xa6, 0x25, 0x63, 0x90, 0xd2, 0x97, 0x50, 0xe9, 0xf9, 0x3e, 0x89,
  0x6f, 0x43, 0xc5, 0x43, 0x03, 0x60, 0x50, 0xd8, 0x0b, 0xa9, 0x46, 0xa3,
  0x9c, 0xbe, 0x24, 0xe8, 0xc0, 0x54, 0xf0, 0x42, 0x70, 0x2f, 0x88, 0xf6,
  0x6a, 0x87, 0x5f, 0xa9, 0x9a, 0xd4, 0xb3, 0x94, 0x9c, 0x9d, 0x5e, 0x75,
  0x4d, 0x1a, 0x4a, 0x03, 0x3e, 0xcf, 0x59, 0x5d, 0x74, 0x3f, 0xe8, 0x40,
  0x34, 0x8f, 0xa7, 0x46, 0x5f, 0x4d, 0x6b, 0xe8, 0xa4, 0xe2, 0x50, 0xa6,
  0xe9, 0x5c, 0x8c, 0x0e, 0x10, 0xd8, 0x1a, 0xa3, 0x12, 0x70, 0x80, 0x5d,
  0x32, 0x6b, 0x1d, 0x60, 0x27, 0x89, 0xe3, 0x07, 0xa3, 0x0e, 0x91, 0x68,
  0x1c, 0x94, 0x65, 0x86, 0x73, 0xa1, 0x2a, 0x66, 0x55, 0xfe, 0x92, 0xec,
  0x2e, 0x99, 0xe5, 0x0b, 0x2d, 0x04, 0x14, 0xd4, 0x5a, 0x02, 0x43, 0xed,
  0xaf, 0x80, 0x98, 0x91, 0xab, 0xc6, 0x2e, 0x3c, 0xa6, 0x38, 0x37, 0xff,
  0x5a, 0x31, 0x56, 0x15, 0x56, 0x35, 0x74, 0x80, 0xbc, 0x4b, 0xe8, 0xf2,
  0xca, 0x64, 0x73, 0x78, 0x8b, 0x03, 0x10, 0x3f, 0xb6, 0x17, 0x1b, 0xae,
  0x81, 0xdc, 0x4d, 0x71, 0x74, 0x9f, 0x24, 0xb7, 0xfc, 0x69, 0xd3, 0x26,
  0x93, 0x3b, 0x13, 0x48, 0xaf, 0x94, 0xef, 0x37, 0x3b, 0xc1, 0x18, 0x7d,
  0x4a, 0x01, 0x6b, 0x38, 0x83, 0x42, 0xb3, 0x48, 0xad, 0xd4, 0x97, 0xa0,
  0x0e, 0x47, 0x07, 0x0b, 0x10, 0x16, 0x77, 0x14, 0x06, 0xe0, 0x05, 0x0a,
  0xe8, 0x6d, 0x00, 0x37, 0x56, 0x1a, 0x3c, 0xc7, 0xc5, 0x6d, 0x69, 0x6f,
  0xb9, 0xaf, 0x0a, 0x90, 0x22, 0xc8, 0x33, 0x8e, 0xb9, 0x9f, 0x12, 0xae,
  0xa4, 0x5e, 0x2a, 0x80, 0x15, 0xa6, 0x95, 0x53, 0xa7, 0xc9, 0x63, 0x85,
  0x5a, 0xcc, 0xd7, 0x39, 0x4b, 0x5b, 0x1d, 0xd6, 0x2a, 0xda, 0xa6, 0xcb,
  0xb2, 0xbd, 0xb5, 0xf5, 0x24, 0x52, 0x9c, 0x90, 0xf9, 0x4a, 0xc0, 0x38,
  0x54, 0x8a, 0x39, 0xcc, 0x6d, 0x90, 0x4d, 0xe2, 0x54, 0xca, 0x56, 0x9b,
  0xd8, 0x9a, 0xf0, 0x49, 0x03, 0xdc, 0x66, 0x15, 0x31, 0x56, 0xae, 0x19,
  0x50, 0x91, 0x60, 0xe3, 0x70, 0xb7, 0xf8, 0x42, 0x1f, 0xd4, 0xde, 0x69,
  0xa2, 0x43, 0xb1, 0x1c, 0x48, 0x19, 0x23, 0xd5, 0xdc, 0x88, 0xaf, 0x1f,
  0xad, 0xf7, 0x96, 0xd4, 0x62, 0x8e, 0x0a, 0xd2, 0xac, 0x38, 0xda, 0xcb,
  0xf3, 0xef, 0xaf, 0x32, 0x00, 0xc2, 0x68, 0x70, 0x7f, 0x60, 0xf5, 0x92,
  0x86, 0x05, 0x39, 0xb5, 0x28, 0x69, 0x54, 0x02, 0x95, 0x0a, 0x87, 0x2d,
  0xcc, 0x6a, 0x81, 0xf3, 0x37, 0x5b, 0xed, 0x39, 0x5d, 0xf3, 0x58, 0x17,
  0x5e, 0x89, 0xea, 0x5f, 0xc7, 0xf6, 0xab, 0xd7, 0x22, 0xbc, 0xac, 0x9f,

  0x2f, 0x02, 0x6c, 0xf4, 0x08, 0x46, 0xa3, 0x29, 0x08, 0x11, 0x79, 0x03,
  0x09, 0x9d, 0x3c, 0xce, 0x79, 0xe6, 0xf8, 0xe1, 0x11, 0x53, 0x92, 0xf3,
  0x3f, 0xb5, 0xe2, 0xb6, 0x01, 0x65, 0xee, 0xaa, 0xd7, 0xda, 0x7f, 0x45,
  0xf5, 0xbd, 0x71, 0xee, 0x20, 0x18, 0x9a, 0x22, 0xeb, 0x86, 0x43, 0x9f,
  0x3d, 0xfa, 0x3e, 0x38, 0x12, 0xd7, 0x91, 0xd8, 0x60, 0x11, 0xc3, 0x85,
  0x50, 0x8e, 0x1c, 0xf9, 0x03, 0x58, 0x53, 0x00, 0xbb, 0xb5, 0x4b, 0x87,
  0x07, 0xb7, 0x06, 0xcb, 0x86, 0xf8, 0x94, 0x83, 0x4e, 0x0e, 0x0b, 0xae,
  0xc9, 0xdd, 0x26, 0x79, 0x25, 0xa5, 0x05, 0x05, 0x45, 0xf9, 0xc3, 0x9d,
  0x33, 0x61, 0xd4, 0xd2, 0x24, 0x08, 0xfb, 0x37, 0xcd, 0xc1, 0xe9, 0x80,
  0x27, 0x11, 0xa7, 0xac, 0x5c, 0x52, 0x0c, 0x93, 0x87, 0x37, 0x38, 0x9c,
  0xac, 0x84, 0x30, 0x7e, 0x09, 0x46, 0x4b, 0x04, 0x87, 0xc1, 0x53, 0x1e,
  0x31, 0x47, 0x0a, 0x21, 0x7c, 0x23, 0x3a, 0x1c, 0x02, 0x42, 0x59, 0x16,
  0x4e, 0xa6, 0x54, 0xe7, 0x26, 0x85, 0x53, 0xcd, 0x3a, 0xa4, 0x12, 0x59,
  0xc1, 0x2a, 0x1f, 0xf5, 0x16, 0xbb, 0x9c, 0x39, 0xe1, 0x39, 0x5f, 0x77,
  0xf0, 0xaa, 0xe3, 0xbb, 0x51, 0xed, 0x42, 0xa8, 0x57, 0x81, 0x65, 0x8b,
  0x85, 0x60, 0xe1, 0x73, 0x0b, 0xc6, 0xf4, 0x6c, 0x39, 0x36, 0xde, 0x7c,
  0xea, 0xcf, 0xd8, 0x75, 0x9b, 0xa3, 0xd9, 0x70, 0x63, 0x3c, 0x47, 0x57,
  0x3e, 0x7b, 0x2c, 0x70, 0x97, 0x83, 0xad, 0xab, 0xf0, 0x20, 0x04, 0xb8,

  0x2b, 0x80, 0x2c, 0x2f, 0x09, 0xde, 0xf1, 0x23, 0xd5, 0x9e, 0x9a, 0x4f,
  0x13, 0x75, 0x7b, 0x30, 0xa0, 0x08, 0x89, 0x9b, 0x93, 0xff, 0x47, 0xe8,
  0x18, 0xb7, 0x70, 0x54, 0xa4, 0x8b, 0x8a, 0xb3, 0xd2, 0xa4, 0xc4, 0x66,
  0x25, 0x7c, 0x1a, 0xfc, 0x6d, 0x3a, 0xcb, 0x87, 0x31, 0xdf, 0x11, 0x93,
  0xe1, 0xaa, 0x71, 0xaf, 0x1a, 0x6c, 0x3d, 0xb2, 0x37, 0x24, 0xcf, 0x40,
  0xdb, 0x1d, 0x58, 0x72, 0xef, 0xa0, 0x4b, 0x79, 0x1b, 0x0f, 0xd5, 0xca,
  0x0f, 0x9a, 0x4f, 0x30, 0x08, 0x6c, 0x6f, 0xd2, 0x95, 0xdb, 0xab, 0xd8,
  0x1c, 0x94, 0x20, 0x5c, 0x3a, 0x77, 0xca, 0xb3, 0xbc, 0x09, 0x4c, 0x67,
  0xbc, 0x4c, 0xea, 0xf9, 0xc2, 0x6b, 0x92, 0x2c, 0x24, 0x8d, 0x4d, 0x29,
  0x67, 0xd5, 0xf4, 0xab, 0x91, 0xa4, 0x9c, 0x60, 0x2e, 0x2c, 0xc2, 0xc4,
  0x4b, 0xee, 0x6a, 0x37, 0xba, 0xc9, 0xef, 0xa9, 0x4e, 0x2f, 0x43, 0xdb,
  0xc4, 0x4e, 0x4e, 0xa5, 0xa7, 0xb3, 0x57, 0x0c, 0xaf, 0xe3, 0x53, 0xfc,
  0x84, 0xdd, 0x02, 0xa4, 0x4b, 0xf3, 0x99, 0xac, 0xd8, 0x19, 0xb7, 0xd7,

  0x44, 0xdd, 0x51, 0x64, 0x3e, 0x1d, 0x16, 0x4f, 0xc4, 0xd6, 0x4a, 0x74,
  0x1d, 0x61, 0x94, 0x77, 0x1d, 0x88, 0x45, 0x6a, 0xa0, 0x63, 0x4a, 0x3f,
  0x23, 0x84, 0x64, 0x55, 0x24, 0x98, 0x17, 0x84, 0xeb, 0xb3, 0xf1, 0xa6,
  0x60, 0xa6, 0xf3, 0xec, 0x91, 0x73, 0x29, 0xe9, 0xcc, 0xc9, 0xeb, 0x21,
  0x91, 0x63, 0x25, 0xa8, 0xa4, 0x1a, 0x39, 0xbf, 0x1c, 0x27, 0xf1, 0x2c,
  0xd4, 0x33, 0x09, 0x27, 0x8c, 0x3a, 0x3f, 0xb3, 0x36, 0x04, 0xcb, 0xca,
  0x24, 0x70, 0x2e, 0x95, 0x36, 0x9c, 0x6b, 0x2e, 0xca, 0xa2, 0x99, 0x21,
  0xdd, 0xaa, 0x80, 0x8f, 0x05, 0xbb, 0xb8, 0xd1, 0x03, 0x84, 0x20, 0x31,
  0x12, 0x5c, 0x1a, 0x4a, 0x7b, 0xb1, 0x85, 0x98, 0x88, 0xec, 0x89, 0x69,
  0xe9, 0xfa, 0x00, 0x51, 0x00, 0x55, 0x45, 0x35, 0x87, 0x93, 0x70, 0x1a,
  0xa3, 0x03, 0x90, 0x90, 0xd1, 0xe2, 0x3d, 0x9c, 0x18, 0x67, 0x42, 0x22,
  0x93, 0xdc, 0x90, 0x7b, 0x48, 0xd9, 0x76, 0xc2, 0x39, 0x16, 0xfe, 0x49,
  0xdf, 0x25, 0x9a, 0x1f, 0x4b, 0x06, 0x08, 0x1f, 0x40, 0x65, 0x20, 0x13,
  0x70, 0x34, 0xe1, 0x33, 0xcc, 0x64, 0x76, 0x76, 0x5a, 0x1c, 0x70, 0xdc,
  0xe3, 0x5c, 0x69, 0x8c, 0x2e, 0x7b, 0x19, 0x4f, 0x12, 0x35, 0x5a, 0x84,
  0x7d, 0xe7, 0x23, 0xd8, 0x42, 0x4a, 0xd5, 0x21, 0x68, 0x3a, 0xb4, 0x91,
  0x3d, 0x6b, 0x87, 0xb9, 0x26, 0x72, 0x49, 0x23, 0x72, 0xf1, 0x22, 0x08,
  0xbb, 0x2d, 0x67, 0xe9, 0x42, 0xa3, 0x94, 0xdd, 0x28, 0x91, 0xdc, 0xd2,
  0xd9, 0xa3, 0x9c, 0xca, 0xb2, 0x17, 0x70, 0xc0, 0x69, 0xba, 0x9d, 0x82,
  0xa0, 0xcf, 0xd0, 0x32, 0x5a, 0x6f, 0x8c, 0xbe, 0xb7, 0xb5, 0x4d, 0x93,
  0xdd, 0xdb, 0x7a, 0xb9, 0x51, 0x97, 0xca, 0xb3, 0x32, 0xe9, 0x51, 0xea,
  0x72, 0xd8, 0x47, 0xc1, 0x0d, 0x4b, 0x6d, 0x74, 0x95, 0xfc, 0x11, 0xf8,
  0x92, 0xe4, 0x3b, 0x8f, 0x97, 0x85, 0xda, 0x64, 0xd8, 0xca, 0x16, 0xdd,
  0x93, 0xe5, 0x0d, 0x62, 0xef, 0x7a, 0x52, 0xde, 0xbe, 0x43, 0xae, 0x3b,
  0x8a, 0xe0, 0xf3, 0x3e, 0xc5, 0xf4, 0xaa, 0xb4, 0xc9, 0xe4, 0x7d, 0xa0,
  0xe7, 0xd4, 0x00, 0x0f, 0x14, 0xa0, 0x38, 0x70, 0xa3, 0x9c, 0x2a, 0x2c,
  0x49, 0x1c, 0xf5, 0xa6, 0xf3, 0x86, 0xef, 0xbc, 0x4d, 0xb3, 0xb4, 0xbc,
  0xa1, 0x66, 0xf5, 0x65, 0x19, 0x4f, 0x13, 0x1f, 0xe6, 0x04, 0x18, 0x12,
  0x98, 0x00, 0x6c, 0xee, 0x17, 0xd4, 0x9f, 0x04, 0x13, 0x84, 0x79, 0xdf,
  0xa5, 0x6c, 0x51, 0x3a, 0xad, 0x12, 0x3e, 0xa6, 0x5d, 0x66, 0x88, 0x5e,
  0xd2, 0xd2, 0x69, 0x03, 0xdc, 0xd6, 0x05, 0x18, 0x7b, 0x52, 0x12, 0x50,
  0x22, 0x77, 0x88, 0xe3, 0x16, 0x71, 0xa1, 0xde, 0x5f, 0xd1, 0x3a, 0x1e,
  0xee, 0xc5, 0x00, 0x58, 0x90, 0xed, 0x58, 0x4f, 0x89, 0xe0, 0xf0, 0xb3,
  0x1f, 0x40, 0x17, 0xed, 0xbf, 0x32, 0x3f, 0xde, 0x78, 0x5e, 0xdb, 0xe0,
  0x9d, 0x86, 0x6e, 0x86, 0x15, 0x19, 0x12, 0x8f, 0x26, 0x87, 0xd5, 0x6b,
  0xfe, 0x47, 0xd8, 0xe3, 0x4d, 0xe8, 0x06, 0x60, 0x40, 0xbc, 0x3f, 0x22,
  0x60, 0x41, 0x8b, 0xf3, 0xef, 0x14, 0x6f, 0xd4, 0x2a, 0xb5, 0xa9, 0x87,
  0x32, 0xaa, 0xaa, 0x41, 0x98, 0x57, 0xe3, 0xa9, 0xe1, 0x3c, 0x72, 0x9b,
  0x7b, 0xa1, 0xba, 0x1c, 0x08, 0xde, 0x0a, 0xdd, 0x93, 0x08, 0xc0, 0x16,
  0x9d, 0x25, 0xdc, 0x32, 0x2d, 0x5a, 0xfb, 0x6a, 0x2d, 0x50, 0xd3, 0xbd,
  0x76, 0xe8, 0xf4, 0x99, 0x28, 0x6d, 0x3b, 0xc6, 0xb5, 0x2f, 0xd0, 0xb2,
  0x47, 0x48, 0x2d, 0xfe, 0xa6, 0x9c, 0x01, 0x57, 0x59, 0x84, 0x93, 0xbb,

  0x34, 0xb1, 0x5b, 0x50, 0x62, 0xeb, 0x29, 0xa4, 0x0b, 0x86, 0xe7, 0xc6,
  0xb2, 0x89, 0xfa, 0xba, 0x55, 0x9f, 0x5b, 0xf3, 0x6a, 0xbe, 0xb1, 0x80,
  0x8b, 0x31, 0xdb, 0xb8, 0x55, 0xbb, 0xd3, 0xcc, 0x9a, 0xe7, 0xc4, 0x93,
  0xa1, 0x88, 0xd5, 0x68, 0x44, 0x76, 0x21, 0x5d, 0x7d, 0xf8, 0xe5, 0x74,
  0x1a, 0x4c, 0x74, 0x85, 0x2d, 0xc0, 0x83, 0xc7, 0x35, 0x4f, 0xc0, 0xde,
  0x22, 0x7d, 0x03, 0xe5, 0x7c, 0x7b, 0x09, 0x8d, 0xd5, 0xdd, 0x03, 0xcf,
  0x38, 0xab, 0x38, 0x74, 0xab, 0x14, 0xc3, 0x54, 0x40, 0x44, 0xc0, 0x34,
  0x80, 0xae, 0x2c, 0xfa, 0x99, 0x89, 0x79, 0x4c, 0x62, 0x20, 0x8a, 0x47,
  0x49, 0x30, 0x9a, 0x51, 0x55, 0x19, 0x73, 0x90, 0x64, 0xee, 0xf1, 0xb0,
  0x99, 0x16, 0x68, 0x70, 0x1d, 0x13, 0x76, 0x94, 0xe2, 0x92, 0x17, 0xdc,
  0x67, 0x96, 0x07, 0xb6, 0xf4, 0x29, 0xd2, 0xb6, 0x4a, 0xb6, 0xa2, 0xa9,
  0xe9, 0x1b, 0x77, 0xeb, 0x9b, 0x44, 0x55, 0x51, 0x1b, 0x90, 0x4a, 0xb4,
  0x84, 0x61, 0x38, 0x11, 0xab, 0xc8, 0x2d, 0x69, 0x6f, 0x46, 0xaa, 0xc8,
  0x84, 0x00, 0x6e, 0xb4, 0x49, 0x97, 0x84, 0xeb, 0xca, 0x46, 0x08, 0x66,
  0x46, 0x4c, 0x26, 0x8f, 0xb0, 0x55, 0xe7, 0xce, 0xee, 0xe7, 0x9f, 0x07,


  0x1d, 0x7c, 0xbc, 0x4b, 0x48, 0x84, 0xb8, 0x53, 0x16, 0x19, 0xb9, 0x6b,
  0x30, 0xee, 0xf1, 0xfb, 0x48, 0x61, 0xea, 0xe6, 0xca, 0xa9, 0x47, 0x2c,
  0x7c, 0xd5, 0x77, 0xf2, 0x92, 0xff, 0x65, 0x8e, 0x6a, 0x85, 0x70, 0x31,
  0x52, 0xaf, 0x90, 0x6b, 0xcc, 0xd3, 0x16, 0x95, 0x2e, 0x91, 0x24, 0x6d,


  0x4e, 0xe8, 0x17, 0x80, 0x58, 0xa9, 0x2a, 0xe0, 0xe2, 0x0f, 0xd0, 0x1a,
  0xa8, 0xd2, 0x89, 0x73, 0xff, 0x78, 0x3b, 0xd6, 0x5a, 0x40, 0x01, 0xd6,
  0x22, 0xcd, 0x81, 0x19, 0x26, 0x06, 0x65, 0x87, 0xbd, 0x1c, 0x0d, 0x1c,
  0x34, 0xf6, 0x3f, 0x66, 0x58, 0x19, 0x8c, 0xfd, 0x8e, 0xe0, 0x03, 0x8d,
  0xe1, 0x08, 0x27, 0x63, 0x9a, 0x54, 0x7e, 0x35, 0xab, 0x53, 0xe3, 0xb1,
  0x62, 0xf0, 0x90, 0x4d, 0x24, 0xc5, 0xb8, 0xd1, 0x61, 0x5f, 0xe2, 0xc9,
  0xe3, 0x74, 0xa2, 0x97, 0xd4, 0xf4, 0x08, 0xfa, 0x8a, 0x4e, 0xe3, 0x50,
  0xb6, 0x5e, 0x8a, 0xd3, 0xbf, 0x0a, 0x22, 0x5d, 0x4a, 0xa1, 0x09, 0xc1,
  0x2e, 0x56, 0x15, 0xa8, 0xd5, 0x96, 0x77, 0x53, 0x2d, 0x11, 0x77, 0xa4,
  0xe1, 0x0a, 0x4e, 0xde, 0x60, 0xce, 0xde, 0x9f, 0x85, 0xa0, 0x96, 0x0e,
  0xcd, 0xa0, 0xd2, 0xf0, 0x0a, 0xcb, 0xb9, 0x70, 0x2a, 0xa1, 0x9d, 0xd0,
  0x6e, 0x15, 0xc8, 0x1f, 0xe0, 0x69, 0xcf, 0xea, 0xc1, 0x77, 0x9d, 0x7d,
  0xf2, 0xcf, 0xde, 0xcd, 0xaf, 0x10, 0x5c, 0x25, 0xde, 0x62, 0x5b, 0x06,
  0xe4, 0xc6, 0xe8, 0x63, 0xe3, 0xf3, 0xe6, 0x6b, 0xd1, 0x8c, 0xcb, 0xe1,
  0x52, 0x2d, 0x9e, 0x07, 0x51, 0xd6, 0x34, 0x4f, 0x78, 0x96, 0x04, 0xae,
  0xa4, 0xbb, 0x8a, 0xbe, 0xab, 0xaa, 0x58, 0x8e, 0x50, 0xb1, 0x24, 0xa3,
  0x9c, 0x3e, 0x15, 0xea, 0xc9, 0xa8, 0x41, 0x36, 0xb3, 0x62, 0xea, 0x9c,
  0x4a, 0xe7, 0x45, 0xbb, 0x2c, 0xb0, 0xb0, 0x6c, 0xe1, 0x09, 0x6a, 0x30,

  0xd7, 0x29, 0xf4, 0x82, 0xdd, 0xbc, 0x13, 0x72, 0xb7, 0x94, 0xe9, 0xcf,
  0xac, 0x94, 0x49, 0x81, 0x87, 0x82, 0x64, 0x92, 0x83, 0x23, 0xc1, 0xb6,
  0x2d, 0xd1, 0x1b, 0xec, 0x35, 0xcd, 0xa2, 0x1c, 0xe9, 0xcd, 0xe3, 0xd3,
  0x6e, 0x79, 0x13, 0x4b, 0x24, 0x54, 0xe3, 0x8a, 0x64, 0xba, 0x44, 0x29,
  0x47, 0xfb, 0xb4, 0xae, 0xa0, 0xd8, 0xfa, 0xc4, 0x22, 0x5d, 0x50, 0x3f,
  0x2b, 0xb0, 0xe7, 0xbc, 0x8a, 0x29, 0x78, 0x8b, 0xbb, 0x48, 0x2f, 0x33,
  0xd8, 0xae, 0x6a, 0x89, 0x99, 0x28, 0x82, 0x0a, 0x06, 0xfc, 0xeb, 0x6f,
  0x14, 0x00, 0xca, 0x65, 0xe9, 0xdc, 0x81, 0x69, 0x6c, 0x4c, 0xef, 0x64,
  0xe2, 0xd9, 0x2e, 0x09, 0xe5, 0x3f, 0x12, 0x9c, 0x25, 0x26, 0x14, 0x56,
  0xca, 0x00, 0xb8, 0xdd, 0x28, 0x3a, 0x62, 0xbe, 0xc0, 0x48, 0xc0, 0x28,
  0xb1, 0x60, 0xde, 0xb4, 0x29, 0x84, 0xad, 0xe1, 0xdd, 0x6a, 0xc2, 0xc5,
  0x55, 0xdd, 0xc9, 0x45, 0x4b, 0x96, 0x96, 0x57, 0x5d, 0xc6, 0xff, 0xe6,
  0x22, 0x57, 0x81, 0x7e, 0x8b, 0x4b, 0x2e, 0xa2, 0x2b, 0xfd, 0x36, 0xdc,
  0x24, 0x04, 0x58, 0xab, 0xfe, 0x9b, 0x31, 0x78, 0x91, 0xf3, 0x05, 0x40,
  0xf4, 0x08, 0x3d, 0xfc, 0x40, 0xdc, 0xa7, 0xd8, 0xd4, 0x54, 0x18, 0x9a,
  0x89, 0x4e, 0x4b, 0x91, 0x2c, 0xab, 0x88, 0x6b, 0xc0, 0x3a, 0x71, 0xef,

  0xd7, 0xe4, 0xe2, 0x86, 0x90, 0xdb, 0xac, 0x9d, 0x4f, 0xac, 0x9a, 0xaf,
  0x89, 0xc1, 0x3b, 0x36, 0x3c, 0x04, 0x55, 0xaa, 0x22, 0x06, 0x8e, 0xf9,
  0xb7, 0xc5, 0xb4, 0x05, 0x5a, 0x97, 0x3b, 0xa7, 0x81, 0xad, 0xe0, 0xb7,
  0x6a, 0x24, 0x3a, 0xec, 0xbd, 0x8d, 0x64, 0x3e, 0xaf, 0xbf, 0xaa, 0x0d,
  0xa7, 0xed, 0x8b, 0xdc, 0xee, 0x1c, 0x82, 0xf4, 0x34, 0x9a, 0xa6, 0x4f,
  0x6c, 0x02, 0xb7, 0xb6, 0x31, 0x45, 0x25, 0xe5, 0x4d, 0x9e, 0xc8, 0xd9,
  0x65, 0x64, 0x02, 0x9b, 0x4e, 0x7c, 0xb0, 0xae, 0x32, 0xd8, 0x57, 0x49,
  0x35, 0xde, 0xf6, 0x69, 0x93, 0x5c, 0xff, 0x8f, 0xfc, 0x26, 0xc3, 0x7f,

  0xe0, 0x17, 0xf0, 0x03, 0xaf, 0xb7, 0xb7, 0x83, 0x33, 0x6f, 0x9d, 0x2f,
  0x4f, 0x58, 0x67, 0x8c, 0xc2, 0x48, 0x0a, 0x05, 0x1c, 0xde, 0x56, 0x33,
  0xfd, 0xfb, 0x54, 0x3b, 0xed, 0xbb, 0xd9, 0xe8, 0x0e, 0x11, 0x2a, 0xa5,
  0xf3, 0x2a, 0x27, 0x61, 0x07, 0x59, 0x62, 0x6a, 0xe4, 0xc3, 0xcc, 0x87,
  0x38, 0x02, 0x5d, 0x0d, 0x8f, 0xa4, 0x7d, 0xf1, 0x1d, 0xcc, 0x08, 0x78,
  0x7c, 0x7d, 0x78, 0xb3, 0x9c, 0x26, 0xc4, 0x37, 0xab, 0x87, 0xaa, 0xf3,
  0xac, 0x95, 0xa3, 0x97, 0x82, 0xdd, 0x14, 0x5c, 0x68, 0x53, 0x39, 0x29,
  0xa7, 0x54, 0xb9, 0x56, 0x53, 0x21, 0x38, 0x21, 0x1f, 0x2d, 0x25, 0x4d,
  0x78, 0x68, 0x56, 0x97, 0xb2, 0x32, 0xda, 0xe5, 0x4d, 0x13, 0xf4, 0x23,
  0x8b, 0xb7, 0xb2, 0x62, 0x05, 0xf7, 0xc9, 0xf0, 0xf5, 0x57, 0xe8, 0xdb,
  0x7a, 0xa0, 0x2e, 0x32, 0xac, 0xd5, 0xe2, 0xd6, 0x6d, 0x52, 0x53, 0x99,
  0xc8, 0x59, 0x44, 0x73, 0x90, 0xbc, 0x68, 0x1f, 0xd6, 0xa9, 0x76, 0x75,
  0x86, 0x9c, 0xe4, 0xf9, 0xca, 0x11, 0xd5, 0x77, 0x43, 0x7b, 0xe2, 0xa4,
  0xb4, 0x73, 0xa2, 0xb7, 0xad, 0xe4, 0x67, 0x82, 0x20, 0x39, 0x53, 0x13,
  0x97, 0x21, 0x64, 0x15, 0x8a, 0xbb, 0xb2, 0x8d, 0xae, 0x12, 0xe7, 0x75,
  0x97, 0x8a, 0x3d, 0xc3, 0x7d, 0xc3, 0xec, 0x1a, 0xf8, 0x3a, 0x12, 0x10,
  0x1e, 0xfe, 0xf5, 0x0b, 0xf3, 0x3a, 0xfe, 0x07, 0x6e, 0x33, 0xf5, 0x65,
  0x58, 0xb1, 0x1a, 0x4c, 0x08, 0xd1, 0x77, 0x36, 0x29, 0x09, 0xc1, 0xc4,
  0x5b, 0xd7, 0xba, 0xac, 0x68, 0x7f, 0xb1, 0x56, 0x8b, 0x56, 0x51, 0x34,
  0x89, 0x78, 0xdc, 0x38, 0xf7, 0xd4, 0x5a, 0xcc, 0xc9, 0x97, 0x70, 0x13,
  0xce, 0xbe, 0x65, 0xe2, 0x38, 0x73, 0x9d, 0xfa, 0x8f, 0x1d, 0x33, 0xf9,
  0x1f, 0x3b, 0x76, 0xfa, 0x3f, 0x76, 0xec, 0x02, 0x7e, 0xec, 0x20, 0x18,
  0x31, 0x2e, 0xc2, 0x37, 0x88, 0x7f, 0xe9, 0xa1, 0xaf, 0xf1, 0x57, 0xed,
  0x47, 0x9d, 0x6f, 0x3a, 0x9f, 0xec, 0xac, 0xad, 0xda, 0x34, 0x37, 0x43,
  0x80, 0xaa, 0x23, 0x9b, 0x7b, 0x08, 0xec, 0xba, 0xb6, 0x4d, 0x76, 0x5b,
  0xd0, 0x38, 0x7b, 0xf4, 0x4a, 0x6e, 0xed, 0x03, 0xb8, 0xe3, 0xb6, 0x45,
  0xa1, 0xd3, 0x7a, 0xc7, 0x60, 0x19, 0x9b, 0xa8, 0x21, 0x81, 0x58, 0x8e,
  0x7d, 0x79, 0x64, 0x5e, 0xf7, 0xe4, 0xcf, 0x7f, 0xc2, 0x17, 0x48, 0xff,
  0xa7, 0x31, 0xe4, 0x56, 0x13, 0x8c, 0x99, 0x64, 0x67, 0x53, 0xd9, 0x4c,
  0xc6, 0xb9, 0x2b, 0x2c, 0xfe, 0x26, 0x5c, 0x6f, 0xca, 0x24, 0xe1, 0xc5,
  0x36, 0xe7, 0x29, 0x35, 0xac, 0x84, 0x55, 0xcd, 0xd8, 0x42, 0xdd, 0x44,
  0xa9, 0x40, 0x15, 0x10, 0xd4, 0x47, 0xb2, 0x24, 0x13, 0x5d, 0x8c, 0x57,
  0x37, 0xae, 0xb9, 0x82, 0xa4, 0x51, 0x11, 0x9f, 0xe5, 0x45, 0xf9, 0xba,
  0x53, 0x60, 0xff, 0xef, 0x68, 0x5a, 0x80, 0x06, 0xfb, 0x05, 0x92, 0xd6,
  0x12, 0x0e, 0xcb, 0xde, 0xd3, 0x87, 0xde, 0xfc, 0x11, 0xe6, 0xbd, 0xf6,
  0x8b, 0x28, 0xc3, 0x61, 0x69, 0x63, 0xca, 0xd5, 0xa2, 0x14, 0x87, 0x66,
  0xb6, 0x1a, 0x5f, 0x5d, 0xe7, 0x52, 0xca, 0xef, 0x5f, 0x87, 0xc0, 0x4e,
  0xbd, 0x85, 0x38, 0x9c, 0x97, 0x4c, 0xb5, 0xd7, 0x17, 0xdf, 0x7e, 0xa1,

  0x03, 0xfc, 0xd8, 0xf9, 0xa1, 0xc7, 0x3f, 0x25, 0xd4, 0x88, 0x83, 0xe8,



  0xe2, 0x5b, 0xa4, 0xee, 0x5f, 0xc6, 0xc0, 0x56, 0x7d, 0xe0, 0x2b, 0xfe,

  0x0b, 0x51, 0xf6, 0xaa, 0x61, 0xaf, 0x6d, 0xb6, 0xdc, 0x6b, 0x6c, 0x63,
  0x4f, 0xd5, 0xa6, 0x64, 0x85, 0x2f, 0x16, 0x58, 0x3f, 0xaa, 0x28, 0x09,
  0x15, 0xa3, 0x24, 0x50, 0xd4, 0x28, 0x1e, 0xe6, 0x5c, 0x28, 0x53, 0xf9,
  0x1d, 0x12, 0x08, 0xa1, 0x9d, 0xce, 0x56, 0x7c, 0x57, 0x0b, 0x72, 0x5c,
  0x90, 0x3a, 0x5c, 0x4f, 0x36, 0xab, 0x57, 0xb4, 0x77, 0xa3, 0x93, 0x40,
  0x2b, 0x1c, 0x0b, 0x71, 0xc7, 0x7f, 0x23, 0xbd, 0x8c, 0x90, 0xfc, 0xd0,
  0xc4, 0xc2, 0xb6, 0x9a, 0x71, 0x91, 0x68, 0x9f, 0x34, 0xe9, 0xec, 0x4a,
  0x01, 0x26, 0x20, 0x98, 0x40, 0x28, 0x40, 0xa2, 0x93, 0x52, 0x8e, 0x34,
  0xc9, 0x67, 0x63, 0x89, 0x4a, 0x00, 0xd5, 0xf3, 0x01, 0x9b, 0x66, 0xaa,
  0xa0, 0x71, 0xe0, 0x56, 0x48, 0xa4, 0x42, 0x3e, 0x1b, 0x50, 0x39, 0x24,
  0x9a, 0xc8, 0xde, 0x38, 0x37, 0xfb, 0x84, 0x09, 0xff, 0x0b, 0x34, 0xfa,
  0x87, 0x09, 0x39, 0x9f, 0x4c, 0x6d, 0x7e, 0x4f, 0x9c, 0xc3, 0x01, 0x0f,
  0x4e, 0x64, 0xee, 0x8d, 0x5e, 0x1c, 0x4e, 0x86, 0xd3, 0x82, 0x7d, 0xcc,
  0x16, 0x7e, 0x87, 0x2a, 0xa1, 0x94, 0x33, 0x69, 0x7f, 0x33, 0x14, 0x2f,
  0xe1, 0xc5, 0x9a, 0xdc, 0x19, 0xdc, 0x21, 0xff, 0xb6, 0x45, 0x7f, 0x14,
  0x5f, 0xb2, 0x93, 0x62, 0x43, 0xab, 0x97, 0xc3, 0xea, 0x7b, 0x2f, 0xfc,
  0x20, 0xa9, 0xa1, 0xbd, 0xed, 0x03, 0xa7, 0x57, 0x1d, 0xff, 0x2c, 0x3c,
  0xbc, 0x0b, 0x05, 0xa6, 0x01, 0xe2, 0x52, 0xb6, 0x7f, 0xc5, 0xf8, 0x3b,
  0x66, 0xfc, 0xcf, 0x02, 0xe8, 0x5b, 0x8c, 0x8f, 0x15, 0xfe, 0xec, 0xb5,
  0x4d, 0x05, 0x57, 0x2f, 0xaa, 0xf1, 0x64, 0xd4, 0x7c, 0x08, 0x0a, 0xfc,
  0xcf, 0xc8, 0x5c, 0x1c, 0x6e, 0xf0, 0x5b, 0xfd, 0x30, 0x68, 0x31, 0x99,
  0x81, 0xb4, 0x0e, 0xd8, 0xc6, 0xa6, 0x89, 0xc8, 0xa2, 0x5e, 0x08, 0x2b,
  0x9f, 0x23, 0x10, 0xf7, 0xf8, 0xc0, 0x76, 0x3e, 0x66, 0x28, 0xa1, 0xd4,
  0xad, 0xb2, 0xb2, 0x68, 0x0a, 0x5e, 0x71, 0x7b, 0x0d, 0xe6, 0xde, 0xfb,
  0x14, 0xb0, 0x62, 0x06, 0xe0, 0x73, 0xda, 0xf2, 0xae, 0xad, 0xaf, 0x89,
  0x53, 0x05, 0x3f, 0x84, 0x0d, 0x83, 0x29, 0x1d, 0x96, 0x20, 0x39, 0x62,
  0x42, 0x4e, 0x12, 0x5f, 0x4e, 0x2f, 0xa0, 0x75, 0x1c, 0x48, 0x96, 0x83,
  0xdc, 0x09, 0x86, 0x8b, 0xa3, 0x0c, 0x14, 0xb5, 0x9b, 0x19, 0xda, 0xb1,

  0x06, 0x11, 0xe7, 0x1b, 0xc9, 0xce, 0x16, 0xcb, 0x60, 0x6c, 0x9b, 0xda,
  0x9c, 0xf5, 0x38, 0x5a, 0x7b, 0xbd, 0xb1, 0x66, 0x96, 0xd6, 0x6e, 0x16,
  0x79, 0x7d, 0x7f, 0x35, 0x08, 0x69, 0xba, 0x81, 0x93, 0x67, 0x69, 0x8e,
  0xb9, 0x0f, 0x49, 0x8f, 0x0e, 0x34, 0x88, 0xa3, 0x5a, 0x56, 0xe2, 0xed,
  0xa4, 0xf2, 0x22, 0xba, 0x9d, 0x8c, 0xf8, 0xc5, 0x24, 0x1e, 0xcf, 0x2a,
  0x2c, 0xd8, 0xa2, 0x92, 0x3a, 0xc6, 0x7c, 0x2d, 0x0f, 0x1c, 0x7d, 0x3c,
  0x70, 0x3d, 0x31, 0x90, 0x43, 0xad, 0x74, 0xc4, 0x25, 0xe2, 0x78, 0x34,
  0x56, 0xa9, 0xde, 0x6b, 0xaf, 0xd7, 0x59, 0x60, 0x59, 0x7f, 0x9a, 0xf3,
  0xed, 0xb5, 0xe8, 0xc7, 0x30, 0xba, 0x41, 0xc4, 0xef, 0x3a, 0x16, 0x82,
  0x90, 0xed, 0x53, 0x6f, 0x44, 0x87, 0xc3, 0x7c, 0xfc, 0xf8, 0x25, 0x85,
  0x9d, 0xe4, 0x95, 0xc3, 0x4d, 0xfa, 0x51, 0x43, 0x65, 0x6e, 0x1b, 0x88,
  0x46, 0x81, 0xa3, 0xa2, 0x3f, 0xbf, 0xc2, 0xc7, 0xd5, 0x62, 0x58, 0x8b,
  0xfa, 0x7d, 0x60, 0x42, 0xe5, 0x9c, 0x9a, 0x32, 0xae, 0x10, 0x2c, 0x8c,
  0x7a, 0x4a, 0x22, 0x96, 0x52, 0x9b, 0x18, 0xb8, 0x8a, 0x3c, 0x3b, 0x6a,
  0x65, 0xb3, 0x13, 0x92, 0x7f, 0x55, 0xbc, 0xee, 0x47, 0x47, 0x26, 0x57,
  0x32, 0x09, 0x74, 0x4a, 0xc0, 0x6b, 0xcc, 0xb2, 0xc3, 0x01, 0x06, 0xf9,
  0x7c, 0x98, 0x8a, 0x9b, 0x7d, 0x9c, 0xd7, 0xd0, 0x97, 0x19, 0xd9, 0x07,
  0x84, 0x7b, 0x18, 0x2f, 0x93, 0x72, 0x0f, 0x31, 0x46, 0xc4, 0xee, 0x74,
  0x63, 0xbf, 0xc8, 0xd4, 0x7a, 0x27, 0x02, 0xcf, 0xa8, 0x6c, 0xb4, 0x1b,
  0xbd, 0x34, 0x5f, 0x0a, 0xe4, 0x1f, 0xb2, 0xc5, 0x5f, 0x46, 0x9f, 0xf7,
  0xf0, 0x29, 0xa7, 0x67, 0xb8, 0xd0, 0x7d, 0x3d, 0x83, 0xa3, 0x2b, 0x4a,
  0x61, 0x8f, 0xd2, 0x53, 0x03, 0x65, 0x99, 0x24, 0x09, 0x86, 0x71, 0x99,
  0xbc, 0xd8, 0x53, 0xf5, 0x92, 0x77, 0xa9, 0x54, 0xff, 0x6d, 0xcd, 0x09,
  0xcb, 0x72, 0xc8, 0x59, 0x50, 0xf3, 0x22, 0x10, 0xbc, 0x04, 0x2a, 0x67,
  0xd8, 0x02, 0x92, 0x2b, 0x31, 0x50, 0x9a, 0x82, 0x22, 0x39, 0xad, 0xa8,
  0xae, 0xf4, 0xe5, 0x0b, 0x67, 0xd2, 0x4f, 0xb8, 0x2b, 0x1a, 0x9c, 0x54,
  0x56, 0xd8, 0x5c, 0x91, 0xda, 0xeb, 0xf0, 0x5d, 0xef, 0x5e, 0xa2, 0xaf,
  0x83, 0xe1, 0x27, 0x65, 0x8d, 0xc6, 0xc1, 0xf8, 0xd4, 0x35, 0x72, 0x2f,
  0xc1, 0x17, 0x4a, 0x38, 0xcd, 0x4f, 0xaf, 0x24, 0x6a, 0xc7, 0x44, 0xd2,
  0xf7, 0x79, 0x12, 0x4c, 0xd8, 0x4f, 0xd3, 0x35, 0x06, 0x11, 0x26, 0xcb,
  0x82, 0xa4, 0x8f, 0x3c, 0xc6, 0x4a, 0x82, 0x56, 0xab, 0x8a, 0x9e, 0xfe,
  0xfe, 0xe8, 0xfc, 0xc3, 0xd1, 0xd9, 0xf3, 0x7b, 0xc3, 0xd5, 0xda, 0x8d,
  0x3e, 0x51, 0x09, 0xe1, 0x42, 0xda, 0x34, 0x00, 0xdf, 0xc2, 0x80, 0x36,
  0x5e, 0xd4, 0x01, 0x01, 0x6e, 0x9a, 0x39, 0xdb, 0x58, 0x3a, 0x8c, 0x74,
  0x85, 0x49, 0x22, 0x61, 0x20, 0x38, 0xae, 0xf6, 0x90, 0x10, 0xb9, 0x93,
  0xbf, 0x1f, 0x97, 0xd2, 0x99, 0xb7, 0xa3, 0xef, 0xe3, 0xeb, 0x1d, 0x29,
  0x21, 0x32, 0x68, 0x21, 0x21, 0x2a, 0x37, 0x08, 0x27, 0x26, 0xf5, 0x6a,
  0xc1, 0xb0, 0xdc, 0x63, 0x11, 0x68, 0x35, 0xef, 0x5b, 0x3e, 0x99, 0xd8,
  0x34, 0xd8, 0x66, 0x84, 0xef, 0xf8, 0xb8, 0x1d, 0x78, 0xe1, 0x53, 0x62,
  0x66, 0x37, 0xea, 0x92, 0x68, 0x1b, 0x2d, 0x77, 0xef, 0x55, 0x39, 0x63,
  0x92, 0x1c, 0xca, 0xdc, 0xc2, 0xbb, 0x0a, 0x13, 0x74, 0xf1, 0x63, 0x54,
  0xc5, 0xa5, 0xa6, 0xe3, 0x83, 0x93, 0x2b, 0xda, 0xac, 0xcb, 0xa3, 0xc1,
  0xc0, 0xc8, 0xc2, 0x52, 0xd2, 0x12, 0xba, 0x9e, 0x31, 0x46, 0x6a, 0xa4,
  0xdb, 0xfc, 0xaa, 0x1f, 0x99, 0x7e, 0xe1, 0x92, 0xd4, 0x4f, 0xb1, 0x1f,
  0xb0, 0xf9, 0xae, 0x97, 0x73, 0xb8, 0x30, 0xa0, 0xf1, 0x8e, 0xd7, 0x4a,
  0x09, 0xc5, 0x36, 0x09, 0x0f, 0x39, 0x97, 0x68, 0x52, 0x9c, 0x14, 0x89,
  0xff, 0x79, 0x8b, 0xf5, 0x53, 0x12, 0x43, 0x42, 0x2e, 0xcf, 0xc1, 0x6b,
  0x17, 0xe8, 0xbc, 0x1b, 0x76, 0xa6, 0x77, 0x06, 0xa7, 0xd7, 0x27, 0xb0,
  0x7d, 0x1f, 0xae, 0xdf, 0x75, 0x24, 0x75, 0xa1, 0x89, 0x85, 0x44, 0x4e,
  0x7b, 0x6c, 0xf4, 0x7d, 0x67, 0x30, 0x13, 0x0a, 0x76, 0xa4, 0x80, 0xb5,
  0x10, 0xd2, 0xc0, 0xed, 0x47, 0xfb, 0x2b, 0x4e, 0x69, 0xbf, 0xbf, 0xdf,
  0x3c, 0xa5, 0xf6, 0xa6, 0x05, 0x0c, 0x63, 0xef, 0x91, 0xbb, 0x60, 0xe3,
  0x63, 0xf6, 0xd4, 0xa6, 0x6d, 0xa1, 0x45, 0x41, 0x36, 0xc2, 0x58, 0x8b,
  0x19, 0x10, 0xc5, 0xc3, 0x50, 0x55, 0x40, 0x59, 0x27, 0x2e, 0x4e, 0x08,
  0xfe, 0x06, 0x74, 0x4e, 0xbc, 0xbd, 0x1c, 0x0e, 0x85, 0x13, 0x8b, 0x8b,
  0xb1, 0x01, 0x07, 0xf0, 0xf5, 0x43, 0xcd, 0xf5, 0xc3, 0x84, 0x73, 0x20,
  0x01, 0x6d, 0xcc, 0x55, 0xc3, 0x6c, 0xf0, 0x3b, 0xec, 0xd8, 0x7c, 0xbe,
  0x70, 0x4b, 0x05, 0xf2, 0xa2, 0x53, 0xaf, 0x2e, 0xd3, 0x1b, 0x60, 0x65,
  0xf6, 0x63, 0xb8, 0x0b, 0x00, 0xee, 0xab, 0xe4, 0x8b, 0x1c, 0xf2, 0x9f,
  0x61, 0x7a, 0x27, 0x91, 0x5b, 0xe4, 0x33, 0x76, 0x20, 0xca, 0x1b, 0x9c,
  0xc4, 0xc9, 0x25, 0x8f, 0x52, 0x8d, 0x57, 0x50, 0xc2, 0xa1, 0x84, 0x68,
  0x30, 0x09, 0x34, 0xf3, 0x9b, 0x2f, 0xae, 0x0f, 0x36, 0x8c, 0xa7, 0xf5,
  0x9a, 0x22, 0x8a, 0x34, 0x5a, 0xa0, 0x96, 0xd5, 0xc1, 0xd7, 0x15, 0xf5,
  0x32, 0x84, 0xf1, 0xe6, 0xdc, 0x5e, 0xdf, 0x62, 0x22, 0x46, 0x3d, 0xba,
  0x1f, 0xb7, 0x20, 0x96, 0x92, 0x5b, 0x8b, 0x92, 0xc8, 0xc8, 0x06, 0xe4,
  0xaa, 0x84, 0xe3, 0xef, 0xdf, 0x38, 0x2d, 0xd7, 0x34, 0x4f, 0x8d, 0xe9,
  0x45, 0x14, 0xd2, 0x36, 0x4c, 0xd0, 0xc4, 0x26, 0x5b, 0xf6, 0x29, 0xa8,
  0x3a, 0x4e, 0x92, 0x85, 0x69, 0x70, 0x91, 0x52, 0xa5, 0x65, 0x5a, 0x52,
  0x10, 0x55, 0x9a, 0x8b, 0x50, 0x53, 0xd1, 0x96, 0xd9, 0x09, 0xeb, 0xd0,
  0x4c, 0x7d, 0xb2, 0x77, 0xb0, 0x85, 0x24, 0x86, 0x71, 0xb7, 0x5f, 0xee,
  0x7e, 0x0e, 0xb2, 0xf9, 0x91, 0xf2, 0xc0, 0xed, 0x96, 0x31, 0x22, 0x7c,
  0x3b, 0xda, 0xab, 0x18, 0x35, 0x9a, 0xde, 0x2b, 0xa0, 0x3a, 0x51, 0x89,
  0x66, 0x04, 0x39, 0xa8, 0x04, 0xe2, 0xc2, 0x47, 0x24, 0x83, 0x4d, 0x94,
  0x0d, 0x93, 0xa4, 0x3b, 0xda, 0x27, 0x4e, 0x10, 0xeb, 0x3b, 0x04, 0x8c,
  0x6d, 0xaa, 0xb0, 0x9f, 0x26, 0xb0, 0x94, 0xab, 0x93, 0xeb, 0x2b, 0xf8,
  0x63, 0x70, 0x7d, 0x71, 0xd5, 0x82, 0xcf, 0x5b, 0x31, 0x58, 0x13, 0x6e,
  0x9a, 0xa6, 0xab, 0xd0, 0x36, 0xd7, 0xb1, 0x3b, 0x29, 0x13, 0x9a, 0xd9,
  0x4e, 0x19, 0x84, 0x7b, 0x74, 0x50, 0x1f, 0xcb, 0x7e, 0x6d, 0xa1, 0x13,
  0x90, 0x0f, 0x2b, 0x17, 0xc6, 0x67, 0xbe, 0x9a, 0x42, 0x68, 0xc1, 0x48,
  0x8c, 0xb8, 0x62, 0xc3, 0xe8, 0x69, 0xb6, 0x60, 0xb4, 0xa1, 0xf3, 0xdf,
  0x36, 0x33, 0xd1, 0xd2, 0x90, 0x16, 0x4c, 0x5b, 0x4e, 0xcd, 0xe5, 0x16,
  0x5d, 0x0a, 0xa2, 0x85, 0xea, 0x57, 0x47, 0x01, 0x61, 0x3a, 0xd1, 0x3a,
  0x39, 0x90, 0x45, 0x2f, 0x79, 0x82, 0x7e, 0x41, 0x17, 0xda, 0xb0, 0x0b,
  0x2e, 0xf3, 0x79, 0xc2, 0x1e, 0x7e, 0x4e, 0xce, 0x55, 0xe6, 0xc4, 0xb2,
  0x85, 0xd1, 0xc9, 0xa3, 0x10, 0x2a, 0x92, 0x01, 0x92, 0xc4, 0x53, 0x5e,
  0x33, 0xb8, 0x32, 0xb9, 0x50, 0x07, 0x9f, 0x4b, 0x02, 0x96, 0x6a, 0x45,
  0x08, 0x9d, 0x6b, 0x3a, 0x2b, 0x07, 0x61, 0xb2, 0xce, 0xbc, 0xb7, 0x9b,
  0x4c, 0x06, 0xa1, 0x79, 0xc2, 0x9c, 0x85, 0xba, 0xa9, 0x2a, 0xc4, 0x0a,
  0x25, 0x5a, 0x69, 0x8e, 0x0d, 0xe9, 0x12, 0x6e, 0x17, 0xe9, 0x4b, 0x79,
  0x2a, 0x18, 0x56, 0xa3, 0x1a, 0x76, 0xac, 0xac, 0x32, 0xb4, 0x2d, 0x47,
  0xce, 0x21, 0x9a, 0x65, 0x93, 0xe9, 0xd6, 0xf4, 0x39, 0x9f, 0xcd, 0xaa,
  0xd2, 0x16, 0xd9, 0xbe, 0x7c, 0x1e, 0x26, 0x51, 0x6b, 0xf3, 0xc7, 0xb6,
  0x5e, 0x01, 0x4d, 0x0d, 0x86, 0xd2, 0xad, 0xac, 0x93, 0x21, 0xa7, 0x7e,
  0x3d, 0x21, 0x1c, 0xb5, 0xe8, 0x43, 0x26, 0xf8, 0x61, 0x19, 0xd8, 0x16,
  0x94, 0xff, 0x30, 0x36, 0x9b, 0x86, 0xb0, 0x7a, 0x98, 0xb6, 0xc5, 0x42,

  0x6b, 0x9c, 0xb3, 0x42, 0x4f, 0xc8, 0xfe, 0x3e, 0x50, 0x24, 0xf9, 0x90,
  0x29, 0x9b, 0x40, 0x25, 0x8d, 0x8c, 0x67, 0xed, 0x92, 0x51, 0xd5, 0x5c,
  0x29, 0x61, 0xfd, 0x78, 0x0b, 0xbd, 0x74, 0x0f, 0x8d, 0x59, 0x1a, 0x59,
  0x3f, 0x96, 0x17, 0x54, 0x0c, 0xb9, 0xc3, 0xb8, 0x3a, 0xea, 0x15, 0x10,
  0x70, 0xa3, 0x2c, 0x58, 0xa0, 0xcb, 0xc0, 0x46, 0xcb, 0x6c, 0x86, 0x39,
  0xe2, 0x75, 0xc0, 0x20, 0x55, 0x03, 0xfb, 0x2b, 0xb0, 0x0c, 0x5c, 0x7c,
  0xa1, 0x1a, 0x49, 0xd6, 0x51, 0x5b, 0xea, 0xab, 0x6b, 0xc5, 0x7f, 0x20,
  0x02, 0xbd, 0xc2, 0x23, 0x53, 0x5c, 0x62, 0xa5, 0xad, 0x34, 0x4b, 0x11,
  0x4f, 0x2e, 0x2f, 0x36, 0xb1, 0x56, 0x11, 0x91, 0x5b, 0xc1, 0xaa, 0xcc,
  0x67, 0xd4, 0xe0, 0x4d, 0x55, 0x37, 0xaf, 0xa1, 0x9e, 0xaa, 0x72, 0x8c,
  0xc4, 0x06, 0x83, 0xf7, 0x03, 0x55, 0x82, 0x02, 0xce, 0x9f, 0xb8, 0xe0,


  0x41, 0xfd, 0x50, 0x53, 0x50, 0xce, 0x08, 0xa1, 0x8c, 0xc7, 0xba, 0x3a,
  0xa6, 0x0d, 0xaa, 0xb5, 0xc5, 0x14, 0x9d, 0x2b, 0xa9, 0x7c, 0x94, 0x7f,
  0xdf, 0x52, 0xd1, 0xad, 0xed, 0xbd, 0x08, 0x22, 0x10, 0x76, 0xa5, 0xcb,

  0xd9, 0x21, 0xf5, 0x9b, 0x49, 0x96, 0x43, 0xfd, 0x6b, 0x65, 0x52, 0x2d,
  0x17, 0xbe, 0x9c, 0xb7, 0x18, 0x04, 0x66, 0x44, 0x0d, 0x8a, 0x3a, 0x53,
  0x44, 0x6c, 0x1d, 0xbb, 0xfd, 0x6e, 0x8f, 0x96, 0xe6, 0x6d, 0x24, 0x4d,

  0xc0, 0x93, 0xee, 0x6d, 0x78, 0x30, 0x2a, 0x5e, 0xb0, 0x4d, 0x7c, 0xd4,
  0x01, 0xfd, 0x62, 0xab, 0xc3, 0x70, 0x3b, 0x52, 0xbc, 0x2b, 0x65, 0x4f,
  0xfa, 0x36, 0xec, 0x8b, 0x33, 0x5f, 0xff, 0xce, 0x68, 0x3d, 0x8a, 0x14,
  0xae, 0xe3, 0xe9, 0xac, 0x7f, 0xc8, 0xd2, 0x07, 0xba, 0xbf, 0x1b, 0x9f,
  0xb5, 0x2e, 0x7d, 0xc5, 0xac, 0x3a, 0xdb, 0xaf, 0x76, 0xfa, 0xdb, 0x2f,
  0x3e, 0xef, 0x6f, 0x53, 0x3f, 0x73, 0x67, 0x6e, 0xb6, 0xef, 0xb6, 0x33,
  0x50, 0xa0, 0xab, 0x7b, 0xd4, 0x8e, 0xeb, 0xce, 0x5f, 0x98, 0x3f, 0xf6,
  0xf1, 0xb9, 0x3e, 0xf7, 0x56, 0xf3, 0xbe, 0x31, 0x07, 0x9d, 0x26, 0xcd,
  0xbc, 0x38, 0x48, 0xcf, 0x66, 0x15, 0x31, 0x2d, 0x2e, 0x52, 0x24, 0x23,
  0xc5, 0x5a, 0x76, 0xf6, 0x49, 0xdb, 0xc2, 0x9a, 0x36, 0x57, 0x74, 0x3b,
  0xc3, 0x33, 0x52, 0x96, 0x3e, 0x12, 0x35, 0xd2, 0x72, 0x75, 0xf3, 0x7d,
  0x8f, 0x6d, 0xfe, 0x62, 0xab, 0x0f, 0x81, 0xbc, 0xcc, 0xa5, 0x6b, 0x82,
  0x35, 0x12, 0xd0, 0x5f, 0x13, 0x2b, 0x4e, 0xa0, 0xbf, 0xf8, 0x41, 0xd5,
  0xb8, 0x4d, 0x40, 0xdc, 0x15, 0x32, 0x04, 0x81, 0x67, 0x2b, 0x71, 0x5c,
  0x3c, 0x09, 0x1a, 0xd9, 0xa0, 0x05, 0x34, 0x40, 0xfd, 0x0c, 0xd8, 0x1e,
  0x33, 0x69, 0x1d, 0x0e, 0xdf, 0xf9, 0xf3, 0x9f, 0x2d, 0x47, 0x1a, 0x50,
  0x16, 0x0c, 0x75, 0x74, 0xda, 0x27, 0xc0, 0x6e, 0x8e, 0x55, 0x73, 0x6f,

  0x98, 0xce, 0xc1, 0x5f, 0xc9, 0x39, 0xfc, 0x53, 0xef, 0xaf, 0xf0, 0xcf,
  0x9f, 0x3a, 0x7a, 0xa9, 0x19, 0x9c, 0xd1, 0x16, 0x8c, 0x58, 0x10, 0x5c,
  0x3a, 0xa0, 0x6e, 0x54, 0x6f, 0x4e, 0x4e, 0x9a, 0xc1, 0xf5, 0xf1, 0x25,
  0x5f, 0xc6, 0x82, 0xc3, 0xde, 0x44, 0xcd, 0xc8, 0x87, 0x48, 0xad, 0x47,
  0x16, 0x4e, 0x7d, 0x95, 0x98, 0x4e, 0xcc, 0x5e, 0x3a, 0xaf, 0x74, 0x6d,
  0x52, 0xc3, 0x3d, 0x73, 0x80, 0x18, 0xf4, 0xdb, 0x29, 0xfa, 0x57, 0x18,
  0x98, 0x04, 0xf8, 0xae, 0x2a, 0xd2, 0xd2, 0x37, 0x1e, 0xe1, 0x1d, 0x81,
  0x0d, 0x98, 0xeb, 0x70, 0x0f, 0x53, 0xea, 0x46, 0x02, 0x82, 0xce, 0xb5,
  0x11, 0x95, 0x20, 0xea, 0xc2, 0x36, 0xc0, 0x46, 0x29, 0xb7, 0x2d, 0xd2,
  0xf2, 0x16, 0xd7, 0x27, 0x65, 0x3e, 0x4e, 0xae, 0x10, 0xce, 0xe7, 0x33,
  0xa3, 0xf5, 0x3d, 0x2a, 0x70, 0x99, 0x29, 0xdf, 0x76, 0x76, 0xd6, 0x4a,
  0x07, 0x3d, 0x76, 0x85, 0x23, 0x0e, 0x82, 0x2f, 0xca, 0x63, 0x45, 0xf2,
  0x0c, 0x4c, 0x50, 0x49, 0x85, 0xb9, 0x04, 0x3d, 0xd7, 0x90, 0x86, 0x03,
  0xd0, 0x87, 0xc0, 0x26, 0x48, 0x2c, 0x28, 0xfd, 0x36, 0x9a, 0x52, 0x0b,
  0xfb, 0x94, 0xa1, 0xa3, 0x98, 0x41, 0x02, 0x0d, 0xca, 0x25, 0x75, 0x4e,
  0xc4, 0xf2, 0x89, 0x02, 0xa6, 0x31, 0xee, 0x2a, 0x42, 0x0b, 0xdf, 0x0c,
  0x0c, 0xf2, 0xaa, 0x4e, 0xf7, 0x59, 0xd0, 0x56, 0xa0, 0x8b, 0x66, 0x95,
  0xd1, 0x19, 0xfb, 0xd4, 0x71, 0xf3, 0x69, 0xd7, 0xf1, 0x4f, 0xe0, 0xd6,
  0xda, 0x57, 0xf3, 0x3e, 0x43, 0xcf, 0x12, 0xb5, 0x2d, 0x6d, 0x8a, 0x76,
  0x9c, 0xfe, 0x3c, 0x04, 0xd4, 0xee, 0x08, 0xd5, 0x9d, 0x2d, 0xdf, 0x95,
  0x52, 0xde, 0xa6, 0xbc, 0xc9, 0xbd, 0x74, 0xf1, 0xf4, 0x06, 0x2a, 0xd8,
  0x23, 0x1e, 0x69, 0x8d, 0xb3, 0x18, 0x09, 0x53, 0x2e, 0xa7, 0x53, 0x42,
  0x46, 0xf2, 0x33, 0xf3, 0xa8, 0x62, 0x51, 0x0a, 0x07, 0xa4, 0xab, 0x0d,
  0x30, 0x72, 0x9a, 0xb9, 0xee, 0x86, 0x2d, 0x8b, 0x14, 0x86, 0x53, 0xda,
  0xfe, 0x54, 0xad, 0x00, 0x0a, 0xd8, 0xd1, 0x54, 0xae, 0xb7, 0xd5, 0x64,
  0x8a, 0xa4, 0xa7, 0x13, 0x6d, 0xf2, 0x41, 0x4c, 0x0d, 0xf2, 0x32, 0x60,
  0x99, 0x23, 0x92, 0xaf, 0xa1, 0x9d, 0xf7, 0xad, 0x74, 0x37, 0xa2, 0x87,
  0x0d, 0xbb, 0xa4, 0x31, 0x28, 0x5b, 0x3a, 0x11, 0x28, 0x57, 0xc6, 0xe2,
  0x2c, 0x0c, 0xb6, 0x21, 0xeb, 0x95, 0xc2, 0x8f, 0x9a, 0x52, 0x73, 0x42,
  0xdb, 0xb1, 0xca, 0x2f, 0x60, 0x59, 0xa1, 0xab, 0x2d, 0xed, 0xf5, 0x77,
  0xbc, 0x83, 0x2d, 0x67, 0xbd, 0xd1, 0x68, 0xd4, 0x23, 0x3d, 0xe0, 0x90,
  0x95, 0x93, 0x4d, 0x51, 0x0e, 0x5a, 0x7c, 0x06, 0x83, 0x44, 0xf6, 0xfb,
  0xf8, 0xf8, 0x58, 0xf4, 0x98, 0xeb, 0x9b, 0x86, 0x46, 0x61, 0x60, 0x07,
  0x45, 0xa3, 0x0a, 0x35, 0xbb, 0x2d, 0x6f, 0x96, 0x15, 0x12, 0x2b, 0x2b,
  0xf2, 0xca, 0x7a, 0x4d, 0x8d, 0x6c, 0x03, 0x1b, 0x3a, 0x87, 0x03, 0xe9,
  0xda, 0xcc, 0x44, 0x18, 0xdb, 0x3b, 0x9a, 0x05, 0xb7, 0xc1, 0xa2, 0x17,
  0x65, 0xec, 0x66, 0xa3, 0x6d, 0x9e, 0xaa, 0x0b, 0xe0, 0xa8, 0x13, 0x2c,
  0x43, 0x99, 0x6c, 0x3a, 0x0a, 0x7d, 0x36, 0x4e, 0x25, 0x03, 0x2c, 0x96,
  0x6f, 0x35, 0xc7, 0x7e, 0xe2, 0x3c, 0x64, 0xab, 0xeb, 0x47, 0xf2, 0xa2,
  0xf5, 0x48, 0x82, 0x9b, 0x8f, 0x56, 0x15, 0x6e, 0xfb, 0xfa, 0x31, 0xe1,
  0x4a, 0x1f, 0xcb, 0x85, 0x38, 0xbe, 0xc1, 0xfc, 0xad, 0x19, 0x1e, 0x0e,
  0x4c, 0xb9, 0x64, 0x26, 0x20, 0xf2, 0x63, 0x30, 0x38, 0xdb, 0xbc, 0x3e,
  0x1b, 0x78, 0x19, 0xef, 0x8f, 0xe8, 0x32, 0x26, 0xd7, 0x70, 0xdd, 0xe5,
  0xc9, 0x5b, 0x44, 0x2d, 0x02, 0xf2, 0x49, 0x9d, 0xc2, 0xf9, 0x2b, 0x41,
  0xd4, 0xab, 0x65, 0xa6, 0xc5, 0x30, 0x46, 0x76, 0x67, 0x49, 0x46, 0x50,
  0x22, 0x28, 0xc2, 0xe9, 0x06, 0x50, 0x42, 0x6c, 0x19, 0x9d, 0x1f, 0x5d,
  0x63, 0x79, 0x4b, 0x25, 0x29, 0x1e, 0xe8, 0x02, 0xf2, 0x3d, 0xe3, 0xf7,
  0x06, 0x9d, 0x86, 0xa2, 0x36, 0xf1, 0xc8, 0xb6, 0xc4, 0x52, 0x65, 0x9d,
  0x8f, 0xaf, 0x54, 0xc2, 0x5b, 0xb5, 0xfd, 0xb0, 0xa5, 0x22, 0x1d, 0x9a,
  0x34, 0xdf, 0x3c, 0x8d, 0xed, 0xe0, 0x69, 0xf0, 0x06, 0x84, 0xaf, 0xc3,
  0x95, 0xb0, 0x72, 0xdd, 0x68, 0xc1, 0x72, 0xd1, 0xe9, 0xcf, 0xf2, 0x69,
  0x8a, 0x9e, 0x40, 0x3a, 0x2f, 0x37, 0xf0, 0xe6, 0xb9, 0x49, 0x79, 0x77,
  0x4a, 0x2e, 0xc5, 0xa9, 0xc3, 0x98, 0xf3, 0x15, 0x41, 0x39, 0x61, 0xf6,
  0xd4, 0x74, 0xe3, 0xd3, 0x12, 0x48, 0xbf, 0xc2, 0x90, 0x10, 0x54, 0xd3,
  0x11, 0x98, 0x08, 0x23, 0xcc, 0xfe, 0xa0, 0x72, 0xc0, 0xb2, 0x9e, 0x62,
  0x9b, 0xd6, 0xc0, 0x59, 0xd5, 0x43, 0x5a, 0xfa, 0xb1, 0x0a, 0xd2, 0x14,
  0x64, 0x85, 0x2b, 0xfd, 0xf0, 0x2f, 0x6a, 0xc2, 0xe3, 0x1b, 0xb4, 0xc8,
  0xa6, 0x9e, 0xd0, 0x35, 0x58, 0x44, 0x01, 0xfc, 0x57, 0x52, 0x51, 0x09,
  0xe4, 0x45, 0x3a, 0xdc, 0xbb, 0x8d, 0x3d, 0x56, 0xf5, 0x70, 0xe8, 0x36,
  0x9b, 0x5a, 0x32, 0x36, 0x6d, 0xbd, 0x65, 0x41, 0x0d, 0x20, 0x4e, 0x13,
  0x7d, 0x1b, 0xc3, 0x7d, 0x73, 0x62, 0x9b, 0xe8, 0x34, 0x50, 0xe4, 0x6a,
  0x0d, 0x76, 0x38, 0x0e, 0x89, 0x31, 0xa8, 0x7b, 0xec, 0xc5, 0x7d, 0xdf,
  0x62, 0xe4, 0xb0, 0x12, 0x7b, 0x6d, 0x7b, 0x72, 0xf0, 0xfd, 0x60, 0x2d,


  0x30, 0x31, 0x59, 0xaa, 0x08, 0x40, 0xa6, 0x01, 0xfa, 0x7f, 0x5f, 0xb3,
  0x3d, 0xe2, 0xfa, 0x01, 0x3f, 0x84, 0x4a, 0x07, 0x1f, 0x46, 0xde, 0x86,
  0x9e, 0xba, 0x76, 0xc2, 0xf6, 0xbb, 0x7e, 0x93, 0x27, 0x5e, 0xde, 0xea,

  0xf9, 0xbc, 0x3b, 0x39, 0x7a, 0xd3, 0x8a, 0x62, 0xf2, 0x29, 0xf0, 0xe5,
  0xad, 0x57, 0x73, 0x98, 0x70, 0x2f, 0xa0, 0xa5, 0x3a, 0x4a, 0xe8, 0x74,
  0x94, 0x50, 0x19, 0xab, 0x26, 0x21, 0xf0, 0x16, 0xbc, 0x21, 0xad, 0x2d,
  0x71, 0x5a, 0x3d, 0x23, 0x6e, 0xf6, 0x81, 0x78, 0xac, 0x51, 0x53, 0xe6,
  0xda, 0x2a, 0x87, 0x90, 0xa7, 0x44, 0xc8, 0xb3, 0x7c, 0x98, 0x4f, 0x26,
  0x2b, 0xa4, 0x3b, 0x83, 0x04, 0x53, 0x0d, 0x14, 0x13, 0x4c, 0x07, 0xb7,
  0x11, 0xdf, 0x1b, 0xe2, 0xec, 0x09, 0xbb, 0xa2, 0xe8, 0x48, 0x61, 0x02,
  0xa9, 0xe4, 0xde, 0xdd, 0xa8, 0x17, 0xa6, 0xab, 0xcd, 0xa0, 0x26, 0x1e,
  0x15, 0xe6, 0xb3, 0x3b, 0x46, 0xd3, 0x84, 0x4c, 0x7b, 0x97, 0x32, 0xfa,
  0xc7, 0x3f, 0xff, 0xfa, 0x53, 0xa0, 0xc7, 0x0d, 0x3a, 0xfc, 0x6e, 0xb8,
  0xb2, 0x10, 0x9e, 0x9e, 0x0b, 0x76, 0x97, 0xe9, 0x16, 0xc2, 0x89, 0x26,

  0x1c, 0xcf, 0xa8, 0xca, 0x64, 0x36, 0xe9, 0x3b, 0x39, 0x95, 0xbe, 0x58,
  0x44, 0x13, 0x4a, 0x3f, 0x48, 0x3d, 0x4b, 0xb1, 0x14, 0x9c, 0xcb, 0x77,
  0xb1, 0x7f, 0x03, 0x35, 0x8a, 0xb3, 0x29, 0xd3, 0x06, 0xdf, 0x9d, 0x4f,
  0xc2, 0x43, 0x11, 0xb3, 0xcd, 0xdc, 0x9a, 0xc1, 0xf4, 0x0f, 0x57, 0xa7,
  0xc6, 0xd5, 0xe9, 0x72, 0xe5, 0x1b, 0xa0, 0xd4, 0xc7, 0x5e, 0xf2, 0x98,
  0x0c, 0x81, 0x4b, 0x94, 0x0a, 0xfc, 0xd0, 0x9b, 0x97, 0xd1, 0xe1, 0x1c,
  0x68, 0x3c, 0x6d, 0x81, 0xec, 0x78, 0x87, 0xaf, 0x45, 0xfa, 0x9a, 0x41,
  0xb1, 0x9e, 0xe6, 0x05, 0xec, 0xd0, 0x5c, 0xaa, 0x71, 0xa5, 0x24, 0xb9,
  0xee, 0xcc, 0x88, 0xa8, 0xc0, 0xc4, 0x73, 0x07, 0xdc, 0xed, 0x89, 0xc6,
  0x4d, 0x90, 0x9c, 0x0e, 0x5c, 0x24, 0x29, 0xeb, 0x4b, 0x50, 0x1e, 0x61,
  0xf6, 0x60, 0x64, 0xa3, 0xb5, 0x5e, 0x76, 0x85, 0xa4, 0x0a, 0x45, 0x13,
  0x0d, 0xc2, 0x08, 0x98, 0x32, 0x44, 0xb6, 0xb0, 0x80, 0xe9, 0xb8, 0x2b,
  0x32, 0xbd, 0xac, 0x5d, 0x0c, 0x50, 0x41, 0x46, 0xf1, 0xf7, 0x55, 0x17,
  0xc0, 0x6e, 0xd0, 0xc8, 0x66, 0xaf, 0x62, 0xc1, 0x46, 0xaa, 0x5d, 0xe6,
  0x5d, 0x4f, 0xac, 0x31, 0x95, 0xbd, 0x4b, 0x39, 0x8f, 0xc7, 0xa6, 0x90,
  0xde, 0x05, 0x90, 0xa5, 0x32, 0xc4, 0x18, 0xeb, 0x22, 0x93, 0x19, 0xb3,
  0x38, 0x49, 0xab, 0xb2, 0x63, 0x12, 0xc3, 0x6d, 0x02, 0xb5, 0x94, 0x98,
  0x22, 0xc0, 0xd5, 0xb0, 0xe2, 0xd0, 0xa7, 0xb2, 0x72, 0xf1, 0x3c, 0x04,
  0x63, 0xbd, 0xd7, 0x82, 0x9a, 0x36, 0x25, 0xb3, 0x5f, 0xec, 0x07, 0x82,
  0xcc, 0xa7, 0x0e, 0x92, 0x0c, 0x43, 0x82, 0x6f, 0x53, 0x7a, 0x05, 0xf2,

  0x10, 0x3e, 0xf0, 0x13, 0x39, 0xf0, 0xc6, 0x70, 0x18, 0x6b, 0x79, 0xb1,
  0xbf, 0xbf, 0xcf, 0xb1, 0x96, 0xce, 0x29, 0x7d, 0xf8, 0xea, 0xe4, 0xf8,
  0xe2, 0xfd, 0xfb, 0x93, 0xf3, 0x37, 0x27, 0x6f, 0x34, 0xe3, 0xc3, 0x59,
  0x89, 0xa5, 0x0e, 0x7f, 0x45, 0x98, 0x25, 0x08, 0xfb, 0xbc, 0xbd, 0xbf,
  0xd5, 0xdb, 0xd9, 0xdf, 0x8a, 0x80, 0x16, 0x63, 0x53, 0xa7, 0x16, 0xcf,
  0x62, 0xb4, 0x6f, 0x6f, 0x96, 0xa0, 0xaa, 0x21, 0xc0, 0x73, 0x85, 0x98,
  0x1b, 0xe4, 0x7a, 0x45, 0x6f, 0x4f, 0x52, 0xa1, 0x1d, 0x1d, 0xc8, 0x0c,
  0xe8, 0x77, 0x0c, 0x54, 0xa7, 0x0d, 0x58, 0x8a, 0xee, 0x43, 0x04, 0xba,
  0xb3, 0x85, 0x1f, 0xea, 0x47, 0x6f, 0x41, 0xfb, 0x98, 0xe4, 0x0f, 0x4c,
  0x8b, 0xc7, 0x37, 0xa0, 0x94, 0x26, 0x7e, 0xa8, 0xb2, 0xfe, 0x3e, 0xbe,
  0xbe, 0xcb, 0xaf, 0xff, 0x8e, 0x31, 0xfa, 0xfd, 0x57, 0x75, 0xc3, 0x12,
  0x2e, 0x32, 0xf5, 0x06, 0xd1, 0x92, 0xc4, 0x16, 0x28, 0xa9, 0x01, 0x9b,
  0xe3, 0xef, 0x8e, 0x2e, 0xf1, 0x69, 0x30, 0xcb, 0x2f, 0x7e, 0xf8, 0x8b,
  0x2d, 0xf3, 0xbc, 0xdb, 0xd6, 0x6c, 0x46, 0xa9, 0x64, 0xa5, 0x76, 0xac,
  0x99, 0x1f, 0xf4, 0xb6, 0xca, 0xac, 0x31, 0x08, 0x55, 0xc8, 0xd0, 0x0a,
  0x31, 0x03, 0x15, 0xb6, 0x8e, 0x3b, 0x25, 0xca, 0xa1, 0x15, 0xa5, 0x5c,
  0xf1, 0x50, 0x5d, 0x3f, 0xb0, 0x72, 0x9c, 0xc6, 0x43, 0xca, 0xdd, 0x7f,
  0xd2, 0x6c, 0xcc, 0xed, 0xc9, 0x6b, 0x8e, 0xd9, 0xaa, 0x58, 0x26, 0x21,
  0xaf, 0xe9, 0x4a, 0x8c, 0x1d, 0x02, 0x6e, 0x4a, 0xe7, 0x71, 0x91, 0xce,

  0x1e, 0x95, 0xc0, 0xef, 0xb9, 0x63, 0x32, 0xa7, 0x4a, 0x51, 0xec, 0xcb,
  0x42, 0x8a, 0xe7, 0x5e, 0xda, 0xa9, 0xe9, 0xe8, 0x83, 0x44, 0x2c, 0x18,
  0x60, 0x7c, 0xae, 0xbc, 0x59, 0x2b, 0x51, 0x91, 0xea, 0xf6, 0xbf, 0x51,
  0x28, 0xda, 0xa0, 0x47, 0xa3, 0xb7, 0xa7, 0x67, 0x27, 0x1b, 0xd1, 0xdb,
  0xa4, 0x92, 0x12, 0x27, 0xcd, 0x30, 0x46, 0x91, 0xff, 0x07, 0x52, 0xb0,
  0x0c, 0x34, 0xad, 0xd4, 0x08, 0x07, 0x73, 0xc1, 0xc4, 0x07, 0x47, 0xca,
  0x86, 0xd6, 0x4b, 0xf1, 0xe1, 0xd0, 0x12, 0x31, 0x1e, 0xa7, 0xb9, 0x65,
  0x1a, 0xdf, 0x94, 0x93, 0x0f, 0xe4, 0xdd, 0x2a, 0xce, 0x43, 0xdf, 0xc1,
  0xbd, 0xcc, 0xdd, 0x14, 0x02, 0x9c, 0xb4, 0xe4, 0x3c, 0x6b, 0xbc, 0x38,
  0x2d, 0x17, 0x33, 0xe4, 0x06, 0x41, 0x94, 0x97, 0x59, 0x62, 0x2b, 0xfb,
  0x88, 0xf2, 0xc1, 0x7a, 0x30, 0x89, 0x98, 0xcc, 0x50, 0x71, 0xbd, 0xce,
  0xc6, 0xbd, 0xd3, 0x8d, 0xc3, 0xb4, 0x13, 0xfe, 0x73, 0xf3, 0xab, 0x55,
  0x98, 0x69, 0x27, 0xd4, 0x39, 0x5d, 0xde, 0x20, 0x8a, 0xa2, 0x5e, 0xae,
  0x1a, 0x33, 0x54, 0xb5, 0xb3, 0x46, 0x09, 0x01, 0xf5, 0x95, 0x7c, 0x77,
  0x6a, 0xee, 0xfe, 0x45, 0xba, 0xf5, 0xa9, 0xfe, 0x80, 0x25, 0xe0, 0x56,

  0xba, 0x70, 0xaf, 0x76, 0x93, 0x65, 0x1c, 0x85, 0x1a, 0x63, 0x32, 0x57,
  0x96, 0xc6, 0xec, 0xac, 0x4d, 0x61, 0xb6, 0xbe, 0x41, 0x24, 0xd4, 0xf9,
  0xe2, 0x63, 0x37, 0xd2, 0xc2, 0x80, 0x7c, 0x29, 0x5c, 0x45, 0x56, 0x06,
  0x5d, 0xfe, 0x52, 0xde, 0x26, 0xa1, 0x3d, 0x6a, 0xac, 0xcd, 0x4e, 0x19,

  0xd6, 0xa1, 0x97, 0xa8, 0xd0, 0x71, 0x65, 0x17, 0x75, 0xa3, 0x29, 0x18,
  0x35, 0x39, 0xa0, 0x2d, 0xc9, 0xd7, 0x5d, 0x16, 0xd4, 0xd4, 0xd9, 0xdd,
  0xcf, 0xd4, 0x2d, 0x51, 0x5f, 0x5d, 0x84, 0xbd, 0x23, 0x9d, 0x12, 0xbb,
  0x3f, 0x61, 0xd5, 0xfb, 0xe8, 0x36, 0xa5, 0x42, 0xc4, 0x25, 0xa9, 0x73,
  0x71, 0xa6, 0xf5, 0x56, 0x3c, 0x4d, 0xd3, 0xed, 0x03, 0xc8, 0xad, 0x4f,
  0xe5, 0x0c, 0x61, 0xed, 0x93, 0x81, 0x2b, 0xd1, 0x69, 0x80, 0x58, 0xdc,
  0x3a, 0x9f, 0x19, 0x55, 0x34, 0x98, 0xdb, 0xa2, 0x8a, 0x1a, 0xd6, 0x43,
  0x92, 0xae, 0x18, 0xe8, 0x0e, 0x00, 0xd7, 0x18, 0x81, 0x38, 0xd0, 0xd7,
  0x76, 0x2f, 0x10, 0x63, 0x6b, 0x45, 0xc2, 0x0d, 0x4a, 0xfa, 0x60, 0x89,
  0xce, 0xb1, 0x24, 0x40, 0x51, 0xfc, 0x71, 0xc9, 0xb2, 0x3d, 0xc0, 0xdb,
  0xa6, 0xe9, 0x5d, 0x28, 0xcb, 0x82, 0x21, 0xf3, 0x68, 0x62, 0x94, 0xa5,
  0x61, 0x41, 0xeb, 0x34, 0xed, 0xd8, 0x84, 0xb4, 0xd9, 0x2f, 0x8d, 0xb8,
  0x70, 0xb2, 0xb3, 0xde, 0x0d, 0x9e, 0xa1, 0xc6, 0x8a, 0x80, 0x5e, 0x19,
  0xb7, 0x69, 0x7f, 0x07, 0x9a, 0xcf, 0x41, 0xc7, 0xf4, 0xd5, 0x20, 0xbf,
  0x2a, 0x71, 0xc7, 0x1a, 0xe5, 0x90, 0x91, 0x91, 0x79, 0xb5, 0x74, 0x0c,
  0x45, 0x20, 0x9a, 0x7b, 0xa5, 0x8c, 0xcb, 0x14, 0xdc, 0xf8, 0x69, 0xcd,
  0xa6, 0x00, 0x86, 0x2b, 0x46, 0xfd, 0xbe, 0x21, 0x38, 0xa5, 0x1f, 0x7a,
  0xc7, 0xf4, 0xf1, 0xde, 0x3b, 0x1a, 0xee, 0x8b, 0x8e, 0x71, 0xf8, 0x36,
  0x7f, 0x75, 0xe0, 0xb7, 0x8b, 0xb7, 0x7e, 0xc3, 0x06, 0x48, 0x26, 0x25,
  0x92, 0xc8, 0x04, 0xb9, 0x13, 0x23, 0x5c, 0x91, 0x4d, 0x3d, 0x70, 0x8a,
  0xa6, 0x94, 0x7e, 0xaf, 0x65, 0x93, 0x72, 0x00, 0x52, 0x64, 0x41, 0x60,
  0x3a, 0xe3, 0x5e, 0x3e, 0xe9, 0x51, 0x86, 0x34, 0x42, 0xe7, 0x61, 0x32,
  0x92, 0x73, 0xeb, 0x08, 0x20, 0x84, 0x3a, 0x30, 0x8c, 0xc7, 0x21, 0xd5,
  0x9c, 0x0b, 0x19, 0x05, 0x20, 0xd1, 0xe1, 0x8e, 0x72, 0x90, 0x07, 0xe2,
  0x95, 0xa7, 0xd7, 0x4d, 0x2f, 0x42, 0x44, 0xe6, 0x92, 0x82, 0x08, 0xcf,
  0x9f, 0x46, 0xe5, 0x11, 0x5d, 0xd6, 0xde, 0x69, 0xd5, 0x64, 0xc3, 0xcd,
  0xd9, 0x95, 0x4b, 0xfe, 0xe7, 0xe5, 0x82, 0x54, 0x56, 0xc4, 0x6d, 0xf6,

  0xbc, 0x2f, 0x5a, 0x24, 0x42, 0x88, 0xcc, 0x20, 0xfc, 0xf7, 0xfb, 0x5b,
  0x5d, 0x2f, 0x50, 0x5f, 0x91, 0xb1, 0x9f, 0xd9, 0x2c, 0x21, 0x78, 0x98,
  0x78, 0x64, 0x2f, 0x54, 0x5d, 0x5b, 0x56, 0x8f, 0xc8, 0xaf, 0x4d, 0x31,
  0x2d, 0xa5, 0x16, 0xdb, 0xba, 0x07, 0x9b, 0xd3, 0x43, 0x5b, 0x28, 0x6c,
  0x93, 0xab, 0x68, 0x43, 0x40, 0xd7, 0x92, 0xb1, 0xf5, 0x55, 0xaf, 0xd9,
  0x2c, 0xd9, 0xf4, 0xbc, 0x74, 0xab, 0x37, 0x9c, 0xee, 0x95, 0xad, 0x9e,
  0x26, 0xc2, 0x94, 0x3e, 0xd2, 0x06, 0x68, 0x3d, 0xd8, 0x54, 0xe9, 0xeb,
  0xdd, 0x4b, 0xf0, 0x87, 0x0c, 0xd8, 0xa1, 0xf0, 0xd1, 0x65, 0xfb, 0x9e,
  0x31, 0xd4, 0xfa, 0x4b, 0xdc, 0x31, 0xd3, 0x60, 0x46, 0x3b, 0xa9, 0x59,
  0xf9, 0x40, 0x64, 0xeb, 0xdc, 0xa5, 0xe6, 0x9e, 0x21, 0x57, 0x41, 0x4e,
  0x90, 0x69, 0xce, 0x77, 0x4c, 0xfa, 0xca, 0x63, 0x6b, 0x6a, 0x71, 0x4b,
  0xce, 0x2f, 0x5d, 0x9b, 0xb7, 0xa8, 0xd8, 0xf7, 0xce, 0xe1, 0x18, 0x0e,
  0xa2, 0xff, 0xc8, 0x13, 0xae, 0x59, 0x7d, 0xa2, 0x64, 0xf5, 0xfb, 0xa3,

  0xab, 0xf3, 0xd3, 0xf3, 0x6f, 0x0e, 0x0c, 0x8f, 0x43, 0x7e, 0xd7, 0xec,
  0x6c, 0x64, 0x78, 0x37, 0xfd, 0x96, 0xf1, 0xbb, 0xd1, 0xfb, 0xd3, 0xd6,
  0x69, 0x01, 0x63, 0x99, 0xc4, 0x9e, 0xd9, 0x79, 0x59, 0x24, 0x1c, 0x17,
  0x61, 0x5b, 0x54, 0x2b, 0x27, 0xa4, 0x5c, 0x93, 0x44, 0x25, 0xb5, 0xef,
  0x0c, 0x00, 0x36, 0xf4, 0xce, 0xf0, 0x4c, 0x66, 0x79, 0xad, 0x53, 0x20,
  0x12, 0xe5, 0x8c, 0x8e, 0x3f, 0x77, 0x29, 0x80, 0x2d, 0x66, 0xca, 0x7e,
  0x45, 0x5b, 0x2a, 0x0f, 0x34, 0x93, 0x25, 0x33, 0x8f, 0xd3, 0x70, 0xc4,
  0xcf, 0x61, 0xba, 0xa4, 0x49, 0xab, 0xa3, 0x92, 0x8e, 0xac, 0x4c, 0xc9,
  0xd9, 0x60, 0xb6, 0x44, 0x73, 0xbc, 0x02, 0x7e, 0x10, 0x69, 0x32, 0x10,
  0x2f, 0xf9, 0xbe, 0x30, 0x3a, 0x99, 0xfc, 0xd4, 0xd6, 0x65, 0x98, 0x1d,
  0x78, 0x76, 0x9a, 0xb3, 0xcd, 0x73, 0x66, 0x7d, 0x9e, 0x0d, 0x44, 0x87,
  0x65, 0xc1, 0x9f, 0x28, 0x4a, 0x82, 0x38, 0x24, 0xb3, 0xc4, 0x56, 0x25,
  0x19, 0x5d, 0xe7, 0x86, 0x75, 0x9d, 0xd9, 0xc2, 0x03, 0xdb, 0xc3, 0x34,
  0xf3, 0x08, 0x7f, 0xa3, 0x4e, 0x1d, 0x0c, 0x5e, 0x91, 0x04, 0x56, 0xb3,
  0xa4, 0x06, 0x6e, 0x67, 0x1a, 0x04, 0x33, 0x53, 0xf7, 0xe5, 0x29, 0xe2,
  0x3d, 0x25, 0x8c, 0x37, 0xe6, 0x56, 0xc0, 0xc0, 0xd7, 0x61, 0x8f, 0x17,
  0xcb, 0xe1, 0x7c, 0xbc, 0x1f, 0x1d, 0xc2, 0x7f, 0x3c, 0x25, 0x8b, 0x72,
  0x46, 0x07, 0xc7, 0xa0, 0x68, 0x61, 0x82, 0x0b, 0xc3, 0xe0, 0xa6, 0x04,
  0x83, 0x6b, 0x7a, 0x09, 0xed, 0xee, 0xc0, 0x4c, 0x1f, 0x62, 0x85, 0xb6,
  0x04, 0x8d, 0x70, 0x9a, 0x56, 0x9c, 0xa7, 0xd7, 0x82, 0x1b, 0xe4, 0xa4,
  0x36, 0xd0, 0x99, 0x6f, 0xef, 0x7c, 0x1e, 0x61, 0xf1, 0xc1, 0xfb, 0x37,
  0xfb, 0xd1, 0xe8, 0x26, 0x19, 0xdd, 0x96, 0xcb, 0xb9, 0xb2, 0x63, 0xdc,
  0x53, 0x30, 0x0f, 0x70, 0x9e, 0x1e, 0xe2, 0x03, 0x4c, 0x7c, 0x96, 0x8e,
  0xb0, 0xf4, 0xaf, 0x5b, 0x8b, 0x4e, 0x4d, 0x34, 0x3a, 0xe5, 0xd8, 0xa1,
  0x46, 0x6c, 0x50, 0xba, 0x00, 0xe7, 0xd4, 0x04, 0x82, 0x17, 0xb0, 0x07,
  0xf0, 0x71, 0x04, 0xc4, 0x06, 0xbd, 0x7c, 0xa5, 0xcb, 0xf6, 0x65, 0xdd,
  0xeb, 0x8d, 0x17, 0x7b, 0xab, 0xff, 0xaa, 0x05, 0xff, 0xba, 0xd6, 0xa0,
  0x09, 0x6b, 0x95, 0x4c, 0xb5, 0x1d, 0xd9, 0x03, 0xa8, 0xe5, 0xe3, 0x24,
  0x11, 0x10, 0x4a, 0xc3, 0x78, 0xde, 0xc7, 0xf1, 0xc9, 0x4d, 0x7c, 0x42,
  0x3a, 0x8c, 0x52, 0x16, 0x5b, 0x42, 0x98, 0x14, 0x4c, 0x5a, 0x94, 0x26,

  0x64, 0xa2, 0x80, 0x06, 0xe1, 0x8c, 0x42, 0xb0, 0xbe, 0xd2, 0x66, 0xea,
  0xbf, 0xd5, 0x65, 0x63, 0x59, 0x8c, 0x94, 0xd0, 0x3a, 0x68, 0x0e, 0x5a,
  0x4b, 0x48, 0x78, 0x6d, 0x68, 0x53, 0x78, 0x44, 0x66, 0xbe, 0xcb, 0x71,
  0x69, 0x7b, 0x1c, 0x25, 0xa3, 0x11, 0x92, 0xf3, 0x1c, 0xb1, 0xa0, 0xd9,
  0xa2, 0xce, 0xef, 0xb3, 0x69, 0x81, 0xfe, 0x11, 0x2a, 0x0a, 0x8b, 0x43,
  0xb1, 0x8c, 0x10, 0x82, 0xa9, 0x1d, 0x1b, 0x2c, 0xae, 0x17, 0xc8, 0xe9,
  0xcd, 0xae, 0x60, 0xbe, 0x3d, 0x07, 0xb1, 0xb9, 0x62, 0x99, 0x6d, 0x76,
  0xe7, 0x88, 0xb6, 0xba, 0x72, 0x4c, 0xdb, 0xfd, 0xad, 0xe7, 0x1c, 0x13,
  0x12, 0x51, 0xed, 0x74, 0xe0, 0x3d, 0x57, 0x4b, 0xd6, 0x24, 0x72, 0x20,
  0xf6, 0x96, 0xec, 0x3b, 0x84, 0x5e, 0x66, 0xff, 0x55, 0x32, 0xae, 0x0d,
  0xb5, 0x92, 0xe7, 0xb8, 0x2d, 0x3c, 0x79, 0xba, 0xdb, 0x12, 0x86, 0xc1,
  0x7f, 0xed, 0x34, 0x89, 0x0e, 0x7e, 0xfd, 0x2b, 0x57, 0xb3, 0xfd, 0x0b,
  0x4a, 0x35, 0xb6, 0xba, 0xf6, 0x7b, 0x5b, 0xa6, 0x31, 0x0e, 0x4f, 0xc8,
  0xde, 0x8b, 0xc6, 0x70, 0x7e, 0xe3, 0x13, 0x7a, 0x01, 0xcb, 0x5d, 0xf2,
  0xa2, 0x87, 0x2a, 0x3b, 0x1c, 0x96, 0xa7, 0x42, 0x05, 0xa7, 0x0f, 0xc7,
  0x5b, 0xa2, 0x62, 0x8b, 0x3a, 0x2d, 0x11, 0x27, 0xc5, 0x8c, 0x18, 0xd5,
  0xcc, 0x98, 0xf4, 0xc1, 0xb4, 0x7d, 0x22, 0x90, 0x1d, 0x47, 0x45, 0xa7,
  0x1f, 0xe0, 0xa6, 0x46, 0x1f, 0x16, 0x44, 0x83, 0x7d, 0xc2, 0x54, 0x36,
  0xed, 0x5f, 0x68, 0x76, 0x51, 0xdb, 0xec, 0x2c, 0xf6, 0x97, 0xc6, 0xe4,
  0xa9, 0x58, 0xb3, 0xd4, 0xef, 0x94, 0x58, 0x05, 0x8b, 0x2a, 0xbf, 0x34,

  0x0a, 0xe5, 0xb6, 0x28, 0x76, 0x92, 0x21, 0x58, 0x5f, 0xbd, 0x58, 0xa0,
  0x6a, 0xca, 0x28, 0xb5, 0x6c, 0x7a, 0x6c, 0x92, 0xc1, 0xea, 0xbe, 0x76,


  0x6e, 0xb5, 0x4d, 0x4a, 0x02, 0xfe, 0x15, 0xf2, 0x85, 0x64, 0x21, 0x60,
  0x3f, 0x2f, 0x00, 0x14, 0x3c, 0x8e, 0x67, 0x37, 0xc2, 0xf1, 0xf0, 0xbb,
  0x1a, 0xad, 0x8c, 0x78, 0x2d, 0xfd, 0xe7, 0x11, 0xf7, 0x56, 0x37, 0x38,
  0x3b, 0xa4, 0x36, 0x97, 0xf8, 0x6b, 0x60, 0x78, 0xaf, 0x02, 0xc4, 0xf5,
  0xab, 0xee, 0xc2, 0xce, 0xaa, 0x30, 0xa8, 0x7f, 0x07, 0x77, 0xfb, 0xfa,
  0xb5, 0xb6, 0xbd, 0xf2, 0xd8, 0x59, 0x6b, 0x13, 0xa1, 0xe7, 0xed, 0x56,
  0xcb, 0xde, 0x98, 0xbd, 0x6b, 0xec, 0x56, 0xdb, 0xd1, 0xea, 0x55, 0xf5,
  0xa1, 0xf7, 0xc3, 0x57, 0x75, 0xb7, 0xc5, 0xe7, 0x62, 0x54, 0xd4, 0x86,
  0xd3, 0x13, 0x7d, 0x66, 0x45, 0x3a, 0x27, 0x00, 0xbc, 0x7e, 0xf4, 0xc6,
  0xe6, 0xb4, 0x10, 0xf0, 0x9e, 0x67, 0xac, 0x8e, 0x97, 0x2d, 0x99, 0x1f,
  0xab, 0x4f, 0x6b, 0x57, 0x92, 0x7a, 0x6c, 0xe2, 0x02, 0xc9, 0x74, 0x29,
  0xca, 0xca, 0x3d, 0x40, 0x4c, 0xf1, 0xdc, 0x68, 0xf8, 0x52, 0xc2, 0x74,
  0x98, 0x9a, 0x25, 0x01, 0x18, 0xda, 0xfa, 0x5d, 0x37, 0x66, 0x6e, 0xd4,
  0x6b, 0x2c, 0x21, 0x08, 0x79, 0x8a, 0xe8, 0x8b, 0xa6, 0xf3, 0x01, 0x4a,
  0x44, 0x55, 0x28, 0xe1, 0x23, 0x77, 0x69, 0x1c, 0x1d, 0xcd, 0xaa, 0xde,

  0xe0, 0xbb, 0x11, 0x47, 0xd8, 0x6a, 0xe1, 0x29, 0xaf, 0xd5, 0x37, 0x79,
  0x55, 0xa8, 0x4b, 0x63, 0x29, 0x49, 0xab, 0x69, 0x31, 0x5a, 0xce, 0x09,
  0x03, 0x95, 0xc8, 0xca, 0x74, 0x0b, 0xc2, 0x83, 0xb4, 0x94, 0xc6, 0xe9,
  0xf6, 0x3e, 0xf8, 0x61, 0x7c, 0x5b, 0xea, 0x92, 0xa4, 0x48, 0x87, 0xeb,
  0x30, 0xcc, 0x9c, 0xeb, 0x4d, 0x36, 0x03, 0x22, 0xa8, 0x61, 0xd9, 0x31,
  0x4c, 0x2f, 0xa2, 0xc0, 0xfc, 0xe7, 0x87, 0xd3, 0xe3, 0x9a, 0x77, 0x5f,
  0x10, 0xe6, 0x57, 0x46, 0x2b, 0x18, 0x56, 0x56, 0x9e, 0x9c, 0xa0, 0x0e,

  0xab, 0xd9, 0xb8, 0x9a, 0x38, 0x57, 0x3b, 0xde, 0x3c, 0x0b, 0x88, 0x54,

  0xd0, 0x17, 0x7e, 0xd9, 0x1d, 0xdd, 0xd1, 0x3b, 0xba, 0xfb, 0x5b, 0xdf,

  0xd1, 0xdd, 0xdf, 0xe6, 0x8e, 0x2a, 0x07, 0x71, 0xfe, 0xee, 0x5e, 0x57,
  0xcf, 0x2c, 0xa5, 0xeb, 0xeb, 0x3a, 0x9c, 0xeb, 0x39, 0x03, 0x3d, 0x06,
  0x8f, 0xe8, 0x89, 0xdf, 0xa2, 0xc7, 0x05, 0xb2, 0xa1, 0xda, 0xb0, 0x48,
  0x2e, 0xb1, 0x82, 0x3f, 0x76, 0xa3, 0x53, 0x06, 0x36, 0xa7, 0xec, 0x24,
  0x79, 0xfd, 0x8c, 0xeb, 0x6b, 0xc5, 0xef, 0xad, 0x3e, 0xff, 0x40, 0x05,
  0x7e, 0x3a, 0x42, 0x78, 0x35, 0xeb, 0x71, 0x47, 0x8b, 0x59, 0x75, 0xc6,
  0x62, 0x49, 0x21, 0x85, 0xe8, 0x68, 0x81, 0x25, 0xb2, 0xa0, 0x71, 0x3c,
  0x30, 0xce, 0x1e, 0xf6, 0xdd, 0x44, 0x12, 0xf3, 0x73, 0x91, 0x70, 0x93,
  0xd1, 0x83, 0x2b, 0x99, 0xf7, 0xcd, 0xe9, 0xd0, 0xe8, 0x0c, 0x7f, 0x38,

  0x43, 0xe2, 0x2f, 0xd8, 0x70, 0xdc, 0x01, 0x02, 0x9f, 0x7a, 0xcd, 0x75,
  0x86, 0x8f, 0x55, 0xa0, 0x0c, 0x0c, 0x57, 0x8d, 0xbb, 0xb0, 0x5e, 0x4a,
  0x96, 0xe9, 0x1e, 0xec, 0xe3, 0x06, 0x98, 0x99, 0xb7, 0x04, 0xe0, 0x9b,
  0x50, 0x9d, 0x8e, 0x31, 0xae, 0xa8, 0x2f, 0xca, 0x14, 0x3d, 0x56, 0xda,
  0x92, 0xc2, 0xab, 0x98, 0xf9, 0x39, 0xd1, 0x34, 0x47, 0xcd, 0x21, 0x14,
  0xb8, 0xd9, 0x7a, 0x89, 0x6a, 0xda, 0xa5, 0xfe, 0xa3, 0xe4, 0x9b, 0x6e,
  0x06, 0x8f, 0xc4, 0x63, 0xcd, 0xf6, 0xaf, 0xea, 0x34, 0x0a, 0xeb, 0x2f,
  0x16, 0xaf, 0x30, 0x2e, 0x69, 0xd4, 0x44, 0x81, 0x3d, 0xe9, 0x9a, 0x13,
  0xee, 0xcb, 0x62, 0x5e, 0x1c, 0x91, 0x67, 0x93, 0xbf, 0x20, 0x0e, 0x28,
  0x36, 0xf3, 0x0d, 0x44, 0x34, 0x7a, 0x89, 0xd0, 0x9f, 0xcf, 0xfd, 0xb6,
  0xba, 0x3e, 0xac, 0x9e, 0xf1, 0x3d, 0x5b, 0xa0, 0xe8, 0xda, 0x8d, 0x55,
  0x70, 0xe7, 0x7e, 0xbf, 0x1f, 0x80, 0xb3, 0xb8, 0x4b, 0x93, 0xfb, 0x9a,
  0x2b, 0x5e, 0x66, 0xd6, 0x35, 0x0d, 0x33, 0xd8, 0x03, 0x74, 0x87, 0x3b,
  0x04, 0x43, 0x0e, 0x11, 0x49, 0xb3, 0xa5, 0x9c, 0xc4, 0x5e, 0x79, 0xf7,
  0x69, 0x67, 0x9b, 0x6f, 0x79, 0x9b, 0xcb, 0x50, 0x3d, 0x28, 0x03, 0x23,
  0xdb, 0x7e, 0x0e, 0x5d, 0xf4, 0x88, 0x14, 0x8f, 0x11, 0xb5, 0x6f, 0xb2,
  0x3c, 0x8d, 0xae, 0x3f, 0xd7, 0x1f, 0xa4, 0x25, 0xe3, 0x12, 0x33, 0xae,
  0x90, 0x1f, 0x2d, 0xe6, 0xcf, 0xd4, 0xf9, 0x81, 0xf0, 0x73, 0x95, 0x5e,
  0x20, 0xf6, 0x46, 0xe8, 0x88, 0xe2, 0x86, 0x20, 0xd2, 0x8c, 0x80, 0x5c,
  0x31, 0x81, 0xd4, 0x23, 0x39, 0x11, 0xa7, 0x7f, 0x95, 0x93, 0x29, 0x63,
  0xdb, 0x8b, 0x44, 0xba, 0xc0, 0x70, 0xbc, 0xd7, 0x74, 0x39, 0x71, 0xf8,


  0xb4, 0xbb, 0x12, 0xb0, 0x8e, 0xa4, 0x41, 0xa7, 0xf8, 0x62, 0x2d, 0xde,
  0x72, 0xd3, 0x46, 0xb4, 0xf5, 0xa9, 0x16, 0x53, 0xcb, 0x7a, 0xb5, 0x19,
  0xbc, 0x8f, 0x56, 0x26, 0x83, 0x97, 0x2e, 0x50, 0xb6, 0x07, 0x35, 0x60,
  0xbb, 0x00, 0xe1, 0xc0, 0xdc, 0xe6, 0x2d, 0x78, 0xc4, 0xac, 0x56, 0x30,
  0xea, 0x05, 0x36, 0x22, 0x5c, 0x62, 0xe2, 0x09, 0xdd, 0x7d, 0xa9, 0x5e,
  0x97, 0x82, 0xf5, 0x26, 0x98, 0x89, 0x81, 0x84, 0xc3, 0xdd, 0xef, 0xdf,
  0xc4, 0x0f, 0x0f, 0xfd, 0x32, 0xd9, 0x04, 0xaa, 0x2d, 0x37, 0xcb, 0x72,
  0x86, 0x1f, 0x2d, 0x09, 0x7d, 0x6d, 0x65, 0x8f, 0xe3, 0x87, 0x47, 0x43,
  0x40, 0xc2, 0x9c, 0x47, 0x31, 0xbe, 0x5a, 0x63, 0xb6, 0xb6, 0xc9, 0x31,
  0xb7, 0x09, 0x6b, 0xa6, 0x0c, 0x33, 0xf0, 0x34, 0x41, 0xa8, 0xbb, 0xd5,
  0xb6, 0xcc, 0x1a, 0x6c, 0x72, 0x96, 0x19, 0xc7, 0xe2, 0xe9, 0x23, 0xd4,
  0x74, 0xd1, 0x56, 0xda, 0x21, 0x77, 0xd5, 0x09, 0x8d, 0xc2, 0xa6, 0x98,
  0x02, 0x08, 0xee, 0x14, 0x25, 0xb0, 0x3a, 0xdc, 0xf7, 0x0f, 0x2d, 0xe9,
  0xfc, 0x36, 0x00, 0xf9, 0xd4, 0xe6, 0xb6, 0x74, 0x96, 0x86, 0xa5, 0x22,
  0x07, 0x16, 0x60, 0xf0, 0xfe, 0xfe, 0xbe, 0xbf, 0xca, 0x6f, 0xf9, 0x2f,
  0xc7, 0xc0, 0xeb, 0xc3, 0x5d, 0x00, 0xd5, 0x9e, 0xa5, 0xd9, 0xf2, 0x21,
  0x72, 0x30, 0x5e, 0x4c, 0x4b, 0x38, 0x0d, 0xcc, 0x45, 0xdf, 0x5d, 0xbd,
  0xed, 0x9a, 0xc8, 0xa6, 0xa4, 0xb0, 0xa1, 0xe7, 0xb7, 0xf4, 0xb5, 0xb6,
  0x24, 0x65, 0xdc, 0x1d, 0x04, 0x8d, 0x3e, 0x3e, 0xba, 0xfc, 0x78, 0x7e,
  0x72, 0xfd, 0xf1, 0xea, 0xe8, 0x7b, 0xdc, 0x42, 0xf6, 0xca, 0x80, 0xbc,

  0xc2, 0x78, 0x40, 0x91, 0xe7, 0xd8, 0x09, 0xe9, 0x3d, 0x95, 0x0d, 0xa6,
  0x19, 0xc1, 0xab, 0x84, 0x3a, 0xb7, 0x59, 0xcc, 0x28, 0x99, 0x27, 0xcc,
  0xe5, 0x20, 0xaa, 0xed, 0xd7, 0x6d, 0x52, 0x64, 0xc9, 0xac, 0x9f, 0x17,
  0x53, 0xa4, 0xc2, 0xcd, 0x37, 0xc2, 0x3f, 0x83, 0xc3, 0x6d, 0x4a, 0x56,
  0x03, 0x42, 0x90, 0xdd, 0x15, 0x13, 0x44, 0x2c, 0x79, 0x6e, 0xa7, 0x5a,
  0x87, 0x34, 0xf7, 0x88, 0x01, 0x2e, 0xee, 0xf6, 0x56, 0xa8, 0x77, 0xf5,
  0x7e, 0xe1, 0xd2, 0xe9, 0x93, 0x28, 0x88, 0x7c, 0x3f, 0x6e, 0xae, 0x0a,
  0x57, 0x67, 0xce, 0x1e, 0xbb, 0x01, 0x00, 0x04, 0x52, 0xe7, 0x72, 0x03,
  0x25, 0x41, 0x05, 0x6e, 0x98, 0x64, 0x13, 0xbc, 0xd2, 0x82, 0xd4, 0x66,
  0xb5, 0xa2, 0xa6, 0x0f, 0xa1, 0xcd, 0xf7, 0xd0, 0x7b, 0xe1, 0x5b, 0x86,


  0xd8, 0x7a, 0xd7, 0x59, 0xf3, 0x0b, 0x59, 0xf3, 0x8b, 0x7f, 0x69, 0xcd,
  0x2f, 0xfe, 0x85, 0x35, 0xef, 0xfd, 0xc6, 0x6b, 0xde, 0x0b, 0xae, 0xd9,
  0xf9, 0x4a, 0xef, 0x6f, 0xb8, 0xe6, 0xbf, 0x2d, 0xb3, 0xdb, 0x1e, 0xcc,
  0x17, 0xa5, 0xb0, 0x74, 0xda, 0x2c, 0xc3, 0x26, 0x5b, 0xad, 0xd1, 0x0e,
  0xf9, 0xf6, 0x2d, 0xc0, 0xb0, 0xd3, 0x39, 0x34, 0x76, 0x3a, 0xe9, 0x71,
  0xdc, 0xa9, 0xa9, 0x87, 0x37, 0x0d, 0x84, 0x14, 0xeb, 0x7d, 0xcb, 0x11,
  0xfa, 0x29, 0x50, 0xb3, 0xef, 0xc8, 0x6c, 0x74, 0xd8, 0x8e, 0xf6, 0x5d,
  0xa1, 0x9b, 0x1e, 0xfb, 0x38, 0x47, 0x23, 0x72, 0x93, 0xdd, 0x68, 0xdb,
  0x39, 0x8a, 0x81, 0x4b, 0x9a, 0x3f, 0x37, 0x39, 0x52, 0x0c, 0x28, 0x1d,
  0x98, 0xe3, 0x82, 0x18, 0xf3, 0xf1, 0x79, 0xc6, 0xf5, 0xe3, 0x02, 0x07,
  0x04, 0xd9, 0x5c, 0x80, 0x0c, 0xe6, 0x44, 0x94, 0xd9, 0x3d, 0x65, 0x27,
  0xe8, 0x24, 0xa3, 0xc6, 0x04, 0x25, 0xda, 0x71, 0x93, 0x3c, 0xae, 0x79,
  0x0a, 0xc3, 0x68, 0x96, 0x23, 0xbf, 0x19, 0xaf, 0x36, 0x3e, 0x86, 0xb6,
  0xcd, 0x29, 0xcb, 0x8b, 0x46, 0xdf, 0x53, 0x57, 0x6e, 0xdc, 0x26, 0xc9,
  0x22, 0x9e, 0x11, 0xb4, 0x06, 0xe6, 0x3e, 0xb4, 0x35, 0xca, 0xaa, 0x25,
  0x47, 0x6a, 0xe1, 0x00, 0xbd, 0x51, 0xcb, 0x3c, 0x23, 0x3e, 0xc7, 0x07,
  0x89, 0x95, 0x32, 0x51, 0x3a, 0xa6, 0x5a, 0xd7, 0x70, 0xdf, 0x14, 0xdb,
  0x94, 0xc1, 0x4c, 0x02, 0x5b, 0x6f, 0xe4, 0x43, 0xc1, 0x80, 0x31, 0x9f,
  0x50, 0x1c, 0x39, 0x4c, 0xcd, 0xb9, 0x4b, 0x31, 0x25, 0xaf, 0x89, 0x3d,
  0x6c, 0xde, 0xe7, 0xd7, 0x09, 0x55, 0xaa, 0xd6, 0x39, 0x81, 0x0f, 0x10,
  0x9f, 0xc8, 0x8d, 0xfc, 0x43, 0x75, 0x83, 0xba, 0x49, 0x7b, 0x24, 0xa5,
  0x00, 0xca, 0xac, 0xff, 0x5e, 0x1f, 0x5f, 0x7e, 0xfc, 0xf6, 0xe4, 0xe4,
  0xf2, 0xf4, 0xcd, 0xd9, 0x89, 0x5c, 0x18, 0xf3, 0xa3, 0xf3, 0xeb, 0xef,
  0xce, 0xb4, 0x5b, 0xa8, 0xd2, 0xa2, 0x47, 0xf0, 0x02, 0xfb, 0xcf, 0x4c,
  0xb9, 0x4b, 0xed, 0xb0, 0xc0, 0x90, 0x3e, 0x3a, 0xfd, 0x01, 0xb4, 0xd6,
  0xcb, 0xde, 0x87, 0x1f, 0xbc, 0x5e, 0x24, 0x4e, 0x8d, 0x89, 0xdf, 0x4c,
  0xc0, 0x96, 0x9c, 0xf4, 0x7a, 0x59, 0x6e, 0x0f, 0xb0, 0x35, 0xe5, 0xee,
  0x37, 0x16, 0x83, 0x30, 0xdc, 0x32, 0x33, 0x0a, 0x43, 0xd7, 0x6d, 0xe0,
  0xe8, 0xa6, 0xb5, 0xbd, 0xd8, 0xd2, 0x36, 0x6a, 0x2b, 0x83, 0x16, 0x8d,
  0xd6, 0x6d, 0xb7, 0xc9, 0x23, 0x61, 0x38, 0x46, 0x87, 0xf8, 0xdf, 0x70,
  0xb3, 0xd3, 0xcb, 0x22, 0xbd, 0x43, 0xfd, 0x0f, 0x9e, 0xe5, 0x90, 0x2e,
  0x3e, 0xda, 0x37, 0xad, 0x5f, 0x25, 0xac, 0x8c, 0x83, 0x50, 0xe6, 0x09,
  0x0d, 0x1a, 0x85, 0xbc, 0x3d, 0x84, 0x8c, 0x83, 0xbf, 0xe1, 0xf1, 0x68,
  0x40, 0xd8, 0x9e, 0x7e, 0xf4, 0xe6, 0xe4, 0xaa, 0x1b, 0x5d, 0x9e, 0xbc,
  0xe7, 0x42, 0x95, 0x93, 0xf3, 0x6f, 0xb8, 0x1b, 0xae, 0x36, 0x39, 0xa5,
  0x4c, 0x08, 0x3f, 0x59, 0xd3, 0xd9, 0x13, 0x78, 0x97, 0x32, 0x53, 0xcb,
  0x12, 0xa4, 0xeb, 0x27, 0x04, 0xd0, 0xe1, 0xb5, 0x1d, 0xc2, 0x7f, 0x42,
  0x5b, 0x05, 0x76, 0xc4, 0xbb, 0xc0, 0x76, 0x89, 0x62, 0x66, 0x72, 0x67,
  0xc4, 0x28, 0xc0, 0xdd, 0xe0, 0x1d, 0x83, 0x0d, 0xf1, 0xb3, 0x38, 0x74,
  0x83, 0xc8, 0xec, 0x23, 0x08, 0x21, 0x6e, 0xa1, 0x2e, 0x31, 0x78, 0xb4,
  0x62, 0xe1, 0x73, 0x5d, 0xa4, 0x4b, 0x02, 0x24, 0xb7, 0x9b, 0x11, 0xaa,
  0x8e, 0x2e, 0x52, 0x6e, 0x47, 0xdf, 0x40, 0xa6, 0x83, 0xed, 0x4e, 0xc7,
  0x8c, 0xc0, 0x80, 0x01, 0xe4, 0xbc, 0xc0, 0x04, 0x0e, 0x84, 0x3e, 0xf8,
  0x5f, 0x9b, 0xfd, 0xb2, 0xbc, 0xd9, 0x4c, 0xc7, 0x1f, 0x8b, 0x32, 0x5e,
  0x6b, 0xca, 0x22, 0xe7, 0xd7, 0x63, 0xfc, 0x75, 0xb4, 0xd6, 0x37, 0x8f,
  0xca, 0xdf, 0xf1, 0xe7, 0x41, 0x2c, 0x00, 0x15, 0x41, 0xec, 0x5a, 0xd1,
  0x7c, 0x4e, 0x6d, 0xa2, 0x3b, 0x4b, 0x87, 0x05, 0x28, 0x70, 0xb6, 0xfb,
  0x87, 0xf4, 0xc4, 0x5d, 0xdc, 0x8e, 0xca, 0xed, 0x6d, 0x1f, 0x8d, 0xde,
  0x94, 0x38, 0x76, 0x35, 0x2f, 0xf7, 0xf2, 0xdb, 0xe3, 0xc1, 0x1f, 0xb7,
  0xb7, 0x29, 0x0d, 0x7a, 0x1d, 0xd3, 0x55, 0x5f, 0xee, 0x6f, 0xef, 0x6c,
  0x84, 0xd4, 0x47, 0x2f, 0xaf, 0x67, 0xc2, 0xad, 0x30, 0x17, 0xce, 0x01,
  0x52, 0x98, 0x5b, 0x8a, 0x1e, 0xcc, 0xd0, 0xe3, 0x04, 0x93, 0x04, 0xa9,
  0xb2, 0x93, 0xc3, 0x99, 0x94, 0x3b, 0xe9, 0xa5, 0x5e, 0x18, 0x1c, 0xa4,
  0x0e, 0xcf, 0xfe, 0xa0, 0x63, 0xa8, 0xca, 0xcd, 0x21, 0xa7, 0xfc, 0x13,
  0x67, 0xd6, 0x7d, 0xde, 0xa7, 0x66, 0x78, 0xcd, 0x5d, 0x17, 0x25, 0x3a,
  0x5a, 0xa0, 0x29, 0x16, 0x5f, 0xb6, 0x81, 0x70, 0x23, 0x41, 0x00, 0xf3,
  0x03, 0x3c, 0x5f, 0xbd, 0xcc, 0xa9, 0xc3, 0xf4, 0x83, 0x04, 0x1f, 0xdb,
  0x41, 0xcd, 0xee, 0x3b, 0x0c, 0xc2, 0x1d, 0xd4, 0x77, 0xf6, 0xf1, 0x37,
  0xa2, 0x0e, 0xdc, 0xdd, 0xf0, 0x90, 0x9f, 0xf4, 0x4e, 0x16, 0xc3, 0xe8,
  0x70, 0x06, 0x2f, 0xce, 0x5a, 0x4a, 0xef, 0x4e, 0xb8, 0xdd, 0xd6, 0xb7,

  0x49, 0x31, 0x4c, 0x8a, 0xbc, 0x6c, 0x54, 0x09, 0x69, 0x8f, 0x57, 0xf6,
  0xa9, 0xd0, 0x38, 0x9a, 0x2e, 0xe5, 0xb5, 0x57, 0xae, 0xc8, 0xfa, 0x16,
  0x8c, 0xf7, 0x3a, 0x2e, 0xcf, 0x1a, 0xd5, 0x2a, 0xe1, 0x05, 0xc0, 0xfe,
  0x52, 0xf8, 0x27, 0x70, 0xe3, 0x09, 0x37, 0x09, 0x8d, 0x67, 0x6b, 0xd8,
  0xf5, 0xa7, 0x79, 0x8d, 0x84, 0xd2, 0xd6, 0xfa, 0x58, 0x80, 0xc6, 0xc6,
  0x1a, 0x65, 0x41, 0x51, 0xb9, 0x75, 0x1c, 0xc9, 0x5c, 0x34, 0xbf, 0x1b,
  0xaf, 0xb9, 0x4d, 0x03, 0x2c, 0xbd, 0x4e, 0x48, 0x66, 0xb8, 0x3a, 0x74,
  0x52, 0x5b, 0x86, 0xf1, 0x6f, 0x2c, 0xa6, 0xf8, 0x18, 0x9e, 0x1b, 0x39,
  0xb2, 0x9e, 0x55, 0x65, 0xf3, 0x8d, 0xe1, 0xf4, 0xac, 0xdc, 0x73, 0xd6,
  0xf7, 0x83, 0x1d, 0x74, 0x8f, 0xb8, 0x3a, 0xbc, 0x81, 0x35, 0x42, 0x5d,
  0x09, 0xb0, 0xa4, 0x69, 0xcc, 0x86, 0xa1, 0x54, 0xbf, 0xda, 0xc4, 0x09,
  0xe6, 0x34, 0x7e, 0x70, 0x9c, 0x96, 0x4a, 0xfd, 0x43, 0x74, 0xda, 0x3d,
  0x36, 0xde, 0x8f, 0x23, 0xf1, 0x46, 0x50, 0x5d, 0xd4, 0x7d, 0x81, 0x68,
  0xa9, 0x99, 0xc5, 0x5c, 0x9e, 0x25, 0xad, 0x20, 0x5a, 0x8a, 0xa8, 0x0a,



  0x87, 0x34, 0x93, 0xde, 0x86, 0x9a, 0x8d, 0x58, 0xe8, 0x9c, 0x7a, 0x92,

  0xcc, 0xa1, 0x0e, 0x03, 0x7c, 0xef, 0x0f, 0x4f, 0x42, 0xaa, 0x3c, 0x75,

  0x76, 0x4e, 0x73, 0xec, 0x00, 0x4c, 0xc2, 0xb3, 0xb1, 0xe2, 0x1a, 0x65,
  0x7e, 0x54, 0x31, 0xd0, 0x23, 0x99, 0x74, 0x08, 0xfc, 0x34, 0xf1, 0xc0,
  0xb2, 0x06, 0x35, 0x7c, 0x05, 0x69, 0xf9, 0xaa, 0x25, 0x74, 0xf4, 0x1e,
  0x52, 0x3b, 0xe1, 0x48, 0x98, 0x26, 0x65, 0x4c, 0xfb, 0x3d, 0x52, 0x59,
  0x9b, 0xee, 0x36, 0x6c, 0x57, 0x62, 0xcb, 0xb4, 0xe9, 0xd6, 0x12, 0x18,
  0xbd, 0x82, 0x1c, 0x69, 0x96, 0x34, 0x6f, 0x07, 0xfa, 0xa2, 0x25, 0xff,
  0x96, 0x8c, 0x8b, 0xd8, 0xf3, 0x81, 0x50, 0xc1, 0x03, 0x77, 0x00, 0x11,
  0x22, 0x58, 0x1b, 0xb3, 0x67, 0x94, 0x8e, 0xc4, 0x4c, 0x15, 0x2f, 0x9e,
  0x84, 0xa1, 0xb8, 0x6b, 0x02, 0xdc, 0x68, 0xcf, 0x54, 0x18, 0xc2, 0x10,
  0xf7, 0xe9, 0xb8, 0xba, 0xa1, 0x9e, 0x3c, 0x6a, 0x19, 0x95, 0x82, 0x0b,
  0x80, 0x4e, 0xea, 0xd4, 0xaf, 0x7a, 0x1b, 0xb6, 0x38, 0xf0, 0xf8, 0xc0,
  0x68, 0x53, 0x23, 0x06, 0xc8, 0x42, 0x47, 0x1d, 0x9d, 0x03, 0x39, 0xb5,
  0x37, 0x59, 0xd5, 0x33, 0xd0, 0x30, 0xd8, 0x37, 0x7b, 0x82, 0xed, 0x76,

  0x3c, 0x73, 0x4d, 0xcb, 0xd3, 0xfa, 0x7a, 0x43, 0x90, 0x86, 0xd7, 0x6e,
  0x19, 0x14, 0xff, 0xdb, 0x35, 0xed, 0x2a, 0xbb, 0xcc, 0x2a, 0xb7, 0x82,
  0x06, 0x79, 0x79, 0x74, 0x9b, 0xfa, 0x9d, 0x1a, 0xe8, 0xeb, 0x5d, 0xe0,
  0x35, 0x73, 0x1e, 0xe1, 0xfd, 0x9a, 0x3a, 0x4a, 0x11, 0x30, 0x61, 0x1a,
  0xcb, 0xef, 0x19, 0x2c, 0x65, 0x6d, 0xca, 0x0f, 0x7d, 0x63, 0x1f, 0x6a,
  0x0c, 0x87, 0x5e, 0x7b, 0xf6, 0xd2, 0x6b, 0x32, 0x5d, 0x79, 0x80, 0x05,
  0x1a, 0xdf, 0x76, 0xa3, 0xdd, 0x39, 0x1d, 0xca, 0xf6, 0x37, 0x21, 0xc6,
  0xc5, 0x3d, 0x82, 0xcb, 0xdc, 0x94, 0xcb, 0xf7, 0xfe, 0x82, 0x26, 0x17,

  0x6d, 0x18, 0xd3, 0xa5, 0xa9, 0x04, 0xe3, 0x7a, 0x14, 0xe5, 0x07, 0x81,
  0xa0, 0x03, 0xe5, 0x52, 0x2e, 0xd0, 0x48, 0x18, 0x27, 0x8a, 0x12, 0x3e,
  0x27, 0xef, 0x26, 0x66, 0x4b, 0x2d, 0x04, 0x0e, 0x03, 0xc9, 0xb5, 0x67,
  0x20, 0x48, 0xcb, 0x19, 0x3e, 0x40, 0x6d, 0xb2, 0x72, 0x2f, 0xb3, 0x7a,
  0xb6, 0x20, 0x03, 0xc9, 0x74, 0xb2, 0x73, 0x26, 0x85, 0x55, 0xad, 0xa3,
  0x48, 0x7c, 0x3c, 0x9f, 0x50, 0x24, 0xce, 0x28, 0x45, 0x2f, 0x2d, 0xab,
  0x5e, 0x00, 0xef, 0x95, 0x62, 0x40, 0x97, 0x17, 0x97, 0xbb, 0x1b, 0x2e,
  0x28, 0xa6, 0x80, 0x23, 0x70, 0xcf, 0x47, 0x8a, 0x12, 0x19, 0xe0, 0x84,
  0xae, 0xb2, 0x1b, 0x2e, 0xd3, 0xf3, 0x6d, 0xcb, 0x91, 0x20, 0xc6, 0x21,
  0x73, 0xa1, 0x2f, 0x92, 0xcb, 0xdf, 0x16, 0x8a, 0x38, 0xdd, 0x10, 0xed,
  0xc5, 0x54, 0x78, 0xc4, 0xcf, 0x7c, 0x58, 0x99, 0x92, 0x13, 0xca, 0x09,
  0x91, 0xa5, 0x47, 0xc5, 0x7f, 0xf5, 0x7e, 0x22, 0x58, 0xb8, 0xe0, 0xcd,
  0x32, 0xe2, 0xc4, 0xa3, 0x40, 0x4a, 0x97, 0x04, 0x79, 0xed, 0x93, 0x14,
  0x90, 0xd0, 0x62, 0x48, 0x42, 0x17, 0xb2, 0xb9, 0x16, 0xe8, 0x2d, 0x45,
  0xaa, 0x65, 0x4c, 0xe5, 0x7e, 0x5b, 0x05, 0xae, 0xed, 0x6b, 0x51, 0xb3,
  0xc8, 0xa4, 0x6b, 0x59, 0x1c, 0x9d, 0x9f, 0x0d, 0xae, 0xdd, 0x20, 0x12,
  0xe9, 0x61, 0x5e, 0x2a, 0x73, 0x1d, 0xd8, 0xcd, 0x49, 0x2d, 0x3a, 0x3b,
  0x1d, 0x5c, 0xf7, 0x43, 0x1d, 0x1b, 0x40, 0x3b, 0x1f, 0x60, 0xb9, 0x4d,
  0x0d, 0x28, 0x23, 0xa2, 0xd3, 0x93, 0x62, 0x51, 0x8e, 0x8e, 0x71, 0xb4,
  0x28, 0x2d, 0x5c, 0x50, 0x88, 0xe6, 0x70, 0x30, 0xc5, 0x2f, 0x38, 0x4d,
  0x59, 0x52, 0x9c, 0x35, 0x4a, 0x54, 0x2e, 0x87, 0x3d, 0x07, 0x49, 0x91,
  0xf5, 0x1d, 0x6a, 0xd1, 0x05, 0xd4, 0x0b, 0x12, 0xea, 0xd6, 0xb7, 0x31,
  0xd7, 0x99, 0xa0, 0x68, 0x7f, 0x04, 0x01, 0xb3, 0xe6, 0xea, 0x1e, 0x45,
  0x09, 0x21, 0xee, 0x92, 0x93, 0x09, 0x9f, 0x7d, 0x36, 0x51, 0xe1, 0x56,
  0x34, 0x76, 0x52, 0xba, 0x3a, 0xd6, 0x6b, 0x16, 0x30, 0x6c, 0xf7, 0x4b,
  0xe2, 0x94, 0x0e, 0x09, 0x5a, 0xa2, 0x2b, 0x93, 0x84, 0x5d, 0x4e, 0x66,
  0xda, 0xad, 0x20, 0xc0, 0xe9, 0x98, 0x71, 0x30, 0xcb, 0x3a, 0x10, 0x26,
  0x83, 0x1e, 0x20, 0xd3, 0xe1, 0x06, 0x40, 0xa8, 0xba, 0xb5, 0x9d, 0x24,
  0xfb, 0xe4, 0x6a, 0xf9, 0xa9, 0xbd, 0x1f, 0x38, 0xe3, 0x99, 0x02, 0x65,
  0xdd, 0x36, 0x84, 0x36, 0x9f, 0x8c, 0xb4, 0x19, 0xd3, 0x87, 0xd3, 0x37,
  0x67, 0x66, 0xb7, 0x64, 0x77, 0x28, 0x85, 0xd6, 0xac, 0x15, 0xcb, 0x5a,
  0x94, 0x6d, 0xd2, 0x99, 0x78, 0x41, 0x9f, 0x65, 0x96, 0xfe, 0x9d, 0x52,
  0xad, 0x6c, 0x83, 0x7b, 0xe4, 0x7f, 0xe8, 0x3a, 0x57, 0x49, 0xb6, 0x56,
  0x9a, 0x4e, 0x76, 0xe9, 0xd8, 0x94, 0x7f, 0x70, 0x8c, 0x2f, 0x98, 0x7f,
  0xbc, 0x12, 0x39, 0x65, 0xbb, 0x0e, 0x6f, 0x4a, 0x28, 0xc7, 0x02, 0x46,
  0x06, 0x02, 0x69, 0x93, 0xca, 0x17, 0x3d, 0xe5, 0x82, 0x74, 0x33, 0x9b,
  0x5d, 0x57, 0x07, 0xd9, 0xc9, 0x0b, 0x29, 0x7a, 0x5c, 0x7f, 0x7b, 0x75,
  0xf1, 0xbe, 0x77, 0x7d, 0xb1, 0x41, 0x09, 0x7b, 0x34, 0xf2, 0x8a, 0x14,
  0x91, 0xd2, 0xf4, 0x49, 0xb5, 0x28, 0x25, 0xe2, 0x6b, 0x5b, 0x2f, 0x37,
  0xa4, 0xd0, 0x87, 0x45, 0x0a, 0x4d, 0x4f, 0xdf, 0xf2, 0xda, 0x97, 0x64,
  0xac, 0x89, 0xc4, 0xd4, 0x22, 0x15, 0xfd, 0x8e, 0x23, 0x27, 0x8e, 0xc5,
  0x29, 0x1d, 0xc2, 0xb9, 0x87, 0xcb, 0xf2, 0x31, 0x92, 0xda, 0x52, 0xc4,

  0x2c, 0x24, 0x5b, 0xca, 0x8f, 0x0e, 0x98, 0xde, 0xdb, 0x06, 0xa9, 0x08,
  0xab, 0xee, 0xb8, 0xac, 0xab, 0xca, 0xe1, 0xfa, 0xc6, 0x45, 0x91, 0xdf,
  0xab, 0xe0, 0x92, 0xda, 0x6f, 0x98, 0x3a, 0x1e, 0x52, 0xf1, 0xd8, 0x8a,
  0xee, 0x22, 0x80, 0x65, 0xda, 0x39, 0x7c, 0xa5, 0xfa, 0xb7, 0x5f, 0xc7,
  0xdc, 0xd0, 0x0c, 0xf0, 0x5e, 0x55, 0x2c, 0xb1, 0xa4, 0x34, 0xec, 0x76,
  0x3e, 0x43, 0x36, 0x59, 0x4f, 0x19, 0xef, 0x0a, 0xa2, 0x22, 0x02, 0xf0,
  0x50, 0xaf, 0x37, 0xe3, 0x97, 0x24, 0xff, 0x04, 0xc7, 0x14, 0xff, 0xec,
  0xdd, 0x60, 0x81, 0x5a, 0x46, 0x8d, 0x1e, 0xdb, 0xb8, 0x52, 0xda, 0xb8,
  0xcd, 0xc5, 0x4b, 0x2b, 0xee, 0xbf, 0xa9, 0x49, 0x38, 0x04, 0xa6, 0x46,
  0xcc, 0x00, 0x7f, 0xea, 0xe9, 0x92, 0x8a, 0x92, 0x94, 0x22, 0x42, 0xc5,
  0x78, 0x39, 0xa2, 0x63, 0xc2, 0x88, 0x1f, 0xb6, 0xf7, 0x1c, 0x32, 0x6e,
  0xab, 0x82, 0x3c, 0xe0, 0xd0, 0x36, 0x5d, 0x9e, 0x1d, 0x38, 0x4d, 0x2d,
  0x2b, 0xe2, 0xc7, 0x6c, 0xcf, 0x32, 0x54, 0x26, 0x31, 0xf7, 0x35, 0x61,
  0xc5, 0xb2, 0x68, 0xda, 0x9c, 0x18, 0x55, 0xd2, 0x9e, 0xc9, 0x3e, 0xbb,
  0x42, 0xd0, 0x7c, 0x82, 0x0b, 0x97, 0xa0, 0x3f, 0x22, 0x5b, 0x22, 0x01,
  0x53, 0xd0, 0xfd, 0xeb, 0xb8, 0x04, 0xbe, 0x54, 0x1f, 0x6f, 0x63, 0x85,
  0x7b, 0x7a, 0xa9, 0x85, 0x15, 0xce, 0xe9, 0xd5, 0x0e, 0x24, 0x7c, 0x72,
  0xa7, 0x35, 0x8c, 0x0b, 0x4e, 0xcd, 0x70, 0x76, 0x5c, 0x58, 0x14, 0x01,
  0x2f, 0x52, 0xae, 0x7a, 0x4c, 0xdd, 0xae, 0xef, 0x42, 0xcc, 0x29, 0x36,
  0xfd, 0x1c, 0xab, 0x48, 0x3f, 0x1a, 0xad, 0x6b, 0xe5, 0xa7, 0xa9, 0x44,
  0x3a, 0x93, 0x5f, 0x1d, 0x98, 0xd2, 0x54, 0xe4, 0x69, 0x8d, 0xe1, 0x76,
  0x7f, 0xf8, 0xa1, 0xde, 0x7f, 0x79, 0xa3, 0x0d, 0x0c, 0x43, 0x6a, 0x52,
  0xc6, 0xcc, 0xfb, 0x74, 0xc2, 0x5e, 0x5d, 0x9d, 0x92, 0x1d, 0x86, 0x18,


  0x28, 0x8b, 0x9f, 0x1d, 0x30, 0xe2, 0x29, 0x02, 0x13, 0xf0, 0x46, 0x8b,
  0xad, 0x6a, 0x29, 0x1c, 0x04, 0x93, 0x71, 0x1a, 0xc8, 0x59, 0x24, 0x86,
  0xab, 0xb9, 0x17, 0x1c, 0x53, 0xa1, 0x9c, 0x74, 0x77, 0xbb, 0x4a, 0xeb,
  0x9c, 0xb9, 0xc1, 0xd8, 0x82, 0x00, 0x35, 0xaf, 0x6e, 0x12, 0x6d, 0x80,
  0x33, 0x4d, 0xe9, 0x25, 0xc9, 0x7b, 0x6e, 0x2b, 0x81, 0x69, 0xb1, 0xa3,
  0x22, 0x11, 0x6f, 0x83, 0x36, 0x01, 0xf2, 0xa2, 0xc8, 0x08, 0xda, 0xc3,
  0x97, 0x87, 0x9c, 0xaa, 0xb1, 0x73, 0x5f, 0x2c, 0xde, 0x62, 0xe3, 0xc4,
  0xa4, 0x0c, 0xc3, 0xd7, 0xde, 0xef, 0x73, 0x82, 0xd8, 0xa4, 0xde, 0x4b,
  0x04, 0x1b, 0x97, 0xb3, 0x63, 0x4b, 0xda, 0x07, 0xb3, 0xbc, 0xf9, 0xb3,
  0xde, 0xdc, 0xbe, 0x1b, 0xbc, 0x44, 0x2a, 0x08, 0x85, 0x40, 0x95, 0x99,
  0xe0, 0xb9, 0x20, 0xb6, 0x2f, 0xe6, 0xc2, 0x69, 0x4b, 0x32, 0xf4, 0x14,
  0x6b, 0x8c, 0x9c, 0xd5, 0x69, 0x42, 0xa2, 0x98, 0x93, 0xf1, 0xe2, 0x03,
  0x4d, 0xdb, 0x2b, 0x8b, 0x39, 0x3c, 0xe4, 0xf4, 0xb4, 0xb8, 0x74, 0xec,
  0xdc, 0x02, 0xa3, 0xb4, 0x47, 0x8f, 0x95, 0x6d, 0xe9, 0x26, 0x82, 0x3c,
  0x4e, 0x39, 0x70, 0xdc, 0x3e, 0xc5, 0xdd, 0x33, 0x75, 0x93, 0x19, 0xd4,
  0x13, 0x29, 0x34, 0x93, 0x3e, 0x1c, 0xdf, 0x9c, 0x5c, 0x37, 0xaf, 0x96,
  0x1b, 0x39, 0x24, 0x8c, 0x11, 0xf8, 0xf7, 0xe5, 0x87, 0xeb, 0x0d, 0x6a,
  0x4e, 0xa6, 0x80, 0xc1, 0x55, 0xad, 0xe9, 0x8c, 0xa9, 0x5f, 0xf5, 0x4b,
  0x71, 0x18, 0xd5, 0x43, 0xf8, 0x94, 0x24, 0x03, 0xc9, 0xcd, 0x40, 0x1f,
  0xcb, 0xee, 0xd6, 0x36, 0xd8, 0x51, 0x5b, 0x3b, 0xd4, 0x70, 0x7a, 0x77,

  0x6b, 0xd7, 0x00, 0x21, 0xe8, 0x53, 0x7e, 0x9b, 0x0a, 0x7e, 0x91, 0x5c,
  0x26, 0x44, 0xf7, 0xbb, 0x0f, 0x0f, 0xf4, 0xe3, 0x7a, 0x79, 0x45, 0xcf,
  0x94, 0x24, 0xba, 0xd3, 0x0c, 0xca, 0x7d, 0x67, 0xbf, 0x29, 0xb2, 0xb7,
  0xcc, 0xb8, 0x00, 0x98, 0x1a, 0x7a, 0x23, 0x6e, 0x48, 0xbf, 0xbd, 0xbb,
  0x95, 0xd3, 0xaa, 0x4f, 0xd0, 0xd1, 0xdc, 0xf6, 0x74, 0x40, 0x2c, 0x2e,
  0xe2, 0x8c, 0xa0, 0x90, 0x78, 0xac, 0x19, 0x9f, 0x11, 0xbc, 0x26, 0xd8,
  0x83, 0x07, 0xbb, 0x43, 0xa6, 0x65, 0xaa, 0x30, 0x00, 0x10, 0x74, 0xc2,
  0x8e, 0x4c, 0x31, 0x4d, 0xc0, 0x09, 0x81, 0xfc, 0xef, 0x00, 0xd3, 0x44,

  0xe0, 0x4e, 0xd0, 0xfe, 0xea, 0x5f, 0x35, 0x8f, 0x8f, 0xff, 0xb5, 0x5b,
  0x97, 0x94, 0xe8, 0x1e, 0xd6, 0x41, 0x0f, 0xe5, 0x2f, 0x9e, 0xaf, 0x92,
  0xfa, 0x0c, 0x93, 0x6e, 0x4c, 0x1d, 0x62, 0x36, 0x6a, 0xfe, 0x13, 0x1a,
  0xc3, 0x4c, 0x4c, 0xb4, 0x14, 0xe9, 0xe0, 0xce, 0x2c, 0xba, 0x49, 0x1b,

  0x35, 0xf9, 0xd0, 0x6f, 0x6b, 0x00, 0xa8, 0x9a, 0xa0, 0x37, 0xbe, 0x26,
  0x58, 0x18, 0xc4, 0x00, 0x47, 0x25, 0xce, 0x17, 0xa1, 0xbb, 0x5b, 0x2a,
  0xf8, 0x03, 0x0a, 0x57, 0xe3, 0x6c, 0x97, 0x39, 0x36, 0xa6, 0x13, 0x1d,
  0x55, 0xd4, 0x0f, 0x9a, 0xfc, 0x60, 0xbe, 0x89, 0x8a, 0x5b, 0xd1, 0xe5,
  0xad, 0xa0, 0x3e, 0xeb, 0xd8, 0x30, 0x47, 0x53, 0x30, 0x6b, 0x33, 0xe5,
  0x40, 0xc8, 0xdc, 0x4d, 0xd4, 0x08, 0x65, 0xd8, 0x0e, 0x35, 0x79, 0x2f,
  0x6a, 0x2c, 0x14, 0xee, 0x21, 0x8a, 0x56, 0x54, 0xfb, 0xa5, 0x1b, 0xf4,
  0x5e, 0x97, 0xfe, 0xb6, 0xbf, 0xf5, 0x8a, 0x4f, 0xf4, 0xf4, 0xe4, 0xfa,
  0x6d, 0xd3, 0x99, 0x57, 0x00, 0x41, 0xf1, 0x7f, 0x7b, 0x49, 0x5c, 0xdc,
  0x80, 0x71, 0x81, 0x50, 0x49, 0x3d, 0xec, 0xbf, 0xd1, 0xdb, 0xda, 0x0a,
  0xe5, 0x6d, 0x7c, 0x42, 0x78, 0x88, 0xdd, 0xbd, 0x7a, 0x48, 0x0f, 0x55,
  0xfa, 0x1e, 0x6e, 0x77, 0x3b, 0x92, 0x6f, 0x9d, 0xbc, 0x62, 0xd5, 0x9d,
  0xe5, 0xf1, 0x5a, 0xc0, 0x3e, 0x89, 0x0c, 0x24, 0x74, 0xd4, 0x04, 0xc2,
  0x74, 0x4c, 0xec, 0xa6, 0x7a, 0x63, 0xb2, 0x93, 0x40, 0xcc, 0x93, 0x4c,
  0xaa, 0x1e, 0x37, 0x22, 0xee, 0x23, 0xc9, 0xed, 0xde, 0x2a, 0x62, 0x00,
  0x64, 0x41, 0x04, 0x0b, 0xe7, 0x4b, 0xa9, 0x1d, 0x2c, 0x12, 0x84, 0x5c,
  0x63, 0xb5, 0x4f, 0xda, 0x66, 0x3d, 0x0d, 0x1b, 0x47, 0x5b, 0x50, 0x8c,
  0x16, 0x52, 0x44, 0xca, 0xff, 0x46, 0x51, 0x5c, 0xcb, 0x9f, 0xdd, 0xd9,
  0x0f, 0x6c, 0x1c, 0x09, 0xec, 0x5f, 0xb9, 0x71, 0x56, 0x39, 0x62, 0xff,
  0x1d, 0x19, 0xbc, 0xa6, 0xd4, 0x2d, 0x90, 0xa9, 0xad, 0x6d, 0x9d, 0x7f,

  0xf1, 0x5a, 0x70, 0xb7, 0xfb, 0xab, 0xc0, 0x27, 0xed, 0x5b, 0xbf, 0x72,
  0x2d, 0x5d, 0xdb, 0xf9, 0x04, 0xa5, 0xc7, 0x5c, 0x1a, 0xbb, 0x91, 0x9f,
  0x81, 0x02, 0x9a, 0x4d, 0x60, 0x98, 0x64, 0x91, 0xd0, 0xe2, 0xdd, 0xbc,
  0x05, 0x87, 0xb8, 0x8d, 0x8d, 0x8a, 0xb6, 0xa2, 0x16, 0x44, 0x82, 0x10,
  0x4d, 0x17, 0x88, 0xf8, 0x51, 0x06, 0xfd, 0x2c, 0x62, 0xe6, 0xb3, 0x1f,
  0x81, 0x36, 0x53, 0x5d, 0xb2, 0x5d, 0x11, 0x63, 0xf2, 0xba, 0xee, 0xb1,
  0xf2, 0x2c, 0x4f, 0x69, 0xbc, 0x8b, 0x67, 0x68, 0xae, 0xd3, 0x18, 0xe6,
  0xb0, 0x72, 0x5b, 0x59, 0xcf, 0x83, 0xe7, 0x2d, 0xe2, 0xdf, 0x9d, 0x47,
  0x66, 0xde, 0xe7, 0x84, 0x47, 0x55, 0x66, 0xbf, 0xbb, 0x7a, 0xfb, 0x17,
  0xb5, 0xbb, 0x37, 0xba, 0x2d, 0x96, 0x70, 0x63, 0xba, 0xc3, 0xc4, 0x49,
  0x04, 0x14, 0x08, 0x88, 0xda, 0xae, 0xf3, 0xbf, 0x6c, 0x96, 0xa5, 0x17,
  0x54, 0xa0, 0xa4, 0x8f, 0x75, 0x0c, 0xb3, 0xc1, 0x73, 0x03, 0x31, 0xe9,
  0x76, 0xfb, 0xfb, 0xe4, 0x0f, 0x79, 0x7b, 0xbc, 0xbf, 0xbb, 0xb3, 0x0d,
  0x56, 0xeb, 0x7a, 0x83, 0x5b, 0x6c, 0x7c, 0xf6, 0xac, 0xdd, 0x36, 0xe7,
  0x9d, 0x3c, 0x2c, 0x90, 0xf6, 0xd6, 0x4f, 0x7e, 0xb8, 0x3c, 0xf7, 0xd6,
  0x08, 0x6b, 0xf2, 0x02, 0xa9, 0x6d, 0x6b, 0xb4, 0xba, 0x40, 0x6d, 0x7c,
  0xcd, 0x3f, 0xa6, 0x86, 0xd5, 0x81, 0x50, 0xe5, 0xdb, 0x22, 0x45, 0x1d,
  0xb7, 0x83, 0x5b, 0xd2, 0x39, 0xcb, 0xb3, 0x31, 0x88, 0xfe, 0x0b, 0x84,
  0xe8, 0x4b, 0x3a, 0xa0, 0xab, 0x3f, 0xb9, 0xba, 0xf6, 0x6b, 0xf2, 0xbe,
  0x4b, 0x57, 0x25, 0xf3, 0x33, 0x5c, 0xde, 0xd3, 0x0f, 0x09, 0x11, 0x19,
  0xc1, 0x4d, 0xb8, 0xc6, 0x64, 0x39, 0x4d, 0xd8, 0xbd, 0x8b, 0xa6, 0x59,
  0xfd, 0xb6, 0x3d, 0x50, 0x43, 0x22, 0xf2, 0xf8, 0x1c, 0x92, 0x43, 0xbb,
  0x2d, 0x16, 0xc2, 0xdc, 0x52, 0xa3, 0x21, 0xec, 0x23, 0x5a, 0x57, 0xb7,
  0xfe, 0x86, 0xd3, 0xd1, 0x9d, 0xc0, 0x3b, 0x39, 0xd6, 0x81, 0x7a, 0x5b,
  0x80, 0xe7, 0xd2, 0x63, 0xd6, 0xae, 0x48, 0xeb, 0x29, 0xf1, 0x74, 0x13,
  0x09, 0x0c, 0xa2, 0x5b, 0xc7, 0x2e, 0x0c, 0xf9, 0xc0, 0x29, 0x83, 0x80,
  0x3a, 0xee, 0xc5, 0x59, 0x1d, 0xe7, 0x15, 0xc1, 0x0c, 0xd8, 0xfa, 0x49,
  0x1e, 0xa8, 0x89, 0x2a, 0xa8, 0x88, 0x2f, 0x76, 0x7d, 0x79, 0x24, 0x4b,
  0x11, 0x78, 0x17, 0x71, 0x33, 0x19, 0x28, 0xea, 0xb7, 0x56, 0xed, 0xed,

  0x06, 0xe3, 0x10, 0xa1, 0x90, 0x14, 0x47, 0x25, 0xc4, 0x3a, 0x6b, 0xc4,
  0x25, 0xdc, 0x38, 0x04, 0xdd, 0x14, 0x8c, 0x44, 0x48, 0x94, 0xc1, 0x37,
  0x54, 0x9c, 0xc8, 0x44, 0x7b, 0x68, 0x62, 0x45, 0x30, 0xa2, 0x69, 0x82,
  0x9a, 0xd0, 0x44, 0x8d, 0xf8, 0xf6, 0x3f, 0x0f, 0x10, 0xdf, 0xf9, 0xc5,
  0xf5, 0xc9, 0x81, 0x40, 0x7c, 0x29, 0x16, 0x8e, 0x9a, 0x09, 0x9c, 0x98,
  0xc6, 0x8d, 0xdc, 0xb9, 0xe6, 0x10, 0x85, 0xac, 0x9e, 0x7a, 0x37, 0x74,
  0xe5, 0x29, 0x47, 0x1c, 0xaf, 0x09, 0x7b, 0x79, 0xab, 0x56, 0x84, 0x5c,
  0x2a, 0xf5, 0x17, 0xcb, 0x80, 0xe9, 0x09, 0xcf, 0xdf, 0x47, 0x46, 0x21,
  0xf8, 0x0c, 0x42, 0xa4, 0x60, 0x79, 0xeb, 0x91, 0x10, 0x8b, 0x32, 0x36,
  0xb8, 0x4c, 0xc2, 0xe2, 0x08, 0xfb, 0xa9, 0xfa, 0x4d, 0x40, 0x29, 0x42,
  0xf7, 0x56, 0x1a, 0xc9, 0x93, 0x3d, 0x62, 0x60, 0x36, 0x57, 0x89, 0x38,
  0x1b, 0x48, 0x6c, 0x5e, 0x2a, 0x31, 0xce, 0xd0, 0x0b, 0xf8, 0x65, 0x2b,
  0xcc, 0x55, 0xe5, 0xdc, 0x27, 0xa5, 0x13, 0xb8, 0x47, 0x6a, 0xa5, 0xa1,
  0x55, 0x69, 0xcc, 0x14, 0xc1, 0xb0, 0xf1, 0xc3, 0xd7, 0xc4, 0x02, 0xeb,
  0x6e, 0x11, 0xd5, 0xd2, 0xba, 0x46, 0x5d, 0xa3, 0xc4, 0x9d, 0x84, 0xca,
  0xb2, 0xd8, 0x00, 0x27, 0x6d, 0xa1, 0x05, 0x89, 0xd5, 0xc5, 0x18, 0x10,
  0xa5, 0x1a, 0x45, 0xdf, 0x08, 0x04, 0xb7, 0x5b, 0x81, 0x40, 0x3a, 0x1f,
  0x59, 0xb3, 0x29, 0x03, 0x3d, 0xc0, 0x47, 0xf6, 0xb7, 0x5a, 0x6c, 0x59,
  0x56, 0x79, 0x07, 0x49, 0x5d, 0xd0, 0xc2, 0x1b, 0xbd, 0x6d, 0xe3, 0x84,
  0x4d, 0xa9, 0xb8, 0x5d, 0xd0, 0xdc, 0x3e, 0x5d, 0x88, 0x69, 0xde, 0x95,
  0x33, 0x5a, 0x99, 0xc7, 0xf8, 0x5e, 0xc3, 0xbe, 0xf8, 0x50, 0x9a, 0x69,
  0x8a, 0x1a, 0x6b, 0x4a, 0x1c, 0xc5, 0x53, 0xd0, 0x5a, 0xb8, 0x99, 0x39,
  0x46, 0xcf, 0x6d, 0xf0, 0xdb, 0x37, 0xe6, 0xd0, 0x49, 0xd1, 0x8f, 0x22,
  0x17, 0x81, 0x4c, 0x4b, 0x8e, 0xe4, 0x60, 0x70, 0xd7, 0xc9, 0xdf, 0x36,
  0xc4, 0xfa, 0xfd, 0xe8, 0x6f, 0xf9, 0x50, 0x9c, 0x30, 0x68, 0x39, 0x86,
  0x90, 0x7c, 0x26, 0x94, 0x3f, 0xbf, 0x04, 0x2a, 0x1b, 0x2f, 0xd9, 0xaf,
  0x8a, 0x13, 0x92, 0x4c, 0x6c, 0x6e, 0xfd, 0x8c, 0x01, 0x8f, 0x68, 0x4a,
  0x38, 0x9a, 0x9c, 0x0a, 0xaa, 0x85, 0xe8, 0x7e, 0xb5, 0xf3, 0x4e, 0x13,
  0xad, 0x25, 0x1e, 0xa1, 0x37, 0x04, 0x06, 0x17, 0x70, 0x04, 0x06, 0xdc,
  0xb3, 0x09, 0xeb, 0xf1, 0xa8, 0x5a, 0xca, 0xc6, 0x37, 0x67, 0x97, 0xab,
  0x97, 0x14, 0xde, 0x25, 0x18, 0x78, 0xca, 0x42, 0x1a, 0x01, 0xe5, 0xc5,
  0xa3, 0x47, 0xd5, 0x17, 0xac, 0x70, 0x15, 0x40, 0x47, 0x0b, 0x1a, 0xef,
  0xd7, 0x78, 0xea, 0x24, 0x30, 0xda, 0x99, 0x96, 0x2d, 0xdd, 0x5a, 0x7e,
  0x53, 0x3b, 0xc5, 0xed, 0xb9, 0xc5, 0x4e, 0x67, 0x05, 0x9e, 0xac, 0x5d,

  0xf5, 0xa4, 0x8a, 0x71, 0x97, 0x57, 0x16, 0xa3, 0x5b, 0x97, 0x80, 0xa9,
  0xac, 0xa1, 0xc8, 0x20, 0xd5, 0x33, 0x62, 0x8d, 0x0d, 0xc5, 0xc1, 0xb5,
  0xe1, 0xd4, 0xa9, 0xaf, 0x47, 0xbc, 0x97, 0xaf, 0x30, 0x3f, 0x5c, 0x27,

  0x66, 0x65, 0x2b, 0x4a, 0x71, 0x98, 0x3d, 0xce, 0x18, 0x8b, 0xf6, 0x3f,
  0xdf, 0xdf, 0xdb, 0xd0, 0xe6, 0xc5, 0x9a, 0x85, 0xb8, 0x11, 0xea, 0x00,
  0x48, 0x37, 0x4e, 0x7a, 0x2a, 0x90, 0x5e, 0x93, 0x62, 0x8f, 0x4c, 0x46,
  0xeb, 0x10, 0xc7, 0x66, 0xca, 0x4d, 0xb3, 0xd0, 0xc5, 0x4e, 0xed, 0xe7,
  0x98, 0x29, 0x7b, 0xf9, 0x03, 0xf8, 0xb1, 0x84, 0x5f, 0x5e, 0x27, 0x0e,
  0x1f, 0x97, 0x96, 0x79, 0xdb, 0xca, 0x20, 0x86, 0xf6, 0x27, 0x25, 0x4d,
  0x53, 0xdf, 0x36, 0xa8, 0x7c, 0x3d, 0x58, 0x56, 0xce, 0xe9, 0xe7, 0xa4,
  0xa9, 0x8a, 0xea, 0x71, 0x83, 0x1d, 0xd9, 0x73, 0x47, 0x2e, 0xb0, 0x6f,
  0x84, 0x6b, 0xbb, 0x58, 0xf0, 0x84, 0x80, 0xaa, 0x09, 0x67, 0xa2, 0xe4,

  0x0c, 0xa9, 0xfa, 0x3e, 0x32, 0xf4, 0x29, 0x81, 0x2f, 0xc8, 0xfb, 0x92,
  0x20, 0x25, 0x67, 0xc2, 0x88, 0xbb, 0x9e, 0x40, 0x9e, 0x6b, 0x77, 0x28,
  0x56, 0x3d, 0xf2, 0xc2, 0x96, 0xe6, 0x72, 0x90, 0x86, 0xc5, 0x25, 0xe5,
  0x0b, 0xb7, 0x01, 0xef, 0xa8, 0x1b, 0x24, 0x56, 0x8c, 0x90, 0xda, 0xcc,
  0x5a, 0xeb, 0x5b, 0x94, 0xda, 0x14, 0x8a, 0xa7, 0x59, 0xd6, 0xa2, 0x7f,
  0x37, 0x54, 0xe9, 0x57, 0xb4, 0xf1, 0x57, 0x1b, 0x1b, 0xd1, 0x32, 0x7b,
  0xb2, 0xa4, 0x18, 0x37, 0x8f, 0x7c, 0x29, 0x7e, 0x73, 0xd8, 0x59, 0xb4,
  0x4e, 0x13, 0xde, 0xdc, 0xdc, 0x78, 0x7a, 0xd2, 0xf2, 0xe4, 0x53, 0x93,
  0xbc, 0x64, 0xc7, 0x86, 0xd3, 0x4e, 0x62, 0xe2, 0xcc, 0x01, 0xbf, 0xe9,
  0xc0, 0x65, 0x74, 0x99, 0x22, 0xc9, 0xc1, 0x9c, 0x21, 0xe6, 0x69, 0xfc,
  0xe8, 0x3b, 0xf1, 0x35, 0x2b, 0x8d, 0x17, 0x58, 0x5f, 0xbb, 0xd6, 0x23,
  0x13, 0x9c, 0x9f, 0xb0, 0x10, 0x4c, 0x8d, 0x22, 0x7c, 0xb5, 0x23, 0x20,
  0x42, 0x5f, 0xdf, 0xb4, 0xd3, 0x72, 0x16, 0x47, 0x26, 0x6e, 0xda, 0x8d,
  0x1c, 0x37, 0x3b, 0xdf, 0x42, 0xf5, 0x41, 0xb0, 0x3b, 0x3e, 0x50, 0x1b,
  0xa1, 0x4f, 0x9b, 0x0c, 0x4b, 0xee, 0xa4, 0xde, 0xf7, 0x10, 0x91, 0xf9,
  0x49, 0xdb, 0xcd, 0x3b, 0xd0, 0x4b, 0xc1, 0x75, 0x91, 0xca, 0x80, 0xc0,
  0x51, 0x6f, 0xed, 0x9a, 0x19, 0x8f, 0x98, 0x3b, 0xb6, 0x4b, 0x43, 0x3e,
  0x1d, 0x0c, 0xa7, 0xeb, 0x31, 0x5e, 0x9a, 0x9b, 0xa1, 0x6f, 0xda, 0x31,
  0x06, 0xe3, 0x19, 0xf2, 0x4f, 0x6b, 0x9b, 0xd9, 0xe5, 0x3b, 0x4a, 0x30,
  0x38, 0x21, 0x5d, 0x9d, 0xba, 0x26, 0xfa, 0x48, 0x0e, 0x66, 0x0f, 0x57,
  0xa6, 0xe0, 0x99, 0x1c, 0x3c, 0xf2, 0xf3, 0x4a, 0x16, 0x9e, 0x2f, 0x67,
  0xd5, 0xd7, 0xa6, 0x83, 0xd6, 0x7d, 0x0d, 0x2f, 0xeb, 0xbe, 0x06, 0x03,
  0x4a, 0x11, 0xd6, 0xd0, 0x38, 0xf9, 0xb2, 0x8c, 0xce, 0xf5, 0xb1, 0x68,
  0x7d, 0x70, 0x79, 0x7e, 0xf2, 0xcd, 0xc5, 0xc6, 0x53, 0x3e, 0xca, 0x3a,
  0xff, 0x37, 0xeb, 0x8a, 0x35, 0x4b, 0x58, 0xa6, 0x4f, 0xd6, 0xc9, 0x37,
  0x83, 0x41, 0xef, 0xe8, 0xf2, 0x94, 0xba, 0x5c, 0x0e, 0xe0, 0xcf, 0x16,
  0x2c, 0xf6, 0x3e, 0xb5, 0x02, 0xe8, 0x7d, 0x27, 0xb5, 0xa3, 0xa5, 0x26,
  0x09, 0x92, 0x07, 0x10, 0x0f, 0x53, 0xd0, 0x13, 0x79, 0x8f, 0x0c, 0xb4,
  0x07, 0x0d, 0xdf, 0x34, 0x79, 0x2e, 0x4f, 0x37, 0xe9, 0x53, 0xf8, 0x49,
  0x5a, 0x50, 0x8b, 0xfb, 0x60, 0xe9, 0x37, 0xb8, 0x44, 0xcd, 0x87, 0x52,
  0x4c, 0x89, 0x41, 0x6b, 0x32, 0x38, 0x58, 0x7e, 0x28, 0x4e, 0x6c, 0xc0,
  0x2e, 0x5c, 0x7a, 0x83, 0xae, 0x30, 0xac, 0xad, 0x50, 0xd0, 0xd4, 0x86,
  0xeb, 0x8d, 0x4c, 0x34, 0x86, 0xc6, 0x9b, 0x21, 0xfc, 0xc8, 0x40, 0xa3,
  0xab, 0x4d, 0xa7, 0xc8, 0x5a, 0x6f, 0x19, 0x45, 0x07, 0x6b, 0xd2, 0x38,
  0x3e, 0xcb, 0x97, 0xd3, 0x1b, 0x36, 0xb0, 0xea, 0x7e, 0x08, 0xe2, 0xe5,
  0x1a, 0x7d, 0x35, 0xbd, 0x1b, 0x60, 0x92, 0x1e, 0x09, 0xd2, 0x3b, 0xaa,
  0xf7, 0x14, 0x09, 0x06, 0x87, 0x58, 0xbd, 0xe1, 0xa4, 0x8b, 0xf1, 0xef,
  0x82, 0x81, 0xbe, 0x42, 0x03, 0x19, 0x72, 0xe0, 0x94, 0xdc, 0x68, 0x59,
  0x35, 0x9b, 0xcb, 0x5f, 0xe3, 0xec, 0x91, 0xdc, 0xa5, 0xe2, 0xbf, 0xa7,
  0xfa, 0x4f, 0x43, 0xd3, 0x75, 0x42, 0xaf, 0x8a, 0x11, 0x19, 0xfa, 0x9c,
  0x82, 0xca, 0x85, 0x9f, 0xab, 0x68, 0x96, 0x7a, 0xda, 0xcf, 0x41, 0x4c,
  0x93, 0x69, 0xd7, 0xcb, 0xba, 0x3a, 0x4a, 0x17, 0xcc, 0x61, 0x09, 0x93,
  0x89, 0x22, 0x2c, 0x44, 0x10, 0x60, 0x45, 0xd4, 0x02, 0x72, 0x3d, 0x1e,
  0x96, 0xf9, 0x6c, 0x59, 0x91, 0x2e, 0x80, 0x4e, 0x51, 0x2c, 0xae, 0xd9,
  0x20, 0xd2, 0x95, 0xf0, 0x25, 0x8c, 0x1a, 0x39, 0x09, 0xa8, 0x51, 0xa8,
  0x0e, 0xc0, 0xb6, 0x27, 0xed, 0xdb, 0x10, 0x00, 0x47, 0x11, 0xc5, 0x3f,
  0x81, 0x3b, 0xcb, 0x63, 0xd1, 0x50, 0x0b, 0x4a, 0x4b, 0xba, 0x53, 0xb0,
  0x37, 0xff, 0xfc, 0xf4, 0xac, 0x6a, 0xbb, 0xa3, 0xde, 0x75, 0x64, 0xdd,
  0xb5, 0x44, 0x75, 0xab, 0x35, 0x86, 0x38, 0x5b, 0x6b, 0xa6, 0xb2, 0x66,
  0x0b, 0x0c, 0xf1, 0x96, 0x0c, 0x1f, 0xcd, 0xc7, 0xf8, 0x3b, 0x31, 0xe5,
  0xf2, 0x18, 0x45, 0xf8, 0xb9, 0xd0, 0x4a, 0xf6, 0x30, 0xfa, 0xab, 0x92,
  0x51, 0xea, 0x5f, 0x6a, 0x0c, 0xfd, 0x5d, 0xc2, 0x79, 0x67, 0x7c, 0xc4,
  0x74, 0x1a, 0xb5, 0x43, 0x66, 0x2d, 0xbf, 0xd9, 0xd4, 0x0e, 0x37, 0xa2,
  0x4f, 0x4f, 0x78, 0x04, 0x8c, 0xa1, 0x74, 0xb3, 0x2a, 0x55, 0x8f, 0xd0,
  0xdf, 0x16, 0x73, 0x3b, 0x4d, 0x7e, 0xd9, 0xf9, 0x86, 0x29, 0x05, 0xca,
  0x57, 0x77, 0xbc, 0xb5, 0xa7, 0xd3, 0x7f, 0xc6, 0x86, 0xd8, 0xf5, 0xdb,
  0x1f, 0x7a, 0x96, 0x9d, 0x89, 0x17, 0x97, 0x04, 0x49, 0x69, 0x16, 0x05,
  0x9c, 0xff, 0xa3, 0xfc, 0x05, 0xef, 0xc0, 0xf7, 0x69, 0x06, 0x9a, 0x61,

  0xb9, 0xa1, 0xc4, 0x99, 0x66, 0x21, 0x18, 0x05, 0xe4, 0x1d, 0x6b, 0x25,
  0x58, 0x62, 0xc0, 0x71, 0x6c, 0xa2, 0x1e, 0x2a, 0xce, 0x1c, 0xb0, 0xf1,
  0x58, 0x91, 0xd3, 0xd8, 0xf4, 0x71, 0xe1, 0xd5, 0xcf, 0x8c, 0x0c, 0xd3,
  0xa1, 0x31, 0x08, 0xbc, 0x18, 0xcc, 0x82, 0x2c, 0x7d, 0xe8, 0x9b, 0xe0,
  0xbe, 0x41, 0x5f, 0x73, 0x83, 0x9b, 0xc0, 0x08, 0x03, 0x3d, 0xed, 0x89,
  0xb3, 0x35, 0x43, 0x58, 0xb8, 0xbb, 0xb4, 0xce, 0xf5, 0xfd, 0x8d, 0x68,
  0x52, 0x2d, 0xd6, 0xb7, 0x37, 0x18, 0xc3, 0x5e, 0x7a, 0xa9, 0xe7, 0x56,
  0xdc, 0xfb, 0x5e, 0x1c, 0xcc, 0x2d, 0x8c, 0x8e, 0xcd, 0x67, 0x29, 0xb8,
  0x89, 0x70, 0x6e, 0x54, 0xc5, 0x37, 0x91, 0x1b, 0xcc, 0x1b, 0x66, 0x1a,

  0x30, 0x53, 0x1a, 0x73, 0x60, 0xef, 0xb8, 0x16, 0x7f, 0x81, 0xc8, 0xae,
  0x54, 0xd9, 0x08, 0x16, 0x84, 0xed, 0x82, 0x2b, 0xbd, 0xc0, 0xa4, 0xf4,
  0x19, 0x76, 0x6e, 0x36, 0xee, 0x21, 0x0f, 0x99, 0x16, 0x39, 0x88, 0xc8,
  0x22, 0x80, 0x7f, 0x29, 0x36, 0xc5, 0x35, 0x55, 0xdf, 0xdc, 0xa5, 0x45,
  0x9e, 0x11, 0xc4, 0xe8, 0x5d, 0x5c, 0xa4, 0x14, 0xe6, 0xef, 0xbc, 0xbb,
  0x78, 0x7f, 0xd2, 0x71, 0x9d, 0x22, 0x93, 0x54, 0xfc, 0xe8, 0x74, 0x7e,
  0x4d, 0x2f, 0xb5, 0x9e, 0x66, 0xc8, 0x69, 0x08, 0x22, 0x7d, 0xc4, 0x6a,
  0x1f, 0x01, 0x31, 0x10, 0x54, 0x5c, 0x62, 0x22, 0xe4, 0xa0, 0x4a, 0x4a,
  0x12, 0x80, 0xf4, 0x55, 0x54, 0x0a, 0xa3, 0x24, 0xa0, 0x50, 0xf7, 0x1b,

  0x35, 0x0d, 0xa9, 0x03, 0x4e, 0xee, 0x76, 0xf6, 0x8b, 0x9c, 0xee, 0x7f,
  0xa8, 0xe6, 0x6b, 0x5b, 0x14, 0xeb, 0x62, 0x6f, 0x8a, 0xc7, 0xf9, 0x23,
  0x5a, 0x36, 0x6b, 0x75, 0x01, 0xb8, 0x56, 0xa2, 0x31, 0x5e, 0xad, 0xe9,
  0xf6, 0x52, 0xba, 0xa8, 0xe5, 0xf1, 0x7e, 0xc7, 0xe5, 0x96, 0xaf, 0x33,
  0x55, 0xf3, 0x27, 0xec, 0xe8, 0x3c, 0xb8, 0xbd, 0x7d, 0x07, 0x7c, 0xfb,
  0x1e, 0xaa, 0x27, 0xf1, 0x91, 0x62, 0x5b, 0x20, 0x56, 0x6f, 0xd6, 0x5c,
  0x8f, 0xd2, 0x63, 0x8f, 0x09, 0xdf, 0xab, 0x08, 0x9f, 0xcf, 0x47, 0x0c,
  0x2b, 0x66, 0xe2, 0xaa, 0x0d, 0xc0, 0x67, 0xd5, 0x92, 0x32, 0xa7, 0x6d,
  0x2b, 0x8d, 0xd6, 0x0a, 0x38, 0x0a, 0x82, 0x9b, 0xd2, 0xa8, 0x14, 0x77,
  0x31, 0x2d, 0x10, 0xc3, 0xc7, 0x46, 0x91, 0xe5, 0x4b, 0x5d, 0xb7, 0x9a,
  0xba, 0x0d, 0x82, 0xd8, 0x26, 0xa3, 0x18, 0xbd, 0x84, 0x31, 0x78, 0x19,
  0xc5, 0xd5, 0xe0, 0xbf, 0x29, 0x92, 0xad, 0xaf, 0x1f, 0x9b, 0x9d, 0x54,
  0xc7, 0x36, 0x55, 0x2c, 0xc1, 0xdf, 0xd8, 0x9c, 0x31, 0x11, 0x7f, 0x46,
  0xe9, 0x20, 0x85, 0x03, 0xdb, 0x8f, 0xc4, 0x94, 0x65, 0x93, 0x84, 0x41,
  0xdb, 0xcc, 0x7d, 0x84, 0xa5, 0x49, 0x23, 0x85, 0x72, 0x59, 0xdc, 0x51,
  0xd5, 0xab, 0xf4, 0xdf, 0xe2, 0xd4, 0x60, 0x7b, 0x1e, 0x72, 0x0e, 0x01,
  0x29, 0xef, 0xcc, 0x10, 0xd3, 0x36, 0x0b, 0x41, 0xc6, 0x8a, 0xbe, 0xe1,
  0x59, 0x98, 0x09, 0x1a, 0x4b, 0x07, 0x01, 0x50, 0x58, 0x8b, 0xf5, 0x92,
  0xf4, 0xf3, 0x92, 0x70, 0x73, 0xab, 0x22, 0x1e, 0xd9, 0xbf, 0xf4, 0xe2,
  0x72, 0x94, 0xa6, 0xda, 0xcf, 0x09, 0xe3, 0x83, 0x09, 0xa6, 0xc3, 0x06,

  0xf1, 0x71, 0xec, 0x79, 0x98, 0x4e, 0x2a, 0xe3, 0x9c, 0xdd, 0xbb, 0x9c,

  0x73, 0x12, 0x73, 0xab, 0x3f, 0xcc, 0x60, 0xa1, 0xd2, 0x38, 0x09, 0x1e,
  0x86, 0x5a, 0x5c, 0x69, 0xa5, 0x4d, 0x8b, 0x69, 0x0b, 0xd6, 0xf7, 0xb6,
  0x6b, 0x7e, 0xeb, 0x26, 0xf4, 0x10, 0xa5, 0xaa, 0xac, 0xd8, 0x94, 0xbc,
  0xbf, 0xdf, 0x71, 0x9f, 0x59, 0x15, 0x0d, 0x6f, 0x80, 0x22, 0x65, 0x79,
  0x2f, 0x9e, 0x2d, 0x82, 0x29, 0x6e, 0x83, 0x8d, 0x5a, 0xc3, 0xcb, 0xa3,
  0xb3, 0xcb, 0x73, 0xc2, 0xcb, 0x43, 0xe4, 0xf4, 0xac, 0xe4, 0x2c, 0x05,
  0xfc, 0x19, 0x26, 0xb0, 0x67, 0x0c, 0x2b, 0x49, 0x49, 0x23, 0x63, 0xbf,
  0xbc, 0x9a, 0x9a, 0x43, 0x90, 0xf9, 0x10, 0xb2, 0xaf, 0x38, 0xbd, 0x2d,

  0x8b, 0x9c, 0x02, 0x47, 0x66, 0xf0, 0x6a, 0x5f, 0x34, 0x97, 0x03, 0x5f,
  0xb5, 0xdf, 0xd6, 0x2e, 0x0b, 0xa6, 0x10, 0xa9, 0xfe, 0xae, 0x01, 0x0c,
  0xcc, 0x23, 0x81, 0x07, 0xf4, 0xf8, 0x79, 0x95, 0x18, 0x6c, 0x42, 0xb1,
  0xeb, 0x0c, 0x16, 0xaa, 0x76, 0xb0, 0xe2, 0x24, 0x0d, 0x02, 0xae, 0xd0,
  0xfa, 0xf8, 0x72, 0x35, 0xa2, 0x01, 0x6c, 0x6c, 0xb6, 0xc8, 0x9a, 0x78,
  0x5b, 0xb2, 0xdd, 0x41, 0x23, 0xd4, 0x03, 0x7f, 0x5b, 0x59, 0x17, 0xa6,
  0x53, 0xc5, 0xc6, 0x59, 0x2b, 0x0e, 0xf8, 0xbc, 0xcb, 0x5f, 0x1d, 0x2e,
  0x91, 0x43, 0x34, 0xbe, 0x20, 0xc7, 0xcb, 0x4a, 0x13, 0x3f, 0x81, 0xdf,
  0x13, 0xf7, 0x17, 0x23, 0x29, 0x61, 0x0d, 0x67, 0x12, 0xcf, 0x41, 0x2d,
  0xc8, 0xb4, 0x50, 0x00, 0x3d, 0xbf, 0x98, 0xcf, 0xd9, 0x9c, 0xf0, 0x32,
  0x16, 0x8e, 0xa5, 0x70, 0xf6, 0xc4, 0x05, 0x1a, 0xf5, 0x03, 0xfc, 0x19,
  0xe4, 0xa4, 0xee, 0xf0, 0xa1, 0x9a, 0x30, 0x7a, 0xdd, 0xe0, 0x1e, 0x48,
  0xdc, 0x46, 0x5b, 0x7f, 0x32, 0x70, 0x38, 0x0f, 0x61, 0xba, 0x7f, 0x63,
  0xe7, 0xaa, 0x9b, 0x65, 0x76, 0x0b, 0x53, 0xf0, 0xcb, 0xa1, 0x35, 0xd9,
  0x17, 0x9b, 0x5f, 0x70, 0xcb, 0x5c, 0xfc, 0x0b, 0xf7, 0x5f, 0x36, 0x23,
  0x20, 0x66, 0xf9, 0x1d, 0x3a, 0xf2, 0x04, 0xc4, 0xdb, 0x51, 0x4e, 0x43,
  0xb3, 0x1b, 0x9b, 0xfb, 0x01, 0xb3, 0x32, 0x1b, 0x18, 0x4c, 0x67, 0xd7,
  0x93, 0xb6, 0xcd, 0xe6, 0x81, 0x1a, 0x1d, 0x91, 0x22, 0x51, 0x6c, 0x05,
  0x90, 0xa2, 0x8a, 0x24, 0x4d, 0xf5, 0xf2, 0xd8, 0xe1, 0x92, 0xc8, 0x1e,
  0x4d, 0x36, 0xfa, 0x26, 0x61, 0xb7, 0x38, 0xdd, 0xa7, 0x02, 0x33, 0xa9,
  0xd7, 0xe6, 0xb7, 0xd1, 0x01, 0x2b, 0x29, 0xe4, 0xc8, 0x02, 0x22, 0xb0,
  0xa5, 0xfc, 0x92, 0x89, 0x62, 0x74, 0x36, 0xec, 0x0b, 0xeb, 0x36, 0xa6,
  0x0c, 0xf0, 0x2d, 0x5b, 0xca, 0x95, 0x64, 0x86, 0xc8, 0xe6, 0x41, 0xe0,
  0xd9, 0x4f, 0xbe, 0x4b, 0x76, 0x21, 0xce, 0x46, 0x99, 0x1f, 0x36, 0x36,
  0x29, 0x7b, 0x16, 0x37, 0x3c, 0xf7, 0x99, 0xe1, 0x79, 0x9d, 0x17, 0xda,
  0x95, 0x7a, 0x75, 0xd4, 0x81, 0x1b, 0xfd, 0x24, 0x0f, 0xc4, 0xe1, 0x31,
  0xc1, 0xfe, 0xf2, 0xdc, 0xaf, 0xf2, 0x16, 0xf7, 0xdf, 0x90, 0xea, 0xb3,
  0x9f, 0xe2, 0x82, 0xc6, 0x74, 0x97, 0x9f, 0xb5, 0xb8, 0xb6, 0x7e, 0x3d,
  0x0b, 0x54, 0x8b, 0x4a, 0x58, 0x9d, 0xcf, 0x01, 0x33, 0x8f, 0x01, 0x0a,
  0xdd, 0x7d, 0x1a, 0x16, 0x88, 0x9f, 0x04, 0x2b, 0x7b, 0x8a, 0x59, 0x29,
  0xe8, 0x06, 0xf4, 0xd8, 0xe0, 0x85, 0xf1, 0x1b, 0x71, 0xad, 0x8d, 0xe9,
  0xb2, 0xa6, 0x6f, 0x45, 0xf4, 0x96, 0xb2, 0x1b, 0xc5, 0xc9, 0x9d, 0x2f,
  0x29, 0x9a, 0xe6, 0xa5, 0x40, 0x5a, 0xca, 0x8f, 0x19, 0xe5, 0x03, 0xeb,
  0xdc, 0xe3, 0x22, 0xe3, 0xfc, 0x98, 0xb1, 0x9b, 0x87, 0x07, 0xcc, 0xd4,
  0x5c, 0x2d, 0x86, 0x9c, 0xeb, 0x95, 0xbe, 0xdf, 0xa8, 0x4c, 0xa9, 0x1e,
  0x36, 0x68, 0xc2, 0xda, 0x8e, 0x6a, 0x5a, 0x2f, 0xb4, 0xe2, 0xde, 0xb8,
  0xd7, 0x46, 0xbc, 0x1b, 0xed, 0x97, 0xa6, 0xbe, 0x65, 0x7c, 0x73, 0x0c,
  0xf9, 0x37, 0x76, 0x86, 0x60, 0x0a, 0x9e, 0x89, 0x45, 0xc7, 0x04, 0x51,
  0x76, 0xcd, 0xc2, 0xea, 0xa0, 0x8d, 0x2f, 0xbd, 0xb3, 0x13, 0x62, 0x4b,
  0xc7, 0x41, 0xf4, 0x0d, 0xbd, 0x94, 0xd2, 0xd0, 0x57, 0x62, 0x4d, 0x78,
  0x8d, 0x14, 0xf6, 0xe7, 0xf4, 0x0d, 0x2c, 0x14, 0xad, 0x0c, 0x6c, 0xef,

  0xfe, 0x35, 0x29, 0x28, 0xa1, 0x6b, 0x49, 0xdd, 0x01, 0x4c, 0x3c, 0x9e,
  0x7c, 0x33, 0x88, 0x6d, 0xea, 0x62, 0xb2, 0x21, 0x48, 0x63, 0xdf, 0xe1,
  0x53, 0x9c, 0x2b, 0x21, 0xdd, 0x83, 0xc2, 0xae, 0x24, 0x34, 0x05, 0xa8,
  0x4e, 0xfa, 0x66, 0x09, 0x94, 0x8a, 0x6a, 0x0a, 0x77, 0xfb, 0xe2, 0xbc,
  0xda, 0x1c, 0xcd, 0x03, 0x62, 0xb7, 0x38, 0x61, 0x67, 0xc6, 0x1e, 0x15,
  0x70, 0x00, 0xa2, 0x4c, 0x80, 0x85, 0x72, 0x8d, 0xd7, 0xb0, 0xc8, 0x6f,
  0x13, 0xe6, 0x17, 0x64, 0x14, 0x12, 0x6a, 0x16, 0xeb, 0xc0, 0xe2, 0x47,
  0x07, 0x09, 0xc5, 0x0d, 0x3d, 0x30, 0xd7, 0xc4, 0x0b, 0x98, 0x73, 0x77,
  0x51, 0x81, 0xdb, 0xb0, 0x72, 0x2c, 0xa5, 0xd7, 0x09, 0xe8, 0x42, 0x7b,
  0x70, 0xf0, 0x55, 0x1b, 0x21, 0x48, 0xdf, 0xef, 0xc8, 0xb3, 0xcd, 0xa9,
  0xbb, 0x3c, 0x3b, 0x70, 0xa4, 0xcf, 0x6f, 0x1a, 0x0a, 0xb4, 0x44, 0xce,
  0xcb, 0xe8, 0x90, 0x19, 0xc2, 0xc3, 0x23, 0x95, 0x80, 0x36, 0x3d, 0x94,
  0xd4, 0xfc, 0xb6, 0xa7, 0xd6, 0xe2, 0xd8, 0xd4, 0x0e, 0x4e, 0xa4, 0xa6,
  0x86, 0x6b, 0x52, 0xc6, 0x16, 0xba, 0x57, 0xda, 0x5f, 0x10, 0xd4, 0x88,
  0x0f, 0x86, 0x8b, 0x2e, 0x4e, 0xe3, 0x7a, 0xe3, 0xf2, 0x65, 0x32, 0x9f,

  0xf0, 0x74, 0x08, 0x6f, 0x29, 0x2d, 0xad, 0x7d, 0xf0, 0x6f, 0x98, 0xc1,
  0x0d, 0xc6, 0x48, 0x85, 0x29, 0x7c, 0xfc, 0x25, 0xcf, 0x5c, 0xe0, 0x46,
  0x90, 0xa6, 0xc6, 0x87, 0x0b, 0xf4, 0x0d, 0x9e, 0x10, 0x42, 0xc7, 0xbb,
  0x5a, 0x1d, 0x77, 0xe6, 0x88, 0x4e, 0xd0, 0xd2, 0x0c, 0x18, 0xf1, 0x8a,

  0x9e, 0x42, 0x6b, 0x4c, 0x05, 0xd5, 0x9f, 0xb3, 0xed, 0xc4, 0x23, 0x12,
  0x6b, 0x1a, 0x9d, 0xe2, 0x92, 0x1a, 0x98, 0xc3, 0x80, 0xa7, 0x05, 0x67,
  0x24, 0xc9, 0x6a, 0xda, 0xac, 0x56, 0x7f, 0x64, 0x7a, 0x40, 0xd6, 0x72,











  0x9d, 0xc8, 0xba, 0x24, 0xb3, 0xe6, 0x3e, 0xd0, 0xc6, 0x91, 0x66, 0x13,
  0xd9, 0x87, 0xba, 0xce, 0xdf, 0x0f, 0x3e, 0xdf, 0xea, 0x8a, 0x39, 0x8a,
  0x01, 0x4a, 0xf7, 0x19, 0x02, 0x14, 0x0e, 0x68, 0x80, 0xf8, 0x1c, 0xfc,
  0xd4, 0x3c, 0xda, 0x82, 0x9e, 0x8f, 0xa9, 0x4a, 0xbb, 0x98, 0xa7, 0x50,
  0x77, 0x56, 0x5b, 0x4f, 0x60, 0xd5, 0xe2, 0xf9, 0x29, 0x43, 0x99, 0xba,
  0x63, 0x47, 0x69, 0x90, 0xc3, 0x38, 0x95, 0x08, 0xf7, 0x1a, 0xf5, 0x8a,
  0x0c, 0xfa, 0x90, 0xf0, 0xb5, 0x80, 0xdf, 0x89, 0x93, 0x0f, 0x85, 0xdc,
  0x4c, 0x0f, 0x4f, 0xea, 0x60, 0xc6, 0xa4, 0x4d, 0xe7, 0x08, 0x17, 0xa6,

  0x43, 0x0d, 0x88, 0x74, 0xca, 0xb0, 0xf7, 0x2b, 0xef, 0xc9, 0xab, 0xfe,
  0x5e, 0xed, 0x9e, 0x54, 0xb3, 0x79, 0xef, 0x7e, 0xf8, 0x44, 0xb8, 0xea,
  0xfa, 0xec, 0x3d, 0xa5, 0xeb, 0x28, 0xbb, 0xa1, 0x2e, 0x3a, 0x1a, 0x39,
  0x40, 0x59, 0xc5, 0xee, 0x5d, 0x44, 0x57, 0xa7, 0x89, 0x04, 0x6c, 0xfa,
  0x46, 0x64, 0xc6, 0x54, 0xfb, 0x8a, 0xa3, 0x46, 0xc0, 0x0a, 0x23, 0x1c,
  0x91, 0x22, 0x10, 0x58, 0xad, 0x3f, 0x4b, 0x83, 0x45, 0x59, 0x9a, 0x15,
  0x9d, 0x3c, 0x24, 0xa3, 0x25, 0xa5, 0x16, 0xa0, 0x62, 0x8f, 0xf8, 0x5f,
  0xab, 0x63, 0x1e, 0x4e, 0x9c, 0x43, 0x22, 0x1b, 0xf0, 0x83, 0xe6, 0x66,
  0xd8, 0x56, 0x6a, 0xb2, 0x78, 0x5e, 0xbd, 0xe7, 0xf1, 0x64, 0x70, 0x02,
  0xfa, 0x5d, 0xfd, 0x57, 0x5e, 0x78, 0x9f, 0x6a, 0x31, 0x50, 0x99, 0x01,
  0x7a, 0x4a, 0xa7, 0x19, 0xab, 0x8b, 0xef, 0xd3, 0x51, 0x91, 0x97, 0xf9,
  0x84, 0xb3, 0x0c, 0x1d, 0xd3, 0xf6, 0xf4, 0x74, 0x10, 0xdd, 0x27, 0x43,
  0x2d, 0x67, 0xee, 0xfb, 0xfe, 0x7f, 0xe6, 0x22, 0x18, 0xd5, 0x2a, 0xd2,
  0xa4, 0xc2, 0x5d, 0xd3, 0x38, 0x36, 0xe2, 0x7b, 0x51, 0x53, 0x41, 0x41,
  0xbf, 0x21, 0xdb, 0x0b, 0xfb, 0xb2, 0xce, 0x48, 0x34, 0x2d, 0x92, 0x3c,
  0x90, 0xcb, 0xc0, 0x13, 0x50, 0xb1, 0xc2, 0x74, 0x42, 0xfa, 0xd7, 0x30,
  0x96, 0x8e, 0x77, 0xec, 0xd5, 0x01, 0xb6, 0x83, 0xda, 0xa5, 0x78, 0xc3,
  0x6e, 0xd1, 0xcd, 0xe9, 0xd5, 0x19, 0x0d, 0x13, 0xec, 0x11, 0x8b, 0xec,
  0xc0, 0x6d, 0x5b, 0x46, 0x1d, 0x5a, 0xc7, 0x79, 0x41, 0xf9, 0x63, 0x4e,
  0x37, 0x2a, 0x6c, 0xdb, 0xba, 0x2c, 0xd0, 0xcd, 0x4f, 0xd0, 0xb3, 0x3e,
  0x3f, 0xbd, 0xbf, 0xc9, 0xb9, 0x77, 0x1f, 0x6d, 0xb3, 0xd5, 0xd9, 0xa8,

  0x28, 0x4b, 0xfa, 0x9d, 0x10, 0x57, 0xb0, 0xf2, 0xc6, 0x3d, 0xa8, 0x20,
  0x4c, 0xa5, 0x9c, 0x87, 0x2d, 0x07, 0x96, 0xfc, 0x92, 0x37, 0xe9, 0xb4,
  0xa5, 0x35, 0x31, 0xbb, 0xfc, 0x08, 0x9a, 0xc3, 0x2a, 0x46, 0x34, 0x23,
  0x11, 0x9a, 0x05, 0xdf, 0x52, 0xaf, 0xe1, 0x36, 0xfe, 0xcb, 0x77, 0x9e,
  0xb7, 0x50, 0xdf, 0xef, 0x1c, 0x06, 0x34, 0xbe, 0x0b, 0x67, 0x2e, 0xe6,
  0x0a, 0x58, 0x8d, 0xdd, 0x51, 0xd9, 0x6d, 0xe4, 0xdc, 0x03, 0x0f, 0x79,
  0x4a, 0x5f, 0x0f, 0x07, 0x59, 0x34, 0x0a, 0x19, 0xc8, 0x25, 0x72, 0x02,
  0xe9, 0xf2, 0xef, 0x31, 0x1d, 0x4f, 0x3d, 0x4a, 0xe9, 0x5e, 0xdd, 0x1c,
  0x7f, 0xb0, 0xd3, 0x1b, 0x26, 0x31, 0x76, 0xc7, 0x3a, 0xac, 0x50, 0x61,
  0x5a, 0x55, 0x55, 0x14, 0x28, 0x2b, 0xfa, 0x9a, 0xdf, 0xbd, 0x26, 0x5d,
  0x0b, 0x8f, 0xf6, 0xe2, 0xe8, 0xc3, 0xf5, 0xbb, 0x68, 0xa7, 0xbf, 0xf5,
  0xac, 0xaa, 0x22, 0x62, 0x08, 0xb5, 0x31, 0xf4, 0xf0, 0xa8, 0xc9, 0x76,
  0xf6, 0xb7, 0x65, 0x56, 0x6f, 0xbe, 0x13, 0x8a, 0xab, 0x88, 0xfe, 0xa4,
  0xe2, 0x17, 0xd3, 0xbc, 0x9a, 0x99, 0xf1, 0x6e, 0x7b, 0xb6, 0x5e, 0x8f,

  0xcc, 0xef, 0xe2, 0xa9, 0x10, 0x74, 0x19, 0x84, 0x56, 0xa9, 0x4d, 0x56,
  0x80, 0x9f, 0x34, 0xd0, 0x4d, 0x8d, 0xb0, 0xd0, 0x72, 0xe1, 0x3b, 0x65,
  0x1a, 0x2b, 0x93, 0x1e, 0x7b, 0xf5, 0xf6, 0xb8, 0x31, 0xdc, 0x8b, 0x97,
  0xfb, 0x5b, 0x9f, 0x30, 0xc1, 0x32, 0x47, 0x0b, 0x42, 0x4c, 0xb2, 0x20,
  0xe2, 0xd1, 0xf7, 0x05, 0x96, 0x1c, 0xab, 0x8f, 0x28, 0x97, 0x87, 0x5c,
  0x48, 0x84, 0xb2, 0x1a, 0x63, 0xa6, 0x9d, 0x41, 0x4c, 0x29, 0x54, 0xdb,

  0xff, 0xc7, 0x3f, 0x7d, 0xb3, 0xee, 0xaf, 0x3f, 0x51, 0x28, 0x87, 0xda,
  0x91, 0x9a, 0x0a, 0x0d, 0x65, 0x32, 0xa5, 0x15, 0xc7, 0x78, 0x9d, 0xd7,
  0xfe, 0xb8, 0x16, 0x99, 0xa6, 0x61, 0x62, 0x98, 0x87, 0x7b, 0x2e, 0x68,
  0xb8, 0x4f, 0x67, 0xa7, 0xc7, 0x4a, 0x90, 0xf2, 0xb1, 0xa3, 0x11, 0xe8,
  0x2e, 0x48, 0x2b, 0xad, 0x71, 0x5b, 0xd3, 0x3f, 0xed, 0x7e, 0x25, 0xd0,
  0x6b, 0x1a, 0xe2, 0xc0, 0x50, 0x04, 0xe7, 0xc5, 0xd1, 0x0a, 0x50, 0x17,
  0xa5, 0xd2, 0xf3, 0x34, 0x6b, 0xf1, 0x3b, 0x4b, 0xf2, 0xd7, 0x3f, 0xe0,
  0x04, 0xba, 0xd5, 0x7d, 0xfe, 0xcf, 0xba, 0x0f, 0x1a, 0x34, 0x0c, 0x9c,
  0xef, 0xc7, 0x3f, 0x6e, 0x63, 0x35, 0x57, 0xa7, 0x39, 0x44, 0x4e, 0xcd,
  0x24, 0xcc, 0xa9, 0x1a, 0x05, 0x69, 0x15, 0xb0, 0xb2, 0x7e, 0x10, 0x0b,
  0xc5, 0xbb, 0xa8, 0x35, 0xfe, 0xb3, 0x8f, 0xff, 0xfd, 0xeb, 0x76, 0x6f,
  0xff, 0x27, 0xf3, 0xd1, 0x3f, 0x6e, 0x7f, 0xfc, 0xe3, 0x4e, 0x27, 0x54,
  0xac, 0x67, 0x61, 0x1b, 0x9c, 0xe4, 0x52, 0x54, 0x68, 0xb3, 0x47, 0xa9,
  0xb0, 0x91, 0xe0, 0xb0, 0x6d, 0x53, 0x4a, 0x4d, 0xcf, 0x03, 0xd8, 0x56,
  0xe8, 0x73, 0xec, 0x37, 0x1d, 0xfd, 0xda, 0xaa, 0x54, 0x99, 0xc3, 0x7d,
  0xce, 0xef, 0x2b, 0xb8, 0x05, 0xde, 0x10, 0xa9, 0xfd, 0xf0, 0x78, 0x21,
  0xc2, 0x68, 0xb9, 0xe4, 0x81, 0x48, 0x37, 0x0a, 0x8f, 0xe2, 0xef, 0x86,

  0xa4, 0xb4, 0x81, 0x3c, 0x8b, 0xa3, 0xc6, 0xa6, 0x0f, 0x87, 0xe6, 0x27,
  0x59, 0xe2, 0x15, 0xd1, 0x69, 0xb9, 0x2d, 0x5b, 0x6f, 0xca, 0x0e, 0x72,
  0x9b, 0x6e, 0xc0, 0xf8, 0x5f, 0x49, 0x24, 0x2b, 0x37, 0x81, 0x53, 0xba,
  0xd2, 0x5e, 0xd6, 0xd8, 0xdf, 0x30, 0x01, 0xc7, 0xf5, 0xcf, 0xb0, 0x54,
  0x81, 0x01, 0xd3, 0xd2, 0x86, 0xce, 0xe8, 0x67, 0x12, 0x36, 0x43, 0x78,
  0x06, 0xea, 0x93, 0x19, 0x2a, 0xae, 0x8e, 0x87, 0xd8, 0x45, 0xb4, 0xd6,
  0x94, 0xcd, 0x74, 0xd8, 0x1a, 0x5a, 0xa4, 0xb0, 0xb8, 0x6c, 0xd9, 0x10,
  0x77, 0x2b, 0x9c, 0x4d, 0x90, 0x8d, 0xa2, 0xcd, 0x59, 0xdd, 0x40, 0xb1,
  0x87, 0x79, 0xbf, 0x55, 0xd2, 0x73, 0xea, 0x99, 0xa9, 0x7e, 0x9a, 0x7e,
  0xaa, 0xc5, 0x8f, 0x23, 0x6e, 0xd0, 0x46, 0x21, 0xd9, 0x9e, 0x17, 0x47,
  0x46, 0x09, 0x35, 0x7e, 0x04, 0x6e, 0xc8, 0xa8, 0xbc, 0x7d, 0x53, 0xb7,
  0xa2, 0x2e, 0x02, 0xe1, 0x36, 0x40, 0x6a, 0x6b, 0xbd, 0xb5, 0x68, 0xdd,
  0x18, 0x76, 0xe3, 0xb8, 0xbc, 0xd9, 0x08, 0x79, 0x90, 0xad, 0xd3, 0xd6,
  0x32, 0x2a, 0xe9, 0xaa, 0x42, 0x22, 0x93, 0x39, 0x54, 0xbb, 0x02, 0x7b,
  0xc1, 0x70, 0x28, 0x98, 0xde, 0xd9, 0x33, 0x39, 0x00, 0xb5, 0x9f, 0xf4,
  0xd0, 0x54, 0x64, 0x58, 0xe5, 0xff, 0xa0, 0x88, 0x98, 0x1f, 0x90, 0xa4,
  0x67, 0x39, 0x43, 0xaf, 0xc7, 0xc5, 0x6b, 0x56, 0x88, 0x6a, 0x1f, 0xf6,
  0x5e, 0x3a, 0x9f, 0x27, 0xe3, 0x40, 0x1a, 0x1b, 0x27, 0x71, 0x8d, 0x39,
  0xfd, 0x5b, 0x9f, 0x76, 0x3c, 0x29, 0x01, 0xf8, 0x01, 0x0d, 0xe0, 0x05,
  0xa1, 0x38, 0xc5, 0xc1, 0x2f, 0xfa, 0xa0, 0xe0, 0xaa, 0x30, 0x8e, 0x09,
  0x86, 0x0a, 0xc9, 0x8d, 0xb6, 0x5c, 0x70, 0x4d, 0xab, 0xdb, 0x07, 0x80,
  0x7b, 0xc6, 0xf7, 0x7c, 0xaf, 0x0e, 0xcc, 0x26, 0x46, 0x49, 0x32, 0x4a,

  0x74, 0x34, 0xaa, 0xde, 0xb8, 0x8f, 0x19, 0xab, 0xca, 0xa2, 0xda, 0x20,
  0xc4, 0x81, 0x75, 0x00, 0x31, 0x9c, 0x4c, 0x73, 0x38, 0xb2, 0x9a, 0x90,
  0xaf, 0x88, 0x04, 0x78, 0x40, 0xe1, 0x45, 0x21, 0x8c, 0x92, 0x1b, 0x41,
  0x73, 0x0d, 0xa6, 0xeb, 0x1c, 0x6f, 0x3d, 0xbb, 0xff, 0xd9, 0x75, 0xf6,
  0x57, 0x8d, 0x10, 0xdd, 0xee, 0x79, 0xfc, 0x50, 0x77, 0x8c, 0x35, 0x90,
  0x69, 0xdd, 0x07, 0x43, 0x27, 0x12, 0x97, 0xb7, 0x9c, 0x7c, 0x30, 0xce,
  0xed, 0xa9, 0x38, 0x87, 0xc2, 0x82, 0xae, 0x3e, 0x07, 0xc1, 0x1c, 0x0a,
  0xa7, 0xd5, 0xa1, 0xdd, 0x5f, 0xe4, 0xb3, 0xb2, 0x06, 0x57, 0x27, 0xe8,
  0x02, 0xc8, 0x6b, 0xcc, 0xc6, 0xf1, 0x37, 0xcb, 0x14, 0xb7, 0x28, 0xce,
  0x02, 0x69, 0xfb, 0x65, 0x20, 0xaa, 0x8a, 0xba, 0x87, 0x76, 0x91, 0x07,
  0x6a, 0x09, 0x68, 0x0e, 0x2d, 0xfb, 0xb6, 0xaa, 0xe5, 0x4b, 0xed, 0xc1,
  0xf6, 0xfc, 0x1c, 0xa9, 0xec, 0x23, 0x8c, 0x08, 0xbb, 0x0c, 0xa6, 0x27,

  0x39, 0x9b, 0x92, 0xb2, 0x4f, 0xe2, 0x82, 0xb7, 0x34, 0x94, 0x63, 0x92,
  0x4c, 0x11, 0x3e, 0x09, 0xb5, 0x42, 0x44, 0x90, 0x00, 0x1e, 0x97, 0x3d,
  0xd1, 0x0e, 0xfd, 0x45, 0xf3, 0x3c, 0xcb, 0x32, 0x3a, 0x5c, 0xdc, 0x14,
  0x60, 0x61, 0xf9, 0xb5, 0xa8, 0x83, 0x77, 0x11, 0x63, 0x0d, 0xc3, 0x53,
  0xfc, 0x8c, 0xe1, 0xc0, 0x0e, 0x1c, 0xeb, 0x27, 0xc4, 0x10, 0xc5, 0x24,
  0xbb, 0x5e, 0x5c, 0xf6, 0x3c, 0xea, 0xb8, 0xb6, 0x20, 0x04, 0x1c, 0x63,
  0xcd, 0xd9, 0xe6, 0xc7, 0xfc, 0x6e, 0x4c, 0x3b, 0xc8, 0x10, 0xa7, 0x0a,
  0xe8, 0x63, 0xb3, 0xdf, 0xdf, 0x44, 0xbd, 0x60, 0x13, 0xfe, 0x48, 0x9d,
  0xa6, 0x4b, 0xcd, 0xce, 0x9e, 0x20, 0x49, 0xf0, 0x5b, 0xe8, 0x66, 0x95,
  0x2e, 0xd8, 0x4e, 0xa7, 0xc4, 0xbf, 0x2f, 0x29, 0x3d, 0xbf, 0x00, 0x8b,
  0xad, 0x60, 0x9c, 0x83, 0x79, 0x43, 0x11, 0xf5, 0xfa, 0x69, 0x72, 0xd8,
  0xb1, 0x14, 0x4c, 0x9d, 0x46, 0x8f, 0x58, 0x74, 0x9d, 0x90, 0x87, 0x13,
  0x17, 0x91, 0x56, 0x8a, 0x64, 0x48, 0x18, 0x13, 0xf1, 0x4a, 0x9f, 0xc9,
  0xde, 0x4e, 0xe3, 0xf8, 0x52, 0x38, 0xf0, 0x31, 0xd8, 0x9f, 0x04, 0x80,
  0x8c, 0x19, 0xca, 0x7e, 0x8d, 0x23, 0x3b, 0xac, 0x25, 0x39, 0xa5, 0x09,
  0xe9, 0x48, 0xf2, 0xc7, 0x2a, 0xf5, 0x4e, 0xeb, 0x4e, 0xa9, 0xc7, 0xf0,
  0x14, 0x52, 0xfe, 0x08, 0xe5, 0x38, 0x4a, 0x05, 0x03, 0x91, 0x43, 0x62,
  0xda, 0x11, 0x09, 0x20, 0x56, 0xcc, 0x19, 0x92, 0x64, 0x20, 0x4b, 0xca,
  0x54, 0xc8, 0xb3, 0x68, 0xfc, 0x7a, 0x46, 0x68, 0x39, 0x53, 0x80, 0x35,
  0x23, 0x86, 0x34, 0xec, 0xfc, 0x9b, 0x93, 0x2b, 0xb1, 0x02, 0x08, 0x36,
  0xc3, 0x36, 0x7e, 0xf7, 0x40, 0xcb, 0xc9, 0x59, 0xf0, 0x62, 0x8f, 0x4c,
  0x7a, 0xdc, 0xb7, 0xf2, 0x26, 0xde, 0xd9, 0x7f, 0x21, 0xd3, 0x56, 0x44,
  0x41, 0xf2, 0x45, 0xac, 0xf1, 0xaf, 0x36, 0x37, 0x39, 0x99, 0x08, 0x1d,
  0x40, 0x9e, 0xec, 0x25, 0x5f, 0x2c, 0x3e, 0xfb, 0xc5, 0x5a, 0x38, 0x8d,
  0x58, 0xad, 0x43, 0x6d, 0x3f, 0x4e, 0xfd, 0x0f, 0x29, 0xdd, 0xd9, 0x6d,
  0x5e, 0xd3, 0xad, 0xb5, 0x26, 0xa4, 0xda, 0xbe, 0x78, 0x45, 0x4f, 0x17,
  0xc1, 0xe0, 0xa1, 0xe6, 0xc9, 0xc0, 0x1d, 0xb4, 0x56, 0x1f, 0xb1, 0x8d,
  0x9d, 0xdd, 0xe1, 0x0c, 0x61, 0x6c, 0x7a, 0x3f, 0xf2, 0x81, 0x9e, 0xb8,
  0x06, 0x8e, 0xa8, 0xce, 0x1d, 0x59, 0x92, 0xe3, 0x53, 0x8e, 0xeb, 0x10,

  0xe5, 0x69, 0x50, 0x9a, 0xdd, 0x9e, 0x74, 0x98, 0xcb, 0xa1, 0x97, 0xc5,
  0x25, 0xdf, 0x34, 0x58, 0xc4, 0xe4, 0x35, 0x73, 0x72, 0xa7, 0xed, 0x75,
  0x01, 0x8d, 0xab, 0xe0, 0xe8, 0xb8, 0xb3, 0x01, 0x9e, 0x77, 0x86, 0xb0,
  0xef, 0x15, 0x62, 0x8a, 0x92, 0x67, 0x47, 0x49, 0xca, 0xe0, 0x74, 0x70,
  0xb6, 0x18, 0x15, 0xf7, 0xee, 0x01, 0x90, 0xc2, 0x26, 0xd2, 0x81, 0x18,
  0xf4, 0x5e, 0x93, 0x19, 0x8c, 0xc1, 0xbd, 0xea, 0x6f, 0x1d, 0x28, 0x6c,
  0x75, 0x37, 0xfa, 0x26, 0x5b, 0xe2, 0x79, 0xe0, 0xa2, 0xbf, 0x19, 0x7c,
  0xeb, 0x15, 0xa0, 0xe2, 0x1b, 0x7b, 0xbb, 0xf8, 0xc6, 0xf9, 0x80, 0x9f,
  0xba, 0xcf, 0x67, 0x13, 0x78, 0x33, 0xf4, 0xdc, 0x4b, 0x7c, 0x0e, 0x28,
  0x6e, 0x5c, 0xcd, 0x4a, 0x25, 0xaa, 0x15, 0x33, 0xd9, 0xdb, 0x0b, 0xcc,
  0xa4, 0xfb, 0x8b, 0x3f, 0x74, 0x41, 0x72, 0x1d, 0x89, 0x09, 0x7b, 0xb3,
  0x11, 0xe1, 0x50, 0x69, 0x8e, 0x01, 0x61, 0xff, 0x94, 0xcc, 0x97, 0xc1,
  0x54, 0x9e, 0xd3, 0xb9, 0xb1, 0x20, 0x2c, 0xc9, 0x8a, 0x30, 0x3a, 0x5e,
  0xee, 0xec, 0x6e, 0x6f, 0xbe, 0xe8, 0xef, 0xf5, 0x77, 0x4c, 0xaa, 0x2c,
  0xd0, 0xc1, 0x1d, 0x76, 0x16, 0xc2, 0xcc, 0xa4, 0x40, 0x48, 0x88, 0x92,
  0xc4, 0xd2, 0x0c, 0xc6, 0x71, 0xa0, 0x63, 0xa4, 0x03, 0x84, 0x4d, 0x92,
  0x43, 0xa0, 0x98, 0x6d, 0xb7, 0xe6, 0xb2, 0x1f, 0xe8, 0x64, 0x8c, 0xf8,

  0x33, 0x54, 0x2c, 0x26, 0xfe, 0x3f, 0xac, 0x1a, 0xa0, 0x50, 0xf5, 0x30,
  0xfd, 0xfb, 0x32, 0xad, 0x40, 0x0b, 0x40, 0xa6, 0x82, 0x5e, 0x4d, 0x6d,
  0x45, 0x41, 0x76, 0x03, 0xad, 0x03, 0x6f, 0x44, 0xc0, 0x5d, 0xcc, 0x93,
  0xa7, 0x9a, 0x04, 0x1b, 0x5c, 0xe7, 0xba, 0xce, 0x94, 0x78, 0x57, 0xc4,
  0x2d, 0xa0, 0xc0, 0xbe, 0xcf, 0x46, 0xd4, 0x59, 0x14, 0xcc, 0xef, 0x3b,
  0x0a, 0xa5, 0x78, 0x1d, 0x9f, 0xa5, 0x03, 0x14, 0x41, 0xb1, 0x68, 0x30,
  0x4c, 0x33, 0xb6, 0x6c, 0xbf, 0x08, 0xf9, 0x01, 0xd7, 0x80, 0xb1, 0x57,
  0x90, 0xd6, 0xed, 0x71, 0x27, 0xbb, 0x0f, 0xb5, 0x13, 0x97, 0x4e, 0x0b,
  0x58, 0x83, 0xc9, 0x41, 0x1f, 0x86, 0xc7, 0x24, 0x16, 0x85, 0xc5, 0xb4,
  0x2b, 0x90, 0x9e, 0x9e, 0xf0, 0xd0, 0x09, 0xa6, 0x4e, 0x1d, 0x54, 0x87,
  0xff, 0xd5, 0xe8, 0x3f, 0xde, 0xda, 0x7a, 0xb6, 0xd9, 0xa0, 0x59, 0xc6,
  0xfc, 0xd5, 0x54, 0xb6, 0xfb, 0xdb, 0x53, 0xd9, 0xce, 0x73, 0xa9, 0xcc,



  0x12, 0x19, 0xde, 0xb3, 0x15, 0x24, 0x46, 0x08, 0x82, 0x2c, 0x7a, 0x5b,
  0xa8, 0xcc, 0x25, 0x33, 0xc9, 0x67, 0xf3, 0x09, 0xad, 0x46, 0x67, 0x86,
  0xcc, 0x5a, 0xa8, 0x8c, 0x71, 0xf7, 0x98, 0xc6, 0x56, 0x93, 0x98, 0x42,
  0x3c, 0x44, 0xab, 0xa9, 0xac, 0x1e, 0x98, 0x5a, 0x4d, 0x67, 0x96, 0x1c,
  0x9e, 0x4d, 0x65, 0xda, 0xe9, 0x8b, 0xb9, 0x4e, 0x0b, 0x89, 0xd5, 0x68,
  0x4c, 0x88, 0x2c, 0x48, 0x65, 0xaf, 0x42, 0x54, 0xb6, 0xfb, 0x1c, 0x2a,
  0x83, 0x03, 0x9d, 0xa1, 0xa8, 0xac, 0x51, 0xd9, 0xde, 0x6f, 0x4b, 0x65,
  0x88, 0xfb, 0xd5, 0xac, 0x1f, 0x8f, 0x8e, 0xfe, 0xd5, 0x73, 0x8c, 0x69,
  0x58, 0x1d, 0xd5, 0x2b, 0xab, 0xfe, 0x65, 0x9c, 0xa2, 0x71, 0xa1, 0x9f,
  0x3c, 0xb1, 0x3a, 0xd2, 0xd6, 0xf6, 0x2f, 0x3e, 0xb1, 0x9d, 0xa6, 0x65,
  0x52, 0x24, 0x1c, 0xcb, 0xf8, 0xab, 0xc6, 0x94, 0x0e, 0x36, 0x37, 0x7f,
  0x22, 0xdf, 0xdc, 0x01, 0xca, 0xbe, 0x9f, 0x9a, 0x2a, 0x7c, 0x48, 0x9d,
  0x1d, 0x5c, 0x1c, 0x7f, 0x3b, 0x90, 0x98, 0x88, 0xe8, 0x1c, 0xaa, 0x93,
  0xb0, 0x0d, 0x0e, 0xba, 0x2a, 0x21, 0x22, 0x78, 0x6a, 0x2e, 0xb7, 0x87,

  0xee, 0x3d, 0x74, 0x35, 0x30, 0x41, 0xa9, 0x88, 0xc2, 0x8c, 0x09, 0xf8,
  0x51, 0xb0, 0x06, 0x38, 0xe6, 0x21, 0xa3, 0x96, 0x51, 0x8b, 0xa1, 0xc6,
  0x13, 0x91, 0x99, 0x18, 0x97, 0x58, 0xe6, 0xbc, 0xb8, 0x5e, 0xdd, 0x14,
  0x54, 0xec, 0x45, 0x8f, 0x6e, 0x68, 0x58, 0x72, 0xd5, 0xec, 0x64, 0x5e,
  0xef, 0x08, 0x20, 0x7b, 0x51, 0x68, 0xa4, 0x37, 0x64, 0xe4, 0x9a, 0xdf,
  0xaa, 0x87, 0x36, 0x04, 0x04, 0x23, 0x80, 0x8f, 0xce, 0x7e, 0xe3, 0x7b,
  0x5e, 0x5a, 0x6d, 0xfa, 0x50, 0xc3, 0x9d, 0x42, 0xf1, 0x40, 0x7d, 0xd5,
  0x2b, 0x6d, 0x5d, 0xf4, 0xc0, 0x8d, 0x66, 0x68, 0x10, 0x4e, 0x6a, 0x4c,
  0xa8, 0x39, 0x50, 0xb9, 0x07, 0x43, 0x36, 0xfd, 0x7d, 0xfc, 0x8b, 0x18,
  0x7f, 0xc3, 0x7f, 0xdf, 0xc7, 0xef, 0x52, 0xe0, 0x8e, 0xfe, 0x75, 0x83,

  0xff, 0x94, 0x9c, 0x15, 0xc6, 0x94, 0xab, 0x9d, 0xf2, 0x28, 0xbc, 0xd1,
  0x6e, 0x15, 0xa1, 0xc1, 0x3b, 0x39, 0xcf, 0x6d, 0x9d, 0xad, 0xbb, 0x6a,
  0x17, 0x9a, 0xd2, 0x4b, 0x05, 0x33, 0x5c, 0x98, 0x46, 0xde, 0x0b, 0x2b,
  0x5c, 0x89, 0x0b, 0x3c, 0xab, 0x48, 0x22, 0x6e, 0x3b, 0x41, 0x1b, 0x88,
  0x97, 0x03, 0xe0, 0xe6, 0xbb, 0x01, 0x64, 0x78, 0x6e, 0x96, 0x23, 0xf3,
  0xde, 0xde, 0xfa, 0xdc, 0x77, 0x49, 0x7c, 0xd0, 0x2a, 0x57, 0x8b, 0xbe,
  0x4a, 0xe9, 0x36, 0x54, 0x6f, 0x32, 0xb4, 0xb5, 0x5d, 0xa1, 0xcf, 0x06,
  0x0a, 0x61, 0xd1, 0xf6, 0x1d, 0x27, 0x6c, 0x2c, 0x0d, 0xd9, 0xee, 0xf5,
  0xeb, 0x0c, 0xa8, 0xae, 0xbf, 0x24, 0xc9, 0x26, 0xa8, 0xe1, 0x91, 0x24,
  0x8d, 0x78, 0xfc, 0x1d, 0xbd, 0x18, 0x1a, 0xca, 0xfc, 0xca, 0x62, 0x3b,
  0xfe, 0x69, 0x6f, 0x0b, 0x4f, 0x55, 0x47, 0xc1, 0x86, 0x59, 0x33, 0x0d,
  0x41, 0xfd, 0x69, 0x37, 0xee, 0xff, 0x8e, 0xd8, 0x6c, 0xfb, 0x75, 0x2b,
  0xfa, 0x8f, 0x5d, 0x37, 0xef, 0x6c, 0x18, 0x17, 0x01, 0x9f, 0x8d, 0x68,
  0x88, 0x8a, 0x3b, 0xa4, 0xa8, 0x3d, 0x26, 0x21, 0x2d, 0x66, 0x03, 0x96,
  0xea, 0x63, 0xcc, 0x0f, 0x61, 0xa8, 0xc8, 0xef, 0x40, 0x63, 0xe2, 0x40,
  0x6e, 0x33, 0xf9, 0x2e, 0x7b, 0x16, 0x6b, 0x49, 0x7a, 0x5d, 0x4e, 0x73,
  0x0b, 0x57, 0xce, 0xd5, 0x3e, 0x32, 0x2e, 0xe2, 0x7b, 0xc7, 0x82, 0xe6,

  0x6e, 0x15, 0x13, 0x8e, 0x07, 0x99, 0xd4, 0x1e, 0x2c, 0xa3, 0xc0, 0x48,
  0x7f, 0x48, 0xfb, 0x28, 0x47, 0x45, 0x22, 0x91, 0x37, 0x84, 0x3e, 0xa5,
  0xa8, 0x3e, 0x22, 0x86, 0x82, 0xda, 0x31, 0x4d, 0xb4, 0x9a, 0xda, 0xac,
  0x5a, 0xe1, 0x72, 0x08, 0x23, 0xa7, 0x1f, 0x28, 0x54, 0xb0, 0xee, 0x2c,
  0xcd, 0x5a, 0x8c, 0x05, 0x50, 0x07, 0x5f, 0xd5, 0xba, 0x76, 0xd3, 0xb5,
  0x06, 0x2f, 0x33, 0x36, 0xb6, 0x84, 0x6f, 0xa7, 0x8b, 0xa6, 0x88, 0xee,
  0xbd, 0xce, 0x5f, 0xf7, 0x36, 0x0c, 0x88, 0x61, 0x7e, 0x97, 0x94, 0xdc,
  0xa7, 0x1a, 0x27, 0x8b, 0x79, 0x00, 0x37, 0xe4, 0x64, 0x11, 0xf1, 0x45,
  0x45, 0xdc, 0x94, 0x94, 0x2d, 0x50, 0x75, 0x5e, 0xcb, 0x25, 0x9e, 0x59,
  0x81, 0x09, 0x00, 0xc2, 0xef, 0xd0, 0x1d, 0x03, 0xbb, 0x35, 0xe1, 0x9c,
  0x4f, 0x2a, 0xf3, 0xc6, 0xec, 0x08, 0xc1, 0x56, 0xe7, 0x58, 0x4b, 0xbe,
  0xa8, 0xcb, 0x26, 0x44, 0x0c, 0x50, 0xde, 0x70, 0xa8, 0x4c, 0xe5, 0xcb,
  0x27, 0xeb, 0x81, 0x0c, 0xfb, 0x99, 0x88, 0x13, 0x03, 0x2f, 0x1f, 0xd5,
  0x87, 0x31, 0x2a, 0xfb, 0xe8, 0x26, 0x99, 0x4b, 0x6b, 0xaa, 0x16, 0x74,
  0x85, 0x56, 0x28, 0x82, 0xfa, 0x9c, 0x38, 0x61, 0x76, 0x52, 0x2d, 0xfa,
  0xf3, 0xfc, 0x67, 0xd8, 0xe6, 0x18, 0x7b, 0x5d, 0x7a, 0x57, 0x02, 0x64,
  0x7d, 0xc6, 0xe7, 0x82, 0xa1, 0xb3, 0xcc, 0x58, 0x95, 0x91, 0x83, 0x2f,
  0x29, 0xd8, 0xf9, 0x8c, 0x82, 0x11, 0x45, 0xc7, 0x30, 0xe3, 0x93, 0x8f,
  0x1f, 0xce, 0x07, 0x1f, 0x2e, 0x9b, 0x84, 0x7d, 0x79, 0x71, 0x75, 0x7d,
  0xf2, 0xe6, 0xe3, 0xe5, 0xd5, 0xc5, 0xf5, 0xc5, 0xf1, 0xc5, 0x59, 0xb4,

  0xbe, 0xbd, 0xb1, 0xb2, 0xea, 0xd3, 0x78, 0x20, 0x1c, 0xfc, 0x50, 0x9d,
  0x3f, 0xf3, 0x2c, 0x33, 0x8b, 0x75, 0x5c, 0x8f, 0x3f, 0xda, 0xf7, 0x42,
  0x5d, 0xf5, 0xbe, 0x2b, 0xec, 0x8a, 0x20, 0xf1, 0x46, 0x6c, 0x3d, 0x8e,
  0xa6, 0x4b, 0xbe, 0x29, 0x36, 0x8b, 0x84, 0xd1, 0x73, 0x3d, 0x85, 0x4b,
  0xe3, 0xd8, 0x4e, 0xc1, 0xe0, 0x4a, 0x77, 0xdc, 0x7e, 0x53, 0x67, 0xc1,
  0x33, 0x20, 0x05, 0xcc, 0x52, 0x45, 0xb9, 0x9a, 0x2c, 0x18, 0x65, 0x88,
  0xa0, 0xe9, 0xcd, 0x1b, 0xd4, 0xb7, 0x43, 0x22, 0x8b, 0x79, 0x66, 0x34,
  0x3a, 0x10, 0xa5, 0x97, 0x7e, 0xff, 0x36, 0x79, 0x05, 0xe6, 0x9b, 0x49,
  0x17, 0x61, 0x99, 0x08, 0x45, 0x96, 0xa9, 0x3d, 0x11, 0x27, 0x3a, 0xc0,
  0x03, 0xf8, 0x5b, 0x87, 0xab, 0x52, 0xb5, 0xa4, 0x17, 0xad, 0xe7, 0x97,

  0x19, 0x81, 0xe7, 0xde, 0x99, 0x14, 0x0e, 0x87, 0x4a, 0x19, 0xe1, 0x83,
  0x06, 0x38, 0xec, 0x89, 0x06, 0x2d, 0x19, 0x3d, 0x88, 0x6e, 0x24, 0xa9,
  0x2f, 0x8a, 0x3b, 0x35, 0x70, 0x17, 0xf3, 0x04, 0x21, 0xf3, 0x26, 0x62,
  0x14, 0xa9, 0x8b, 0x67, 0xdf, 0x65, 0x82, 0x96, 0x68, 0xed, 0x8a, 0xa2,
  0x23, 0x0b, 0xe2, 0xe4, 0xba, 0xa4, 0x68, 0x42, 0x5c, 0x54, 0x4a, 0x13,
  0xe9, 0x1a, 0x3c, 0xac, 0xb7, 0x8d, 0x69, 0x35, 0xd9, 0xcf, 0xcb, 0xfe,
  0x8b, 0xfd, 0xfe, 0x0e, 0x82, 0xb9, 0x5c, 0xcc, 0x30, 0xbe, 0x29, 0x8a,
  0x05, 0x39, 0x97, 0xe9, 0x03, 0x82, 0x5c, 0x45, 0xa9, 0x91, 0x76, 0xaf,
  0x64, 0xc4, 0x90, 0x2d, 0xa5, 0x35, 0xe6, 0x2a, 0xc9, 0x14, 0xee, 0x43,
  0x3a, 0x4d, 0x0b, 0xda, 0x39, 0x82, 0x05, 0xc1, 0x67, 0x0e, 0x6c, 0x76,
  0x20, 0xe6, 0xcb, 0x35, 0x79, 0xed, 0xa9, 0xe9, 0xc5, 0x38, 0x38, 0xbe,
  0x14, 0x50, 0x0e, 0x0b, 0x1f, 0x42, 0xec, 0x5c, 0xdb, 0xa9, 0x6f, 0xf5,
  0xb7, 0xa2, 0xc1, 0xfb, 0xaf, 0x05, 0xb9, 0xf5, 0xeb, 0x41, 0x40, 0x13,
  0x20, 0x7d, 0x5e, 0x5f, 0xef, 0xbb, 0x41, 0x46, 0x5c, 0x1c, 0xcc, 0xee,
  0xcf, 0xf8, 0xa7, 0x16, 0x56, 0x50, 0xe6, 0xb2, 0x5d, 0x71, 0xe4, 0x39,
  0xf9, 0x74, 0x4b, 0xbb, 0x0e, 0xba, 0x07, 0xdc, 0x57, 0x44, 0xc8, 0x0d,
  0x2d, 0xb9, 0xbf, 0x1a, 0x21, 0x70, 0xc7, 0xbb, 0x68, 0x4f, 0x5e, 0x31,
  0xeb, 0xec, 0x7e, 0xea, 0x92, 0x89, 0xa6, 0xa4, 0xd2, 0xa1, 0x29, 0xd3,
  0x2e, 0x6b, 0x77, 0x20, 0xc1, 0xaa, 0x42, 0x72, 0x0c, 0xcf, 0x92, 0x09,
  0xa9, 0x86, 0x54, 0xea, 0xdb, 0xa5, 0x5f, 0x52, 0xa4, 0xd9, 0x24, 0x13,
  0x86, 0xe1, 0xe2, 0xe8, 0x98, 0xa8, 0x0a, 0xd3, 0xd1, 0xb6, 0x0d, 0xbc,
  0xe4, 0x1a, 0x6c, 0x2c, 0xf6, 0x25, 0x93, 0x7a, 0xf3, 0xd9, 0x23, 0x85,
  0x21, 0xd3, 0x07, 0xbe, 0xdb, 0x3f, 0x27, 0x45, 0xee, 0xa7, 0x3d, 0x90,
  0xf2, 0xa0, 0x20, 0x7f, 0xa0, 0x72, 0x1f, 0x29, 0x0a, 0x91, 0xfd, 0x21,
  0x7e, 0xd5, 0xbb, 0x73, 0x7f, 0xa6, 0x96, 0xd8, 0x0c, 0xda, 0xcd, 0x4a,

  0x85, 0xa0, 0xd0, 0x10, 0xa0, 0x66, 0xaa, 0xc1, 0x6a, 0x87, 0x07, 0xcc,

  0xb0, 0x36, 0xf9, 0x91, 0xcb, 0x9a, 0x3d, 0x13, 0x93, 0xd4, 0xbf, 0x31,

  0x9a, 0x32, 0x36, 0x2b, 0xdb, 0x84, 0xd7, 0xb0, 0xfd, 0x9c, 0x05, 0x22,
  0x14, 0x7d, 0xce, 0xe7, 0xe9, 0xbd, 0x28, 0x7a, 0x93, 0x64, 0x8f, 0xca,
  0xd3, 0x6d, 0x42, 0x21, 0xc1, 0x09, 0xdd, 0xb1, 0x4f, 0xdc, 0x22, 0x5e,
  0x50, 0xea, 0x29, 0xdc, 0x45, 0x33, 0x45, 0x7f, 0x4a, 0xf5, 0x39, 0x87,
  0x38, 0xd7, 0x6b, 0xb3, 0x0d, 0xc4, 0xb4, 0xea, 0x7b, 0xb1, 0x4e, 0xa0,
  0x35, 0x1a, 0x6a, 0xa7, 0xef, 0xe9, 0x88, 0x2b, 0xb7, 0x61, 0x83, 0xe2,
  0x9a, 0x64, 0xd2, 0x95, 0xcb, 0xe1, 0xdf, 0xb8, 0xfb, 0x41, 0x84, 0xae,
  0x85, 0x42, 0xb6, 0x41, 0x12, 0x50, 0xe1, 0x54, 0xe1, 0x01, 0x0e, 0x5b,
  0x01, 0x77, 0xc8, 0x42, 0xc3, 0x51, 0x12, 0x80, 0xb6, 0x1d, 0xa8, 0x93,
  0x18, 0x4d, 0x29, 0x58, 0x2f, 0x9a, 0xb4, 0xa8, 0x0c, 0x7a, 0x7f, 0x7a,
  0x13, 0xe4, 0xa9, 0x9c, 0xd7, 0xd8, 0x10, 0xbe, 0xbc, 0x97, 0x9c, 0x4b,
  0x6b, 0x32, 0xbb, 0xf1, 0xf1, 0xd6, 0xb1, 0x94, 0x53, 0x97, 0xdd, 0x3f,
  0xe3, 0x1f, 0xfe, 0x1a, 0x6a, 0x24, 0x8b, 0xdb, 0xac, 0x8c, 0x04, 0x1f,
  0x27, 0xb6, 0x44, 0xaf, 0xb7, 0x7d, 0xe0, 0xb5, 0x15, 0x03, 0xab, 0xc7,
  0x26, 0x2e, 0xf6, 0x9c, 0x0f, 0x7c, 0xc8, 0x14, 0xe4, 0x51, 0xa9, 0x7b,
  0x61, 0xba, 0x4e, 0x48, 0xe5, 0x4c, 0xdd, 0x10, 0x42, 0x6c, 0xa0, 0x85,
  0x74, 0xa4, 0x89, 0x27, 0x98, 0xf4, 0x5e, 0x24, 0x16, 0x24, 0x1b, 0x4f,
  0x92, 0x21, 0xc0, 0x04, 0x75, 0x5f, 0x73, 0xb0, 0x17, 0x79, 0xc5, 0xf8,
  0xff, 0x98, 0x25, 0x8f, 0x9a, 0x4e, 0x81, 0x3e, 0x42, 0x67, 0x93, 0x55,

  0x49, 0xc6, 0xd1, 0xcc, 0xe1, 0x73, 0xc2, 0x01, 0x46, 0x0b, 0x25, 0x7f,
  0x91, 0x23, 0xaf, 0x0e, 0x07, 0x93, 0xcf, 0x71, 0xa2, 0x23, 0xb9, 0x9c,
  0x6c, 0x70, 0x2f, 0xbe, 0xcb, 0x53, 0xcc, 0x96, 0x33, 0x3c, 0x99, 0xd4,
  0x37, 0x4b, 0x25, 0xd7, 0xe1, 0x0e, 0x36, 0x36, 0xc5, 0x4c, 0xec, 0x2b,
  0xf4, 0x64, 0x52, 0x06, 0x20, 0xb9, 0x3c, 0x9c, 0x8a, 0x48, 0xbe, 0xdd,

  0x3a, 0x1c, 0xe5, 0x21, 0x51, 0xb8, 0x3a, 0xc3, 0x30, 0x53, 0xc6, 0xb1,
  0x2b, 0x31, 0x3e, 0x95, 0xdd, 0xe2, 0x0c, 0xd1, 0x4c, 0xc3, 0x3c, 0x8c,
  0x18, 0xa5, 0x92, 0x56, 0x7c, 0x36, 0x40, 0xfe, 0x5d, 0xd7, 0x92, 0xa3,
  0x0b, 0x98, 0x74, 0x69, 0xab, 0xe6, 0xf6, 0x9f, 0x90, 0x11, 0x0f, 0x8f,
  0x9a, 0xa0, 0xb9, 0x52, 0x05, 0x5b, 0x10, 0xda, 0x01, 0x6c, 0x74, 0x5a,
  0xd1, 0x81, 0x35, 0x12, 0xc4, 0x35, 0x6f, 0x5a, 0xfc, 0x35, 0xf3, 0xf9,
  0xd2, 0x6f, 0x2a, 0x2a, 0xd1, 0x3a, 0x41, 0x2f, 0xa8, 0x6c, 0xb7, 0x38,
  0x52, 0x80, 0xc4, 0x51, 0xc3, 0x8d, 0x4f, 0x9c, 0x5e, 0x30, 0x98, 0x87,
  0x8f, 0xf1, 0xbb, 0xb0, 0x1f, 0x71, 0xd3, 0xa0, 0x5d, 0x01, 0xc1, 0x64,
  0xe3, 0x1e, 0x30, 0x81, 0xc5, 0x0a, 0x3f, 0x9c, 0x75, 0x55, 0xd5, 0x32,

  0xcb, 0x5d, 0x78, 0x1d, 0xfe, 0x09, 0x27, 0xb0, 0xca, 0xde, 0xf9, 0x95,
  0x19, 0xa0, 0x69, 0xec, 0x86, 0x76, 0x32, 0x94, 0x21, 0xdb, 0x94, 0xb3,
  0xb8, 0xa8, 0xd6, 0x6e, 0x28, 0xbc, 0x83, 0xb4, 0x81, 0xba, 0x61, 0x6d,
  0xe9, 0x84, 0xbc, 0x77, 0xb2, 0x6d, 0x1f, 0xb8, 0xe6, 0x94, 0x46, 0x24,
  0x28, 0x81, 0x4c, 0x6a, 0x12, 0x9c, 0x2f, 0xb1, 0x29, 0xe7, 0xed, 0x23,
  0xe1, 0xcf, 0x49, 0x63, 0x0d, 0x79, 0x92, 0xc2, 0x41, 0x2e, 0xb7, 0x0b,
  0x9f, 0x76, 0xc0, 0x17, 0x44, 0x7c, 0x92, 0x3e, 0x84, 0x13, 0x4b, 0x57,
  0x22, 0xbb, 0xb4, 0x1c, 0x46, 0x08, 0xd4, 0x68, 0xdc, 0x48, 0xf7, 0xd6,
  0x9f, 0x8f, 0x62, 0x0c, 0xdc, 0x86, 0x93, 0x4c, 0x07, 0x72, 0xdf, 0x7a,
  0xfa, 0x14, 0xf2, 0x69, 0xcd, 0xf0, 0x75, 0x9c, 0x83, 0xdc, 0x9c, 0xed,
  0x61, 0x45, 0x2a, 0x97, 0xf3, 0x39, 0x8a, 0xd7, 0x4b, 0xce, 0x96, 0x8e,
  0x6b, 0xff, 0xe9, 0xfe, 0xf6, 0xa1, 0x1b, 0x62, 0xd2, 0x78, 0x56, 0xed,

  0x5e, 0x96, 0xfa, 0x67, 0x0e, 0xe1, 0x46, 0xaf, 0x5a, 0x14, 0x3d, 0xf4,
  0x6b, 0x16, 0xe5, 0xad, 0x8a, 0x96, 0x41, 0xfb, 0xed, 0x9d, 0x09, 0x7f,
  0x66, 0x45, 0xac, 0xaa, 0x65, 0x09, 0x30, 0xe2, 0x8a, 0xf6, 0xdc, 0xce,
  0x32, 0xcc, 0x83, 0xbf, 0x74, 0x25, 0x4f, 0x6f, 0x23, 0x91, 0x06, 0xfe,
  0xf7, 0xaf, 0x07, 0xe4, 0x06, 0x1c, 0xff, 0xd4, 0x3a, 0x8f, 0x93, 0xae,
  0xcc, 0xe5, 0x13, 0x4c, 0x23, 0x5d, 0xdc, 0xa0, 0x6e, 0x79, 0x18, 0x2a,
  0x69, 0x73, 0x36, 0x42, 0x1e, 0xfb, 0xed, 0xbf, 0x5f, 0xcc, 0x2c, 0xf0,
  0xd7, 0x8a, 0xef, 0xcb, 0x63, 0xbf, 0xf9, 0xf7, 0xf9, 0xee, 0x3e, 0xe9,
  0xf6, 0x21, 0x46, 0xf5, 0x46, 0xea, 0x06, 0x02, 0x3c, 0xf1, 0x57, 0x33,
  0x45, 0xa9, 0x45, 0xf0, 0xb9, 0xa2, 0x7c, 0x2c, 0xd8, 0x9d, 0x46, 0xd8,
  0x22, 0x71, 0xc5, 0xdf, 0x84, 0x83, 0x11, 0x6b, 0xf6, 0x37, 0x47, 0xda,

  0x45, 0x1d, 0xf2, 0x9f, 0x9b, 0x5f, 0x85, 0xce, 0x48, 0xcb, 0xbb, 0x50,
  0x0a, 0x6a, 0x7f, 0x29, 0x6a, 0x58, 0xc4, 0x70, 0x2a, 0xa2, 0xf1, 0x9a,
  0x66, 0x3b, 0xb8, 0x59, 0xa6, 0x2f, 0x19, 0xbe, 0x1a, 0xea, 0x6a, 0x25,
  0x3b, 0xa4, 0xe9, 0xd9, 0x1a, 0xa6, 0xb0, 0x39, 0x43, 0xa8, 0x78, 0x24,
  0xce, 0x17, 0xcb, 0xb6, 0x06, 0x85, 0xcd, 0xd6, 0xc0, 0x16, 0xd8, 0xf9,
  0x5d, 0x57, 0x9a, 0x4a, 0xc1, 0x68, 0x48, 0x55, 0x92, 0x9b, 0x2c, 0xc1,
  0x0f, 0x39, 0x4e, 0x1f, 0xfe, 0x8a, 0xf1, 0xe7, 0xb8, 0x64, 0x86, 0x2b,
  0xaf, 0x61, 0x85, 0xc7, 0x17, 0xe7, 0xe7, 0x27, 0xc7, 0xcd, 0x60, 0xa1,
  0x69, 0xc2, 0x6b, 0x55, 0x7d, 0xaf, 0xa7, 0x29, 0x7d, 0x9e, 0xfa, 0x55,
  0x48, 0xb4, 0x88, 0xbf, 0x4f, 0xed, 0xce, 0x62, 0x81, 0xae, 0xe6, 0x5f,
  0x4a, 0x3b, 0x10, 0x86, 0x35, 0x16, 0x0a, 0x08, 0x54, 0x51, 0x7a, 0xf4,
  0xe0, 0x42, 0x6a, 0x90, 0x33, 0x0d, 0xb1, 0x74, 0xb4, 0xf4, 0x9b, 0x4c,
  0x58, 0x99, 0x05, 0x55, 0x32, 0x8c, 0xc7, 0x9b, 0x52, 0x28, 0xa0, 0xdf,
  0x6e, 0xa3, 0x65, 0x46, 0x42, 0xc4, 0x62, 0xac, 0x5e, 0x3e, 0xe1, 0xf6,

  0xca, 0xf3, 0xb8, 0xb8, 0xc5, 0x70, 0xb6, 0x53, 0x96, 0x45, 0x85, 0xb9,
  0x04, 0xca, 0x3e, 0x1e, 0x87, 0xb0, 0x3a, 0xc8, 0xeb, 0xee, 0x56, 0xa1,
  0xc8, 0x64, 0xa4, 0x25, 0xe9, 0x81, 0xd6, 0xcb, 0xe2, 0xeb, 0x59, 0x72,
  0x8f, 0x9f, 0x61, 0x80, 0x22, 0x04, 0xdc, 0xf0, 0x7b, 0x9c, 0x30, 0xae,
  0x3e, 0x47, 0x15, 0x1e, 0x05, 0xeb, 0x03, 0x8f, 0x6a, 0xce, 0x5d, 0x44,
  0x08, 0xa8, 0x1c, 0xdb, 0xf2, 0x71, 0xad, 0x95, 0xb7, 0x57, 0xef, 0x04,
  0x6c, 0xb4, 0x11, 0x50, 0xf3, 0xf2, 0x90, 0xa5, 0x10, 0xcd, 0x00, 0x90,
  0x52, 0x31, 0x46, 0x1b, 0x5e, 0x13, 0xef, 0x34, 0x1d, 0x03, 0x5a, 0x2b,
  0x65, 0x6d, 0x08, 0x3d, 0xdd, 0xb8, 0x25, 0xf2, 0x37, 0xc0, 0xe6, 0x01,
  0x74, 0x57, 0xf0, 0x13, 0xc0, 0xc4, 0xf6, 0x9b, 0x40, 0xd8, 0x84, 0x11,

  0x47, 0x4e, 0x52, 0x04, 0x87, 0x9c, 0x52, 0x55, 0x09, 0x3e, 0x4c, 0x97,
  0xd5, 0x53, 0x73, 0x91, 0xa1, 0x52, 0xc1, 0x65, 0x57, 0xac, 0x02, 0x8a,
  0x61, 0xc2, 0xee, 0xe2, 0x39, 0xc8, 0xde, 0x2b, 0xd8, 0x13, 0x47, 0x21,

  0xe4, 0x02, 0xc3, 0x9f, 0x8b, 0x65, 0xe5, 0x05, 0x12, 0x11, 0xf6, 0x8e,
  0x11, 0x4f, 0xbe, 0xea, 0xf9, 0x2d, 0xe2, 0xe2, 0xb1, 0x7b, 0xa6, 0xc4,
  0xc0, 0xc9, 0xec, 0x2f, 0xab, 0x71, 0xfa, 0x14, 0x2c, 0xa9, 0xd6, 0x2b,
  0x85, 0xac, 0x1a, 0xda, 0x31, 0x4b, 0xaa, 0x9b, 0xe4, 0x57, 0x68, 0xd2,
  0x82, 0x79, 0x45, 0x59, 0xc4, 0x2a, 0x74, 0x23, 0x42, 0x0f, 0x68, 0x70,
  0x3f, 0xb0, 0x72, 0xd0, 0xb1, 0x95, 0xb4, 0x09, 0xa5, 0x5b, 0xee, 0x5a,

  0xc7, 0x0f, 0xfd, 0xf6, 0x92, 0xe9, 0x36, 0x79, 0x7c, 0x96, 0x8e, 0x62,
  0x9e, 0xfb, 0x14, 0x33, 0x88, 0x0e, 0xe1, 0x3f, 0x2b, 0xbf, 0xfd, 0xfc,
  0xcf, 0x7a, 0x18, 0xa0, 0xcf, 0x93, 0xba, 0x16, 0xdf, 0xd6, 0x02, 0xdc,
  0x7a, 0x6d, 0x91, 0xee, 0xfd, 0xf2, 0xc8, 0x9a, 0x44, 0x5e, 0x29, 0x83,
  0x6d, 0x7d, 0xa0, 0x2b, 0x86, 0x03, 0x01, 0xfb, 0x10, 0xd6, 0xae, 0x84,
  0xa0, 0x9e, 0x27, 0x92, 0x9f, 0x14, 0xc1, 0xb5, 0xf2, 0xea, 0x66, 0x9e,
  0x95, 0xa9, 0xae, 0x7c, 0xe6, 0xc6, 0x05, 0x6a, 0x8d, 0xa3, 0x7f, 0x51,
  0x5d, 0xa1, 0x92, 0xce, 0x9a, 0xb2, 0x42, 0x5f, 0xa9, 0x6d, 0xc2, 0x73,
  0xa4, 0x92, 0xb7, 0x25, 0xcd, 0x1a, 0xcd, 0xda, 0x46, 0xf9, 0xbb, 0xb0,
  0x2a, 0xeb, 0xdd, 0x92, 0x27, 0x3d, 0xf5, 0x9b, 0x5f, 0x8b, 0xe7, 0xa7,
  0x6c, 0xd7, 0x0f, 0x66, 0x65, 0xbe, 0x36, 0xe7, 0x03, 0x73, 0x96, 0x75,
  0x7b, 0xca, 0x76, 0x33, 0x67, 0xdb, 0xf1, 0x4a, 0x04, 0x92, 0xb6, 0x69,
  0xb4, 0xff, 0x0b, 0x53, 0xb6, 0xdd, 0x8c, 0xed, 0x98, 0xf2, 0xb5, 0x03,
  0xe9, 0xda, 0xb2, 0xd1, 0x92, 0xaf, 0xc9, 0x19, 0xdb, 0x2b, 0x53, 0xb6,
  0xdd, 0x9c, 0xed, 0x55, 0x49, 0xdb, 0x04, 0x16, 0xb0, 0x22, 0x65, 0xfb,
  0xd7, 0x65, 0x6c, 0xb7, 0xa5, 0x6c, 0xff, 0xf2, 0x9c, 0xed, 0xdf, 0x36,
  0x65, 0xfb, 0xb7, 0xcc, 0x46, 0xa6, 0xdb, 0x83, 0x27, 0x92, 0x8e, 0xa4,
  0xe8, 0xec, 0xb0, 0x15, 0xea, 0x59, 0x2b, 0x31, 0x6b, 0x09, 0x2c, 0x4e,
  0x98, 0x59, 0x86, 0x61, 0x8d, 0xc6, 0x51, 0xdc, 0xfd, 0xba, 0x21, 0xa1,

  0x95, 0x40, 0x06, 0x9c, 0x1b, 0x07, 0xde, 0x0d, 0xdd, 0xf4, 0xb2, 0x9c,
  0xf5, 0x68, 0x06, 0x58, 0x0b, 0xee, 0x59, 0x89, 0x96, 0xcf, 0x34, 0x9e,
  0xfb, 0xed, 0x59, 0x4e, 0x35, 0x2b, 0xb7, 0x77, 0xad, 0xad, 0x2e, 0x7f,
  0x59, 0x62, 0x9d, 0x72, 0xc8, 0x6e, 0x97, 0x82, 0x91, 0x81, 0x70, 0x19,
  0xc5, 0x9e, 0xe1, 0xd7, 0xc8, 0x4b, 0x9a, 0x98, 0x5e, 0x97, 0x26, 0x24,
  0x61, 0x5a, 0x57, 0x7b, 0xc5, 0x30, 0x04, 0x4b, 0xe0, 0xae, 0x83, 0x64,
  0x08, 0x96, 0xbd, 0x28, 0xd3, 0x2e, 0xe9, 0x16, 0x6e, 0xf7, 0x77, 0xb9,
  0x72, 0x5d, 0x43, 0x3a, 0x32, 0x4f, 0x0f, 0x29, 0x8c, 0xbe, 0xcf, 0x40,

  0xed, 0x36, 0x07, 0x8d, 0x7b, 0xc9, 0xe9, 0x3b, 0xfd, 0xe8, 0x0a, 0xd5,
  0x47, 0x50, 0xd6, 0x61, 0x46, 0x32, 0xb8, 0xfc, 0x2e, 0x34, 0x5c, 0x1d,
  0x1c, 0x18, 0xe8, 0xe7, 0xc3, 0xd5, 0x99, 0x1f, 0x9f, 0xa6, 0xe8, 0xc1,
  0xc1, 0xe6, 0x26, 0x65, 0x48, 0xdd, 0xc4, 0x0f, 0x0f, 0xfd, 0x32, 0xd9,
  0x1c, 0xe7, 0xa3, 0x72, 0x13, 0x4f, 0x50, 0xbf, 0x7c, 0x53, 0xcd, 0x67,
  0xab, 0xb2, 0x1e, 0xd2, 0x52, 0x8b, 0xa5, 0x15, 0x0a, 0xd9, 0x66, 0x5e,

  0xb2, 0xb5, 0x95, 0xba, 0x2d, 0x00, 0x88, 0xef, 0x7b, 0xc8, 0x61, 0x54,
  0x55, 0x00, 0x8b, 0x82, 0xff, 0xa3, 0x5e, 0x38, 0x18, 0x54, 0x0a, 0x14,
  0x94, 0xbb, 0xfd, 0x82, 0x9d, 0x1a, 0x02, 0xff, 0x80, 0xd8, 0x0e, 0x40,
  0xa8, 0xdf, 0xa4, 0x22, 0x16, 0x56, 0xdf, 0x33, 0xdd, 0xf4, 0x5a, 0xa3,
  0x5e, 0x43, 0x5e, 0x7e, 0x3b, 0x3d, 0xa2, 0xb3, 0x96, 0xde, 0xbd, 0xbf,
  0x39, 0x4b, 0x00, 0xea, 0x46, 0x29, 0xff, 0x1c, 0x65, 0xd7, 0x7d, 0xf4,
  0x53, 0xdc, 0x32, 0x93, 0x90, 0x77, 0xc8, 0xd9, 0x76, 0x2b, 0x67, 0x62,
  0x1e, 0xfe, 0x14, 0x33, 0x21, 0xfc, 0x84, 0x20, 0x7f, 0xac, 0xcd, 0x81,
  0x1e, 0xfb, 0x14, 0xdf, 0xbf, 0xdb, 0x6e, 0xfb, 0x2c, 0x35, 0xe7, 0xa5,
  0x27, 0x7e, 0xc3, 0x0f, 0x7f, 0x30, 0xce, 0x2a, 0xc6, 0x9a, 0x38, 0xc4,
  0xff, 0x1e, 0xe8, 0x0e, 0xaf, 0xec, 0xfa, 0xd7, 0xd2, 0x52, 0x41, 0xf8,
  0x9b, 0x95, 0x0d, 0xab, 0xc1, 0x5c, 0x42, 0x64, 0x8e, 0xf7, 0x8a, 0x91,
  0xba, 0x04, 0x6c, 0x9d, 0x7a, 0x60, 0xf4, 0x14, 0xa9, 0x91, 0x91, 0x6d,
  0x18, 0x6c, 0x08, 0x3f, 0x3d, 0xce, 0x15, 0xfc, 0x0a, 0x0c, 0x85, 0xb0,
  0x18, 0x4a, 0x28, 0xd8, 0x1f, 0x40, 0xfa, 0x61, 0x43, 0xdc, 0x5c, 0x64,
  0xb7, 0x1d, 0x53, 0x99, 0xcc, 0xfc, 0xb4, 0x96, 0xa7, 0x7a, 0x49, 0x10,
  0xcf, 0x76, 0x21, 0xa2, 0x86, 0xc6, 0x8f, 0x46, 0x7c, 0xa5, 0xc9, 0x44,
  0x15, 0x67, 0x78, 0x66, 0x41, 0x45, 0xcc, 0x15, 0x3f, 0x88, 0x3a, 0xbd,
  0x0f, 0xd1, 0x41, 0xc7, 0xdb, 0xa2, 0x8b, 0x4c, 0x7a, 0xf1, 0x90, 0xc7,
  0xab, 0x20, 0x80, 0x02, 0x6a, 0xef, 0xe5, 0x6a, 0x26, 0x37, 0x08, 0x24,
  0x65, 0xcd, 0x09, 0xd3, 0xc7, 0x62, 0xea, 0x05, 0xe1, 0xe6, 0xda, 0xb7,
  0xd5, 0xf4, 0x9d, 0x42, 0x41, 0x82, 0x4e, 0x1b, 0x0b, 0x4a, 0x4f, 0xda,
  0x13, 0xf7, 0xd4, 0x40, 0xd6, 0x8a, 0xc1, 0x44, 0x0c, 0x66, 0x62, 0x35,

  0xbe, 0x0f, 0x02, 0x29, 0x3d, 0xdb, 0xa5, 0x94, 0x6e, 0x91, 0x97, 0x65,
  0x3a, 0x04, 0x4e, 0x3d, 0x15, 0x16, 0x59, 0x26, 0x9c, 0x4f, 0xc5, 0xa5,
  0xd7, 0xb8, 0x9b, 0x35, 0x58, 0x86, 0xe6, 0x16, 0xd1, 0x4a, 0x05, 0x0d,
  0x42, 0x9c, 0x4b, 0x30, 0x3b, 0x66, 0x6c, 0x77, 0x29, 0x0e, 0xcd, 0xd4,
  0x16, 0x47, 0xc3, 0x22, 0x4d, 0x26, 0x98, 0xea, 0x48, 0x2b, 0x12, 0xc5,
  0xab, 0xc9, 0x64, 0x67, 0x88, 0x98, 0x82, 0x49, 0x3a, 0x98, 0x69, 0x5b,
  0x22, 0x18, 0x28, 0xa5, 0x5f, 0x53, 0xee, 0xa3, 0xcd, 0xed, 0x2e, 0x12,

  0xcc, 0x1c, 0xb8, 0x4b, 0xe4, 0x58, 0x63, 0xed, 0x89, 0xd4, 0x92, 0x93,
  0x5a, 0x18, 0xcc, 0x74, 0xaa, 0x76, 0x20, 0xa8, 0x26, 0x83, 0x1b, 0x83,
  0x5f, 0xa4, 0x1e, 0x9b, 0x9a, 0xbe, 0x6b, 0x21, 0x15, 0xfa, 0x9f, 0x8c,
  0xc7, 0x3b, 0x5e, 0xe8, 0x5f, 0x50, 0x07, 0x50, 0x6f, 0xc1, 0xb6, 0x2a,
  0x2b, 0xde, 0xc9, 0x8c, 0x16, 0x13, 0xe8, 0xa9, 0x74, 0xf8, 0x09, 0x36,
  0x2b, 0x88, 0xce, 0x9b, 0x5a, 0x4e, 0x20, 0xb1, 0x1c, 0x13, 0xe8, 0x38,
  0x5f, 0xcd, 0xac, 0xae, 0x22, 0xd4, 0x07, 0x2a, 0xe5, 0x77, 0x03, 0xc3,
  0x1f, 0x3c, 0x11, 0x6f, 0xd3, 0xe5, 0xdb, 0x13, 0xe4, 0x9d, 0xfc, 0x78,

  0x2a, 0x08, 0x61, 0x1f, 0x79, 0x8c, 0x33, 0xf0, 0x65, 0x32, 0x62, 0xbb,
  0x73, 0x6e, 0xbc, 0xa6, 0xc6, 0xbb, 0x99, 0xf1, 0xa0, 0xf3, 0x39, 0xb1,

  0x7a, 0x8b, 0xc6, 0x8a, 0x0e, 0xd6, 0x70, 0x94, 0x98, 0x6e, 0x28, 0xf5,
  0xe5, 0x78, 0xe9, 0x75, 0xd7, 0x74, 0x79, 0xb9, 0x0e, 0x75, 0x97, 0xc6,
  0x46, 0x81, 0xb2, 0x1f, 0xe2, 0xfd, 0x14, 0x58, 0xee, 0xb8, 0xb5, 0x36,
  0x04, 0xb9, 0x3d, 0xe3, 0x20, 0x05, 0x2a, 0x3b, 0xcf, 0x07, 0x03, 0x3f,
  0x45, 0x3e, 0x03, 0xe3, 0x24, 0x9f, 0x66, 0xe9, 0xcf, 0x84, 0x19, 0x84,

  0x41, 0xcb, 0x66, 0x7a, 0x6b, 0xad, 0x48, 0x21, 0x72, 0x02, 0xf2, 0x98,
  0x28, 0xe1, 0xf3, 0x37, 0x4a, 0xa2, 0x23, 0xa9, 0x83, 0xe9, 0x60, 0x08,
  0x2c, 0x66, 0x32, 0x01, 0x31, 0xc8, 0xc0, 0x8d, 0xad, 0xc4, 0x16, 0x33,
  0xb9, 0xb3, 0xfc, 0x61, 0xef, 0x70, 0x95, 0x2a, 0x04, 0x13, 0x28, 0x88,
  0xf4, 0xc5, 0x23, 0xfd, 0xe2, 0xa2, 0x02, 0x6a, 0x58, 0xf9, 0xcb, 0x4b,
  0x0a, 0xc2, 0xb0, 0x58, 0xc9, 0x03, 0x33, 0xd0, 0x9a, 0x24, 0x70, 0x60,
  0x75, 0x24, 0x27, 0xbb, 0x4c, 0x42, 0xe2, 0x45, 0xf7, 0x98, 0x05, 0xe9,
  0xb3, 0xe0, 0x07, 0x55, 0xf9, 0x8c, 0xfd, 0xbb, 0xd5, 0x44, 0x1e, 0x34,
  0x81, 0x8e, 0x67, 0x40, 0x0e, 0xa2, 0x1b, 0x5f, 0xc1, 0xfe, 0xc5, 0x9f,
  0x4e, 0x2d, 0x70, 0x18, 0x7f, 0x21, 0x61, 0x9c, 0x40, 0x53, 0x09, 0x24,
  0x36, 0x0a, 0x5e, 0xd8, 0x60, 0x73, 0x56, 0x84, 0x63, 0x20, 0xdd, 0x9d,
  0xdc, 0xcb, 0x52, 0x0d, 0x26, 0xad, 0xd8, 0x71, 0x80, 0x3e, 0x02, 0xe3,
  0x61, 0x5d, 0x95, 0xba, 0xee, 0xe1, 0xd7, 0x58, 0xa9, 0xa5, 0x54, 0xd1,
  0x24, 0x2d, 0xdb, 0x78, 0xc1, 0x4c, 0x91, 0x53, 0x44, 0xc4, 0xc7, 0x6f,
  0x1a, 0x0a, 0xd6, 0xa5, 0x18, 0x23, 0xc3, 0x7a, 0xa4, 0x25, 0x78, 0x41,
  0xa4, 0x05, 0x2c, 0xc1, 0x26, 0x43, 0x40, 0x66, 0x2e, 0x2b, 0x32, 0xb4,
  0xd2, 0x45, 0xee, 0xc3, 0x2c, 0x57, 0x3c, 0x75, 0xbd, 0x85, 0x72, 0xd9,
  0xe6, 0x62, 0x1f, 0x65, 0x90, 0x16, 0x5d, 0xfe, 0x13, 0x54, 0xa2, 0xfc,
  0xaa, 0x52, 0x94, 0x4f, 0x5b, 0x89, 0x62, 0x25, 0x05, 0x4a, 0x1d, 0x5f,
  0x4e, 0x50, 0x94, 0x10, 0x5d, 0x32, 0x9c, 0x06, 0x75, 0x1f, 0x9b, 0x8e,
  0x40, 0xfc, 0x5a, 0x63, 0xb8, 0xf0, 0x65, 0xea, 0x46, 0xb5, 0x2c, 0xd9,
  0xc4, 0xe3, 0x91, 0xeb, 0xc2, 0x35, 0x36, 0x5a, 0xe0, 0x97, 0x12, 0x2c,
  0x19, 0x1f, 0x27, 0x02, 0x9d, 0xf6, 0x67, 0xdb, 0x91, 0xe7, 0x53, 0x1b,
  0x60, 0xdb, 0xc0, 0x9b, 0x0f, 0x1d, 0x79, 0xfc, 0xe5, 0x93, 0x02, 0x99,
  0xee, 0x19, 0xbe, 0x66, 0x91, 0x49, 0x1d, 0x7e, 0x67, 0x31, 0xca, 0xca,
  0x10, 0x9c, 0xaa, 0x19, 0x46, 0x98, 0x9d, 0x61, 0x6f, 0x98, 0x19, 0x87,
  0xef, 0xb7, 0x30, 0xb8, 0x44, 0xe3, 0xae, 0x6a, 0x12, 0x03, 0x47, 0x1f,
  0x26, 0xd5, 0x3d, 0x6a, 0x71, 0xb4, 0x1f, 0xba, 0x91, 0x0e, 0x17, 0x90,
  0x2d, 0x6a, 0xcd, 0x77, 0xe9, 0x72, 0x1a, 0x1c, 0x32, 0x14, 0xc6, 0x57,
  0x36, 0x7e, 0x11, 0x8d, 0xe9, 0x7a, 0xb7, 0x2f, 0xd8, 0x62, 0xcb, 0x86,
  0xa8, 0x6b, 0x7b, 0xa3, 0xb9, 0xb8, 0xb5, 0x8a, 0x21, 0x4d, 0x5b, 0x92,
  0x07, 0x5d, 0x1f, 0xbf, 0xb9, 0xc6, 0x72, 0x6d, 0x83, 0x80, 0x15, 0x18,
  0x18, 0xa3, 0x77, 0x65, 0x3e, 0x7a, 0xfe, 0x8e, 0xaa, 0x15, 0xc0, 0x4e,
  0xc2, 0xb8, 0x5c, 0x28, 0x34, 0xdc, 0xc6, 0x64, 0xd8, 0x93, 0x23, 0xbf,
  0x8d, 0x17, 0xf0, 0x33, 0x0c, 0x09, 0x12, 0xd4, 0x2f, 0xf7, 0x83, 0xf4,
  0xf2, 0x12, 0x88, 0x00, 0xdc, 0x89, 0x35, 0xc2, 0xe2, 0x74, 0x3e, 0x7e,
  0x03, 0x0b, 0x31, 0xce, 0x42, 0x6d, 0x87, 0x4a, 0x41, 0xd4, 0x52, 0xef,
  0x94, 0x06, 0xc9, 0x25, 0xd8, 0xe2, 0x0a, 0x57, 0x41, 0x8d, 0xcc, 0xf8,
  0x00, 0x2b, 0x1f, 0x12, 0xbe, 0xb6, 0xc8, 0xbc, 0x1f, 0x68, 0x3e, 0x4a,
  0x9a, 0x0e, 0x55, 0x64, 0x79, 0xf3, 0x97, 0x2c, 0x3e, 0x6d, 0x46, 0x69,
  0x5d, 0x3d, 0xa6, 0xb7, 0xb4, 0xdf, 0x63, 0x18, 0x41, 0xb9, 0xf4, 0x05,
  0x81, 0xa6, 0x96, 0xf1, 0x4d, 0xcb, 0xde, 0xb6, 0xc8, 0x64, 0x28, 0x87,
  0xa3, 0x76, 0x6b, 0x25, 0xf6, 0x10, 0x88, 0xcd, 0xad, 0x0f, 0xb0, 0x2e,
  0x62, 0x70, 0x7c, 0xb9, 0x11, 0x5d, 0x36, 0x90, 0x60, 0xa8, 0x28, 0x09,
  0x85, 0xa9, 0xcb, 0x87, 0xa5, 0x45, 0x22, 0x23, 0x8f, 0xb6, 0xa3, 0x86,
  0x28, 0xde, 0xb3, 0xc1, 0xd8, 0xa5, 0xd0, 0xef, 0x6f, 0xce, 0x98, 0x1a,



  0x6b, 0x39, 0xa2, 0x22, 0x0d, 0x06, 0x05, 0x11, 0x93, 0xd2, 0xbd, 0xa6,
  0x60, 0x41, 0xe7, 0x58, 0x6a, 0xc7, 0x4d, 0xc9, 0xc4, 0x29, 0xaf, 0xf8,
  0x27, 0x33, 0x2f, 0xd5, 0x91, 0x36, 0x42, 0xb3, 0xce, 0x1d, 0xf4, 0x23,
  0xe9, 0x0e, 0x5a, 0xb2, 0x54, 0x6a, 0x74, 0xef, 0x20, 0x1e, 0x36, 0x4d,
  0xb2, 0x24, 0x84, 0x10, 0xf6, 0x48, 0x82, 0x5c, 0x48, 0x7a, 0xdc, 0x6f,
  0xa2, 0x9a, 0x3b, 0x41, 0x03, 0x99, 0x5c, 0x9a, 0xdb, 0x0e, 0x06, 0x2d,
  0xc8, 0xa7, 0xac, 0xe3, 0x61, 0x73, 0x50, 0xe4, 0x88, 0x88, 0x8f, 0x4f,
  0x26, 0xc1, 0x28, 0x5f, 0x3c, 0xe2, 0x66, 0xc0, 0x63, 0x65, 0x79, 0xb3,
  0x03, 0x7c, 0x63, 0xa7, 0xff, 0x39, 0xa3, 0x65, 0xdf, 0x80, 0xb0, 0x0e,
  0xc0, 0x24, 0x73, 0xfa, 0x88, 0xb4, 0x11, 0x6e, 0x8c, 0x27, 0x5a, 0x78,
  0xdf, 0x2a, 0xfe, 0xbd, 0xff, 0x44, 0x4a, 0xfb, 0xfb, 0xd2, 0x8f, 0xdf,
  0xad, 0x23, 0x41, 0x45, 0x48, 0x56, 0x1b, 0xdc, 0xf4, 0x92, 0x33, 0x0d,
  0x86, 0x69, 0x45, 0xcd, 0x26, 0xd4, 0x8a, 0xac, 0x5f, 0x4d, 0x6a, 0x0c,
  0x57, 0xd0, 0x5b, 0xc1, 0x9a, 0xf8, 0x7e, 0xf4, 0x9f, 0xf8, 0x29, 0x7d,

  0x9b, 0xcb, 0x32, 0x28, 0x19, 0xe2, 0xeb, 0x93, 0xb7, 0x17, 0x57, 0x27,
  0xf5, 0x72, 0xc5, 0x8a, 0x30, 0xb7, 0x22, 0x0a, 0xf6, 0x37, 0x67, 0xc7,
  0x68, 0x83, 0x02, 0x83, 0x20, 0x99, 0x0a, 0x29, 0xda, 0xfd, 0xd1, 0xe5,
  0xf7, 0x6f, 0xcc, 0xec, 0x50, 0x4b, 0xc8, 0xb8, 0x7b, 0x99, 0x0c, 0xda,
  0xe5, 0x9d, 0x6e, 0x8a, 0x76, 0xd4, 0x02, 0xb0, 0x49, 0x9b, 0x34, 0x7d,
  0x37, 0xf3, 0xa3, 0x14, 0x0b, 0x4e, 0x8c, 0xd1, 0x52, 0x7d, 0xc2, 0xb6,
  0x2f, 0x4b, 0x2c, 0xbd, 0x37, 0x83, 0x7a, 0x7a, 0x2f, 0x5b, 0x47, 0x0c,
  0x38, 0xc5, 0xa9, 0xc5, 0x71, 0x44, 0xa8, 0x7e, 0x08, 0xf4, 0xd7, 0x8f,
  0xfc, 0x0f, 0x69, 0x52, 0x08, 0x7d, 0x25, 0xc4, 0xb0, 0x6f, 0x30, 0x4b,
  0x9b, 0x02, 0x21, 0x2c, 0xed, 0xd0, 0xe1, 0x82, 0x44, 0x6b, 0xfa, 0xc1,
  0x75, 0x19, 0x81, 0x51, 0xc2, 0x3d, 0xee, 0x46, 0x06, 0x22, 0xe4, 0xf0,
  0xcd, 0xf5, 0x12, 0x0b, 0x1d, 0x9c, 0xa9, 0x9a, 0xdf, 0x44, 0x6a, 0x41,
  0xaf, 0xfd, 0x79, 0xcd, 0xd6, 0x84, 0x70, 0x5f, 0xcb, 0x70, 0x1f, 0x58,
  0xdb, 0x17, 0x70, 0xe3, 0xa9, 0xfc, 0x2d, 0x5d, 0x71, 0x5b, 0x3d, 0xb6,
  0x84, 0xee, 0x24, 0xa5, 0x87, 0xda, 0xf3, 0x2e, 0x19, 0x49, 0x96, 0x18,
  0x87, 0x08, 0x53, 0x1d, 0x45, 0x03, 0x7e, 0x7e, 0xf1, 0x45, 0x85, 0xb0,
  0x0b, 0xb6, 0x57, 0x98, 0x32, 0x1c, 0x0a, 0x98, 0x69, 0x43, 0x0b, 0x0a,
  0x45, 0x50, 0x13, 0xb6, 0xf2, 0x31, 0xab, 0xf0, 0xa2, 0x32, 0x4f, 0x19,

  0xe5, 0x45, 0xb0, 0x00, 0x0c, 0x09, 0xc9, 0x92, 0x6e, 0x49, 0x48, 0x13,

  0xaf, 0xf6, 0x5f, 0xa1, 0x68, 0xa7, 0x0c, 0x25, 0xe9, 0x94, 0x27, 0xb8,
  0xdb, 0x14, 0x3d, 0x65, 0x50, 0x65, 0x0f, 0xe5, 0xda, 0x5d, 0x83, 0x76,
  0x37, 0x1f, 0x26, 0x33, 0xee, 0xce, 0x37, 0x70, 0x06, 0xf1, 0xc1, 0x94,
  0x56, 0x1c, 0x18, 0xc2, 0xf8, 0x01, 0xf9, 0xa4, 0xe5, 0x6d, 0xb4, 0xfe,

  0x6f, 0x1b, 0x8c, 0x40, 0xa2, 0x69, 0x39, 0xe8, 0x9b, 0x4d, 0xb3, 0xa5,
  0x47, 0xf9, 0xe8, 0x9c, 0x4b, 0x6b, 0x9b, 0x4a, 0x7b, 0x4e, 0xeb, 0x1b,
  0x86, 0x6a, 0xf2, 0xca, 0x2a, 0x5f, 0x44, 0xdc, 0x4e, 0xb1, 0xf0, 0x82,
  0x63, 0x72, 0x5c, 0x2b, 0xed, 0xd4, 0xf6, 0xb2, 0x05, 0x5f, 0x22, 0x12,
  0x13, 0x22, 0xb0, 0x72, 0x71, 0xb8, 0xaa, 0x76, 0xd5, 0x8f, 0x3e, 0x64,
  0x94, 0x88, 0x27, 0x74, 0x27, 0x72, 0x22, 0xcd, 0x60, 0xfd, 0x40, 0xd3,
  0x20, 0x29, 0x02, 0x4c, 0xe8, 0xef, 0x75, 0xe6, 0x23, 0x4c, 0xb2, 0x11,
  0x20, 0xa5, 0x4b, 0x2b, 0x6c, 0xcd, 0xb0, 0xad, 0x28, 0x7a, 0xeb, 0xf7,
  0x9d, 0xe4, 0xbe, 0x79, 0x48, 0xea, 0xb0, 0x1c, 0x1a, 0x1b, 0x43, 0xe0,
  0xc9, 0x6c, 0xd6, 0x63, 0x70, 0x7b, 0x84, 0xfa, 0x46, 0xe5, 0x9e, 0xab,
  0xa4, 0x29, 0x81, 0xcd, 0x35, 0x7c, 0x3c, 0xc9, 0x42, 0xc5, 0xde, 0x84,
  0x24, 0xab, 0x70, 0x23, 0x52, 0x8a, 0xa5, 0x81, 0x35, 0xac, 0xdc, 0xb3,
  0xce, 0x10, 0xda, 0x1c, 0x5e, 0x52, 0x5b, 0xa7, 0x38, 0x1f, 0x2e, 0x76,
  0x74, 0x33, 0x2d, 0x16, 0xdc, 0xad, 0x32, 0xd4, 0x4a, 0xd3, 0xd5, 0xba,
  0xf9, 0x51, 0x25, 0x8a, 0x32, 0xa9, 0x78, 0x32, 0xfc, 0xee, 0xe9, 0x9b,
  0x5a, 0xdb, 0x7b, 0xdc, 0x0a, 0x34, 0xfd, 0xc2, 0xc3, 0x99, 0xc7, 0xe8,
  0x3e, 0x5a, 0xa9, 0x61, 0x86, 0xb2, 0x26, 0xc6, 0x50, 0x31, 0xc9, 0xe9,
  0x77, 0xe1, 0xe1, 0x64, 0x14, 0x56, 0x55, 0x79, 0x0c, 0x1d, 0x98, 0x48,
  0x05, 0x2c, 0xd1, 0x14, 0x1b, 0x8f, 0x21, 0x31, 0x4c, 0x93, 0xc2, 0x7c,
  0xc6, 0x4f, 0x92, 0xbc, 0x99, 0xe7, 0x63, 0xac, 0xe9, 0x4a, 0x9e, 0xde,
  0x0b, 0x7c, 0xd2, 0xde, 0x37, 0x29, 0x87, 0x2b, 0x0d, 0xd4, 0x2d, 0x57,
  0xec, 0x61, 0x13, 0x82, 0xaa, 0x94, 0x9d, 0x09, 0x0f, 0x67, 0x97, 0xaa,
  0xdd, 0x63, 0xe5, 0x4d, 0x77, 0x09, 0x59, 0x94, 0x8f, 0x2a, 0x67, 0x05,
  0xf8, 0x40, 0x78, 0x38, 0x66, 0xac, 0x81, 0x95, 0x61, 0x81, 0x14, 0x59,
  0x94, 0xab, 0x57, 0xc6, 0x0f, 0x7a, 0x87, 0x0c, 0x3f, 0xb4, 0x98, 0xc0,
  0xb5, 0x13, 0x6e, 0x5f, 0x59, 0xe8, 0x84, 0x69, 0x06, 0xcd, 0x03, 0xd6,
  0xae, 0x61, 0x05, 0x1f, 0x65, 0x2f, 0x3c, 0x9c, 0x39, 0x61, 0x01, 0x21,
  0x5f, 0x71, 0xc0, 0xf2, 0x15, 0x6f, 0x17, 0x66, 0x19, 0xa8, 0x77, 0xcb,
  0x62, 0x94, 0x7c, 0xa4, 0xb9, 0x55, 0x71, 0x31, 0x4d, 0xaa, 0x8f, 0xab,
  0x37, 0x64, 0x26, 0x68, 0x0a, 0x8f, 0x73, 0x6a, 0xff, 0x6e, 0x98, 0x85,
  0xe0, 0xfe, 0xc6, 0x82, 0x2e, 0x00, 0x0a, 0x1e, 0xfd, 0x9e, 0xad, 0x99,
  0x16, 0xb2, 0xb7, 0xdf, 0x8b, 0x14, 0x4a, 0x07, 0xc4, 0x65, 0x9a, 0x29,
  0x88, 0x8d, 0xf0, 0x18, 0x67, 0x8a, 0x51, 0x08, 0x79, 0x69, 0x55, 0xb8,
  0x6a, 0x7e, 0x8b, 0x25, 0x56, 0x46, 0x09, 0xf8, 0x18, 0x68, 0xda, 0xe2,
  0xd2, 0x31, 0x3f, 0xae, 0xc7, 0xcd, 0x6b, 0x92, 0x1a, 0x42, 0xd3, 0x25,
  0xd8, 0x3d, 0xe9, 0xc8, 0x2f, 0x85, 0x76, 0x04, 0xa2, 0x7e, 0xd0, 0xdc,
  0xc8, 0xe6, 0xec, 0x16, 0xf7, 0x63, 0xe3, 0x88, 0x81, 0xbf, 0xea, 0x77,
  0x55, 0xb8, 0x53, 0x53, 0x0f, 0x6d, 0xc4, 0x8d, 0x09, 0x4c, 0x3c, 0xd8,
  0x44, 0x91, 0xc9, 0x5b, 0x3f, 0x9d, 0x55, 0xbe, 0xfe, 0xe3, 0x7d, 0xbc,

  0x48, 0x38, 0xef, 0x95, 0xb6, 0x57, 0x0e, 0xa3, 0x7d, 0x6b, 0xe4, 0x69,
  0x3b, 0x45, 0xe6, 0xee, 0x96, 0x75, 0x15, 0x81, 0x2d, 0x6a, 0x67, 0x77,
  0xf2, 0xd5, 0xc6, 0x75, 0x18, 0x27, 0xe8, 0x97, 0x15, 0x42, 0xc0, 0x84,
  0x2d, 0x1e, 0x48, 0xb9, 0xde, 0x2a, 0x32, 0x6a, 0xdd, 0xe3, 0x62, 0xfe,
  0xc4, 0x15, 0x87, 0x07, 0xec, 0xaa, 0x18, 0x87, 0xc3, 0xac, 0xca, 0xbb,
  0x97, 0x72, 0x89, 0x5b, 0x76, 0xbe, 0x6d, 0x06, 0x35, 0x1a, 0x5c, 0x35,
  0x13, 0x97, 0xfa, 0xdc, 0xc9, 0xd8, 0xad, 0x05, 0x55, 0xae, 0xa2, 0x2e,
  0xe0, 0x3a, 0xb3, 0xf0, 0x70, 0x86, 0x3c, 0xf5, 0x3d, 0xd9, 0x9e, 0xae,
  0xe3, 0xbb, 0xe4, 0x0e, 0x2f, 0x60, 0x36, 0xfa, 0xb4, 0xa1, 0xd7, 0xfb,
  0x17, 0xb1, 0x07, 0xb4, 0xcf, 0x67, 0x99, 0x6b, 0x91, 0xe3, 0x17, 0x41,
  0xf2, 0xae, 0x28, 0x65, 0x71, 0x9a, 0x43, 0x98, 0x03, 0xe7, 0x1e, 0xcf,
  0x14, 0x77, 0xa5, 0x84, 0x3c, 0x4a, 0x54, 0xa5, 0x06, 0x61, 0xa2, 0xa4,
  0x12, 0x5c, 0xdc, 0x18, 0x5b, 0xaf, 0xf8, 0x79, 0xf3, 0xfc, 0x49, 0xce,
  0xda, 0x62, 0x18, 0x64, 0x8c, 0x1c, 0x8a, 0x12, 0xa2, 0x1d, 0xa4, 0xcb,
  0x44, 0xac, 0x04, 0x7d, 0x3c, 0xe2, 0x6e, 0x2e, 0x7e, 0xe3, 0xec, 0x46,

  0x02, 0x1d, 0xaa, 0x1f, 0x0d, 0x18, 0xf4, 0x64, 0x3a, 0x76, 0xdb, 0xd0,
  0x3b, 0xcb, 0x2f, 0xba, 0xbc, 0x05, 0x53, 0x58, 0x3c, 0xfd, 0x11, 0x2c,
  0x12, 0x21, 0x95, 0x98, 0x74, 0x15, 0x44, 0x3d, 0xd8, 0x88, 0xae, 0x24,
  0xb4, 0x89, 0x3a, 0xdd, 0x63, 0x85, 0x20, 0xdb, 0x38, 0xc0, 0x7a, 0xda,
  0x07, 0x61, 0xc8, 0x45, 0x01, 0xa8, 0x20, 0x61, 0xa7, 0x84, 0x50, 0xa0,
  0x78, 0x43, 0x02, 0xa2, 0xec, 0x70, 0xdb, 0xdc, 0xee, 0x6f, 0x77, 0x5d,
  0xab, 0xd3, 0xa6, 0xfe, 0xa1, 0xee, 0x1d, 0x1b, 0x88, 0x76, 0xfc, 0x74,
  0xd3, 0xcf, 0x70, 0x85, 0x1f, 0x2e, 0x7d, 0xb7, 0x30, 0xb9, 0x96, 0xad,
  0xc1, 0x72, 0x1f, 0x3f, 0xfa, 0x8a, 0xe9, 0x56, 0x6f, 0xef, 0xd5, 0xab,
  0x9a, 0x3c, 0x2f, 0x1d, 0x7c, 0xfb, 0xfd, 0xad, 0x2d, 0x5a, 0x9b, 0x57,
  0x13, 0x0d, 0xbf, 0xe8, 0xbd, 0xa2, 0x17, 0xeb, 0xaf, 0x95, 0x09, 0x1c,
  0xc1, 0xb8, 0xfd, 0xbd, 0x1e, 0xfe, 0x26, 0xf0, 0x39, 0xf2, 0xa7, 0xb4,
  0xbe, 0xf5, 0x0a, 0x3f, 0x17, 0x78, 0x8b, 0x1e, 0xe6, 0x7d, 0xcc, 0x27,
  0x13, 0x74, 0x64, 0xe1, 0x93, 0x8a, 0xcb, 0x73, 0x1f, 0x17, 0x63, 0x7f,
  0xb9, 0x5b, 0xdd, 0xde, 0x76, 0xdb, 0x72, 0x29, 0x9a, 0x4c, 0x09, 0x70,
  0x78, 0x9e, 0x68, 0x27, 0x82, 0xf5, 0xc1, 0x05, 0x42, 0xcd, 0x81, 0xb6,
  0x61, 0x46, 0xdb, 0xaf, 0x5e, 0x75, 0x71, 0x66, 0xfb, 0xaf, 0x5e, 0xb5,
  0x16, 0x84, 0x3b, 0x9f, 0xb9, 0xcf, 0xad, 0xfb, 0x09, 0x5f, 0xb7, 0x44,
  0x53, 0xa2, 0x91, 0x13, 0xfe, 0x0e, 0xfe, 0x26, 0x7a, 0x1d, 0x9d, 0x5f,
  0x5c, 0x9f, 0x38, 0x9e, 0x19, 0xba, 0x5f, 0x1c, 0x30, 0x74, 0x4c, 0x4d,
  0x8a, 0xc1, 0x2e, 0xa8, 0xc7, 0x1a, 0x59, 0xbd, 0x60, 0x93, 0xf8, 0xc6,
  0x24, 0x15, 0xab, 0xa8, 0x47, 0xf0, 0x0f, 0x7e, 0x46, 0x04, 0x35, 0x52,
  0x9b, 0xa6, 0x95, 0x0b, 0xdb, 0xb4, 0x0e, 0x87, 0xbd, 0x41, 0x2e, 0x0e,
  0x4e, 0x72, 0x93, 0x60, 0xca, 0x5a, 0x89, 0xd5, 0x1d, 0x9c, 0x08, 0x8b,
  0xff, 0xc8, 0x17, 0x6b, 0x5e, 0x81, 0x45, 0x32, 0xc3, 0xbc, 0x55, 0x91,
  0x84, 0xfc, 0x42, 0x8f, 0x9e, 0x94, 0xeb, 0x42, 0xf6, 0xea, 0x03, 0x79,
  0xe0, 0x63, 0x42, 0xb5, 0x74, 0x3f, 0x1e, 0x88, 0xa7, 0x20, 0x27, 0xe4,
  0x44, 0x0c, 0xad, 0xcc, 0xc2, 0x61, 0x5c, 0x74, 0xe3, 0xb5, 0xd2, 0x3a,
  0x3c, 0x8d, 0x77, 0x2e, 0xc3, 0x73, 0xf0, 0xf0, 0x08, 0xd9, 0x89, 0x3f,
  0x4e, 0x16, 0x9a, 0x52, 0x9a, 0xd5, 0xc7, 0x01, 0x5a, 0x9e, 0xa4, 0xd3,

  0x65, 0x11, 0x4e, 0xbf, 0xa4, 0x5e, 0x7e, 0x92, 0xe9, 0xa0, 0xdd, 0x1c,
  0xe2, 0xfb, 0xb8, 0x48, 0xb4, 0xf9, 0x60, 0xf6, 0x68, 0xee, 0xb6, 0x5a,
  0xc1, 0x5a, 0x0f, 0x84, 0xad, 0x36, 0x3c, 0x4b, 0x1a, 0x4b, 0xb8, 0x40,
  0x8f, 0x41, 0x2f, 0x81, 0xa4, 0xe8, 0x48, 0x4b, 0x89, 0xb8, 0xb2, 0x15,
  0x59, 0xe2, 0x40, 0xc4, 0xc3, 0x46, 0x61, 0x4a, 0x98, 0x99, 0xb4, 0x05,
  0x7e, 0x4e, 0xdd, 0xda, 0xcc, 0xfa, 0xee, 0xf1, 0x59, 0xf2, 0xb6, 0xdc,
  0xe4, 0x4e, 0xfb, 0x16, 0x1f, 0xb4, 0x01, 0x39, 0x0f, 0xc3, 0xb9, 0xd0,
  0x5f, 0xf9, 0x90, 0xe0, 0xf9, 0xfb, 0x6c, 0x96, 0xc7, 0x63, 0xeb, 0x3c,
  0x59, 0x68, 0xba, 0xae, 0x40, 0x8e, 0xc9, 0xd1, 0x7a, 0x59, 0x1d, 0x78,
  0xd2, 0x7c, 0xc6, 0xd1, 0xba, 0x03, 0x28, 0x42, 0x14, 0xea, 0xb8, 0x41,
  0x98, 0x4b, 0x21, 0xa5, 0x30, 0x40, 0x06, 0xc2, 0xdd, 0xf8, 0x66, 0x2f,
  0xd2, 0x3b, 0x9f, 0x96, 0x49, 0x74, 0xa1, 0x3e, 0xb4, 0x28, 0x24, 0x1d,
  0x97, 0x46, 0x34, 0x38, 0xfd, 0x9f, 0x27, 0x9f, 0x32, 0xea, 0x54, 0xc4,
  0xf7, 0xa6, 0x70, 0xf0, 0x7b, 0x06, 0xac, 0x94, 0x68, 0x90, 0x41, 0xaa,
  0x88, 0x67, 0x62, 0xc3, 0x63, 0xaf, 0x53, 0x92, 0x1e, 0x14, 0x56, 0x94,
  0x36, 0xd3, 0x40, 0x58, 0x3e, 0x6d, 0x63, 0x7d, 0x9f, 0x45, 0x2e, 0xe3,
  0x5c, 0x74, 0xaa, 0xf8, 0x62, 0x07, 0x20, 0x9f, 0xe3, 0x9c, 0x5c, 0x89,
  0x64, 0xda, 0xa3, 0xb7, 0x97, 0xe1, 0xa4, 0x02, 0x1d, 0x64, 0x09, 0x11,
  0x11, 0x27, 0x05, 0x73, 0x7d, 0xa2, 0x57, 0xa4, 0x5b, 0x69, 0x9f, 0x70,

  0x5b, 0x0d, 0x0c, 0x4f, 0x15, 0xd1, 0xe1, 0x87, 0xab, 0xb3, 0x96, 0x72,
  0xc9, 0x01, 0x9d, 0x01, 0x6e, 0x56, 0xe7, 0x2a, 0x21, 0x34, 0xb3, 0x22,
  0xba, 0x8c, 0xa7, 0x49, 0xc7, 0x05, 0x90, 0xab, 0x21, 0x48, 0x8a, 0x03,
  0x22, 0xe4, 0x4e, 0x71, 0xdb, 0xa1, 0x20, 0x13, 0xb7, 0x61, 0x61, 0xb7,
  0xc8, 0x71, 0x32, 0x8b, 0x65, 0xef, 0x96, 0x05, 0x86, 0xf3, 0x69, 0xe7,
  0x03, 0x2d, 0xbe, 0xd4, 0x4f, 0xd9, 0x80, 0xfe, 0x94, 0xd6, 0x65, 0x54,
  0x96, 0x15, 0x2f, 0x90, 0x86, 0xa2, 0xce, 0x17, 0xe8, 0x81, 0xef, 0xe8,

  0x34, 0x7b, 0x89, 0x1f, 0x64, 0xd3, 0xad, 0xc0, 0xc0, 0x70, 0xcd, 0x0b,
  0x55, 0xf7, 0xdd, 0xe3, 0xac, 0x35, 0xde, 0x9a, 0x20, 0x1e, 0x6f, 0x49,

  0xb1, 0x64, 0xaf, 0x85, 0x1b, 0x86, 0xbf, 0x10, 0x74, 0x91, 0x71, 0x58,
  0x31, 0xe3, 0x24, 0x3a, 0x93, 0xf9, 0x1d, 0x48, 0xb0, 0x85, 0x75, 0x21,

  0x9d, 0x5a, 0x2d, 0x33, 0x28, 0xb4, 0xd8, 0x78, 0x86, 0x8d, 0x8a, 0x8c,
  0xf7, 0x0b, 0xd7, 0x38, 0xce, 0xb1, 0xb9, 0x0d, 0x4e, 0x29, 0xce, 0x8c,
  0x33, 0xb9, 0x76, 0xb2, 0x9f, 0x1c, 0xea, 0xd0, 0x06, 0x80, 0x8e, 0xba,
  0xd2, 0x7d, 0xab, 0x07, 0xd4, 0x91, 0x49, 0x1d, 0xbc, 0x73, 0xac, 0x0e,
  0xed, 0xfd, 0x87, 0xd3, 0xd2, 0xc5, 0x69, 0xca, 0xd2, 0x82, 0x98, 0xeb,
  0x4c, 0xb7, 0xa2, 0x32, 0x15, 0x3a, 0x42, 0xaf, 0x2d, 0x8c, 0xad, 0x98,
  0x15, 0x61, 0x19, 0x74, 0xe7, 0xf7, 0x9c, 0x82, 0x96, 0x63, 0x2e, 0xdd,
  0xec, 0xbd, 0x49, 0x41, 0x88, 0x94, 0x8c, 0x40, 0x44, 0x5a, 0x2e, 0xb7,
  0x23, 0xd3, 0x8b, 0xc8, 0x25, 0xbc, 0x3d, 0x1f, 0xdd, 0x6f, 0x24, 0x75,
  0x1d, 0xe6, 0x15, 0x13, 0xb3, 0x01, 0x8a, 0x78, 0xc2, 0x59, 0x6c, 0xb5,
  0x85, 0xd8, 0x3a, 0x2b, 0x68, 0xcf, 0x62, 0xed, 0x60, 0x20, 0xf0, 0x1e,
  0xe8, 0xb7, 0x0c, 0xec, 0x8e, 0xc1, 0x05, 0xa2, 0xcc, 0x99, 0x32, 0x32,
  0xe9, 0xf1, 0xd2, 0x1d, 0xcb, 0x33, 0x36, 0x4d, 0x4f, 0x79, 0x4e, 0xf6,

  0x68, 0x86, 0x01, 0x61, 0x52, 0xa6, 0x41, 0x11, 0x47, 0x4e, 0x18, 0x85,
  0x8f, 0x4b, 0x53, 0x47, 0x30, 0x6c, 0xbf, 0xb1, 0x04, 0x6d, 0xae, 0x14,
  0x16, 0xb8, 0x8f, 0xb5, 0x85, 0x51, 0xce, 0xa8, 0x4b, 0x78, 0x18, 0x1b,
  0xc8, 0x72, 0x41, 0x78, 0x09, 0x85, 0xd0, 0x29, 0x7b, 0x07, 0x1f, 0x71,
  0xe5, 0x20, 0x27, 0x6c, 0x44, 0x7f, 0xea, 0xd9, 0xc6, 0x1b, 0xeb, 0x8f,

  0x09, 0x68, 0xd8, 0x36, 0xe9, 0x83, 0x0c, 0xa9, 0x40, 0xf5, 0x67, 0xc4,
  0x5d, 0x5b, 0xcb, 0x5a, 0x5d, 0x0a, 0x19, 0x21, 0x4e, 0x64, 0x91, 0x37,
  0x5d, 0x7a, 0xe8, 0x2c, 0xb3, 0xe4, 0x01, 0x31, 0xc0, 0xdb, 0x87, 0xf3,
  0x95, 0xec, 0xef, 0x8f, 0xae, 0xce, 0x4f, 0xcf, 0xbf, 0x39, 0x40, 0x84,
  0xba, 0xa4, 0x18, 0x61, 0x8b, 0xec, 0xe8, 0x6f, 0xcb, 0x71, 0x3a, 0x62,
  0x4e, 0x21, 0xbd, 0x9b, 0x6b, 0x95, 0x31, 0x89, 0x38, 0x58, 0x81, 0xb9,
  0x78, 0x85, 0x30, 0x92, 0xcc, 0x8b, 0x75, 0x3d, 0x45, 0x3e, 0x5d, 0x9a,
  0xad, 0x1f, 0x91, 0x2a, 0x42, 0x61, 0x00, 0x0a, 0x8f, 0x22, 0x3f, 0x62,
  0xa2, 0x85, 0xd1, 0x51, 0x51, 0x78, 0x73, 0x76, 0x16, 0xb5, 0xf4, 0xed,
  0xd6, 0xda, 0x2d, 0xce, 0x18, 0xa2, 0x81, 0x4c, 0xbe, 0x29, 0xc6, 0xf3,
  0x40, 0xf8, 0x23, 0xb7, 0xa9, 0x71, 0x3d, 0x30, 0x5d, 0xbf, 0xf7, 0x33,
  0x39, 0x29, 0xcf, 0x98, 0x92, 0x03, 0xe9, 0x84, 0xd3, 0x62, 0x4c, 0xb6,
  0x10, 0x30, 0xc9, 0x7c, 0x52, 0xa1, 0x7a, 0x54, 0x93, 0xa4, 0xf5, 0x7e,
  0x4d, 0xab, 0x9c, 0xed, 0x37, 0x6c, 0xe5, 0xd4, 0x80, 0x53, 0x38, 0x22,
  0x49, 0x49, 0xab, 0x40, 0x8f, 0xac, 0x17, 0x52, 0x8f, 0x2f, 0xf4, 0x49,
  0x79, 0xd4, 0x3c, 0x4e, 0x62, 0xd3, 0x71, 0xbe, 0x44, 0x6e, 0xe9, 0xb3,
  0x8b, 0xfb, 0xa4, 0x10, 0xe3, 0xd3, 0x54, 0x11, 0x03, 0xb3, 0xeb, 0x47,
  0x83, 0x1c, 0x9e, 0x0f, 0x54, 0x2d, 0x68, 0x27, 0x4c, 0xdb, 0xed, 0x36,
  0xae, 0x24, 0x89, 0xd6, 0xe4, 0x55, 0x51, 0x93, 0x30, 0x8a, 0xb9, 0xd5,


  0xd7, 0x1b, 0xe8, 0xc3, 0x8d, 0xf4, 0x3f, 0x4c, 0x8c, 0x42, 0xf1, 0xa8,
  0xa1, 0x1d, 0xa4, 0x90, 0x4e, 0x0f, 0xd8, 0x69, 0x87, 0x1a, 0x1c, 0x62,
  0x77, 0x70, 0x67, 0xa4, 0x27, 0x7a, 0xdc, 0xba, 0x69, 0xea, 0xcd, 0x05,
  0x07, 0x5b, 0x07, 0x3a, 0x2d, 0xb9, 0x62, 0xb1, 0x3b, 0x1d, 0xcf, 0xa9,
  0x74, 0x70, 0x33, 0xa1, 0x52, 0xae, 0xd2, 0x4b, 0x50, 0xc3, 0xf4, 0x02,
  0xe0, 0x17, 0x0c, 0x66, 0x26, 0x0f, 0xb9, 0x75, 0xf2, 0xee, 0xcb, 0x22,
  0x6e, 0xba, 0xd6, 0xb9, 0x90, 0x12, 0xa4, 0x4f, 0xe5, 0xd5, 0xe9, 0x4d,
  0xfa, 0x1b, 0xc1, 0xbc, 0x1a, 0x9e, 0x83, 0x48, 0xa4, 0x32, 0xbe, 0xb3,
  0x09, 0x5f, 0xad, 0x8c, 0x4f, 0x8b, 0x55, 0x9a, 0x32, 0x9a, 0x0e, 0xd4,
  0x78, 0x95, 0x74, 0xa8, 0x38, 0x72, 0x0a, 0x59, 0xdc, 0x50, 0x65, 0x0d,
  0x93, 0xc0, 0x1f, 0x4e, 0x2a, 0xbe, 0x24, 0xc8, 0xd5, 0xca, 0x84, 0x25,
  0x72, 0x93, 0x66, 0x77, 0x39, 0xfd, 0x46, 0x82, 0x54, 0x81, 0x14, 0x95,
  0xb4, 0xb5, 0xac, 0xe5, 0xba, 0xb1, 0xab, 0xea, 0xa0, 0xd1, 0x22, 0x02,
  0x58, 0x0b, 0x97, 0x06, 0xba, 0x3d, 0x5b, 0x6c, 0x9b, 0x96, 0x26, 0x29,
  0xf0, 0x65, 0x42, 0xe2, 0xed, 0x46, 0xda, 0xea, 0x1d, 0x5e, 0x9c, 0x95,
  0x89, 0xb4, 0x9f, 0xe6, 0x92, 0x40, 0x15, 0x38, 0x22, 0x6f, 0x52, 0xe3,
  0xfb, 0x69, 0x97, 0x24, 0xa6, 0x4c, 0xc8, 0xec, 0xb5, 0xb5, 0x5f, 0x31,
  0xa3, 0x91, 0x1b, 0x41, 0xe3, 0x0d, 0x1e, 0xdd, 0xe4, 0xb9, 0xd4, 0x9c,
  0xb6, 0x31, 0xdb, 0x88, 0x1b, 0xa4, 0x21, 0x22, 0x46, 0x8b, 0xfe, 0x60,
  0xe0, 0xc3, 0x6c, 0xb0, 0xce, 0x4b, 0xf0, 0x75, 0xa1, 0x06, 0x6b, 0xe8,
  0xa4, 0x75, 0xd9, 0xc6, 0xf3, 0x31, 0xc2, 0x59, 0x98, 0xab, 0x0f, 0xaf,
  0x48, 0x5c, 0x80, 0x45, 0x77, 0x78, 0x7b, 0x24, 0xb3, 0xd2, 0xdd, 0x94,
  0xa0, 0xb0, 0xe3, 0x5c, 0x4b, 0x0b, 0x90, 0x4d, 0x54, 0x43, 0x66, 0x53,
  0x56, 0x0f, 0x68, 0xd0, 0x4c, 0xd3, 0x8a, 0x18, 0xc8, 0x9f, 0x76, 0xb6,
  0xda, 0x98, 0x3c, 0x0e, 0xa4, 0x35, 0xae, 0x78, 0x1b, 0x4b, 0x63, 0x7f,
  0x91, 0x18, 0xb4, 0x85, 0x01, 0x28, 0x43, 0x96, 0x0b, 0xf4, 0xd3, 0xf5,
  0x90, 0x5e, 0xe2, 0xb2, 0x6d, 0xff, 0xc3, 0x56, 0xf1, 0xaf, 0x6d, 0x4a,
  0xd9, 0xd2, 0x93, 0xd2, 0xf2, 0xaf, 0x2b, 0xe7, 0x8c, 0x71, 0xa0, 0x50,
  0x82, 0x99, 0xf2, 0x12, 0xf5, 0x93, 0x38, 0x4a, 0xbb, 0xd5, 0x19, 0xc8,

  0xae, 0xa7, 0xe6, 0x83, 0x72, 0x39, 0x71, 0x34, 0xdf, 0x7c, 0x8d, 0xe7,
  0x8b, 0x28, 0xc0, 0xb2, 0xba, 0x7a, 0x03, 0x34, 0x4d, 0x25, 0xb6, 0x70,
  0x97, 0xb1, 0xb0, 0xc7, 0x59, 0xee, 0xa3, 0xaf, 0x08, 0x23, 0x65, 0x63,
  0x3c, 0x96, 0x74, 0x4d, 0xda, 0x10, 0xfc, 0x52, 0x5d, 0x30, 0x52, 0xce,


  0x59, 0x2f, 0xe8, 0xed, 0x0f, 0x76, 0x8d, 0x90, 0xec, 0x71, 0x17, 0x0a,
  0xbf, 0xc3, 0x6f, 0x77, 0xa2, 0x75, 0xe4, 0xaa, 0x1b, 0x46, 0x79, 0xf5,
  0xeb, 0x9f, 0xb5, 0x39, 0x0b, 0xdb, 0x30, 0x31, 0x4b, 0xc8, 0x66, 0xf2,
  0x2c, 0xea, 0xaf, 0x60, 0xe5, 0x15, 0x20, 0xff, 0xb1, 0xe7, 0x1b, 0x57,
  0x0f, 0x4e, 0x96, 0xb3, 0x90, 0x99, 0x83, 0x77, 0x5b, 0x82, 0x43, 0x69,
  0x59, 0x2e, 0xc5, 0x08, 0x34, 0x00, 0x33, 0x06, 0x71, 0x30, 0x9a, 0xc1,
  0x7c, 0xe8, 0xd3, 0xe5, 0x0c, 0xb3, 0x4a, 0x5a, 0xd5, 0x13, 0xf2, 0x0e,
  0x8b, 0xe2, 0x6b, 0x1a, 0x78, 0xb2, 0x1d, 0x25, 0xa7, 0xc3, 0x8d, 0xe8,
  0xa4, 0x91, 0x1a, 0x6e, 0x42, 0x97, 0x64, 0x55, 0x63, 0xb8, 0xce, 0xc5,
  0xe5, 0xf5, 0xe9, 0xc5, 0xf9, 0x20, 0xfa, 0xb7, 0xce, 0xca, 0xf2, 0xae,
  0x3a, 0xb0, 0xf2, 0x0f, 0x5d, 0x7b, 0x26, 0xd1, 0xa1, 0xf8, 0x19, 0xda,
  0x6c, 0x63, 0x47, 0x89, 0x1f, 0x81, 0xf4, 0x06, 0xfe, 0xaa, 0x6f, 0x0a,
  0xb4, 0x9b, 0x9c, 0x56, 0x03, 0x8d, 0xce, 0xd3, 0x96, 0x0d, 0x9c, 0x5f,
  0xd3, 0x88, 0x66, 0x66, 0x6f, 0x6d, 0x96, 0xc6, 0xf0, 0x61, 0x0e, 0x2c,
  0x9c, 0xaf, 0x96, 0xca, 0x29, 0x2f, 0xd0, 0x16, 0xdf, 0x93, 0x5a, 0xca,
  0x16, 0xf4, 0xba, 0x34, 0x5d, 0x16, 0x45, 0xab, 0x0c, 0x74, 0x98, 0xfb,
  0xe6, 0xe4, 0x1a, 0x9d, 0x34, 0x54, 0xe5, 0x6a, 0x27, 0x48, 0xae, 0x2e,
  0x51, 0x7c, 0x62, 0xa3, 0x9c, 0x69, 0x71, 0x2b, 0x5e, 0x1a, 0xd0, 0x9e,
  0x67, 0x71, 0x16, 0x2c, 0x61, 0x03, 0x8d, 0xf6, 0x18, 0x76, 0x23, 0xb7,
  0xd0, 0xaf, 0xea, 0x3b, 0x71, 0xfa, 0x9a, 0x30, 0x2c, 0xd3, 0xe5, 0x87,
  0x6b, 0xf1, 0x53, 0xbd, 0x39, 0x39, 0x3b, 0xb9, 0x3e, 0x69, 0x5a, 0xee,
  0x43, 0x06, 0xb3, 0xa4, 0x52, 0x97, 0x2a, 0x19, 0xdd, 0x64, 0xf9, 0x2c,
  0x9f, 0xa6, 0xd2, 0x88, 0x37, 0xfa, 0x3e, 0x19, 0xbe, 0x39, 0xfa, 0x0e,
  0xf5, 0x09, 0xf4, 0x39, 0x5d, 0x5e, 0x5d, 0x5c, 0xbe, 0x3d, 0x3d, 0x7f,
  0xd3, 0x8d, 0x8e, 0x2f, 0x2e, 0xff, 0xd2, 0x8d, 0xde, 0x5f, 0x7c, 0x77,
  0x12, 0x48, 0x71, 0x46, 0x84, 0x5b, 0x8f, 0x62, 0x4c, 0xb3, 0x3e, 0x6b,

  0x78, 0x67, 0x1c, 0xb2, 0x70, 0x84, 0x08, 0xe6, 0xff, 0x83, 0xf6, 0x8b,
  0xec, 0x96, 0xee, 0x1a, 0x6c, 0x1d, 0xc8, 0xd0, 0x77, 0x27, 0x47, 0x6f,
  0xba, 0x1e, 0x80, 0x39, 0xb6, 0x52, 0x81, 0x8f, 0xe1, 0xfa, 0xcc, 0xa2,
  0x09, 0xf6, 0x9a, 0xad, 0x0f, 0xd2, 0x10, 0x38, 0xc8, 0xc5, 0x37, 0x16,
  0x08, 0x96, 0xaa, 0xf4, 0xc7, 0x6d, 0x99, 0x13, 0x82, 0xc5, 0xdf, 0xda,
  0xfa, 0xda, 0x29, 0xbb, 0x40, 0x65, 0xcd, 0x55, 0xb3, 0x05, 0xac, 0x89,
  0xd2, 0xea, 0xb5, 0x08, 0xcb, 0xcd, 0x92, 0x6d, 0x41, 0x0c, 0xea, 0xd6,
  0xa0, 0x02, 0x88, 0x1f, 0xb1, 0xeb, 0x31, 0x96, 0x9e, 0x86, 0xd4, 0xb4,
  0x08, 0xcc, 0x24, 0xd4, 0xaa, 0x27, 0x16, 0x25, 0x76, 0xb5, 0x86, 0x2d,
  0x40, 0xea, 0x02, 0xdb, 0x84, 0x9b, 0xa7, 0x1b, 0x64, 0x7a, 0x7a, 0xfe,
  0xc0, 0x3f, 0x16, 0xb0, 0xa8, 0x40, 0xe2, 0xf6, 0x72, 0x02, 0x64, 0x99,
  0x70, 0xca, 0x14, 0x1f, 0x93, 0x71, 0x0b, 0x44, 0xbd, 0x53, 0x75, 0x4a,
  0xac, 0x52, 0xb0, 0xf4, 0xc6, 0xa8, 0x63, 0x86, 0xb1, 0xa2, 0xd4, 0x67,
  0x55, 0x67, 0x13, 0xae, 0x87, 0x04, 0xd7, 0x19, 0xd0, 0xf7, 0xf5, 0x88,
  0x15, 0xcd, 0x48, 0x3c, 0x38, 0xee, 0xa6, 0x10, 0xe8, 0x86, 0xe7, 0xcb,
  0x02, 0x01, 0xeb, 0x09, 0x17, 0x7a, 0x12, 0x58, 0x49, 0x26, 0x1e, 0xd1,
  0x08, 0x43, 0x6f, 0x3d, 0xb6, 0xa5, 0xdd, 0x9c, 0x5f, 0xe5, 0x9e, 0xa2,
  0x9b, 0xca, 0x1c, 0xbc, 0x10, 0x15, 0xad, 0xd3, 0xf6, 0x98, 0x74, 0x7d,
  0x79, 0xbb, 0x5b, 0x0f, 0xd6, 0xc7, 0x8e, 0xda, 0x44, 0x19, 0xf5, 0x04,
  0xeb, 0x9b, 0x8a, 0xf7, 0xbc, 0xad, 0x5b, 0x7f, 0xdb, 0xc2, 0x18, 0x5d,
  0xaf, 0xad, 0x29, 0xe8, 0x37, 0x2c, 0xea, 0xec, 0x14, 0xae, 0x43, 0x00,
  0x1a, 0x87, 0x9b, 0xee, 0x72, 0x3a, 0x02, 0xe9, 0x55, 0xb4, 0xfb, 0x30,
  0x96, 0xff, 0x61, 0x6c, 0x70, 0x1f, 0xfc, 0x32, 0xfe, 0xe2, 0xa9, 0x4f,
  0x7b, 0x67, 0x76, 0x75, 0x72, 0x7d, 0xd5, 0x8f, 0xd6, 0x5d, 0xcc, 0xd7,
  0x17, 0xfd, 0x2d, 0x3f, 0x68, 0x73, 0xfa, 0xfe, 0x28, 0xbc, 0x5e, 0xfc,
  0x45, 0xdb, 0x57, 0x89, 0x37, 0xe0, 0x77, 0xfd, 0x3c, 0x62, 0x07, 0xe9,
  0x69, 0x2b, 0xf4, 0xbd, 0xc1, 0xfb, 0x96, 0xfd, 0xc5, 0x5f, 0xac, 0x58,
  0xe5, 0xbb, 0x93, 0xb3, 0x40, 0x6f, 0x9f, 0xef, 0xae, 0xde, 0xfe, 0xa5,
  0xbe, 0xca, 0xdd, 0xbd, 0xc0, 0x57, 0x7f, 0x4b, 0x87, 0x7a, 0x52, 0xe6,
  0x33, 0x50, 0x58, 0xa8, 0x8a, 0x83, 0x8a, 0x38, 0x0e, 0x40, 0x04, 0x60,
  0xae, 0xf9, 0x5f, 0xbb, 0xf2, 0x97, 0x9f, 0xfa, 0xfd, 0xfe, 0x97, 0x3e,
  0x2a, 0x3a, 0xf9, 0x68, 0xcc, 0x72, 0xe5, 0xd9, 0xa6, 0x05, 0x4e, 0x55,

  0x33, 0x54, 0x25, 0x84, 0x51, 0x8b, 0x45, 0x9c, 0x16, 0xd4, 0x13, 0x28,
  0x28, 0x70, 0x71, 0x49, 0xb6, 0xd2, 0xcb, 0x68, 0x73, 0x82, 0x08, 0xc6,
  0xd7, 0x75, 0xbd, 0xdc, 0x90, 0xba, 0x6a, 0x2b, 0x83, 0xe3, 0xb1, 0xe7,
  0x08, 0xe1, 0xbe, 0x2c, 0xf8, 0xd9, 0x02, 0xfd, 0xb3, 0x6c, 0xeb, 0x58,
  0x59, 0x9b, 0xa9, 0xec, 0x90, 0xd5, 0x8f, 0xcd, 0xf4, 0x83, 0xde, 0x0b,
  0xa9, 0x93, 0x3c, 0x96, 0x90, 0x3a, 0x39, 0x92, 0x63, 0x12, 0x2b, 0xd4,
  0x66, 0x36, 0xa9, 0x46, 0x9b, 0xb8, 0xce, 0xb2, 0xa6, 0x01, 0x1a, 0x15,
  0xce, 0x73, 0x22, 0xb9, 0x79, 0x92, 0x54, 0x41, 0xcb, 0xc9, 0x2d, 0x4e,
  0x49, 0x82, 0x2d, 0xe2, 0x75, 0x34, 0x75, 0xd6, 0x0f, 0x7c, 0x6e, 0x56,
  0xeb, 0x88, 0xe4, 0x56, 0x20, 0x6a, 0xab, 0x0b, 0x8f, 0x1d, 0x3a, 0x65,
  0x6a, 0xbe, 0xda, 0x4f, 0xdc, 0x59, 0x29, 0x09, 0x13, 0x29, 0x08, 0x7d,
  0x7c, 0x52, 0x93, 0x08, 0xea, 0xa1, 0x73, 0x0f, 0xbd, 0xa5, 0xf6, 0x99,
  0x26, 0xc0, 0x48, 0xe2, 0x6a, 0xc4, 0xe3, 0x4a, 0x7d, 0x79, 0xf8, 0xb5,
  0x49, 0xd8, 0xa0, 0x32, 0xf3, 0xb5, 0x7f, 0x5b, 0x43, 0x45, 0x98, 0x5e,
  0x0f, 0xd6, 0xb6, 0x2b, 0xe1, 0xa2, 0x61, 0x83, 0x4f, 0x05, 0xf4, 0x06,
  0xb3, 0x29, 0x86, 0xf8, 0x94, 0x97, 0xba, 0xc4, 0x43, 0x4b, 0xe8, 0x47,
  0xdf, 0xa7, 0xb3, 0xf1, 0x28, 0x2e, 0x28, 0x3d, 0xcc, 0x17, 0xaf, 0x42,
  0x26, 0x7c, 0x9f, 0xca, 0x9c, 0xbe, 0x6a, 0x2f, 0x8f, 0x36, 0x93, 0x09,
  0x53, 0x7d, 0xa0, 0xe8, 0xc7, 0x1c, 0x06, 0x06, 0xbf, 0xdb, 0x8a, 0xce,
  0x98, 0x7c, 0x74, 0x8f, 0x51, 0xd4, 0xd5, 0x3b, 0x78, 0xd4, 0xcf, 0x55,
  0xe3, 0x10, 0xbd, 0x3d, 0x3f, 0x96, 0x92, 0x2e, 0xee, 0xf6, 0xc8, 0x7d,
  0xf5, 0xa2, 0xcb, 0xff, 0x7a, 0x61, 0xcb, 0x4f, 0x1c, 0x23, 0x8d, 0xed,
  0x18, 0xd6, 0xfa, 0x4f, 0x2f, 0xb5, 0xc8, 0xb5, 0xc9, 0x13, 0x07, 0x0e,
  0x26, 0x39, 0xcf, 0x52, 0xcb, 0xd6, 0xe0, 0x1d, 0x9d, 0x2d, 0xee, 0x08,
  0xf0, 0xaf, 0xbf, 0x0e, 0x0b, 0x84, 0x1d, 0xa9, 0xca, 0x9f, 0x56, 0xd5,

  0x13, 0x83, 0xce, 0xff, 0xb2, 0x1f, 0x68, 0xbf, 0x1d, 0xfc, 0x90, 0x49,
  0xf7, 0xb5, 0x5f, 0x43, 0xa0, 0x28, 0x0a, 0xdb, 0x61, 0xd6, 0x8f, 0x2d,
  0x27, 0x0e, 0x7e, 0xe8, 0xd5, 0x13, 0x1f, 0xe2, 0x23, 0x35, 0xb8, 0x6f,
  0xf7, 0x4a, 0x15, 0x66, 0xfa, 0xd2, 0x4b, 0x7b, 0xaf, 0xbf, 0xf5, 0xfc,

  0x0c, 0x65, 0x6b, 0x7c, 0x33, 0xfc, 0x20, 0xff, 0x84, 0xa8, 0x44, 0x52,
  0xc4, 0xf2, 0x36, 0x9a, 0x5b, 0xd9, 0x19, 0x03, 0x61, 0x73, 0x6a, 0xbc,
  0x1c, 0x36, 0x80, 0x4a, 0x84, 0x0a, 0x30, 0x0e, 0x4b, 0x6f, 0x07, 0x4e,
  0xb3, 0x86, 0xbb, 0x45, 0x78, 0x22, 0x06, 0x45, 0xf9, 0xc7, 0x08, 0xbf,
  0xa0, 0x5c, 0xee, 0x04, 0x8b, 0x98, 0xae, 0x4e, 0xde, 0x7e, 0x18, 0x9c,
  0xbc, 0x89, 0xe2, 0x00, 0x04, 0x16, 0xc5, 0x4b, 0x53, 0x72, 0xcb, 0x49,
  0x83, 0xa0, 0x2a, 0xcf, 0x39, 0x23, 0x48, 0xe6, 0xe2, 0xf5, 0x1c, 0x94,
  0xe4, 0x22, 0xb0, 0x8c, 0xfd, 0xba, 0x13, 0xd6, 0xe3, 0xe4, 0xc5, 0x5f,
  0x80, 0x3b, 0xc2, 0xab, 0x1e, 0x27, 0xd8, 0x9c, 0xeb, 0x90, 0xb3, 0x60,
  0x3c, 0x50, 0x35, 0xdb, 0xc6, 0xab, 0x9c, 0x25, 0xc9, 0x42, 0x8a, 0xfe,
  0x6c, 0x27, 0x79, 0x38, 0x1b, 0xf5, 0x04, 0x4a, 0x73, 0x0e, 0x1a, 0x55,
  0x03, 0x87, 0x71, 0x4b, 0x27, 0x29, 0x82, 0x57, 0xe3, 0x8c, 0x75, 0x8b,
  0x19, 0x60, 0xb7, 0x85, 0x77, 0x65, 0x3d, 0xad, 0x1a, 0x2e, 0x74, 0xaf,
  0xab, 0x1e, 0xb9, 0xd4, 0x11, 0xa0, 0x07, 0xec, 0x22, 0x9e, 0x4c, 0x3c,
  0x9b, 0xe6, 0x05, 0x8c, 0x37, 0x37, 0x75, 0x8a, 0x0c, 0xe7, 0x50, 0x6e,
  0x34, 0x7b, 0x71, 0xfa, 0x35, 0xdf, 0x5c, 0xea, 0x48, 0x21, 0xf0, 0x84,
  0x6b, 0xb8, 0x91, 0x2d, 0xf0, 0x3e, 0x91, 0xc7, 0x04, 0xc3, 0x83, 0x2c,
  0xd3, 0x06, 0x52, 0x75, 0x4d, 0xfb, 0xc1, 0x5b, 0xe8, 0x99, 0x9b, 0xd8,
  0x75, 0xa4, 0xe9, 0xce, 0x51, 0xd5, 0x5d, 0xc3, 0x01, 0xee, 0xdc, 0x7f,
  0xcf, 0x6e, 0x6e, 0xdb, 0x3b, 0xa1, 0x1b, 0x30, 0x8f, 0x1f, 0xc8, 0x45,
  0xd5, 0x4a, 0x0e, 0xec, 0xb0, 0xc5, 0xed, 0xc0, 0xc7, 0x0a, 0x66, 0xf9,
  0xc4, 0x60, 0x6d, 0xe5, 0x0b, 0xe7, 0x25, 0x99, 0x93, 0x16, 0x07, 0x16,
  0xd9, 0xdd, 0x7e, 0xe8, 0x91, 0xd2, 0xb8, 0x4d, 0x4b, 0x33, 0xf2, 0x13,
  0xc6, 0xb8, 0x4c, 0x34, 0xe2, 0xd6, 0xb9, 0xb5, 0x14, 0x7d, 0x6f, 0x03,
  0x7f, 0x3c, 0xcb, 0x31, 0x4a, 0xc9, 0xc4, 0x40, 0xdf, 0xf7, 0x21, 0xfb,
  0xd0, 0x48, 0x28, 0x90, 0x10, 0xd5, 0xa0, 0x65, 0x9f, 0x30, 0xb5, 0xb2,
  0xa1, 0x62, 0x31, 0x04, 0x30, 0x63, 0x0f, 0xd8, 0xc4, 0x8e, 0x23, 0x6f,
  0x7a, 0x39, 0xac, 0x3c, 0x0e, 0x2b, 0x0a, 0x34, 0x44, 0xb7, 0x8e, 0xac,

  0x2c, 0x9b, 0x4d, 0xe5, 0x99, 0xd4, 0xa0, 0x9a, 0x5a, 0xa9, 0x49, 0x8d,
  0x7c, 0x40, 0x55, 0xeb, 0x6a, 0xfb, 0x1c, 0x2a, 0x6d, 0xc2, 0xe5, 0x90,
  0x9d, 0x19, 0x67, 0xee, 0x5c, 0xe9, 0x00, 0x60, 0x8c, 0x34, 0x1f, 0x53,
  0x51, 0x14, 0xb7, 0xe1, 0x69, 0x83, 0x8f, 0x91, 0xb9, 0xac, 0xa1, 0xa7,
  0xf2, 0x21, 0x9d, 0x2f, 0xe7, 0xf4, 0x7e, 0x97, 0xcb, 0x1f, 0xe7, 0x28,
  0xb5, 0xf4, 0x50, 0x29, 0xbb, 0xb0, 0x52, 0x8a, 0x0a, 0x39, 0x33, 0x90,
  0xb7, 0x11, 0xd1, 0x56, 0x9c, 0xf1, 0x83, 0x6f, 0x71, 0x8b, 0x0d, 0x3a,
  0xa8, 0xff, 0x76, 0xfa, 0x8c, 0x0e, 0x41, 0xa3, 0xfb, 0xd2, 0x9f, 0x84,
  0xcf, 0x3a, 0x88, 0x2e, 0x31, 0xcf, 0x39, 0x19, 0x3b, 0x56, 0xa4, 0x90,
  0x1b, 0x81, 0xd8, 0xf0, 0x19, 0xb5, 0x73, 0x28, 0x69, 0x35, 0x49, 0xf3,
  0x15, 0x8a, 0xc7, 0xa5, 0x5a, 0xe7, 0x2f, 0x8b, 0x25, 0xa1, 0xfb, 0x29,

  0x43, 0xfa, 0x2d, 0x17, 0x9e, 0xcc, 0x37, 0x7c, 0xc2, 0xa8, 0xa3, 0xf0,

  0xf9, 0x2d, 0xc9, 0x89, 0x11, 0xdb, 0x16, 0xfd, 0xe5, 0xb2, 0xc7, 0xc6,
  0x8d, 0x25, 0x0d, 0x17, 0xc2, 0x9d, 0x35, 0x89, 0x97, 0x79, 0x42, 0x84,
  0x15, 0x53, 0x86, 0x43, 0x3a, 0xc0, 0x4d, 0xe1, 0xe3, 0xeb, 0x6a, 0x19,
  0xde, 0xde, 0xc3, 0x83, 0x47, 0xe1, 0x8e, 0x41, 0xcc, 0x78, 0x93, 0x6c,
  0x2d, 0xef, 0x6d, 0x7d, 0x8e, 0xff, 0xdc, 0x7f, 0x68, 0x18, 0xcd, 0xfd,
  0x20, 0x38, 0xa4, 0x96, 0xe5, 0xc6, 0xc3, 0x9c, 0x43, 0x70, 0xbc, 0x61,
  0xb1, 0xb3, 0x99, 0x1a, 0x45, 0x90, 0xce, 0xaf, 0xf7, 0x31, 0x6e, 0x6e,
  0x9e, 0xf9, 0xa9, 0x0d, 0x94, 0x8b, 0xe9, 0xf4, 0x7a, 0xd5, 0x40, 0x29,
  0x35, 0x2d, 0x04, 0xe5, 0x1f, 0x37, 0x53, 0xf7, 0x4a, 0x07, 0x1d, 0xe7,
  0x4b, 0x0e, 0x64, 0x26, 0x5e, 0x64, 0x2c, 0xe5, 0xdd, 0xc7, 0x2b, 0x05,
  0x22, 0x2b, 0x9d, 0xe1, 0x3b, 0x7c, 0xaf, 0xcb, 0x68, 0x1b, 0x8e, 0x21,
  0xcd, 0x96, 0x95, 0x01, 0xeb, 0xa3, 0x0f, 0x2a, 0x85, 0x06, 0x77, 0x1f,
  0xf9, 0xbc, 0x11, 0x2c, 0xc2, 0x0b, 0x4a, 0x27, 0x40, 0xc8, 0xf7, 0x84,
  0x74, 0x72, 0x71, 0xf0, 0xb8, 0x52, 0x36, 0xe0, 0x2a, 0x32, 0x51, 0x58,
  0xe9, 0xdc, 0x94, 0x3c, 0xc0, 0x66, 0x33, 0x88, 0x52, 0x64, 0x84, 0x83,
  0x15, 0x6a, 0x92, 0x21, 0xcc, 0x0d, 0x1b, 0x02, 0x99, 0x3f, 0x35, 0x26,

  0x6e, 0x5a, 0x78, 0x11, 0x9f, 0xcb, 0x2b, 0xb9, 0x92, 0xa6, 0xf9, 0x1a,
  0x6b, 0x6d, 0xe1, 0xab, 0x2d, 0x0d, 0xd4, 0x18, 0x5b, 0x0f, 0xb4, 0xb6,
  0x17, 0x58, 0x0d, 0xec, 0x14, 0xa2, 0xc1, 0x49, 0x98, 0xac, 0x4d, 0x1c,
  0xfe, 0x8a, 0x3e, 0x7d, 0x84, 0x21, 0xe3, 0x83, 0x90, 0x46, 0xe6, 0x16,
  0x73, 0x23, 0xeb, 0x25, 0x5e, 0x40, 0xfe, 0xfa, 0x44, 0xf1, 0xb8, 0x11,
  0xa9, 0x9b, 0x2f, 0xab, 0x71, 0xc0, 0x73, 0x3a, 0x40, 0xf2, 0xe0, 0x73,
  0xe6, 0x90, 0xaa, 0xf3, 0x3b, 0xb2, 0xa3, 0x32, 0x46, 0xf8, 0xc9, 0x65,
  0x75, 0xf3, 0x73, 0x3a, 0x0e, 0x22, 0x37, 0xe0, 0x6d, 0x80, 0x5f, 0xc3,
  0xa9, 0x95, 0xec, 0xfe, 0x52, 0x64, 0xd3, 0x68, 0x5d, 0x5e, 0xdb, 0xe8,
  0x46, 0xe3, 0x25, 0x39, 0xe4, 0x06, 0x47, 0x83, 0xb3, 0xe8, 0xf2, 0xec,
  0xe8, 0xf4, 0x1c, 0xde, 0xe9, 0xf9, 0x46, 0xaa, 0x01, 0x2c, 0xeb, 0x36,
  0x5b, 0x8c, 0x91, 0xc7, 0xb3, 0x8e, 0x69, 0x66, 0xbe, 0xc3, 0x1f, 0xf2,
  0x31, 0x8d, 0xc6, 0x24, 0x4a, 0x6b, 0xb5, 0x07, 0xbd, 0xa5, 0x66, 0x3c,
  0xb5, 0xa3, 0xea, 0x58, 0xa5, 0x49, 0x33, 0x65, 0x24, 0x15, 0xd5, 0x89,
  0x35, 0xf2, 0x65, 0x04, 0xc9, 0x75, 0x97, 0xc8, 0xd4, 0xfc, 0xd5, 0xc0,
  0xca, 0x6d, 0x76, 0x11, 0xce, 0x10, 0x66, 0xc4, 0x1d, 0xb3, 0x80, 0x2a,

  0x9c, 0x61, 0x09, 0xdc, 0xcd, 0x64, 0xb9, 0x52, 0xc6, 0x60, 0x5b, 0x26,
  0x14, 0x4c, 0x0a, 0xdd, 0x8e, 0x98, 0x1c, 0x2a, 0xdb, 0xa4, 0x62, 0xd6,
  0xc9, 0xca, 0x8f, 0xa9, 0x70, 0xd8, 0x58, 0x69, 0xb8, 0xd8, 0xb5, 0xd2,

  0x93, 0xd0, 0xc3, 0xfc, 0xa1, 0x6b, 0x61, 0x12, 0xa8, 0xb4, 0xc9, 0xe4,
  0x37, 0x4c, 0x81, 0x99, 0x11, 0x0c, 0x15, 0x8f, 0x04, 0x83, 0x76, 0x4d,
  0xa6, 0x7b, 0x79, 0x13, 0xfb, 0x05, 0x03, 0x73, 0xd0, 0x6e, 0x61, 0x40,
  0xd7, 0x35, 0xba, 0x8a, 0xc6, 0x5e, 0x34, 0x7a, 0x79, 0x13, 0x8d, 0xa5,
  0x4d, 0x1d, 0xe7, 0x84, 0xb2, 0x6c, 0x4d, 0x8e, 0x9c, 0xe1, 0xce, 0x30,
  0x04, 0xd1, 0x51, 0x9d, 0x1c, 0x56, 0x02, 0xb0, 0x6f, 0x37, 0xbe, 0xf7,
  0x89, 0x50, 0x62, 0x19, 0xb5, 0xbb, 0xad, 0xf1, 0x65, 0x79, 0xc0, 0x5f,

  0xb7, 0x60, 0xd4, 0xfe, 0x64, 0x18, 0xd9, 0x0b, 0xab, 0x99, 0xb8, 0x41,
  0x69, 0x08, 0x1e, 0x8a, 0x9e, 0xd8, 0x94, 0xd4, 0xb8, 0xa7, 0x32, 0x4c,

  0x18, 0x7a, 0x56, 0x57, 0x3e, 0x40, 0xea, 0xc7, 0x0e, 0xbe, 0xbd, 0x10,

  0x8c, 0x95, 0x89, 0xcf, 0x8a, 0x9d, 0x55, 0xd2, 0xd3, 0x98, 0x28, 0x57,
  0x89, 0x3a, 0x67, 0x24, 0x39, 0x8e, 0x61, 0xf3, 0xcd, 0xb0, 0x01, 0x82,
  0xdf, 0x2e, 0x81, 0x53, 0x10, 0x26, 0xdc, 0x24, 0x55, 0x67, 0xe0, 0x8c,
  0xe9, 0xf1, 0x61, 0x6a, 0xa2, 0x41, 0x74, 0xf6, 0xf7, 0x65, 0x9a, 0x50,
  0x37, 0x5f, 0x90, 0xc3, 0xd1, 0x1b, 0xce, 0x98, 0x94, 0x66, 0xa3, 0xdc,
  0xd5, 0x98, 0x3a, 0x1f, 0xe3, 0xa3, 0x66, 0x02, 0x1e, 0x1f, 0x86, 0x09,
  0xa1, 0x7c, 0x7a, 0x4f, 0x93, 0x3e, 0xc6, 0x49, 0xcf, 0x41, 0x00, 0x92,
  0x5f, 0xcb, 0x41, 0xd7, 0xd3, 0x64, 0x1a, 0xad, 0x70, 0x61, 0x51, 0x15,
  0x97, 0xb7, 0x7e, 0x0d, 0x4b, 0xb7, 0xd6, 0xa9, 0x8d, 0x7c, 0x29, 0xc2,
  0x98, 0x2a, 0x6c, 0xf3, 0x97, 0xc5, 0xb3, 0xcd, 0xb2, 0x1a, 0xa3, 0x5e,
  0xb0, 0xcc, 0x66, 0x38, 0x49, 0x1c, 0xaa, 0xa5, 0x6f, 0x68, 0x00, 0x87,
  0x8a, 0x20, 0xd0, 0x1b, 0x07, 0x44, 0x31, 0x1d, 0xc3, 0x06, 0xa5, 0x96,
  0xcf, 0x35, 0xec, 0xf0, 0x27, 0x22, 0x57, 0x7d, 0x50, 0x2c, 0x77, 0xab,
  0x90, 0xed, 0xf0, 0x8a, 0x69, 0x23, 0x6b, 0xe7, 0xb6, 0x0a, 0x22, 0xe4,
  0x0e, 0x27, 0x04, 0x84, 0x36, 0xcc, 0x4b, 0x05, 0x4f, 0x87, 0x45, 0xc2,
  0xeb, 0xb5, 0xfb, 0x44, 0x10, 0x74, 0xbf, 0x10, 0xe5, 0x87, 0xfb, 0xa5,
  0x3b, 0x18, 0x3f, 0xab, 0xda, 0xa4, 0xfb, 0x4d, 0xe6, 0x7f, 0x31, 0xc0,
  0x4f, 0x08, 0xc1, 0x0c, 0x5d, 0x2c, 0x26, 0x27, 0x58, 0x12, 0xfd, 0x6a,
  0x40, 0x37, 0xe4, 0xd4, 0xc0, 0xc4, 0x8b, 0x40, 0x8b, 0x4e, 0x20, 0xa7,
  0xa5, 0x60, 0x83, 0x8c, 0x66, 0xa0, 0x03, 0x05, 0x1c, 0x31, 0x03, 0x01,
  0x86, 0x43, 0x18, 0xbc, 0x6e, 0x53, 0x64, 0x97, 0x4b, 0x54, 0xcd, 0x67,
  0x4b, 0xfc, 0x36, 0x23, 0xc8, 0x19, 0x04, 0x33, 0x85, 0x34, 0x08, 0xa2,
  0xfe, 0x19, 0x08, 0x32, 0xbc, 0xa3, 0x0e, 0x00, 0xa2, 0x62, 0xfa, 0x1a,
  0x6c, 0xc0, 0x26, 0x46, 0x54, 0xbf, 0x65, 0x76, 0xe8, 0x2d, 0xe1, 0x61,
  0x12, 0x01, 0x58, 0x75, 0x1c, 0x53, 0x58, 0xe6, 0xa5, 0xd3, 0x11, 0x84,
  0x40, 0xc1, 0xd4, 0x09, 0xa2, 0xba, 0x51, 0xce, 0x04, 0x2b, 0x5f, 0xee,
  0xdc, 0x54, 0x43, 0x51, 0x00, 0x01, 0xaa, 0xbc, 0x70, 0x70, 0x00, 0x81,
  0x00, 0x32, 0x2f, 0x1e, 0x88, 0xc8, 0x5c, 0xdc, 0x58, 0x90, 0x78, 0x0e,
  0x2b, 0xd4, 0x52, 0x44, 0x56, 0xea, 0xdd, 0xab, 0x4d, 0x89, 0x21, 0x9a,
  0xb2, 0x50, 0x06, 0x3f, 0xbf, 0xb4, 0xae, 0x20, 0x3d, 0xf4, 0xda, 0x46,
  0x2d, 0x6e, 0x96, 0xd7, 0x60, 0xa8, 0x7f, 0x57, 0x9d, 0x6b, 0xbf, 0xde,
  0x50, 0x4f, 0x20, 0x1d, 0x7f, 0xd5, 0x85, 0x8a, 0x9f, 0x77, 0xa3, 0x5a,
  0xaa, 0x6d, 0xfe, 0xdf, 0xbc, 0x51, 0xf1, 0xf3, 0xae, 0x54, 0x5c, 0xbb,
  0x53, 0xb8, 0x4c, 0x9f, 0x2d, 0x3d, 0xb4, 0xce, 0xf8, 0x37, 0xbc, 0x65,
  0x26, 0x31, 0xe9, 0xb9, 0x77, 0x4c, 0x69, 0xe2, 0xff, 0xed, 0x5b, 0xf6,
  0x79, 0x43, 0x0b, 0x24, 0x7c, 0xd4, 0x15, 0x7d, 0x2b, 0xdd, 0xdc, 0x2d,
  0x54, 0x90, 0x51, 0xd7, 0xda, 0x34, 0x50, 0x86, 0xe1, 0xe6, 0x95, 0x0c,
  0xbd, 0x15, 0x0c, 0x5d, 0xe6, 0x7a, 0xb4, 0xfb, 0xe6, 0x38, 0x14, 0x77,
  0x60, 0xe5, 0xc8, 0x9e, 0xf3, 0x56, 0x11, 0xa2, 0x2d, 0x6e, 0x4a, 0x5f,
  0xd4, 0x07, 0x5d, 0xd3, 0x14, 0xe4, 0xfa, 0x22, 0x25, 0xed, 0x00, 0x14,
  0x17, 0x34, 0x6f, 0xbf, 0x19, 0x0c, 0x7a, 0x47, 0x97, 0xa7, 0xd1, 0x13,
  0x76, 0x17, 0xe1, 0xc2, 0xd8, 0x39, 0x86, 0xec, 0xe5, 0xf6, 0x34, 0xac,
  0xfa, 0xd7, 0x41, 0xcf, 0x6d, 0x6e, 0xeb, 0x51, 0x19, 0xd5, 0xd2, 0x8c,
  0x75, 0x52, 0xa6, 0xe5, 0x06, 0x6a, 0xdb, 0x8a, 0xba, 0x4c, 0xa9, 0xfe,
  0xe8, 0xac, 0x41, 0xae, 0x45, 0x0f, 0x78, 0x39, 0xd9, 0x84, 0xb0, 0x83,
  0xe8, 0x38, 0xdb, 0xaf, 0x5e, 0x6c, 0xc3, 0xad, 0x78, 0x64, 0xd4, 0x47,
  0x79, 0x79, 0xaf, 0xbf, 0xbb, 0xb9, 0xd7, 0xdf, 0x43, 0x9e, 0x26, 0xc1,
  0x52, 0x72, 0x76, 0xc8, 0xf0, 0xc0, 0xed, 0x02, 0x59, 0x49, 0x2c, 0xc4,
  0xce, 0x4f, 0x8e, 0x23, 0x4e, 0x5d, 0x25, 0x18, 0xc0, 0x86, 0xd1, 0xc5,
  0x19, 0x6e, 0x94, 0xc2, 0x22, 0x47, 0xc8, 0xc4, 0xea, 0x39, 0x29, 0xbc,
  0xed, 0x50, 0x53, 0x82, 0x2c, 0xae, 0xcc, 0x4c, 0x04, 0xd9, 0x1d, 0x5b,
  0x15, 0xb2, 0x2f, 0x38, 0x47, 0xbf, 0x02, 0xcd, 0xd9, 0x12, 0x67, 0xc3,
  0x9e, 0x48, 0x2f, 0xdf, 0x6b, 0x3f, 0x1f, 0x35, 0x5f, 0x5a, 0x0c, 0x20,
  0xeb, 0xb9, 0xf7, 0xec, 0x1c, 0x61, 0x88, 0x6a, 0x94, 0xa2, 0x0b, 0x72,
  0x34, 0x37, 0x26, 0xc9, 0xe4, 0xef, 0xe3, 0xac, 0xff, 0x4b, 0xed, 0xa9,
  0x80, 0x42, 0xec, 0x98, 0x4d, 0x3a, 0x75, 0x61, 0x64, 0x62, 0x2b, 0xb5,
  0x2d, 0x48, 0x4c, 0xa4, 0xa6, 0x87, 0x8c, 0x49, 0x00, 0x2f, 0x33, 0x5b,
  0x50, 0xce, 0x50, 0x66, 0xfc, 0xc0, 0xcf, 0x74, 0xf4, 0x80, 0x41, 0x8e,
  0x1f, 0xe3, 0xb1, 0x8a, 0x24, 0x9e, 0xc9, 0xac, 0x9c, 0xef, 0xf8, 0xbf,
  0xc4, 0xdd, 0x23, 0x66, 0x5b, 0xfa, 0x69, 0x99, 0x12, 0x54, 0x70, 0xa6,
  0x60, 0xd2, 0xb4, 0x6c, 0x27, 0x97, 0x45, 0x01, 0xe2, 0x24, 0x5d, 0xc4,
  0xb3, 0xe8, 0x19, 0xb5, 0x05, 0xed, 0x87, 0xff, 0x44, 0x9f, 0x5e, 0x9a,
  0xbd, 0xde, 0xce, 0x15, 0x8c, 0x4e, 0x52, 0x8f, 0x9a, 0x52, 0x35, 0xc0,
  0xe5, 0x5a, 0x06, 0x43, 0xe4, 0x04, 0xcb, 0xcd, 0x94, 0xe2, 0x9a, 0x09,
  0x34, 0x60, 0x49, 0x1a, 0xcf, 0x2b, 0xba, 0xe3, 0x6c, 0x28, 0x4d, 0x87,
  0x95, 0x9a, 0xd7, 0x8d, 0x26, 0x23, 0x0c, 0x31, 0xf7, 0x2a, 0x17, 0xa6,
  0xf8, 0x24, 0xe7, 0xfd, 0x2d, 0x98, 0x21, 0xaa, 0x70, 0xec, 0x67, 0xf8,
  0xe5, 0xca, 0x9c, 0x6c, 0x61, 0xb4, 0x4e, 0x69, 0x20, 0x52, 0x23, 0xac,
  0x38, 0xa1, 0x9a, 0x58, 0x10, 0x70, 0x16, 0x51, 0xd4, 0x98, 0x08, 0x04,
  0x37, 0xe4, 0x09, 0xd3, 0x2a, 0xa0, 0xf8, 0x79, 0x7c, 0xf6, 0xff, 0x09,
  0x35, 0x70, 0x3f, 0x32, 0x67, 0xf5, 0x1c, 0x75, 0x90, 0x91, 0xd5, 0xb9,
  0xdf, 0xb8, 0x07, 0x7d, 0x67, 0x4d, 0xae, 0xff, 0x5f, 0x1b, 0xfc, 0x3f,
  0x49, 0x1b, 0xfc, 0x57, 0x6e, 0x69, 0x4f, 0xf2, 0x9a, 0xf9, 0x5a, 0x9a,
  0xcc, 0x2a, 0xa9, 0x43, 0x09, 0x16, 0x1c, 0xcc, 0x1e, 0xfb, 0x51, 0x0b,
  0xbc, 0xf1, 0x13, 0x57, 0xd4, 0x27, 0x85, 0xff, 0x37, 0xae, 0xe8, 0xb3,
  0x6e, 0xe6, 0xff, 0xef, 0xfb, 0xf8, 0xdf, 0xed, 0x1e, 0x06, 0x08, 0x52,
  0x07, 0x5b, 0x07, 0x32, 0xbb, 0xc7, 0xac, 0x3d, 0x6e, 0x76, 0x46, 0x96,
  0xf6, 0x86, 0x55, 0x7d, 0xb0, 0x1c, 0x8f, 0xb7, 0xee, 0xf4, 0xf2, 0xbb,
  0x17, 0x84, 0xc2, 0x33, 0x68, 0x26, 0xb3, 0x14, 0xd1, 0xd9, 0x9b, 0xa3,
  0xcb, 0x5f, 0x70, 0xdb, 0xff, 0x42, 0x6e, 0xd6, 0x45, 0x92, 0x8c, 0x7b,
  0x1c, 0x37, 0x3c, 0xa4, 0x7f, 0x04, 0x03, 0xee, 0x8a, 0xae, 0x41, 0x64,
  0x8b, 0xe1, 0x44, 0x3f, 0x8f, 0x81, 0x5e, 0x06, 0x35, 0x25, 0x13, 0xcc,
  0x9b, 0x05, 0xb5, 0x5d, 0xf6, 0x7c, 0x2c, 0x79, 0x36, 0xde, 0x10, 0x15,
  0x90, 0xbf, 0x4d, 0xa4, 0x22, 0xf9, 0x27, 0x78, 0xbd, 0xa7, 0x88, 0x8b,
  0x67, 0xa0, 0x43, 0x9d, 0x67, 0x38, 0x13, 0x2f, 0x98, 0x0c, 0xf5, 0x68,
  0x97, 0xc2, 0x21, 0x4f, 0x46, 0xaf, 0xdb, 0xdd, 0x42, 0xff, 0x3b, 0x71,
  0x90, 0xa4, 0xfa, 0x84, 0x68, 0x1b, 0xcd, 0xcf, 0xb7, 0xa5, 0xd3, 0xac,
  0xdc, 0x4a, 0xf7, 0x24, 0x6a, 0x3b, 0x88, 0x11, 0x72, 0x0e, 0x1d, 0x7a,
  0x5d, 0xca, 0x9d, 0x6f, 0x72, 0x06, 0x09, 0xcf, 0xd7, 0x7c, 0xa2, 0xbe,
  0x97, 0xa7, 0x93, 0xfa, 0x76, 0x06, 0xb2, 0x77, 0xbb, 0xb5, 0x6c, 0x25,
  0x77, 0x4a, 0x26, 0x4e, 0xbe, 0x1d, 0xa9, 0x6b, 0x9f, 0x31, 0x25, 0x04,
  0xca, 0xe2, 0x2f, 0x7e, 0x36, 0xa5, 0xf3, 0xfa, 0x53, 0x9d, 0x88, 0xf3,
  0xac, 0x2a, 0xa8, 0xc5, 0x88, 0xa6, 0x10, 0x94, 0x0a, 0xda, 0xbf, 0x74,
  0xba, 0x39, 0xc7, 0x54, 0x28, 0x40, 0xbb, 0xe6, 0xb7, 0xdb, 0xe4, 0xfb,
  0x9d, 0x54, 0xa3, 0xbe, 0x39, 0x59, 0x02, 0x30, 0x84, 0x5f, 0x8d, 0x40,
  0xc5, 0xd5, 0x8e, 0xd4, 0x5d, 0x6a, 0xe1, 0xa6, 0xcd, 0xd9, 0x5a, 0x7c,
  0x15, 0x9a, 0x09, 0xf3, 0xe9, 0xdb, 0xb3, 0xad, 0xee, 0x7f, 0xe8, 0x43,
  0x48, 0xa8, 0x3b, 0xc6, 0x70, 0x85, 0x18, 0xd8, 0x19, 0x81, 0x2f, 0x50,


  0x93, 0x64, 0x8c, 0x04, 0x4f, 0x66, 0xf1, 0xbd, 0xd4, 0xc3, 0x35, 0xf9,

  0xfd, 0xe0, 0x6c, 0x97, 0xb6, 0xf5, 0xfa, 0x6c, 0xe0, 0xc2, 0xe7, 0x97,
  0x14, 0x8c, 0xa7, 0xfa, 0xc7, 0xaf, 0x4f, 0x8e, 0x06, 0xd7, 0x7d, 0x6f,
  0x89, 0x1c, 0x07, 0x0e, 0x12, 0x0c, 0x33, 0xe1, 0xc1, 0x19, 0xac, 0xf5,
  0x11, 0xe1, 0x33, 0xa5, 0xae, 0x12, 0x27, 0xc7, 0x73, 0xd3, 0xd1, 0xd1,
  0xce, 0x8d, 0x39, 0xbb, 0xbf, 0x4a, 0x0a, 0x3f, 0x25, 0x09, 0xf6, 0x6e,
  0x98, 0xce, 0x70, 0x05, 0x30, 0x2f, 0xb0, 0x86, 0xe6, 0x52, 0x34, 0x41,
  0x55, 0xfa, 0xf9, 0x0c, 0x33, 0x09, 0xf0, 0x33, 0x75, 0x3f, 0x04, 0x26,
  0x24, 0x0b, 0x74, 0x41, 0x7b, 0x21, 0x32, 0xe8, 0x1d, 0x39, 0xb6, 0x7f,
  0x32, 0x53, 0xd5, 0xbd, 0xe2, 0xb8, 0xb3, 0xd3, 0xb1, 0x0f, 0xf1, 0x8d,
  0x10, 0xc4, 0xc5, 0x4f, 0xf7, 0x8e, 0xcb, 0x5b, 0x8d, 0xec, 0x52, 0x5f,
  0x51, 0x8c, 0x1a, 0xaf, 0xcc, 0x39, 0x6d, 0x5a, 0x42, 0x70, 0xd0, 0x54,
  0x13, 0x8f, 0xd5, 0x51, 0x5e, 0x71, 0x04, 0x3a, 0x00, 0xb2, 0x64, 0xb6,
  0xb1, 0xe2, 0xc4, 0x35, 0x73, 0xc4, 0xed, 0x7b, 0x8a, 0xa3, 0x85, 0x7b,


  0xad, 0x45, 0xa3, 0x9b, 0x04, 0x84, 0x48, 0xdf, 0x41, 0x76, 0x78, 0xf6,
  0x86, 0x7c, 0xe6, 0xc1, 0xff, 0x05, 0xb6, 0xe7, 0x17, 0x6f, 0xc8, 0xde,
  0x9e, 0xbf, 0x21, 0x45, 0xf2, 0xf7, 0x71, 0x08, 0x0b, 0x9d, 0x6a, 0x50,
  0xa8, 0xfc, 0x85, 0xcb, 0x46, 0xae, 0x18, 0xd0, 0x1d, 0xa7, 0xba, 0x89,
  0x2d, 0x8d, 0x34, 0x8f, 0xde, 0x82, 0xe9, 0xa1, 0x85, 0x8d, 0x01, 0x48,
  0xbf, 0x1d, 0xbb, 0x82, 0x6e, 0x3a, 0xed, 0x37, 0xd3, 0x30, 0x1c, 0x88,
  0x64, 0x37, 0xcb, 0x47, 0x56, 0x6a, 0x90, 0x98, 0xcb, 0x42, 0x8d, 0x71,
  0xb0, 0xc4, 0xd4, 0x5c, 0x9e, 0x5e, 0x6f, 0x52, 0x2d, 0xcc, 0xc2, 0x56,
  0x52, 0xc7, 0x96, 0xb7, 0x19, 0x2d, 0x4b, 0xbf, 0x2e, 0x1e, 0xd5, 0xfd,
  0xba, 0x72, 0xf5, 0x7e, 0xb6, 0x25, 0xf6, 0xdc, 0xe1, 0x44, 0x6a, 0x42,
  0x2d, 0x93, 0x26, 0xea, 0xad, 0xdb, 0x60, 0x4b, 0x56, 0x65, 0x23, 0x7c,
  0xe6, 0x41, 0xdb, 0x52, 0x8b, 0x8c, 0x9a, 0x05, 0x0b, 0x07, 0xd7, 0xe8,
  0xa8, 0x6c, 0x01, 0x97, 0x56, 0x52, 0x41, 0x83, 0x77, 0xdb, 0xb3, 0x0a,
  0xac, 0xf9, 0xbb, 0x64, 0x46, 0x05, 0xde, 0x49, 0x36, 0x2a, 0x1e, 0x17,
  0x2e, 0x78, 0xff, 0xf8, 0x5f, 0xd9, 0x7f, 0xad, 0x0c, 0xa2, 0xd0, 0x31,
  0x28, 0x3e, 0xc0, 0xec, 0x36, 0x7c, 0xfd, 0x0b, 0xeb, 0x74, 0x65, 0x3c,
  0xc6, 0x23, 0x45, 0x29, 0x5c, 0xb9, 0xb5, 0x02, 0x68, 0xcb, 0x28, 0xe7,
  0x66, 0x08, 0x4d, 0x81, 0x5a, 0x98, 0xf8, 0x0e, 0x64, 0xdc, 0x5c, 0x53,
  0x09, 0xf0, 0xec, 0x93, 0xdf, 0xe9, 0xf2, 0x76, 0xdd, 0xed, 0x78, 0x3c,
  0x61, 0x70, 0xb6, 0x11, 0xbd, 0x45, 0x1f, 0x4d, 0xdd, 0x09, 0x8f, 0xd7,
  0x55, 0xdb, 0x93, 0xed, 0xb0, 0x23, 0xca, 0xed, 0xd6, 0xac, 0x10, 0xf8,
  0x5e, 0x0a, 0x15, 0x55, 0x86, 0xd3, 0xdb, 0xb6, 0x46, 0x77, 0x00, 0xac,
  0x95, 0x13, 0x1b, 0xd5, 0xb3, 0xc4, 0x3d, 0x55, 0xb5, 0xf4, 0x19, 0x9e,
  0xbe, 0xdb, 0x69, 0x03, 0xa2, 0xef, 0xcb, 0xaf, 0xa9, 0x88, 0x7d, 0x9c,
  0x10, 0x96, 0xbb, 0x62, 0x69, 0x62, 0x05, 0x17, 0xd3, 0x1b, 0x65, 0xf5,
  0xa2, 0x7b, 0xfa, 0xc5, 0xf6, 0xcb, 0x17, 0x1b, 0xab, 0xba, 0x94, 0x63,
  0xef, 0x1e, 0x2c, 0xce, 0x65, 0x12, 0xc2, 0x7f, 0xed, 0xf4, 0xdd, 0x0d,
  0x8a, 0x6c, 0x67, 0x13, 0x29, 0xb2, 0xf6, 0x25, 0x1c, 0x88, 0x1b, 0x24,
  0x09, 0xda, 0x08, 0x6d, 0xf7, 0x40, 0xc4, 0xc2, 0xeb, 0x42, 0x5b, 0x46,
  0x6e, 0x39, 0x91, 0x72, 0xd3, 0x28, 0xf4, 0x90, 0xe8, 0xc9, 0x48, 0xec,
  0xed, 0xea, 0x1c, 0x58, 0x7a, 0xba, 0xed, 0x39, 0x79, 0xb2, 0xf4, 0xf7,
  0x7e, 0xfd, 0x5f, 0x6e, 0x30, 0xd3, 0x0e, 0xf0, 0x6b, 0x4e, 0x79, 0xf7,
  0x77, 0x38, 0xe5, 0xdd, 0xd5, 0xa7, 0xbc, 0xfb, 0xdc, 0x53, 0x7e, 0xb9,
  0xff, 0xe2, 0xf3, 0x5f, 0x71, 0xca, 0xce, 0x0e, 0xff, 0xb7, 0x9d, 0xb2,
  0x43, 0x69, 0xbf, 0xee, 0x94, 0x25, 0x29, 0xa4, 0x59, 0x90, 0x29, 0xc9,
  0x2f, 0x94, 0xd6, 0x8a, 0x50, 0x1a, 0x5c, 0xc6, 0xc2, 0xcf, 0xfa, 0x75,
  0x56, 0xd2, 0x7c, 0x92, 0x9b, 0xde, 0xa1, 0x1e, 0x16, 0x30, 0xb2, 0x2d,
  0xb4, 0x08, 0x69, 0xb8, 0x8b, 0x19, 0xf6, 0x4e, 0x5b, 0xeb, 0xad, 0xa9,
  0x7b, 0x44, 0xcb, 0x27, 0x15, 0x17, 0x8b, 0x3f, 0x07, 0x47, 0xfd, 0x3b,
  0xa2, 0xaa, 0xf9, 0x39, 0x33, 0x4e, 0xd6, 0x53, 0x7d, 0xd3, 0x1e, 0x67,
  0x60, 0x26, 0x70, 0x0e, 0x52, 0x30, 0xfb, 0x4d, 0x90, 0xdf, 0x0d, 0xb2,
  0x93, 0x3a, 0x6a, 0x86, 0xa0, 0x14, 0x82, 0x14, 0xc8, 0x30, 0xa9, 0xe7,
  0x71, 0x96, 0x48, 0x01, 0x31, 0x2e, 0x1a, 0x29, 0x03, 0x4d, 0xf9, 0xa6,
  0x4b, 0x58, 0x7a, 0x05, 0x35, 0x32, 0x96, 0xfa, 0xe2, 0x2e, 0x07, 0xf5,
  0xac, 0x36, 0x19, 0x0a, 0x02, 0x94, 0x70, 0x4b, 0x46, 0x37, 0xdc, 0x5f,
  0x24, 0x00, 0xf6, 0xb3, 0x2a, 0xc1, 0xaf, 0x99, 0x70, 0xd7, 0xd2, 0x9b,
  0x28, 0xd8, 0x81, 0x0a, 0xfb, 0x54, 0xd5, 0x1b, 0x55, 0x71, 0x8e, 0x38,

  0x23, 0xea, 0x91, 0xc2, 0xdf, 0xec, 0xfd, 0x24, 0x8d, 0xa3, 0xbc, 0x42,
  0x64, 0x94, 0xe9, 0xb2, 0xa0, 0x7a, 0xd3, 0x25, 0x9b, 0x4d, 0xa8, 0x3b,
  0xf3, 0x74, 0xcd, 0x0c, 0x26, 0x9d, 0x4b, 0xcf, 0x6d, 0x15, 0x92, 0x6c,
  0x82, 0xbf, 0xc1, 0xd3, 0x1d, 0x2f, 0xe7, 0x0b, 0x05, 0x43, 0xc4, 0xea,
  0xa6, 0x94, 0xca, 0xe8, 0x04, 0x10, 0x81, 0x92, 0xae, 0x03, 0x6e, 0x34,
  0xe3, 0x65, 0x92, 0xe4, 0x36, 0xf6, 0x58, 0xe9, 0x59, 0x09, 0xb0, 0x07,
  0x2f, 0x80, 0x12, 0xd7, 0xa8, 0x94, 0x08, 0xf1, 0xd5, 0x92, 0x89, 0x97,
  0x7a, 0x40, 0x8d, 0x6a, 0x29, 0x3a, 0x99, 0x0c, 0x97, 0x53, 0xc5, 0x14,
  0x30, 0x0d, 0xee, 0xea, 0x54, 0x49, 0xf5, 0x57, 0x88, 0x32, 0x94, 0x74,
  0x39, 0x19, 0xfe, 0xd1, 0x07, 0x57, 0xa9, 0xb0, 0xbb, 0xe3, 0x68, 0x55,
  0x72, 0x98, 0xb7, 0x70, 0x22, 0xf6, 0xda, 0xca, 0xe9, 0x27, 0xb5, 0xc6,
  0x63, 0x81, 0xd6, 0x59, 0x2e, 0xa9, 0x54, 0xa3, 0x45, 0x6f, 0x12, 0x23,
  0x34, 0xa9, 0x57, 0x58, 0x2e, 0x09, 0xa1, 0x72, 0x05, 0xae, 0x8f, 0x2f,
  0xa3, 0xb7, 0xb1, 0xb4, 0x1b, 0x8a, 0xd6, 0x81, 0x03, 0xbf, 0xdc, 0xdb,
  0xde, 0xdd, 0x58, 0xa9, 0x87, 0xd7, 0xe1, 0xb6, 0xe8, 0x5b, 0x59, 0x1e,
  0x4a, 0x58, 0xbf, 0x5e, 0x82, 0xd9, 0xac, 0x38, 0x3e, 0xf0, 0xa5, 0x8f,

  0xe7, 0x17, 0x6f, 0x4e, 0xce, 0x8e, 0xfe, 0x62, 0x50, 0x23, 0x70, 0x13,
  0xb4, 0xf2, 0xf8, 0x23, 0x98, 0xaf, 0x8f, 0x1f, 0xcb, 0x04, 0xe6, 0x5c,
  0xad, 0xef, 0x6e, 0x60, 0xe5, 0x9e, 0xd7, 0x14, 0x72, 0x9a, 0xd4, 0xb1,
  0x36, 0xb8, 0x7e, 0x60, 0x05, 0x60, 0x94, 0x71, 0x50, 0x6e, 0xf5, 0x77,
  0xa4, 0xeb, 0x88, 0xb4, 0x4d, 0xb0, 0x3c, 0xcb, 0x69, 0x9c, 0x12, 0x0b,
  0xac, 0x1c, 0xd7, 0xe6, 0xfa, 0x15, 0x5a, 0x08, 0xec, 0x91, 0x8e, 0x52,
  0xb4, 0x56, 0xe4, 0x5a, 0xa7, 0x18, 0x86, 0x9f, 0xd4, 0x61, 0x29, 0xa9,
  0x78, 0x17, 0x7f, 0xb1, 0x3a, 0xac, 0x5c, 0xe7, 0xfd, 0x15, 0x09, 0x8b,
  0x64, 0x96, 0x25, 0x55, 0x4f, 0x26, 0x76, 0x08, 0x7f, 0xbe, 0xbe, 0x8b,
  0x67, 0x5e, 0x49, 0x38, 0xf6, 0x54, 0x54, 0xca, 0x34, 0xac, 0x08, 0xdf,
  0x74, 0x3a, 0xae, 0x0c, 0x4c, 0xeb, 0x11, 0x7d, 0x12, 0xae, 0x8a, 0xd7,
  0x61, 0xe4, 0xfa, 0xfa, 0x2f, 0x97, 0x27, 0xaf, 0x0f, 0x91, 0x91, 0x7d,

  0x89, 0xb5, 0x27, 0x65, 0x8d, 0xaf, 0x45, 0xd8, 0xc3, 0xdd, 0x5b, 0xc3,
  0x0f, 0x6f, 0x4e, 0x07, 0x97, 0x67, 0x17, 0xc7, 0xaf, 0x0f, 0x7f, 0x40,
  0x9b, 0x12, 0x84, 0xc7, 0xa3, 0xf3, 0xae, 0xf9, 0x99, 0xe9, 0xa2, 0xe0,
  0x03, 0x8a, 0x9c, 0x7c, 0xff, 0xf1, 0xe4, 0xfc, 0xbb, 0xd7, 0x87, 0x77,
  0x71, 0xd1, 0xc5, 0xf5, 0xf1, 0xdb, 0x2d, 0x0d, 0x4b, 0x6b, 0xa4, 0x86,

  0xea, 0xf9, 0x70, 0x76, 0x5b, 0xa6, 0x3f, 0x27, 0x11, 0xbc, 0x3e, 0x5b,
  0xfa, 0x30, 0xe6, 0xd7, 0x8c, 0xc3, 0x00, 0x9b, 0x81, 0x7f, 0x8b, 0xbe,
  0x3e, 0xfb, 0x16, 0xa1, 0x72, 0x8d, 0x9f, 0x74, 0xce, 0x7d, 0x97, 0xa2,
  0x2f, 0xf7, 0xb7, 0x77, 0x36, 0x6c, 0xb7, 0x4f, 0x82, 0xda, 0x86, 0x19,
  0xdf, 0x7a, 0x55, 0x53, 0x3f, 0x4b, 0xfd, 0x97, 0xad, 0x65, 0xa8, 0xac,
  0x45, 0xc5, 0xe5, 0x07, 0xe2, 0x72, 0xa2, 0xe4, 0x7c, 0xca, 0x7f, 0xc5,
  0x66, 0xa9, 0x05, 0xa5, 0xad, 0x7b, 0x1e, 0xb7, 0xeb, 0xb7, 0x0e, 0xc6,
  0xcd, 0xd7, 0x96, 0xf4, 0x60, 0x3a, 0xe2, 0xb5, 0x5b, 0x29, 0x1f, 0x3f,

  0x61, 0x2c, 0xa7, 0x69, 0x52, 0xd2, 0x66, 0x83, 0x48, 0x13, 0xfa, 0x09,
  0xef, 0xb3, 0x93, 0xe3, 0x43, 0x15, 0x60, 0x39, 0x63, 0x33, 0xd2, 0x2a,
  0x95, 0xf0, 0x14, 0x52, 0xe0, 0x09, 0x1f, 0x5e, 0x3a, 0xc7, 0xda, 0xe3,
  0xa4, 0x8c, 0xd4, 0xbf, 0xe3, 0x78, 0x6f, 0x66, 0xc9, 0x34, 0x1e, 0x3d,
  0x1a, 0x84, 0x69, 0x3a, 0x90, 0x71, 0xf3, 0x76, 0x92, 0x87, 0x6f, 0x84,
  0xc6, 0x1c, 0x88, 0xe0, 0x29, 0xb1, 0x67, 0x86, 0x52, 0x81, 0xeb, 0x6a,
  0x9c, 0x3e, 0x3c, 0x35, 0x03, 0x16, 0xa3, 0xe2, 0x12, 0x37, 0xb5, 0x29,

  0x9d, 0xeb, 0x5b, 0xdc, 0xa0, 0x3e, 0x24, 0x1b, 0x6a, 0x47, 0xbc, 0x72,
  0x4f, 0xf7, 0xea, 0x1e, 0xf3, 0x9f, 0xe9, 0x92, 0x23, 0x0a, 0x17, 0x39,
  0x65, 0x0f, 0xf1, 0xaf, 0x61, 0x1c, 0x7e, 0x6a, 0xcf, 0x45, 0x6e, 0x0b,
  0x6e, 0x37, 0xcd, 0x4d, 0x0f, 0x70, 0xd9, 0xa6, 0xbe, 0x40, 0xda, 0xda,
  0x20, 0x9c, 0x7b, 0x65, 0xdd, 0xe9, 0x61, 0x8c, 0x3b, 0xe3, 0xd4, 0x06,
  0xf2, 0x64, 0x61, 0x85, 0x94, 0xd1, 0x32, 0x9e, 0x29, 0xd0, 0xc5, 0xdf,
  0x07, 0x1c, 0x9b, 0x92, 0x8c, 0x70, 0x88, 0x63, 0x21, 0x4b, 0x44, 0x9d,
  0x04, 0x76, 0xea, 0x4b, 0x8d, 0xfa, 0x50, 0xe7, 0xa3, 0x5c, 0x90, 0xd7,
  0xe8, 0x21, 0x46, 0x92, 0x29, 0x7d, 0x18, 0x0e, 0xce, 0x6e, 0x57, 0xc7,
  0x01, 0x27, 0x68, 0x60, 0x48, 0xcd, 0xc0, 0x4a, 0xc3, 0x34, 0x4b, 0xd5,
  0x4a, 0xb1, 0x08, 0x92, 0xcc, 0x74, 0x0b, 0x3c, 0x1b, 0xc0, 0x22, 0x70,
  0xaa, 0xf6, 0x14, 0x10, 0x9c, 0x57, 0x26, 0xe9, 0x08, 0x34, 0xa1, 0xf5,
  0x39, 0x2e, 0x44, 0xfa, 0x13, 0x70, 0x33, 0x88, 0xb6, 0x86, 0xed, 0x0d,
  0x29, 0x05, 0x63, 0xe2, 0x08, 0x22, 0xa1, 0x48, 0x26, 0x31, 0x2c, 0x43,
  0x63, 0x37, 0x02, 0xd5, 0xc7, 0x15, 0x27, 0xf1, 0x37, 0x45, 0x14, 0x82,
  0x8a, 0x6b, 0xea, 0x7c, 0x6d, 0x04, 0x29, 0x73, 0xa6, 0x4e, 0x74, 0xeb,
  0x3d, 0xdb, 0x22, 0x2c, 0xad, 0x8c, 0xca, 0x16, 0x80, 0xdc, 0x31, 0xc0,
  0xe7, 0x06, 0xb8, 0x8d, 0x5d, 0x9f, 0x4a, 0x1f, 0x42, 0x11, 0xf8, 0xb1,
  0x4d, 0x2e, 0xfd, 0x54, 0x16, 0x94, 0x06, 0x4a, 0xcf, 0xbd, 0xc1, 0xb2,
  0xe4, 0xde, 0x1d, 0xcc, 0xda, 0x1d, 0x66, 0xc0, 0x4f, 0xe9, 0xed, 0x06,
  0x9b, 0x09, 0xeb, 0xd5, 0xa2, 0xc3, 0xef, 0x4e, 0xae, 0x06, 0xa7, 0x17,
  0xe7, 0x5f, 0x06, 0xcd, 0x61, 0xf9, 0xa5, 0x69, 0xf5, 0xa6, 0x95, 0xae,
  0xb6, 0x1d, 0x17, 0x7a, 0xc1, 0xd4, 0xd7, 0xc2, 0x5d, 0x9d, 0xd2, 0x0c,
  0x1f, 0xf1, 0xba, 0x7c, 0x8d, 0x92, 0x45, 0x45, 0xfa, 0x92, 0xda, 0xd2,
  0xb4, 0x4b, 0x14, 0xb7, 0xa0, 0x3e, 0x30, 0x64, 0xc3, 0x61, 0xa9, 0x9b,
  0xd8, 0x76, 0xe6, 0x6f, 0x3b, 0x01, 0x98, 0x37, 0xfe, 0xcd, 0xae, 0xb7,
  0x41, 0xe1, 0x84, 0x1d, 0x27, 0x5e, 0xbe, 0x5c, 0x70, 0x95, 0x24, 0x82,
  0x99, 0x30, 0xf0, 0x91, 0xbb, 0x00, 0xaf, 0x6f, 0x43, 0x7f, 0xab, 0xfe,
  0x22, 0x3c, 0x7c, 0xb7, 0xed, 0x54, 0xb0, 0x98, 0xe7, 0xb6, 0x43, 0xcf,
  0x6d, 0xfb, 0xcf, 0xed, 0x84, 0x9e, 0xdb, 0xf1, 0x9f, 0xdb, 0x0d, 0x3d,
  0xe7, 0xac, 0xd7, 0x31, 0xe3, 0x65, 0xe7, 0x56, 0x59, 0xc6, 0xb5, 0x7f,
  0xed, 0xf6, 0xed, 0xf1, 0x7f, 0x66, 0xbc, 0x15, 0xcd, 0x46, 0xb5, 0x8e,
  0x61, 0xaf, 0x76, 0x7d, 0xbb, 0x59, 0xaf, 0x7c, 0x5a, 0x87, 0x03, 0x35,
  0xb1, 0xe1, 0x62, 0x86, 0xef, 0x6d, 0xef, 0xf6, 0x46, 0xe9, 0xe2, 0x06,
  0xa5, 0xce, 0xa1, 0xb6, 0x76, 0xc3, 0xcd, 0xc7, 0xc5, 0xca, 0x2f, 0x96,
  0x68, 0x92, 0xfb, 0x7a, 0xc8, 0xd9, 0x60, 0x23, 0x72, 0xf0, 0x8a, 0x04,
  0xa2, 0x93, 0x5e, 0x89, 0xf8, 0x1d, 0x8b, 0x56, 0xe4, 0x3b, 0x98, 0xbd,
  0x52, 0x17, 0xe3, 0xbe, 0x81, 0xf7, 0x64, 0x02, 0x4c, 0xba, 0x3a, 0x2b,
  0x9d, 0xa6, 0x8c, 0xcd, 0xa8, 0xba, 0x1a, 0x7a, 0x6f, 0xba, 0x76, 0xa9,
  0xc7, 0x85, 0xbe, 0xa2, 0x18, 0x77, 0xd8, 0x9b, 0x2d, 0x6b, 0xac, 0x8e,
  0x87, 0x33, 0x2a, 0x77, 0x9e, 0x85, 0x44, 0xe5, 0x87, 0xab, 0x33, 0x4f,
  0xb5, 0x8c, 0xd0, 0x35, 0x53, 0x1e, 0x6c, 0x6e, 0x52, 0x83, 0xf1, 0x9b,
  0xf8, 0xe1, 0xa1, 0x5f, 0x26, 0x9b, 0xc0, 0x4f, 0xca, 0x4d, 0xf2, 0xf7,
  0xca, 0xa7, 0x6f, 0xaa, 0xf9, 0x6c, 0x95, 0xa3, 0x36, 0x2d, 0x15, 0x53,
  0x96, 0xb1, 0x18, 0xc7, 0x8c, 0xba, 0x60, 0x8b, 0xb4, 0xe9, 0x42, 0xf2,
  0x01, 0x6b, 0xd2, 0x5d, 0xb3, 0xe1, 0x07, 0x77, 0x52, 0xa5, 0x3e, 0xce,
  0xdb, 0x28, 0xfb, 0x48, 0x60, 0x1a, 0x88, 0x56, 0x36, 0x21, 0x39, 0xf3,
  0xc1, 0x62, 0xe7, 0xe0, 0x0b, 0x58, 0x4f, 0x9b, 0x78, 0xe1, 0x0c, 0x03,
  0x92, 0x53, 0x10, 0x28, 0x3e, 0xf9, 0x0a, 0x42, 0x7b, 0x56, 0xba, 0x81,
  0x0f, 0x74, 0x0f, 0xc8, 0x92, 0x83, 0x6a, 0xc6, 0x27, 0x66, 0x9a, 0x98,
  0x92, 0x87, 0xca, 0x3c, 0xa8, 0x1c, 0xf0, 0xdf, 0x2f, 0xfd, 0xa2, 0xf3,
  0x88, 0x96, 0xe0, 0xa5, 0xee, 0xa1, 0xfe, 0x8f, 0x65, 0x5f, 0xbc, 0xff,
  0xfc, 0x3d, 0xb7, 0x3d, 0x06, 0x99, 0x17, 0xc1, 0xf0, 0x11, 0x1d, 0x4b,
  0x67, 0x70, 0x75, 0xd9, 0xe9, 0x4a, 0xb4, 0x1e, 0x3e, 0xd0, 0x83, 0x7f,
  0x47, 0x64, 0x65, 0x62, 0x7b, 0x9d, 0xfd, 0x3d, 0x49, 0xac, 0xe3, 0x39,
  0x72, 0x93, 0x39, 0x3f, 0x7c, 0x44, 0xbf, 0x34, 0xc9, 0x85, 0xdc, 0x85,
  0xd6, 0x56, 0xa3, 0x82, 0x01, 0x58, 0x5f, 0x21, 0xa7, 0xfc, 0x74, 0x2d,
  0xf0, 0x7a, 0x58, 0xad, 0x33, 0xb0, 0x8f, 0x40, 0x33, 0x34, 0xcd, 0x7e,
  0x23, 0x40, 0x90, 0x17, 0xb7, 0xd2, 0x0a, 0x44, 0xc2, 0x1c, 0xcc, 0x5c,
  0xbc, 0xee, 0xcb, 0x0d, 0x2f, 0xa2, 0x43, 0x8d, 0xec, 0x62, 0xd5, 0x65,
  0xcb, 0x8e, 0x29, 0x0c, 0x5e, 0x4b, 0x8b, 0x61, 0xa5, 0x55, 0xd8, 0xb0,
  0x6f, 0xb2, 0x25, 0x9e, 0x09, 0x8d, 0xd2, 0x18, 0xe4, 0x09, 0xac, 0x9a,
  0xbd, 0xc6, 0xe9, 0xeb, 0xe6, 0x05, 0x8e, 0xdd, 0xec, 0x2b, 0x1e, 0x11,
  0x59, 0x34, 0x5a, 0xa1, 0x8d, 0xdf, 0x6e, 0x90, 0x83, 0x45, 0x06, 0x6c,
  0xab, 0x26, 0x53, 0x6c, 0x19, 0xe7, 0x40, 0xfa, 0x1a, 0x7c, 0x13, 0x36,
  0x6d, 0xcf, 0xda, 0xe9, 0x87, 0x11, 0x36, 0x0d, 0x54, 0x2f, 0xb4, 0xd9,
  0x2b, 0xca, 0xf8, 0x9e, 0x5c, 0xbf, 0xbb, 0x7c, 0xfa, 0x58, 0x30, 0x3f,
  0x9b, 0x08, 0x5f, 0x13, 0x58, 0xa3, 0x67, 0xed, 0x81, 0x6c, 0xc1, 0xaf,
  0xdc, 0x01, 0xf1, 0x48, 0x37, 0x49, 0x1a, 0x37, 0xc2, 0x77, 0x95, 0x7d,
  0x8a, 0x7d, 0xa9, 0x6d, 0x0c, 0x0a, 0xe0, 0xb0, 0xd8, 0x0a, 0x04, 0x14,


  0x1c, 0x8d, 0x83, 0x34, 0x0c, 0xe5, 0xa3, 0x4f, 0xd6, 0x6c, 0x50, 0x00,
  0x51, 0x02, 0x0b, 0x38, 0x88, 0x76, 0x49, 0xf1, 0x31, 0x93, 0xd0, 0x1d,
  0x2b, 0x9f, 0x20, 0xdb, 0x81, 0x3f, 0x5f, 0x33, 0x12, 0x09, 0x74, 0x4a,


  0x95, 0x52, 0xf6, 0xd1, 0x44, 0x9c, 0x0b, 0xdf, 0x18, 0xee, 0x23, 0x5e,
  0xdd, 0x8f, 0xc2, 0xd6, 0x48, 0x45, 0x43, 0x56, 0x41, 0xb0, 0x9c, 0x29,
  0x36, 0x77, 0x88, 0x09, 0x68, 0x15, 0x23, 0x11, 0x25, 0xb5, 0xa5, 0x69,

  0x76, 0x48, 0x6a, 0xee, 0x3b, 0x0c, 0x03, 0x77, 0x1c, 0xdb, 0x69, 0xab,
  0xb7, 0x57, 0x75, 0xd1, 0x06, 0x64, 0x1b, 0x35, 0x25, 0x31, 0x2a, 0xa7,
  0xec, 0x9a, 0x67, 0x59, 0x3c, 0x55, 0x6b, 0xed, 0x2b, 0x22, 0xa8, 0x1f,
  0xfd, 0xca, 0xc3, 0xda, 0xfe, 0x3f, 0xec, 0xb0, 0xb6, 0xff, 0x6f, 0x38,
  0xac, 0x9d, 0x5f, 0x79, 0x58, 0x3b, 0xff, 0x87, 0x1d, 0xd6, 0xce, 0xff,
  0x0d, 0x87, 0xb5, 0xfb, 0x2b, 0x0f, 0x6b, 0xf7, 0x37, 0x3f, 0xac, 0x73,
  0xfc, 0x3d, 0x49, 0x09, 0xd5, 0x29, 0xd3, 0xb2, 0xa9, 0x72, 0x0d, 0x1f,
  0xa9, 0xb5, 0xfd, 0x10, 0x37, 0x44, 0xcc, 0x11, 0x51, 0x55, 0xcb, 0xa6,
  0x4d, 0x76, 0x54, 0x19, 0xd4, 0x2a, 0xd3, 0x7f, 0x45, 0x02, 0x5c, 0x82,

  0x85, 0x8f, 0xfa, 0xd4, 0xd7, 0x39, 0xfa, 0x67, 0x40, 0xef, 0xe8, 0x46,
  0xe7, 0x83, 0x01, 0x27, 0x35, 0x0d, 0x28, 0x30, 0xdb, 0x3c, 0x2c, 0x74,
  0x75, 0x92, 0x05, 0xb5, 0x8e, 0x4a, 0xe9, 0x05, 0xcc, 0xd0, 0x32, 0x17,
  0x7e, 0x6f, 0x1e, 0x8f, 0xf0, 0xc7, 0x5b, 0xfd, 0x6d, 0xbb, 0x39, 0x1b,
  0xbf, 0x00, 0x66, 0xce, 0x46, 0x4d, 0x83, 0xb6, 0x7d, 0x00, 0x10, 0x1e,
  0xf3, 0x40, 0x50, 0x07, 0xae, 0x1f, 0xcd, 0x83, 0x40, 0xca, 0xa9, 0xd9,
  0xd4, 0x0e, 0x3d, 0x4e, 0xfd, 0xe5, 0x24, 0xf0, 0x4d, 0x44, 0xad, 0xee,
  0x59, 0xca, 0xf0, 0x60, 0x94, 0x24, 0x5f, 0xfa, 0x35, 0x43, 0x83, 0xe9,
  0x14, 0x91, 0xf6, 0x7e, 0x69, 0xdc, 0xda, 0x89, 0x11, 0xff, 0xb7, 0xc5,
  0xad, 0x9f, 0x65, 0x7d, 0xbb, 0x57, 0xa6, 0xe8, 0x69, 0xe3, 0xb6, 0x30,
  0x3a, 0xbc, 0x75, 0x5b, 0x62, 0x9d, 0x11, 0x01, 0x47, 0x8e, 0x99, 0x74,
  0x30, 0x8f, 0xe7, 0x44, 0xde, 0xb5, 0xd1, 0x43, 0x36, 0x92, 0x7c, 0x74,

  0xa7, 0x5c, 0x73, 0xfa, 0x0d, 0x9e, 0x91, 0x02, 0x67, 0xf0, 0x2a, 0x4b,
  0xa6, 0xb8, 0x65, 0xa6, 0x9f, 0xb1, 0x08, 0x14, 0x84, 0xac, 0xe6, 0x25,

  0x37, 0x8c, 0x12, 0xc6, 0xdd, 0x4a, 0x9f, 0xd2, 0xa0, 0x5f, 0xd4, 0xd7,
  0x1b, 0x8f, 0x92, 0x5e, 0x5c, 0x8e, 0xd2, 0x34, 0xdc, 0x38, 0x56, 0xa3,
  0xcc, 0x98, 0xd6, 0x43, 0xf1, 0x01, 0x78, 0x3e, 0xc2, 0x88, 0x9e, 0xf6,
  0x81, 0x47, 0x7e, 0x48, 0x48, 0x54, 0x38, 0xdd, 0x7c, 0x59, 0x4d, 0x73,
  0x0d, 0x15, 0x74, 0x03, 0x6e, 0x47, 0x8c, 0xf9, 0xd1, 0x11, 0xc3, 0xe9,
  0x8c, 0x8a, 0x74, 0x41, 0x28, 0xb7, 0x6e, 0xd3, 0xb9, 0xae, 0xe9, 0xc9,
  0x4e, 0xae, 0x3c, 0x89, 0xcd, 0x72, 0x8b, 0xf2, 0x0f, 0x9e, 0xf9, 0xdb,
  0xe9, 0x75, 0xd0, 0x69, 0x6a, 0x7a, 0x75, 0xc1, 0xbb, 0x88, 0x4d, 0xee,
  0x44, 0x45, 0x23, 0x85, 0x54, 0x6a, 0x09, 0xf2, 0x6b, 0x90, 0x04, 0x48,

  0xe8, 0x51, 0xf1, 0xaf, 0xa9, 0x1d, 0x89, 0x06, 0x3f, 0x51, 0x00, 0xc0,
  0x1d, 0x44, 0xe7, 0x7d, 0x2e, 0x38, 0x20, 0x37, 0xc9, 0x03, 0x57, 0xa9,
  0xfa, 0x06, 0x1d, 0xc3, 0x26, 0x62, 0xb4, 0x56, 0x02, 0xf3, 0x47, 0x83,
  0xe3, 0xd3, 0xd3, 0x5a, 0x4d, 0x2b, 0x6e, 0x1e, 0x83, 0xe7, 0x12, 0xf0,
  0x48, 0x89, 0x20, 0xc2, 0x18, 0x12, 0x0e, 0xc5, 0xf8, 0xb9, 0x13, 0x25,
  0x5c, 0x3f, 0x8a, 0xeb, 0x00, 0x27, 0x48, 0xb5, 0x4f, 0x68, 0x2c, 0x66,
  0x4d, 0x06, 0xd3, 0x4c, 0x11, 0xda, 0xed, 0x66, 0x39, 0x8f, 0xb3, 0x4f,
  0x8f, 0x4b, 0x17, 0x2e, 0x15, 0x91, 0xdd, 0xe2, 0x7b, 0xe5, 0xc6, 0x91,
  0x7d, 0x5a, 0x0b, 0xb4, 0xfd, 0xb8, 0x2c, 0xa4, 0x29, 0x24, 0xe3, 0xb4,
  0x49, 0xdf, 0x0e, 0x58, 0x26, 0xa1, 0x68, 0xf2, 0xc8, 0xb0, 0x56, 0x0d,


  0x4d, 0x33, 0x24, 0xbe, 0x30, 0x12, 0xbc, 0x33, 0x4d, 0x97, 0x23, 0x07,
  0xe9, 0x56, 0xd6, 0xe2, 0x6d, 0x37, 0x45, 0x25, 0x7d, 0xe4, 0xf7, 0xbc,
  0x01, 0xee, 0x05, 0x78, 0x92, 0xfe, 0xe5, 0x02, 0xb4, 0xdc, 0x00, 0xaa,

  0xc3, 0xb1, 0x2d, 0xee, 0x9e, 0xbe, 0x04, 0xa4, 0x8b, 0x74, 0xfe, 0xd4,
  0x09, 0x37, 0x86, 0x79, 0xc6, 0x4d, 0xaa, 0xc1, 0xbb, 0xfc, 0xbe, 0x94,
  0x16, 0xc0, 0x9b, 0x71, 0x98, 0x98, 0x7b, 0xa6, 0xcb, 0x2c, 0x7d, 0xa0,
  0x72, 0x11, 0x50, 0x25, 0x0e, 0xb1, 0x29, 0x4a, 0x4b, 0xc3, 0x8f, 0x63,
  0x56, 0x6c, 0x22, 0xad, 0x7e, 0xa1, 0x55, 0x7c, 0x80, 0x97, 0x41, 0x65,
  0x9c, 0x63, 0xf6, 0x10, 0x8f, 0xd1, 0x75, 0x91, 0xd7, 0x89, 0xad, 0x07,
  0xb2, 0x8f, 0xb2, 0xa4, 0x42, 0xcb, 0x75, 0x65, 0xdc, 0xac, 0x1e, 0x8b,
  0xbc, 0x26, 0xbc, 0xb1, 0x05, 0x96, 0x24, 0xac, 0xe8, 0xdf, 0xcd, 0xe1,
  0x44, 0xa7, 0x00, 0xc0, 0x05, 0xec, 0xc6, 0x38, 0x99, 0x6d, 0xf3, 0x25,
  0xf4, 0x23, 0x52, 0x9f, 0x9a, 0xbe, 0x84, 0x12, 0xa5, 0x4c, 0x77, 0x22,
  0xdb, 0xdb, 0x2b, 0x6d, 0xc6, 0x3d, 0xa8, 0x7b, 0x94, 0x0d, 0x0e, 0x4b,
  0xdf, 0x4d, 0x5f, 0x76, 0x37, 0x9a, 0x8c, 0xf5, 0x9d, 0x7e, 0xc7, 0xb5,
  0x1e, 0x68, 0x84, 0x82, 0x98, 0xce, 0x90, 0xfc, 0x37, 0x35, 0x77, 0x62,
  0xe6, 0x67, 0xf6, 0xdb, 0xc6, 0x5a, 0xcc, 0xea, 0xb0, 0x8c, 0x8c, 0xe2,
  0xa7, 0xf8, 0xef, 0x63, 0x56, 0xef, 0xd9, 0x29, 0x5e, 0x5f, 0x84, 0x34,
  0xcb, 0x6b, 0xaa, 0x2f, 0x4e, 0x74, 0xfb, 0x06, 0x7b, 0xad, 0xeb, 0xbc,
  0x0a, 0x26, 0x44, 0xfb, 0x35, 0xcd, 0x1a, 0x6b, 0x74, 0x0b, 0xf2, 0xb2,
  0xa6, 0x4d, 0x63, 0x2e, 0x51, 0xa3, 0x18, 0xd7, 0x16, 0x4b, 0xf9, 0xb0,
  0x3d, 0x09, 0x66, 0x01, 0x9a, 0xd6, 0xce, 0x7c, 0xb0, 0xdc, 0x14, 0x5e,
  0x2a, 0x86, 0x3d, 0xdc, 0xde, 0x74, 0x56, 0xab, 0xca, 0x10, 0x47, 0xb0,
  0x16, 0x82, 0xad, 0x83, 0xb2, 0xce, 0x4a, 0x1b, 0x5f, 0x1e, 0x6c, 0x2d,
  0xa2, 0xc0, 0xef, 0xed, 0xa0, 0xe0, 0x41, 0xf0, 0xa8, 0x7a, 0x7a, 0x1c,
  0x72, 0x8e, 0xf5, 0x58, 0xb1, 0x53, 0x31, 0x12, 0xb7, 0xa1, 0x6a, 0x27,
  0xdc, 0xf0, 0x34, 0x73, 0xc9, 0xdd, 0x8b, 0x9d, 0x49, 0x7b, 0x31, 0x61,
  0x4b, 0xd1, 0x91, 0x60, 0xd6, 0x27, 0xe8, 0x48, 0x6d, 0x7e, 0xa7, 0xef,

  0x7e, 0x87, 0x4b, 0x71, 0x36, 0x3c, 0x78, 0xb8, 0xc7, 0x66, 0xef, 0x73,
  0xf3, 0x6d, 0x9c, 0xa7, 0x56, 0x9c, 0xcb, 0xcc, 0x28, 0x75, 0x19, 0xf3,
  0xb6, 0x29, 0xad, 0xc1, 0xbf, 0x89, 0x04, 0x81, 0x60, 0x8d, 0x3c, 0x82,
  0xaf, 0x95, 0x2e, 0x45, 0x9c, 0xcf, 0x2d, 0x1c, 0x8d, 0x31, 0x6a, 0x65,
  0xb5, 0x18, 0x2a, 0x66, 0xe0, 0x52, 0xcf, 0x0f, 0x4a, 0xdd, 0x13, 0x83,
  0xad, 0xb2, 0xdc, 0x82, 0x44, 0xe4, 0x68, 0xfe, 0x75, 0x36, 0x8d, 0x08,
  0xb1, 0xb3, 0x51, 0xae, 0x1d, 0x58, 0xda, 0xba, 0xbd, 0x08, 0x96, 0x7f,
  0x74, 0x82, 0x6f, 0xf8, 0x83, 0xfd, 0x59, 0xfa, 0x23, 0xa5, 0x6e, 0xaf,
  0xd1, 0x7b, 0xba, 0x0c, 0x4d, 0xba, 0x12, 0xca, 0x93, 0xc6, 0x11, 0x84,
  0x1e, 0xd0, 0x97, 0x36, 0x5a, 0xa8, 0xb4, 0xab, 0x9a, 0x19, 0x75, 0xa6,
  0xb3, 0x7c, 0x38, 0x84, 0x85, 0x77, 0x1c, 0xa5, 0x14, 0xbe, 0xec, 0x79,
  0xaa, 0xdd, 0x79, 0x80, 0x65, 0x35, 0x25, 0x63, 0xba, 0xcb, 0x59, 0x6f,
  0xd2, 0x7a, 0x01, 0x05, 0xb2, 0x86, 0x10, 0xe4, 0xfb, 0x8a, 0xb4, 0x1e,
  0x90, 0x33, 0x92, 0x7f, 0x2f, 0x84, 0x81, 0x0b, 0xab, 0x05, 0x15, 0xa8,
  0x58, 0x12, 0x7f, 0xaa, 0x13, 0xe4, 0x4c, 0xc6, 0xa8, 0x2d, 0x19, 0xb7,
  0xd6, 0xe8, 0xaa, 0xab, 0x7d, 0x0e, 0xd3, 0xd2, 0x8f, 0xde, 0xd0, 0x2e,
  0xd4, 0x17, 0xd4, 0xf9, 0x07, 0xfe, 0xb1, 0xdd, 0xc5, 0xff, 0xee, 0xfc,
  0xb3, 0x43, 0x01, 0x9e, 0x83, 0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xbe, 0xc2,
  0x15, 0xc2, 0x91, 0x7d, 0xe6, 0xd7, 0x15, 0x22, 0xca, 0x5b, 0xcb, 0x07,
  0xae, 0xa3, 0x4e, 0x3a, 0x9f, 0xfe, 0x75, 0xbb, 0xb7, 0xbd, 0xb5, 0xb5,
  0xf5, 0x53, 0x7f, 0x81, 0x5b, 0x3c, 0xa1, 0x61, 0xe1, 0xbf, 0xee, 0xb0,
  0x9b, 0x3c, 0x93, 0xcd, 0x20, 0xa0, 0xac, 0x6c, 0xa4, 0x41, 0x88, 0xc9,
  0xb8, 0x29, 0x08, 0x13, 0xf2, 0x81, 0xc3, 0x64, 0x38, 0x4e, 0x1d, 0xb7,


  0x57, 0xe9, 0x73, 0x7f, 0x3e, 0x0c, 0x50, 0xec, 0xef, 0xee, 0xec, 0x44,
  0xac, 0x72, 0x70, 0xf1, 0x1b, 0xa7, 0x4a, 0x20, 0xee, 0x81, 0x34, 0x30,
  0x67, 0x59, 0x86, 0xe0, 0x8e, 0x31, 0x87, 0x82, 0x80, 0x36, 0x5a, 0x12,
  0x46, 0x39, 0x33, 0x01, 0x01, 0x1e, 0x81, 0xfb, 0xe4, 0xe3, 0x47, 0x3b,
  0x30, 0x50, 0x79, 0x81, 0xbc, 0x95, 0x7b, 0x8d, 0x1a, 0x14, 0xc9, 0xb8,
  0x0c, 0x69, 0x6d, 0xa6, 0x90, 0x8d, 0x84, 0x1c, 0x81, 0xf0, 0x66, 0xb9,
  0xb4, 0xd1, 0xa6, 0xbc, 0x80, 0xc9, 0xb2, 0x90, 0x1e, 0x4a, 0x94, 0x46,
  0x71, 0x1f, 0x3f, 0xd6, 0x84, 0x3d, 0xec, 0xf8, 0x21, 0xfc, 0xc7, 0x73,
  0x83, 0x9b, 0xf2, 0x5c, 0xe9, 0x01, 0x3d, 0x49, 0xaa, 0xd1, 0x8d, 0x87,
  0x29, 0x4f, 0xec, 0x1b, 0x55, 0xf7, 0x1b, 0x58, 0x8d, 0x81, 0x6c, 0x6f,
  0xeb, 0x2f, 0x69, 0xab, 0x7e, 0x61, 0x50, 0xec, 0x26, 0x42, 0x75, 0x0f,
  0xdc, 0x6e, 0x9e, 0x79, 0x62, 0x1b, 0x76, 0xa8, 0xe9, 0x71, 0x4a, 0x19,
  0xa9, 0x69, 0xa9, 0x55, 0xc9, 0xa3, 0x9b, 0x64, 0x2e, 0xfc, 0x72, 0x5d,
  0x13, 0x32, 0x3b, 0x42, 0x84, 0x1d, 0x5f, 0xa4, 0x75, 0x26, 0xf2, 0x1b,
  0x58, 0xcc, 0x86, 0x54, 0xf5, 0x1a, 0x29, 0x27, 0xad, 0x96, 0xa6, 0x4b,
  0xb4, 0x1a, 0x87, 0xb1, 0x88, 0x13, 0x2d, 0x37, 0x6f, 0xcb, 0x9b, 0x46,
  0x9e, 0x98, 0x14, 0x24, 0xc5, 0xd0, 0xff, 0xd2, 0x13, 0xdd, 0x47, 0x84,
  0x2a, 0xa5, 0xaf, 0xc0, 0x8d, 0x7d, 0x73, 0x7a, 0x7c, 0x4d, 0x25, 0xb6,
  0x5d, 0x2a, 0xc6, 0xe9, 0x52, 0x5d, 0xad, 0xdf, 0x06, 0xeb, 0x92, 0xfc,
  0x23, 0x44, 0xa8, 0x12, 0xab, 0x8a, 0x6d, 0x02, 0x9f, 0xc5, 0x38, 0xd7,
  0x2a, 0x39, 0xa7, 0x81, 0x59, 0x20, 0x33, 0xb9, 0xa6, 0x25, 0x9a, 0xb4,
  0xc7, 0xbd, 0xfd, 0xfe, 0x16, 0xaf, 0xd1, 0x76, 0xd8, 0xd6, 0x3a, 0x30,
  0x72, 0x23, 0x69, 0xfc, 0x32, 0x0e, 0x67, 0x24, 0x98, 0xe9, 0x74, 0x23,
  0xc6, 0x56, 0x67, 0xa0, 0x06, 0xfd, 0xad, 0x93, 0x8b, 0xb9, 0x52, 0x33,
  0x75, 0xa1, 0x55, 0x91, 0x2c, 0x1b, 0xa0, 0xd8, 0x18, 0x79, 0xcb, 0x4d,
  0x0d, 0xa7, 0xa0, 0xb8, 0x84, 0x8a, 0xf1, 0x88, 0x26, 0x22, 0xf1, 0x60,
  0x55, 0x49, 0xd6, 0xb5, 0x9d, 0xad, 0x72, 0x94, 0x02, 0x22, 0xb1, 0xa4,
  0xba, 0xa9, 0xd6, 0x08, 0x36, 0xa4, 0x9f, 0x78, 0x0d, 0xc3, 0x7a, 0x5f,
  0x0b, 0xae, 0x2d, 0xeb, 0xc9, 0xa1, 0xc2, 0x32, 0x3c, 0xca, 0x0d, 0xcd,
  0xa1, 0x65, 0xbb, 0x55, 0x15, 0xce, 0x3e, 0xba, 0x0b, 0xf9, 0xd8, 0xab,
  0x66, 0xcb, 0x77, 0xb8, 0xa2, 0x3d, 0x1f, 0x0b, 0x73, 0x44, 0xc9, 0x56,
  0x8f, 0xa6, 0x33, 0x61, 0x2c, 0x2b, 0x24, 0x4a, 0x20, 0x63, 0x8f, 0xfc,
  0x53, 0x9d, 0x2f, 0x30, 0x8a, 0xf4, 0xfa, 0xa8, 0x53, 0xbb, 0x91, 0xa1,
  0xde, 0x58, 0x25, 0x73, 0xb7, 0xba, 0x25, 0x23, 0x3c, 0x0d, 0xf9, 0x7e,
  0xf2, 0x50, 0xb1, 0xdc, 0x9f, 0x50, 0x7f, 0xeb, 0x6c, 0x77, 0x27, 0x2a,
  0x1f, 0x41, 0x89, 0x98, 0xbb, 0x9b, 0xd0, 0x6c, 0x67, 0x1e, 0x8c, 0x9c,
  0xd5, 0xfa, 0x00, 0x32, 0xdf, 0xfa, 0x80, 0xaf, 0x1c, 0xd1, 0x2b, 0xd2,
  0x39, 0x4c, 0xb3, 0x01, 0xdd, 0x1a, 0x79, 0x75, 0x7b, 0x36, 0xa8, 0x05,
  0xb3, 0xb1, 0x99, 0x8b, 0x0d, 0x67, 0x71, 0x76, 0x6b, 0xd2, 0xb6, 0x79,
  0xa4, 0x2e, 0x36, 0x9f, 0xe5, 0x3a, 0x55, 0xfb, 0x43, 0x49, 0x0f, 0x24,
  0xc9, 0xe8, 0xf5, 0x68, 0x43, 0xbd, 0x74, 0x1e, 0x17, 0x58, 0xc0, 0x48,
  0x7b, 0x26, 0xa9, 0xd5, 0xee, 0x99, 0x98, 0x96, 0x66, 0x2c, 0xcd, 0xdf,

  0x51, 0xbe, 0x3c, 0x3f, 0xe7, 0x8b, 0x30, 0x8e, 0xe0, 0x33, 0xaa, 0x90,
  0xe6, 0xa7, 0xb7, 0xf4, 0x9b, 0xfb, 0xed, 0x22, 0xf7, 0x06, 0x66, 0x19,
  0xb8, 0x36, 0xfc, 0xf7, 0x40, 0x23, 0x86, 0x6d, 0xfc, 0xdb, 0x48, 0x0f,
  0xd3, 0x52, 0xdd, 0xc4, 0x18, 0xdd, 0x26, 0xb9, 0xac, 0xde, 0xd9, 0xb8,
  0x66, 0x28, 0x7e, 0xdf, 0x8f, 0x2e, 0xac, 0x39, 0x99, 0x75, 0x09, 0x70,
  0xb7, 0x2a, 0x46, 0x62, 0x4c, 0xd2, 0xdf, 0x25, 0x31, 0x34, 0x9e, 0x85,
  0x76, 0x80, 0x7a, 0xc6, 0xa5, 0x84, 0xf9, 0x5d, 0x86, 0x66, 0xa7, 0xe0,
  0xe0, 0xc2, 0xe7, 0x60, 0x63, 0xb1, 0x69, 0x29, 0x27, 0x0a, 0xc4, 0x5e,
  0xde, 0x37, 0x2f, 0x22, 0xdc, 0xad, 0x8e, 0xd3, 0x06, 0x4c, 0x9b, 0x5a,
  0xfb, 0x78, 0x29, 0xa9, 0x02, 0x33, 0x90, 0x8b, 0x9c, 0xd9, 0x62, 0xbb,
  0x4d, 0x00, 0x4b, 0xcb, 0xb3, 0xae, 0x87, 0x1e, 0x85, 0x81, 0x79, 0xf6,
  0x38, 0x61, 0xc6, 0xe1, 0x5c, 0xba, 0x83, 0x9b, 0x16, 0xc3, 0x31, 0xbf,
  0xa7, 0xb4, 0xe9, 0x7e, 0xf9, 0x89, 0x46, 0xc6, 0xdc, 0x69, 0x48, 0x0f,
  0x03, 0xa8, 0xb0, 0xcb, 0x85, 0x82, 0xde, 0x92, 0x2e, 0x32, 0xbd, 0x91,
  0x02, 0x66, 0x95, 0x72, 0x98, 0xb7, 0x74, 0x6d, 0xcc, 0x1b, 0x6c, 0x09,
  0xe5, 0xf8, 0x3f, 0x04, 0x11, 0x0c, 0xd4, 0x4d, 0x4f, 0x5f, 0xc6, 0xdb,
  0x48, 0x49, 0x8e, 0xb0, 0xc3, 0x04, 0x43, 0x8d, 0xd9, 0x42, 0x98, 0x8b,
  0x69, 0x53, 0x9f, 0x51, 0x9f, 0x48, 0x32, 0xb6, 0xea, 0x73, 0x83, 0xec,
  0x06, 0xe7, 0xe3, 0x23, 0x33, 0x8e, 0x19, 0xb8, 0xb7, 0xd4, 0x96, 0xca,
  0xa6, 0x7d, 0xfa, 0x54, 0xe4, 0x48, 0x89, 0x89, 0xa4, 0xc0, 0xd1, 0x2c,
  0x68, 0x76, 0xa9, 0x1b, 0x1f, 0x68, 0x59, 0xc5, 0x2b, 0x95, 0x0e, 0x1d,
  0x8f, 0x2e, 0xa0, 0x30, 0xdc, 0x85, 0xbb, 0x94, 0xf7, 0x9e, 0xa1, 0xd2,
  0x86, 0x45, 0x9a, 0x4c, 0x50, 0x03, 0xa1, 0x15, 0x49, 0x86, 0xaa, 0xe7,
  0x35, 0x4a, 0x10, 0x55, 0x1b, 0x73, 0xdf, 0xe1, 0x1c, 0xb1, 0x3c, 0x39,
  0x25, 0xcf, 0x11, 0xf3, 0x44, 0xd3, 0xe9, 0x8b, 0x21, 0xec, 0xb1, 0x12,
  0x93, 0x16, 0x11, 0x6b, 0xc5, 0x54, 0x30, 0xfb, 0x93, 0xba, 0xbc, 0x8b,


  0xc7, 0x13, 0xa9, 0x2b, 0xc3, 0x5b, 0x6c, 0x3a, 0x45, 0xd2, 0x17, 0x99,
  0xad, 0x8a, 0x76, 0xe3, 0x34, 0x1b, 0x0b, 0xe3, 0x42, 0xe3, 0x2e, 0x7d,
  0x9b, 0x14, 0x20, 0xff, 0xf2, 0x32, 0xfa, 0x6e, 0x5f, 0x93, 0x3c, 0xa5,
  0xdf, 0xbd, 0xa8, 0x22, 0xa6, 0xa4, 0x96, 0x8a, 0x11, 0x78, 0xea, 0x5e,
  0xf8, 0x82, 0x4b, 0x43, 0x98, 0x7b, 0xe9, 0xeb, 0xa2, 0x90, 0xb0, 0x91,
  0x9e, 0x35, 0xaf, 0x1c, 0xfc, 0x04, 0xc8, 0x0f, 0xfe, 0x19, 0xee, 0x6d,
  0x66, 0x5b, 0x54, 0x83, 0x76, 0x85, 0xc4, 0x82, 0xbe, 0x3c, 0x38, 0xcb,
  0x61, 0x45, 0x4a, 0x0e, 0x48, 0x27, 0x33, 0xf1, 0xe8, 0x3a, 0x45, 0x77,
  0x8f, 0xa4, 0xef, 0xf8, 0x2a, 0x20, 0x17, 0x42, 0x88, 0x5a, 0x63, 0xd1,
  0xc7, 0x1b, 0xb9, 0x14, 0xa8, 0x47, 0x96, 0x37, 0xa8, 0x89, 0xa1, 0x86,
  0x40, 0x46, 0x7e, 0x8b, 0x7a, 0xcf, 0xf2, 0xf1, 0xfc, 0xfa, 0xec, 0xbd,
  0x98, 0xce, 0x96, 0xcd, 0x89, 0x56, 0x63, 0xcd, 0x62, 0x61, 0x3b, 0x4c,
  0x55, 0x3e, 0xe2, 0x80, 0x6e, 0x86, 0x16, 0x2f, 0x32, 0xde, 0x05, 0x6e,
  0x5b, 0x57, 0x32, 0x7d, 0x0a, 0x29, 0x8b, 0x13, 0xa3, 0x4b, 0x37, 0x35,
  0xe0, 0xc9, 0x46, 0x22, 0x2c, 0xe9, 0xec, 0xc9, 0x55, 0x02, 0x12, 0x05,
  0x18, 0xcd, 0x2a, 0xf8, 0x76, 0x94, 0x73, 0xca, 0x0f, 0x9d, 0x2f, 0xf3,
  0x4a, 0x90, 0xc5, 0x70, 0x37, 0x8e, 0xe8, 0x4d, 0x7e, 0x9f, 0xf5, 0xce,
  0xb0, 0xba, 0x39, 0x3a, 0xcb, 0xa7, 0xb0, 0x55, 0xe7, 0xa4, 0xb0, 0x34,

  0x4f, 0xed, 0xc3, 0xe5, 0x79, 0xb4, 0x8e, 0x72, 0x37, 0xba, 0x34, 0x88,

  0x76, 0xf8, 0xe4, 0x86, 0xd8, 0x17, 0x25, 0xeb, 0x24, 0x32, 0x9b, 0x6e,
  0x74, 0xf2, 0xc3, 0xd1, 0xfb, 0xcb, 0xb3, 0x93, 0x1f, 0xd9, 0xc4, 0xf0,
  0x96, 0x83, 0x3f, 0xfe, 0xca, 0xb1, 0xb9, 0x28, 0x42, 0x83, 0x19, 0x89,
  0x30, 0x8f, 0x20, 0x9c, 0x0d, 0xd3, 0x27, 0xb3, 0x46, 0x25, 0xc1, 0xc1,
  0xe0, 0xf2, 0xb4, 0xa7, 0x70, 0x74, 0xdc, 0x0b, 0x35, 0xcd, 0xd0, 0x40,
  0x22, 0x79, 0x24, 0x6d, 0x54, 0xbe, 0xf5, 0x83, 0x51, 0x7a, 0x23, 0xba,
  0xd1, 0xb9, 0x26, 0x3a, 0x76, 0xe9, 0xc4, 0xf1, 0x0a, 0xbe, 0x49, 0xa7,
  0x14, 0x50, 0x6a, 0xa4, 0xa7, 0x21, 0x71, 0xd0, 0x14, 0x46, 0x5e, 0xb1,
  0x10, 0xb5, 0xb0, 0xb3, 0x58, 0x7c, 0x65, 0x32, 0x63, 0xf7, 0x65, 0xab,
  0x84, 0x24, 0x66, 0x40, 0xc7, 0x88, 0x55, 0x28, 0x5e, 0xa8, 0x4c, 0xaa,


  0x52, 0x86, 0x8f, 0x6e, 0xef, 0x3c, 0x43, 0x23, 0x2c, 0x17, 0x44, 0x9b,
  0x30, 0x6c, 0xff, 0x20, 0xea, 0xf4, 0x96, 0xd1, 0x41, 0xe7, 0x13, 0xaa,
  0x08, 0xae, 0xa7, 0x37, 0xd0, 0x8a, 0x4b, 0xe2, 0x65, 0xea, 0x0a, 0x96,
  0x06, 0x12, 0xe4, 0xaf, 0x56, 0x6f, 0x1b, 0x7b, 0xcc, 0xe1, 0xaa, 0x8b,
  0xf4, 0xa5, 0xc2, 0xb7, 0x69, 0x00, 0x2c, 0x26, 0x23, 0xbe, 0x94, 0x70,
  0xdc, 0x14, 0x34, 0xd4, 0x35, 0x60, 0x03, 0xec, 0xc6, 0x47, 0x16, 0xdf,
  0xa1, 0xd8, 0xa4, 0x58, 0x50, 0xf9, 0x18, 0x74, 0xd5, 0x23, 0x8e, 0x41,

  0x94, 0x98, 0xdf, 0xee, 0x0f, 0x47, 0x7b, 0xb5, 0xf6, 0xe5, 0x9a, 0xc4,
  0x57, 0x3b, 0xa2, 0x54, 0x21, 0xaf, 0xee, 0xb0, 0x02, 0x8b, 0x8a, 0x31,
  0xce, 0x1e, 0x6e, 0xfc, 0xda, 0xe1, 0x9a, 0xb6, 0xab, 0xd1, 0x27, 0x9b,
  0x0c, 0x87, 0xde, 0x93, 0x10, 0x9f, 0xaa, 0xd5, 0x72, 0xfa, 0x92, 0xb9,
  0x0e, 0x52, 0x73, 0x9c, 0x90, 0xf0, 0xe6, 0xae, 0x94, 0x8c, 0x20, 0xc9,

  0x21, 0xc4, 0xa6, 0xca, 0x51, 0x9b, 0xb9, 0xcc, 0xf5, 0xdf, 0x74, 0xae,
  0x4e, 0xe7, 0x66, 0x0c, 0x4a, 0xd8, 0x0e, 0x82, 0x43, 0x6e, 0xfe, 0xdb,
  0xa6, 0x0f, 0x71, 0xe2, 0x2a, 0x1a, 0xc7, 0xa4, 0x09, 0x07, 0x0b, 0x14,
  0xbb, 0x8d, 0xca, 0x3f, 0x8a, 0x6b, 0xf9, 0xee, 0xcb, 0xca, 0xe0, 0xa5,
  0xe2, 0xc8, 0x6b, 0x05, 0x36, 0x87, 0xca, 0x6f, 0xa9, 0x63, 0x6c, 0x5e,


  0xb4, 0xde, 0x54, 0x75, 0xed, 0x5a, 0xca, 0x63, 0x69, 0xab, 0xf9, 0x64,
  0xa8, 0x4e, 0xd0, 0x83, 0xa2, 0x0e, 0x88, 0x6d, 0xd7, 0xf5, 0xb1, 0x72,
  0xb8, 0x71, 0x9d, 0xb6, 0xac, 0x31, 0xd1, 0xa7, 0x7a, 0xac, 0x54, 0x8b,
  0x90, 0x83, 0x18, 0xfd, 0x4e, 0x31, 0x6f, 0xbd, 0x37, 0xa2, 0xf8, 0xb2,
  0xa9, 0x79, 0x41, 0x7b, 0xd5, 0x24, 0x6d, 0x93, 0xdd, 0x27, 0xaf, 0xee,
  0xd4, 0x06, 0x43, 0xcc, 0xfc, 0xc2, 0xa9, 0xa5, 0xc1, 0xb0, 0xc8, 0x77,
  0x72, 0xab, 0x4a, 0xdf, 0xce, 0x7a, 0x23, 0x81, 0x33, 0x37, 0x1e, 0x25,
  0x85, 0x88, 0xec, 0x38, 0x14, 0x1b, 0x45, 0xc3, 0xf3, 0x9a, 0x34, 0x90,

  0x92, 0x77, 0xbf, 0xec, 0x87, 0x54, 0x58, 0x69, 0x72, 0xc4, 0x21, 0x3b,
  0x59, 0x11, 0x7b, 0xd8, 0x29, 0x9a, 0xa6, 0x43, 0x48, 0xde, 0x4e, 0xd7,
  0x8c, 0x1d, 0x08, 0xad, 0x92, 0xf4, 0xd8, 0x2d, 0xc6, 0x14, 0xac, 0x78,
  0x94, 0xc4, 0x1a, 0x6e, 0x0a, 0x9e, 0xdd, 0x6a, 0x76, 0x22, 0x8e, 0x9c,
  0x3c, 0x24, 0xa3, 0x65, 0x55, 0x2f, 0xb0, 0x73, 0xe6, 0x24, 0xb0, 0x51,
  0x34, 0xa5, 0x75, 0xba, 0x08, 0x6a, 0x8c, 0x5e, 0x2a, 0xe6, 0xcf, 0x41,
  0x67, 0x43, 0x83, 0xb8, 0xb1, 0xe8, 0xf0, 0xfc, 0x8b, 0x50, 0x7c, 0x56,
  0xa7, 0x5c, 0x24, 0xec, 0x51, 0xb5, 0xa9, 0x0a, 0xc1, 0xcf, 0x03, 0x8d,
  0x16, 0xc1, 0xaf, 0xbf, 0x65, 0xdf, 0x9b, 0xf3, 0x71, 0xd3, 0x0b, 0x54,
  0xdc, 0x72, 0xa5, 0x77, 0x95, 0xbd, 0x2f, 0x53, 0x53, 0x74, 0x60, 0x50,
  0x77, 0x40, 0xdd, 0x64, 0xc8, 0xeb, 0xab, 0xba, 0xf9, 0x9e, 0x3b, 0xf4,
  0xf4, 0xf2, 0xee, 0x85, 0xe3, 0xcd, 0x46, 0x89, 0x47, 0x3f, 0x32, 0x1c,
  0xdf, 0x5b, 0xc5, 0x6d, 0x31, 0xdc, 0x83, 0x3f, 0xbe, 0xc5, 0x3f, 0x26,
  0xec, 0x17, 0x10, 0xc8, 0x3e, 0xf6, 0xc3, 0xfa, 0xa4, 0x8d, 0x90, 0x0b,
  0x91, 0x8b, 0xdb, 0x40, 0x99, 0x5a, 0x58, 0x06, 0x89, 0xf8, 0x7e, 0x16,
  0x6a, 0x89, 0xac, 0x1a, 0x1d, 0xa6, 0xcb, 0xa5, 0xc9, 0x7e, 0x90, 0x52,
  0xfe, 0x47, 0x78, 0x74, 0x8c, 0xf7, 0xd6, 0x25, 0x9f, 0xd3, 0x80, 0x1b,
  0xb6, 0xe6, 0xa1, 0xea, 0x54, 0xd8, 0xaa, 0x9f, 0x31, 0x50, 0x61, 0xea,
  0xe4, 0x81, 0x03, 0x68, 0x6a, 0x85, 0x12, 0xa0, 0x4d, 0xe8, 0x60, 0xf7,
  0x34, 0x5e, 0x34, 0xe6, 0x67, 0x69, 0xcb, 0x14, 0xda, 0x97, 0x4c, 0xd2,

  0x5d, 0xfe, 0xf0, 0x21, 0x6d, 0xdb, 0xdf, 0x7b, 0x43, 0xb5, 0xd9, 0x7c,

  0xe3, 0xb5, 0x4b, 0x22, 0x2a, 0x6c, 0x7a, 0xd4, 0x16, 0x9d, 0x82, 0x1f,
  0x35, 0xdc, 0x81, 0xd5, 0x92, 0x96, 0x79, 0xce, 0xb9, 0x29, 0x25, 0xf6,
  0xf4, 0x20, 0xb6, 0x70, 0xcb, 0x3e, 0x19, 0x4c, 0x69, 0x4a, 0xe6, 0x18,
  0xfa, 0x32, 0x92, 0x91, 0x41, 0xc2, 0x50, 0xb3, 0xc2, 0xcf, 0xf5, 0xc2,
  0xc3, 0x8d, 0x51, 0x7b, 0x43, 0x29, 0xcb, 0xe9, 0x5b, 0x7f, 0xf0, 0xa2,
  0x9d, 0xe5, 0x63, 0x36, 0xba, 0x79, 0x73, 0x3e, 0x08, 0xbf, 0xde, 0x5c,
  0x1c, 0x3d, 0x0d, 0x5a, 0x08, 0xd2, 0x02, 0x9b, 0x9c, 0x82, 0x91, 0x89,
  0xee, 0xb3, 0x23, 0xe7, 0xb7, 0xe1, 0xe1, 0xea, 0xaf, 0x18, 0x57, 0x20,
  0x6a, 0x16, 0xcc, 0xc5, 0x45, 0xf1, 0xa4, 0x3a, 0x94, 0x5e, 0x8c, 0x77,
  0x81, 0xbd, 0x1e, 0xe1, 0xe1, 0xaa, 0x1b, 0x8c, 0x16, 0x01, 0x11, 0xc8,
  0x88, 0x85, 0x93, 0x80, 0xd6, 0xa4, 0x6b, 0x6a, 0xe7, 0xa3, 0x7f, 0xfc,
  0x92, 0x63, 0x3e, 0x03, 0x8b, 0x36, 0x09, 0x04, 0x17, 0xbd, 0x1d, 0x32,
  0x71, 0x1a, 0x1b, 0xfb, 0x05, 0x52, 0x9d, 0xe1, 0xeb, 0x4c, 0xa5, 0x5d,
  0x21, 0x56, 0xfa, 0x51, 0xd1, 0xb6, 0x24, 0xd8, 0x93, 0x9d, 0x6f, 0xbe,
  0xf6, 0xa5, 0xe7, 0x9b, 0xf3, 0x96, 0xcf, 0xe1, 0x6f, 0x7a, 0x5a, 0xab,
  0x28, 0x1a, 0x81, 0xa3, 0xd0, 0xfb, 0x7b, 0x21, 0x40, 0xcb, 0xe1, 0x09,
  0x28, 0x0a, 0xf3, 0x13, 0x5c, 0x02, 0xe1, 0xe7, 0xf9, 0x8f, 0x95, 0x0f,
  0x4a, 0xc5, 0x40, 0xf8, 0x53, 0x5c, 0x86, 0xc1, 0x19, 0x7e, 0xd1, 0x15,
  0x47, 0x71, 0x2f, 0x45, 0x11, 0xde, 0x58, 0x75, 0x46, 0xe1, 0xe1, 0x90,
  0xbf, 0x85, 0x00, 0xaf, 0x90, 0x2d, 0xec, 0xf0, 0x1f, 0x9b, 0x3b, 0x26,
  0x35, 0xcd, 0x14, 0x9c, 0xd2, 0x35, 0x05, 0x09, 0xee, 0x2b, 0x08, 0x59,
  0xfa, 0x30, 0xa0, 0x7c, 0x82, 0x16, 0x6a, 0xa6, 0xc4, 0x03, 0xce, 0x38,
  0x30, 0x93, 0xc3, 0x79, 0xaa, 0x26, 0x16, 0x9c, 0xc9, 0x80, 0xdd, 0x77,
  0x4f, 0x11, 0x53, 0x1a, 0xc8, 0xa6, 0x5b, 0x85, 0xea, 0xf9, 0x1e, 0x94,
  0x24, 0x14, 0xae, 0xcf, 0x26, 0x52, 0x7d, 0x21, 0x5a, 0x1f, 0x82, 0xb8,

  0x76, 0x40, 0x7a, 0x58, 0xc5, 0xde, 0xe3, 0x02, 0x99, 0xf0, 0x70, 0xfb,
  0x9f, 0xef, 0xef, 0x6d, 0x6c, 0x74, 0xd5, 0x57, 0x25, 0x09, 0x32, 0x43,
  0x2a, 0xf7, 0x4a, 0x91, 0x73, 0x71, 0x33, 0x76, 0xd8, 0xe2, 0x1b, 0x62,
  0x0c, 0xc6, 0x67, 0x14, 0x1e, 0x0e, 0xe5, 0x98, 0xbe, 0x87, 0x87, 0x88,

  0x26, 0x38, 0x31, 0x74, 0x63, 0x08, 0xa3, 0xb0, 0x49, 0xf8, 0x01, 0x13,
  0x73, 0x69, 0xe5, 0x0a, 0xe4, 0x48, 0xb1, 0x1e, 0x46, 0x74, 0x2c, 0x71,
  0xb8, 0x38, 0x56, 0x49, 0xeb, 0x27, 0x82, 0x5e, 0xb2, 0xd8, 0xa3, 0x3f,
  0xa8, 0xb4, 0xf2, 0x46, 0x1b, 0x44, 0x5f, 0x2e, 0x87, 0x33, 0x90, 0x41,
  0x83, 0xe5, 0x64, 0x02, 0xa7, 0x7d, 0x96, 0x4a, 0xa7, 0x6f, 0xd6, 0xc1,
  0x25, 0xb9, 0xa1, 0x4d, 0xe6, 0xd0, 0xba, 0xeb, 0x84, 0x26, 0xb9, 0x9e,

  0xb6, 0x3c, 0x5c, 0xb4, 0xb6, 0xa8, 0xb3, 0xe0, 0x0f, 0xc1, 0x09, 0x4d,
  0x7a, 0x6d, 0x0b, 0x7b, 0x48, 0x4a, 0xdf, 0x8c, 0x7b, 0x8f, 0x71, 0x5b,
  0x10, 0xd8, 0xcf, 0x3e, 0x7a, 0xd3, 0x52, 0xbb, 0x9e, 0xb2, 0x6b, 0xf4,
  0xce, 0x7b, 0xd4, 0x3b, 0x09, 0xe2, 0x07, 0x63, 0x19, 0xd1, 0x21, 0x6b,
  0x98, 0xed, 0x3d, 0x96, 0x15, 0x6a, 0xc1, 0xd5, 0x45, 0x49, 0xab, 0x27,
  0xbf, 0x7f, 0x8c, 0xdd, 0x15, 0x25, 0x09, 0x73, 0x96, 0x60, 0xac, 0x91,
  0xf8, 0xa3, 0x8f, 0x79, 0x52, 0xb0, 0x7f, 0x92, 0xc7, 0x10, 0xdf, 0x87,

  0x78, 0xf0, 0x29, 0xb7, 0x2e, 0x26, 0xcc, 0x26, 0xf6, 0x02, 0x31, 0x56,

  0x10, 0xfb, 0xbc, 0x80, 0x76, 0x1e, 0x3c, 0x9e, 0x20, 0x29, 0xb5, 0xd9,
  0x63, 0xe4, 0xc4, 0x79, 0x14, 0xcc, 0xa1, 0xac, 0x7d, 0xc9, 0x73, 0xdd,
  0x60, 0x6d, 0xb7, 0xa7, 0x93, 0x54, 0x64, 0x13, 0x77, 0x78, 0x46, 0x1d,
  0x2a, 0x5e, 0xd7, 0xf8, 0x39, 0x65, 0x5f, 0xa9, 0xd5, 0xc0, 0x7a, 0xb7,
  0x8e, 0x2d, 0x1e, 0xca, 0x38, 0x10, 0x53, 0xd7, 0x39, 0x76, 0xbe, 0xd2,
  0x4c, 0xae, 0x8e, 0xa6, 0x00, 0x34, 0x1a, 0xdf, 0xcb, 0x98, 0x32, 0x64,


  0x00, 0xcf, 0x81, 0xd3, 0x22, 0x28, 0x49, 0x1d, 0x4f, 0x0d, 0x86, 0xec,
  0x75, 0x82, 0x0a, 0xad, 0xd9, 0x00, 0xd3, 0xc1, 0xb2, 0x66, 0xf6, 0xe9,
  0x27, 0x6c, 0xd4, 0x0f, 0xd3, 0xbb, 0xab, 0xb4, 0x5a, 0xfa, 0x4c, 0x77,
  0xa8, 0xe8, 0xa3, 0x84, 0x7f, 0x41, 0x62, 0x1a, 0x0f, 0xc3, 0x82, 0x54,
  0x90, 0x99, 0x87, 0x09, 0x9f, 0xd8, 0xca, 0xb5, 0x34, 0x3c, 0x02, 0x9d,
  0x9f, 0xb3, 0xfc, 0xde, 0xcb, 0x10, 0x47, 0x0b, 0xc3, 0xcc, 0xae, 0x5e,
  0x5d, 0x07, 0x6f, 0xff, 0xe9, 0x1f, 0xfa, 0xcb, 0x8f, 0xb8, 0x53, 0xff,
  0xd4, 0x9d, 0xd2, 0xa4, 0xbb, 0xd8, 0x03, 0x61, 0x20, 0xdb, 0x3a, 0xfa,
  0x13, 0xed, 0xca, 0xdf, 0x30, 0xab, 0x89, 0xb7, 0x06, 0xf1, 0x8f, 0x68,
  0xc0, 0x3f, 0xf5, 0x8d, 0x1e, 0x2d, 0x83, 0xc4, 0x58, 0x55, 0x4e, 0xca,
  0xfe, 0xf0, 0xd1, 0x73, 0x49, 0x21, 0x19, 0xfe, 0x98, 0x75, 0x09, 0xc8,
  0x19, 0x4c, 0x3a, 0xc4, 0x80, 0xe1, 0x56, 0xbd, 0x7c, 0x8a, 0x3f, 0x16,
  0x82, 0x66, 0x04, 0xb6, 0x0c, 0xcc, 0x1c, 0x0d, 0x3d, 0xfe, 0x79, 0xd8,
  0xb0, 0xd0, 0xa4, 0x16, 0xf1, 0xa6, 0xd4, 0x00, 0xae, 0x60, 0x1c, 0x6c,
  0x40, 0xaf, 0x86, 0xf8, 0x50, 0xb1, 0x65, 0x68, 0xaa, 0xf0, 0x74, 0xf3,
  0xec, 0x09, 0x01, 0x46, 0xa0, 0x87, 0xf4, 0x65, 0x6e, 0x09, 0x67, 0x72,
  0x34, 0xfe, 0xf4, 0x0f, 0x4e, 0x04, 0xfc, 0xa7, 0xaf, 0xfb, 0x5e, 0x5c,
  0x9f, 0x1c, 0xd0, 0x94, 0xfe, 0xd4, 0x2b, 0x1f, 0xe7, 0xc3, 0x7c, 0x26,
  0x17, 0x0f, 0x37, 0x1f, 0x36, 0x50, 0x7f, 0xc6, 0x54, 0x42, 0xb1, 0xba,
  0x9e, 0x03, 0x8f, 0xd2, 0x0d, 0x76, 0xbe, 0x40, 0x3b, 0x2c, 0x1f, 0x71,
  0xbd, 0x2c, 0x16, 0x2e, 0xc0, 0xcd, 0xfb, 0x53, 0xa4, 0x88, 0x27, 0xdc,
  0xf5, 0x56, 0xfa, 0x1b, 0x8b, 0x47, 0x55, 0x4b, 0x40, 0x82, 0x21, 0xa0,
  0xd5, 0x74, 0x6c, 0x78, 0x7a, 0x10, 0x58, 0x06, 0xf9, 0x05, 0x4c, 0xf3,
  0x23, 0x95, 0x64, 0x8a, 0x99, 0x7b, 0xcc, 0x3f, 0xeb, 0x5d, 0xd3, 0xcf,
  0x34, 0x8f, 0x46, 0xa0, 0x0c, 0x30, 0x33, 0x43, 0x8a, 0x4f, 0xba, 0x7e,
  0xf9, 0x73, 0x14, 0x4a, 0xcd, 0xc3, 0xc4, 0x77, 0xe0, 0x33, 0xde, 0x3c,
  0xf5, 0x56, 0x7f, 0x4c, 0x08, 0xee, 0x37, 0xbd, 0x4b, 0x56, 0x8f, 0x46,
  0xfd, 0x83, 0x80, 0x31, 0xcf, 0x63, 0x49, 0x66, 0xe3, 0xec, 0x35, 0x73,
  0x9f, 0x14, 0x74, 0x8d, 0x72, 0x9b, 0xe1, 0xb4, 0xfb, 0x4f, 0x0d, 0x87,
  0x7b, 0xaa, 0x55, 0x1b, 0x92, 0xf9, 0x83, 0xfe, 0xb5, 0x74, 0x62, 0x34,
  0x8c, 0x0a, 0x0b, 0x72, 0x30, 0xe5, 0x08, 0x47, 0x7e, 0x62, 0xad, 0xb9,
  0x86, 0x28, 0x84, 0x6d, 0x71, 0xb8, 0xf2, 0xa2, 0x1b, 0xd9, 0xe8, 0xb6,
  0x26, 0xf5, 0x45, 0x18, 0x08, 0x5f, 0x3d, 0x9c, 0x89, 0x92, 0x9b, 0xd0,
  0xd4, 0x29, 0x35, 0x03, 0xcf, 0x39, 0xfd, 0x90, 0xe6, 0x89, 0x75, 0x2c,
  0x73, 0xf4, 0xda, 0x06, 0xe2, 0xcc, 0x51, 0x80, 0xdb, 0x53, 0x70, 0xf4,
  0x3f, 0x9c, 0x68, 0x3b, 0xbb, 0xb6, 0x7a, 0x4e, 0x94, 0x1d, 0x74, 0x11,
  0x86, 0xd4, 0x5c, 0x3d, 0x1c, 0xe7, 0xdf, 0xbf, 0xe8, 0x6f, 0x6d, 0x78,
  0x87, 0x5a, 0x2d, 0x3e, 0x02, 0x6d, 0x14, 0x8f, 0x1f, 0x31, 0x4b, 0x95,
  0xce, 0x4c, 0xa3, 0x0a, 0xf4, 0x03, 0xda, 0x59, 0xc6, 0x46, 0x58, 0x2e,
  0x70, 0x1c, 0x22, 0xf3, 0x59, 0xce, 0x06, 0xdb, 0x53, 0xcb, 0xa8, 0xe7,



  0x83, 0xba, 0x10, 0x3d, 0xeb, 0xf5, 0x0e, 0x73, 0x7b, 0xde, 0xc4, 0x30,
  0x01, 0xe5, 0x23, 0x45, 0xae, 0x0d, 0x31, 0x81, 0xdc, 0x4b, 0x8a, 0x74,

  0xe4, 0xb6, 0x5b, 0xa5, 0x07, 0x88, 0xa4, 0x18, 0x79, 0x14, 0x43, 0xd9,
  0x41, 0x88, 0xe5, 0xc6, 0xff, 0xc8, 0xff, 0xeb, 0x84, 0xac, 0x4c, 0xba,


  0x23, 0x9d, 0x36, 0x4c, 0x14, 0x33, 0x6b, 0x6c, 0x06, 0xc2, 0xe9, 0x13,

  0xeb, 0x24, 0x0c, 0xf7, 0x1d, 0x46, 0xc3, 0x9b, 0xa5, 0x71, 0x69, 0x26,


  0xc8, 0x2b, 0xa0, 0x1b, 0x45, 0xeb, 0x25, 0xe4, 0xba, 0x1b, 0xaf, 0xf6,
  0x2b, 0x0a, 0x44, 0x8d, 0x38, 0xd6, 0x34, 0xc9, 0xfb, 0x2d, 0x3b, 0xc3,
  0x89, 0xc3, 0xcd, 0x9d, 0x69, 0xdf, 0x10, 0x5e, 0xb3, 0x1f, 0x7c, 0x6c,
  0xba, 0x15, 0x78, 0x63, 0xd7, 0x25, 0x88, 0x47, 0xca, 0xf9, 0x06, 0xdf,
  0x16, 0xa2, 0x05, 0x07, 0xa4, 0x8e, 0x18, 0xcc, 0x13, 0xb7, 0x76, 0xbd,
  0xde, 0xbd, 0xb9, 0xe5, 0x9c, 0x0d, 0x0a, 0x08, 0x73, 0x34, 0xfc, 0x59,
  0x64, 0xa1, 0x41, 0x38, 0xb9, 0x8f, 0x0a, 0xe9, 0x0c, 0xeb, 0x99, 0x3d,
  0x46, 0x41, 0xf4, 0xfe, 0x15, 0x9f, 0xdf, 0xdf, 0x0a, 0xd0, 0x3f, 0xa5,
  0x0f, 0x7f, 0x4c, 0x17, 0x0e, 0xcf, 0x3a, 0xbd, 0xc4, 0xc3, 0xa2, 0xba,
  0x17, 0x29, 0x9b, 0xe0, 0x1c, 0x63, 0x4c, 0xb9, 0xd0, 0x1e, 0x58, 0x9c,
  0xab, 0xf4, 0xe4, 0x66, 0x8e, 0x18, 0x5f, 0x81, 0x1d, 0x02, 0x2e, 0x10,
  0x05, 0xd8, 0xb7, 0xa2, 0xa5, 0x89, 0x83, 0xe0, 0xf4, 0xf2, 0x6e, 0xcf,
  0x0f, 0x44, 0x45, 0x01, 0x77, 0x99, 0xbb, 0xa4, 0x9d, 0x57, 0xad, 0x4b,
  0xe2, 0x7e, 0x1d, 0xb2, 0x24, 0x5e, 0x80, 0xdb, 0x64, 0x47, 0x16, 0xa2,
  0xeb, 0x70, 0x27, 0xfa, 0xc4, 0x92, 0xec, 0x22, 0x9e, 0x9c, 0x09, 0x7c,
  0xeb, 0xa3, 0x41, 0x80, 0x07, 0xd9, 0xcc, 0x9f, 0xc6, 0x6f, 0x83, 0x62,
  0x62, 0xb1, 0xe1, 0x11, 0x1d, 0x51, 0x89, 0x94, 0xa7, 0x12, 0xd6, 0xa8,
  0xa3, 0x80, 0x82, 0xdd, 0xa0, 0xaf, 0xdd, 0xe0, 0x1c, 0xb4, 0xcf, 0x6d,
  0x69, 0xe6, 0x00, 0x53, 0xb0, 0x3f, 0xe4, 0xeb, 0x82, 0xa2, 0x6f, 0x92,
  0x4b, 0x4f, 0x76, 0x33, 0x9b, 0x27, 0xe6, 0xc0, 0x57, 0xe0, 0xe9, 0x59,

  0xd0, 0x35, 0xfa, 0x58, 0x96, 0x33, 0x24, 0xf5, 0x74, 0xf2, 0x08, 0x53,
  0x2a, 0x5b, 0xa1, 0x69, 0x5c, 0x01, 0xca, 0xcf, 0xe9, 0x71, 0x39, 0x06,

  0xf3, 0x5a, 0x49, 0x3e, 0xcd, 0x45, 0x82, 0xe9, 0x37, 0x0c, 0x3d, 0xfe,




  0x14, 0x31, 0xa2, 0x1c, 0xa6, 0xcf, 0xdb, 0x40, 0x9f, 0xf0, 0x09, 0xa3,

  0x2c, 0xf4, 0xa3, 0x2d, 0x63, 0x09, 0x3e, 0x41, 0x08, 0xb5, 0x91, 0x70,
  0x10, 0x1b, 0xdd, 0xae, 0x6f, 0x08, 0x16, 0x22, 0x7a, 0x1b, 0xa2, 0xbb,
  0xff, 0x91, 0x34, 0x01, 0x8e, 0x47, 0x4b, 0xd6, 0xb9, 0x41, 0x61, 0xc2,
  0x41, 0x89, 0x36, 0x34, 0xa6, 0xdc, 0x3b, 0x43, 0x61, 0x38, 0x0b, 0x40,
  0xab, 0x47, 0x01, 0xa8, 0x0c, 0x6a, 0xa5, 0x45, 0x39, 0xd8, 0xf6, 0xa8,
  0xd7, 0x73, 0xa9, 0x28, 0xed, 0x61, 0x25, 0x6c, 0x8f, 0x7e, 0x11, 0xb5,
  0xba, 0x58, 0x6d, 0xba, 0x47, 0xb5, 0xd1, 0x55, 0xad, 0x4e, 0x55, 0x35,
  0xc9, 0xb1, 0x21, 0x74, 0x4c, 0x62, 0xfc, 0x23, 0xec, 0x3a, 0x43, 0x99,

  0x66, 0xf1, 0xea, 0xe1, 0x74, 0x3a, 0xd2, 0x8d, 0x8d, 0xac, 0xad, 0x29,
  0x01, 0x87, 0xe5, 0x0d, 0x52, 0x02, 0xa1, 0x12, 0xd8, 0x39, 0x14, 0xa6,
  0x86, 0x65, 0x5d, 0x5b, 0xf9, 0xea, 0x33, 0xae, 0x7f, 0xe9, 0x7a, 0xb7,
  0xb0, 0xa8, 0x06, 0x17, 0x7a, 0x4a, 0x30, 0x06, 0x19, 0x83, 0xac, 0x41,
  0x79, 0x94, 0xb3, 0x86, 0x36, 0x1e, 0xf5, 0xa9, 0x58, 0x94, 0x64, 0xbf,
  0xd6, 0xe2, 0x46, 0x94, 0x2c, 0x28, 0xbf, 0x58, 0x2f, 0x2d, 0x48, 0x33,
  0x16, 0xcb, 0x8d, 0x4d, 0xc4, 0x60, 0x23, 0x84, 0xe3, 0xd6, 0x54, 0xe3,
  0x80, 0x82, 0x5d, 0x91, 0x45, 0xe1, 0xe8, 0x27, 0xef, 0x06, 0x02, 0xe1,
  0x7d, 0x34, 0xbd, 0x42, 0x38, 0x70, 0x93, 0x57, 0x98, 0xe7, 0x31, 0x07,
  0x79, 0x4e, 0xcc, 0x80, 0x21, 0x0d, 0x2d, 0xe3, 0xd2, 0xa7, 0x03, 0x3e,
  0x3a, 0x1a, 0x4d, 0xc2, 0xc0, 0xd1, 0xaa, 0xd1, 0xb4, 0x46, 0xd0, 0x0c,
  0x45, 0xa1, 0xd4, 0x27, 0x6e, 0x1a, 0x62, 0x0d, 0x05, 0xbf, 0xa8, 0x97,
  0x58, 0xf6, 0x94, 0x3f, 0xb9, 0x62, 0x05, 0x8e, 0xf1, 0xbe, 0xfa, 0x8b,
  0x2e, 0x8b, 0x08, 0x7f, 0x5a, 0xd2, 0xff, 0xa3, 0xe7, 0x6d, 0x9d, 0x66,
  0xb0, 0xfb, 0x63, 0x61, 0x9b, 0x14, 0x7b, 0x0e, 0x38, 0x56, 0x8c, 0x89,
  0x04, 0x53, 0xa7, 0x91, 0x0b, 0x37, 0xd7, 0xb1, 0x36, 0x0d, 0xf0, 0xce,
  0x72, 0x89, 0x08, 0xdc, 0x93, 0xa7, 0x64, 0x39, 0x23, 0x53, 0xb1, 0x07,

  0xc9, 0x8c, 0x87, 0xd0, 0x95, 0xf5, 0x0e, 0x33, 0x2d, 0xb3, 0x32, 0x4b,

  0xa4, 0xcd, 0xd5, 0x69, 0x69, 0xe1, 0xc3, 0x6f, 0x34, 0x2b, 0x1e, 0xed,
  0x39, 0x73, 0xfa, 0x57, 0xe5, 0x5a, 0x53, 0x92, 0x91, 0xa8, 0x32, 0x12,
  0xe6, 0x59, 0xcc, 0x7e, 0xb5, 0x28, 0xab, 0x49, 0xab, 0xa7, 0xef, 0x6c,
  0x9b, 0x28, 0xdb, 0x0e, 0xb2, 0x10, 0x46, 0x0c, 0xd7, 0xff, 0xbd, 0x45,
  0xc5, 0x99, 0x44, 0xc5, 0x22, 0x4f, 0x91, 0xe4, 0xb2, 0xae, 0xd8, 0x96,
  0xf7, 0x64, 0x5b, 0x5a, 0x3f, 0x64, 0xb8, 0xee, 0x36, 0x0a, 0x64, 0xa0,
  0x93, 0xeb, 0x4a, 0x9d, 0x2a, 0x6c, 0x44, 0xa8, 0x67, 0x84, 0x5d, 0x23,
  0xfd, 0xe7, 0x33, 0xe4, 0x17, 0xbb, 0xe1, 0x35, 0xd0, 0x8c, 0x3e, 0xf1,
  0x1a, 0xda, 0xfd, 0x42, 0xfd, 0xc8, 0xc5, 0x8c, 0x5d, 0x3d, 0x9c, 0xe4,
  0xc9, 0xb3, 0x2b, 0xc9, 0x6d, 0x89, 0x56, 0x03, 0x06, 0x47, 0x3f, 0x70,
  0xc4, 0xce, 0xda, 0x27, 0x2c, 0x1e, 0x7a, 0x41, 0x13, 0xab, 0xb9, 0xc0,
  0xb4, 0x6e, 0x39, 0x04, 0xb7, 0x0c, 0x85, 0xc2, 0xc7, 0x78, 0xb1, 0x10,
  0x69, 0xf3, 0x34, 0xc9, 0x47, 0x0c, 0x0b, 0xc9, 0x4d, 0x80, 0xb1, 0x0d,
  0x15, 0x01, 0x70, 0x56, 0x79, 0x7e, 0xcb, 0x4e, 0x55, 0x4e, 0xc1, 0xc6,
  0x62, 0x48, 0x1f, 0x87, 0xda, 0x23, 0xf9, 0x99, 0xde, 0x9b, 0xcd, 0xc1,
  0xe0, 0xdd, 0x66, 0x52, 0x8d, 0x54, 0xea, 0x6d, 0xda, 0xec, 0x3f, 0xb1,
  0xbe, 0x9f, 0xd6, 0x62, 0x49, 0xf2, 0x52, 0x3f, 0x40, 0x24, 0x7e, 0xe3,
  0xd7, 0x7e, 0x06, 0xed, 0xd3, 0x26, 0xd4, 0x6d, 0xd1, 0x4f, 0xb0, 0x4c,
  0x44, 0xd3, 0xd6, 0x8f, 0xd4, 0x5d, 0x0a, 0x34, 0xe9, 0x75, 0x46, 0xa4,


  0x05, 0x3b, 0xf5, 0xe9, 0x9b, 0x6d, 0x17, 0x17, 0x5c, 0x0a, 0xba, 0x56,
  0x30, 0xe5, 0x67, 0xb9, 0xf8, 0x6f, 0x39, 0x4f, 0xf2, 0xec, 0x70, 0xec,
  0x97, 0x12, 0xa4, 0x9e, 0x9e, 0xf0, 0x02, 0x7d, 0x18, 0xec, 0xa6, 0x78,
  0x7a, 0xc6, 0xcf, 0x9e, 0xf0, 0xf3, 0x66, 0x2c, 0x81, 0x01, 0xf2, 0xa1,
  0xe9, 0x24, 0x68, 0xce, 0xe4, 0x9e, 0x16, 0x14, 0x71, 0xac, 0x09, 0x98,
  0xa6, 0xd9, 0x73, 0x9c, 0x7b, 0x26, 0x45, 0x07, 0xfd, 0xad, 0xd8, 0xc0,
  0xde, 0x0c, 0x2a, 0x09, 0xc0, 0xa5, 0xe4, 0x0a, 0x4f, 0xf3, 0x27, 0x67,
  0x17, 0x0b, 0x8c, 0x37, 0x8a, 0x05, 0xc7, 0xf9, 0x3e, 0x52, 0xfa, 0xc1,
  0x3c, 0x9e, 0x74, 0xb4, 0xc4, 0xfc, 0xe3, 0x40, 0x3f, 0x6b, 0xcf, 0x8d,
  0x05, 0xfa, 0x1e, 0xd7, 0x5a, 0xdd, 0x61, 0x58, 0xbe, 0xe5, 0x2c, 0x8c,
  0x5e, 0xff, 0xd4, 0x66, 0x63, 0xea, 0xf5, 0x6c, 0x66, 0xec, 0x80, 0x27,
  0x45, 0x12, 0x88, 0xb3, 0x85, 0x6e, 0x0f, 0xd2, 0x05, 0x91, 0x09, 0x93,
  0x69, 0x57, 0x2f, 0x46, 0x37, 0x7a, 0x36, 0x29, 0x50, 0xa8, 0x41, 0xb7,
  0xd6, 0x82, 0x12, 0xd3, 0x59, 0x62, 0xac, 0x9d, 0x7f, 0x19, 0x8f, 0x0c,
  0x80, 0xd1, 0x53, 0xb3, 0x8b, 0xb9, 0x8f, 0x5d, 0x63, 0x17, 0x38, 0x8f,


  0xa8, 0xa6, 0x51, 0x50, 0x76, 0xd4, 0xb3, 0xc4, 0x79, 0x2a, 0xdd, 0xbc,
  0x4d, 0x68, 0xcf, 0xdd, 0xad, 0xd2, 0xf2, 0xe7, 0x67, 0x08, 0xbc, 0xa0,
  0x41, 0x4e, 0x53, 0xa5, 0x99, 0x3f, 0xff, 0xfa, 0x7c, 0x82, 0x0b, 0xcf,
  0x29, 0x6a, 0xa8, 0x92, 0x36, 0x2f, 0x8e, 0xb6, 0x72, 0x78, 0xae, 0x2b,
  0x84, 0x32, 0xf4, 0xd5, 0x49, 0x6e, 0x72, 0xdd, 0x1a, 0x2c, 0x82, 0x63,
  0x3a, 0xb3, 0x32, 0x7f, 0x5a, 0x0b, 0xa4, 0x13, 0x70, 0xd2, 0xd7, 0x11,
  0xba, 0x9f, 0x1d, 0x98, 0x60, 0x07, 0xe1, 0xc5, 0xa9, 0x94, 0x68, 0x9e,
  0x76, 0x29, 0xc2, 0x19, 0x86, 0x6f, 0x8c, 0x58, 0x05, 0x75, 0x23, 0xc1,
  0xdf, 0x65, 0x83, 0x43, 0x4b, 0x79, 0x7b, 0x94, 0x62, 0xfb, 0x1c, 0x22,
  0x42, 0x87, 0x67, 0xe0, 0xae, 0x52, 0x53, 0x04, 0x35, 0xca, 0xf8, 0xcb,
  0x54, 0x9f, 0x69, 0x9c, 0xa6, 0x09, 0xc7, 0x9f, 0xf0, 0x75, 0x5b, 0xce,
  0x41, 0x56, 0x28, 0xea, 0x93, 0xbd, 0xa7, 0x5c, 0xed, 0x14, 0x94, 0xc0,
  0xa8, 0x04, 0xe5, 0x90, 0x52, 0x13, 0x6c, 0x0c, 0x4b, 0x68, 0xf8, 0x53,
  0x7c, 0x12, 0x0a, 0xe3, 0x7f, 0xb0, 0x7a, 0x38, 0x6d, 0x00, 0xf2, 0x09,
  0x71, 0x4c, 0x1f, 0x62, 0xb8, 0x03, 0xa1, 0xfa, 0x80, 0x32, 0x26, 0x29,
  0x64, 0x9b, 0xae, 0x70, 0xc0, 0xa4, 0xde, 0x2f, 0xb7, 0x6a, 0x76, 0x67,
  0x2f, 0xab, 0x40, 0x09, 0x09, 0xa8, 0xf5, 0x14, 0xdf, 0x66, 0x61, 0x01,
  0x16, 0x75, 0x4c, 0xd5, 0x23, 0x78, 0xca, 0xc9, 0x43, 0xc5, 0xf1, 0x05,
  0xfa, 0x1d, 0xce, 0x25, 0x05, 0xbd, 0x0e, 0x43, 0xda, 0x16, 0x20, 0x35,
  0x50, 0x55, 0x21, 0x75, 0xac, 0xf4, 0x35, 0xe3, 0xaf, 0x7b, 0x18, 0x4f,
  0xfb, 0x79, 0x91, 0xa2, 0xbc, 0xa1, 0x44, 0x4e, 0x1d, 0x0c, 0xe9, 0xbe,
  0x4b, 0xfc, 0x04, 0xad, 0xc7, 0xd0, 0x70, 0x1a, 0x59, 0x8b, 0x22, 0x0e,
  0xad, 0x79, 0x43, 0xcf, 0x89, 0x5e, 0xf1, 0x77, 0x66, 0x54, 0x81, 0x4e,
  0x08, 0xd5, 0x97, 0x6b, 0x0d, 0x8e, 0xe9, 0x14, 0xab, 0x29, 0x2f, 0x66,
  0xb5, 0x76, 0xa1, 0x18, 0x83, 0x05, 0xc2, 0x2b, 0xb8, 0x92, 0xdd, 0xf3,
  0x45, 0xa5, 0x65, 0xb9, 0xa4, 0x03, 0x7b, 0x7b, 0x7a, 0x76, 0x62, 0xb2,
  0xda, 0xfe, 0xd7, 0x66, 0x1f, 0xb7, 0xbc, 0x18, 0x79, 0x39, 0x7c, 0x5c,
  0x43, 0xea, 0x14, 0x04, 0x4b, 0x91, 0xe9, 0xb7, 0x5d, 0xee, 0xab, 0x49,
  0x3f, 0xae, 0x55, 0x98, 0x9e, 0x9c, 0x7f, 0x77, 0x7a, 0x75, 0x71, 0xfe,
  0xfe, 0xe4, 0xfc, 0xfa, 0x33, 0x87, 0xdd, 0x85, 0xba, 0x46, 0x94, 0x7e,
  0x72, 0x41, 0x8a, 0xe1, 0xa0, 0x7b, 0x2a, 0x02, 0xe4, 0xde, 0x2d, 0xb0,

  0x52, 0xf9, 0x57, 0xdf, 0x1d, 0xce, 0x79, 0x48, 0x3d, 0xfb, 0x98, 0x49,
  0xb2, 0x40, 0xcf, 0xce, 0x18, 0xe3, 0xaa, 0x7d, 0x8e, 0x05, 0x98, 0xbe,
  0xc4, 0xd8, 0xb8, 0xe2, 0x01, 0x81, 0xc2, 0x29, 0x15, 0x18, 0x6b, 0xc7,
  0x3e, 0x33, 0x5b, 0xc2, 0x41, 0x40, 0x1b, 0x2b, 0xad, 0x4d, 0xc2, 0x12,
  0xf7, 0x07, 0x29, 0x00, 0xcd, 0xa2, 0xe0, 0x6a, 0x14, 0xfd, 0x8e, 0x14,
  0x02, 0xfa, 0xec, 0x0d, 0xe7, 0xe1, 0x70, 0xf4, 0x85, 0x99, 0x84, 0x93,
  0x03, 0xea, 0xa0, 0x0e, 0x3b, 0x2d, 0x94, 0x9b, 0x48, 0xc3, 0xce, 0x2a,
  0xfe, 0xaa, 0xce, 0xa2, 0x83, 0xcd, 0xcd, 0x9f, 0xa8, 0x7b, 0xf7, 0x97,
  0xd2, 0xbe, 0xdb, 0x47, 0x4c, 0x2d, 0x9d, 0x69, 0xd8, 0x92, 0x21, 0xad,
  0x2e, 0x44, 0xba, 0x35, 0xdb, 0x49, 0x6e, 0xe0, 0x8f, 0x97, 0x57, 0x17,
  0x3f, 0xfc, 0xe5, 0x37, 0xfe, 0x84, 0x93, 0x6c, 0xf6, 0x57, 0xcc, 0xc1,
  0xd4, 0xc1, 0x7f, 0xfa, 0xcd, 0xbf, 0x56, 0x1f, 0xbe, 0x2b, 0x91, 0x76,
  0x6e, 0x35, 0xee, 0x2b, 0x64, 0x5c, 0xbc, 0xcd, 0x50, 0xfa, 0x36, 0x25,
  0x3a, 0x72, 0x7c, 0x1c, 0x26, 0x19, 0x88, 0x44, 0x5c, 0x59, 0x27, 0xd0,
  0xd8, 0x07, 0xd6, 0xee, 0x73, 0x49, 0xb1, 0xcd, 0xe0, 0xd5, 0xaa, 0x72,
  0xac, 0x1c, 0xe7, 0xda, 0x72, 0xca, 0x47, 0x35, 0xfb, 0x71, 0x74, 0x76,

  0xf6, 0x9b, 0x6e, 0x02, 0x75, 0x40, 0xb6, 0x6b, 0xe9, 0x19, 0x0d, 0x55,
  0x9e, 0x7e, 0x02, 0xb8, 0xf6, 0xfc, 0x42, 0x66, 0x73, 0x48, 0xca, 0x71,
  0xaf, 0x4c, 0x40, 0xa5, 0x8d, 0x31, 0xde, 0xaf, 0xc0, 0xe5, 0x38, 0xb1,
  0x72, 0x93, 0x13, 0x27, 0x3d, 0x1c, 0x75, 0x7a, 0x88, 0x92, 0x05, 0xc8,
  0x84, 0xa2, 0xbc, 0x4a, 0xde, 0x4d, 0x2e, 0x8b, 0xa3, 0xba, 0x85, 0xdc,
  0xe0, 0x12, 0x71, 0x3f, 0x76, 0xee, 0x07, 0x3e, 0x09, 0xb4, 0x7b, 0x66,

  0x74, 0x08, 0x94, 0xb7, 0x45, 0x5a, 0xde, 0x52, 0x51, 0x07, 0xde, 0x50,
  0x52, 0x90, 0xb4, 0x7e, 0x1f, 0x55, 0x5e, 0x9a, 0x53, 0x9f, 0x21, 0x46,
  0x6c, 0x35, 0x5d, 0x5a, 0x86, 0x66, 0x47, 0x7d, 0xb3, 0x58, 0x14, 0xa3,
  0x1b, 0x95, 0x9d, 0xd0, 0x71, 0xad, 0xb4, 0x4b, 0xc0, 0xdf, 0x39, 0x89,
  0xaa, 0x34, 0x38, 0x03, 0xa1, 0xb2, 0xf4, 0xae, 0x96, 0x1b, 0xe3, 0x03,
  0xfc, 0xe9, 0xaa, 0x4c, 0x66, 0x93, 0x70, 0x85, 0x7d, 0x90, 0x5b, 0x48,
  0x85, 0xbf, 0x69, 0x48, 0xaf, 0xc4, 0x8a, 0x87, 0x95, 0x10, 0x26, 0x0d,
  0x86, 0x16, 0x7c, 0x7f, 0x9d, 0xd0, 0x61, 0x2d, 0xcf, 0xe0, 0xc1, 0xb6,
  0x11, 0x8b, 0x9c, 0x6a, 0x56, 0xce, 0x13, 0xd3, 0xb3, 0x7d, 0x3d, 0xf6,
  0x0b, 0xa6, 0x80, 0x23, 0xb9, 0xf8, 0x1d, 0x2a, 0x79, 0x7b, 0x0f, 0x91,
  0x02, 0x87, 0xf0, 0x39, 0xd5, 0x9e, 0x91, 0xdf, 0x3c, 0x67, 0x38, 0x6a,
  0xce, 0x50, 0x62, 0x6e, 0xb4, 0x4c, 0x35, 0xaa, 0x30, 0xbb, 0xb7, 0x8a,
  0xc4, 0x2f, 0xce, 0x4a, 0x38, 0x61, 0xed, 0xf8, 0x75, 0x12, 0xce, 0xc4,
  0x57, 0x4d, 0xb4, 0x75, 0xa6, 0x81, 0xd8, 0x30, 0x3c, 0x86, 0x2e, 0x78,
  0x06, 0x91, 0x71, 0xc7, 0x33, 0xf3, 0x24, 0x6d, 0x95, 0xe7, 0xc8, 0x7a,

  0x9c, 0x42, 0x69, 0x25, 0xa1, 0x20, 0x5c, 0x30, 0xfd, 0xc6, 0xbd, 0x32,

  0x72, 0x17, 0x4c, 0x49, 0x3b, 0x29, 0xe1, 0xa6, 0x2c, 0xd4, 0x46, 0xda,
  0x31, 0xdc, 0x12, 0xf9, 0xfe, 0x71, 0x8a, 0xbf, 0xa0, 0x50, 0x27, 0x46,
  0x44, 0xb1, 0x12, 0x53, 0x77, 0x20, 0xc5, 0xb2, 0x54, 0x5f, 0x37, 0xd4,
  0x32, 0x63, 0x0d, 0x6e, 0x81, 0x08, 0x9c, 0xe5, 0x65, 0x08, 0x4e, 0x73,




  0x88, 0x59, 0xf3, 0x09, 0x35, 0xfa, 0xe1, 0x2b, 0x0f, 0xff, 0xbd, 0xbe,

  0x38, 0xbe, 0x38, 0x83, 0xbf, 0x9c, 0xbc, 0x3d, 0xfd, 0xc1, 0x6a, 0x05,
  0x0c, 0x50, 0x51, 0x2b, 0x90, 0x21, 0xdc, 0xc5, 0x97, 0x5d, 0x97, 0x0d,
  0x71, 0x0e, 0x22, 0xa6, 0x1f, 0x72, 0x4a, 0x5c, 0x93, 0x42, 0x0d, 0xb7,
  0x74, 0xf8, 0x1c, 0xca, 0x69, 0xcc, 0x17, 0x75, 0xf0, 0x47, 0x62, 0x01,
  0x5e, 0x42, 0x2d, 0x9a, 0x47, 0x36, 0xc5, 0x14, 0x76, 0x93, 0xb1, 0x46,
  0xca, 0x65, 0x73, 0x92, 0x8d, 0x6a, 0x3f, 0x99, 0x2a, 0x2c, 0x51, 0x6d,
  0x72, 0x79, 0x61, 0xba, 0xe0, 0x56, 0x6e, 0x87, 0xf5, 0x46, 0x4b, 0x1b,
  0x17, 0x2f, 0x3f, 0x4b, 0xdc, 0x45, 0x9a, 0xb6, 0xe8, 0x55, 0x91, 0x10,
  0x57, 0x24, 0xa0, 0x3a, 0x54, 0x04, 0x5c, 0x94, 0x8f, 0x06, 0x45, 0x50,
  0x85, 0x8e, 0x19, 0xb1, 0xbe, 0x26, 0xd9, 0x00, 0xc9, 0xe5, 0xa3, 0xdc,
  0x0a, 0xd4, 0xe3, 0x1d, 0x88, 0x1f, 0xa1, 0xd6, 0x60, 0xb9, 0xa0, 0xd4,
  0x29, 0xe1, 0x1f, 0x94, 0x5d, 0xc5, 0x51, 0x0c, 0xe1, 0xa8, 0xd7, 0x4e,
  0x6b, 0x77, 0x96, 0x0a, 0x12, 0x7c, 0x5a, 0xf8, 0xa6, 0x15, 0x9e, 0x81,
  0x28, 0xfb, 0x75, 0x8d, 0xa3, 0x6c, 0xfb, 0x34, 0x9a, 0xa8, 0xb2, 0x07,
  0xf6, 0xd3, 0x5e, 0xd6, 0x35, 0x66, 0x7d, 0x97, 0x7b, 0xab, 0xc6, 0x40,
  0x8d, 0xf0, 0xef, 0xcb, 0xf4, 0x2e, 0xa6, 0xda, 0x32, 0xb8, 0x2c, 0xbd,
  0x1e, 0xbf, 0xd4, 0x18, 0x23, 0xfe, 0x55, 0x83, 0xc4, 0xf5, 0x51, 0xf6,
  0x7f, 0xcd, 0x20, 0xfb, 0x8d, 0x31, 0x6e, 0x7e, 0xd5, 0x20, 0x3d, 0x15,
  0x10, 0xa0, 0x18, 0xff, 0x70, 0x7a, 0x1d, 0x1d, 0x5f, 0xbc, 0xb1, 0x17,
  0xec, 0xda, 0x64, 0x6f, 0xc7, 0xd1, 0x70, 0x99, 0x01, 0x0d, 0x62, 0x2f,
  0x26, 0xd3, 0xdd, 0x82, 0xd3, 0x14, 0x31, 0x07, 0xa7, 0xd4, 0x8a, 0xb5,
  0xb4, 0x60, 0x28, 0x22, 0xcc, 0xab, 0x61, 0x24, 0x25, 0xa7, 0x46, 0x17,
  0x9f, 0x9e, 0x23, 0xd0, 0xd1, 0x54, 0xa5, 0x2f, 0xde, 0x4a, 0xc4, 0xba,
  0x8b, 0x0b, 0xad, 0x2a, 0x1d, 0xc6, 0x08, 0x66, 0x94, 0x71, 0x6d, 0x24,

  0xc8, 0xce, 0x00, 0xf4, 0xb0, 0x0e, 0xe7, 0x22, 0x10, 0x83, 0xee, 0x9c,
  0x56, 0x3a, 0x15, 0x37, 0x93, 0x70, 0x5b, 0x73, 0xfd, 0x6b, 0x94, 0x2e,
  0xed, 0xed, 0x48, 0xf8, 0x61, 0x5e, 0xf7, 0xd8, 0xc0, 0x59, 0xa3, 0x4a,
  0x9c, 0xd9, 0x9c, 0x7d, 0x6e, 0x72, 0xed, 0x49, 0x6c, 0x33, 0x84, 0xf9,
  0xce, 0x8e, 0x84, 0x12, 0x40, 0x45, 0x67, 0xbf, 0x81, 0xe4, 0x95, 0xa5,
  0x3f, 0x3b, 0x0a, 0xfa, 0xae, 0xd1, 0xc7, 0x60, 0xe5, 0x33, 0xea, 0x1c,
  0x3d, 0xe6, 0x0b, 0x51, 0x3e, 0x82, 0x50, 0x7f, 0x20, 0x83, 0x1c, 0xed,
  0x27, 0x81, 0x73, 0xb2, 0x6f, 0xee, 0x89, 0x56, 0x16, 0x19, 0xdc, 0x28,

  0x6a, 0xbf, 0xb5, 0xa8, 0x47, 0x83, 0xac, 0xd7, 0x42, 0x4b, 0xa4, 0x29,
  0xc4, 0x99, 0x94, 0xd8, 0xc9, 0x3a, 0xe0, 0xb9, 0xb0, 0x89, 0x07, 0x0c,
  0xdf, 0xc0, 0xe5, 0xd6, 0x02, 0xbf, 0xed, 0xb4, 0x29, 0x34, 0x60, 0x3f,
  0x98, 0x99, 0x44, 0xfb, 0xd5, 0xe3, 0x1e, 0x4d, 0x5e, 0x5d, 0xba, 0xad,
  0xc0, 0x54, 0x8b, 0x63, 0x9c, 0xd3, 0x06, 0x76, 0x29, 0x93, 0x17, 0xf6,
  0x6d, 0x18, 0x23, 0xd4, 0x03, 0xb5, 0x46, 0x8c, 0x33, 0xae, 0x34, 0xd4,
  0x13, 0x08, 0xd7, 0xdc, 0xd9, 0x9a, 0xa7, 0x7d, 0xfe, 0xe3, 0x58, 0x35,
  0x36, 0x29, 0x1b, 0x72, 0x19, 0x0b, 0x0b, 0x19, 0xb1, 0x6e, 0x72, 0xc2,
  0xe8, 0x40, 0x19, 0x44, 0xeb, 0x23, 0x06, 0xe9, 0x6f, 0x42, 0xd9, 0xf0,
  0x71, 0xbe, 0x68, 0xf9, 0x0a, 0x43, 0x3a, 0xd9, 0x8f, 0xb8, 0x3e, 0x79,
  0xdd, 0x42, 0x79, 0xd6, 0x19, 0xed, 0x65, 0x93, 0x2e, 0x1c, 0xcf, 0x3e,
  0x8d, 0x68, 0x9e, 0xfc, 0x5c, 0x7c, 0x11, 0x09, 0x16, 0x2d, 0x8a, 0xf2,


  0x5c, 0x24, 0x8b, 0x99, 0xac, 0x4c, 0x7e, 0x42, 0x81, 0x63, 0xf2, 0x26,
  0xd0, 0x2e, 0x8f, 0x74, 0x96, 0xa0, 0x0e, 0xbb, 0xa6, 0xe0, 0x2b, 0xf9,
  0x2c, 0x36, 0x81, 0x63, 0xd5, 0x81, 0x70, 0x37, 0x52, 0x43, 0x6f, 0xd2,
  0x74, 0x9e, 0x7e, 0x84, 0x09, 0x8e, 0x84, 0xea, 0xa0, 0xff, 0x96, 0x37,
  0x3c, 0xa4, 0xbb, 0x86, 0x2b, 0x19, 0x57, 0xbb, 0x2c, 0xb8, 0x68, 0xd7,
  0x62, 0x3b, 0x2a, 0xd8, 0xba, 0xe4, 0xff, 0x15, 0x08, 0xc9, 0xd7, 0x07,

  0x5e, 0x94, 0x7b, 0xe8, 0x93, 0xf9, 0xa4, 0x12, 0xec, 0x2f, 0xee, 0xb7,
  0xc6, 0xfb, 0x73, 0x13, 0x67, 0xd3, 0x84, 0xfd, 0x2f, 0x0e, 0x3c, 0x25,
  0xf7, 0xea, 0x63, 0x71, 0x08, 0x77, 0x9d, 0x9c, 0x3c, 0xad, 0xe8, 0x13,
  0x76, 0x1f, 0xb6, 0xb7, 0xcc, 0x3e, 0x70, 0x1b, 0x2e, 0xaa, 0x4e, 0xc1,
  0x5d, 0xf8, 0x9e, 0x10, 0x09, 0xef, 0x63, 0x6e, 0xd3, 0xab, 0xcd, 0xec,
  0xad, 0xd1, 0x62, 0xc2, 0x3c, 0x18, 0x59, 0xf3, 0xf3, 0xa4, 0x09, 0xc9,
  0x01, 0xb3, 0x60, 0x50, 0x1f, 0xe0, 0x54, 0x4f, 0x2e, 0x6f, 0x14, 0x71,
  0xd5, 0x25, 0x83, 0xde, 0x30, 0x48, 0x8e, 0xb3, 0x12, 0xef, 0xbd, 0x4b,

  0x42, 0xb0, 0x19, 0x8a, 0x5b, 0xe5, 0x64, 0x73, 0x58, 0xd0, 0x10, 0x67,

  0x3d, 0xdb, 0x66, 0x3d, 0xf7, 0x44, 0x28, 0x97, 0x47, 0x83, 0x81, 0x92,
  0xc9, 0xb1, 0x4f, 0x11, 0x12, 0x3d, 0x22, 0x04, 0x1d, 0x29, 0x92, 0x0e,
  0xa8, 0x8a, 0x32, 0x48, 0x23, 0xc9, 0x60, 0x9b, 0x79, 0xda, 0x1b, 0x66,
  0xcc, 0xa4, 0x4d, 0xc8, 0x7a, 0x99, 0xae, 0x74, 0xc5, 0xf7, 0xab, 0x77,
  0xf2, 0xb3, 0x60, 0xba, 0x0a, 0x07, 0x2c, 0x71, 0x9f, 0xa9, 0x18, 0x59,
  0x79, 0x3c, 0xa9, 0x86, 0x0f, 0x8b, 0xb4, 0xd6, 0x11, 0x71, 0x7b, 0xd7,
  0x5f, 0xf4, 0x77, 0xbc, 0xaa, 0xee, 0xbf, 0xb4, 0xe8, 0xef, 0x02, 0x8b,
  0xde, 0xb3, 0x17, 0x87, 0x3f, 0x16, 0xed, 0xec, 0xbc, 0xd4, 0x82, 0x10,
  0xa0, 0x63, 0xfa, 0x9e, 0xfd, 0xa0, 0xf3, 0x45, 0x78, 0xae, 0x47, 0xf5,
  0x07, 0xfe, 0xb7, 0x9c, 0xcb, 0xeb, 0x7c, 0x6a, 0xdf, 0x7c, 0x0a, 0xd4,
  0x6f, 0xb4, 0x40, 0x41, 0xa7, 0x67, 0x2e, 0xe3, 0x31, 0x1f, 0x35, 0xe5,
  0x50, 0x0d, 0xbf, 0xc7, 0xfc, 0xa9, 0xca, 0xe8, 0x92, 0x8d, 0x4f, 0xe9,
  0x2c, 0x9c, 0xef, 0xbc, 0x30, 0x6e, 0x94, 0xcd, 0x1d, 0x0d, 0xa0, 0x1f,
  0x11, 0x2f, 0x9e, 0x25, 0x73, 0xa2, 0xcc, 0x71, 0x82, 0x68, 0x3d, 0xd6,
  0xfd, 0xc7, 0x35, 0x77, 0x93, 0x22, 0x26, 0xb4, 0xe5, 0x59, 0xfc, 0x18,
  0x00, 0xdb, 0x12, 0x4f, 0x31, 0x9b, 0x2b, 0x31, 0xce, 0x3e, 0x43, 0x5b,
  0x81, 0x34, 0x01, 0x71, 0x9b, 0xa1, 0x1f, 0x16, 0x4f, 0x34, 0x9f, 0x18,
  0x57, 0xad, 0x7c, 0xd5, 0x83, 0x03, 0x28, 0xa5, 0x3d, 0x22, 0x5f, 0x19,
  0xd1, 0x12, 0xc2, 0xd8, 0x70, 0xdb, 0x2f, 0xed, 0x11, 0x99, 0x73, 0x40,
  0xc7, 0x16, 0x43, 0x84, 0x38, 0xbb, 0xa7, 0xbc, 0x44, 0xe3, 0x01, 0xd2,
  0x76, 0x07, 0xa3, 0x74, 0xa9, 0x6f, 0x35, 0x17, 0x8e, 0x82, 0xb8, 0xcd,
  0xdc, 0xf8, 0x12, 0x99, 0x9d, 0x00, 0xee, 0xf6, 0xa3, 0x0b, 0xf2, 0xc2,
  0xd5, 0x20, 0xc6, 0x27, 0x4c, 0xfa, 0xb6, 0x68, 0xb4, 0x4e, 0xb8, 0xaf,
  0xec, 0x09, 0xeb, 0x9c, 0x34, 0xf9, 0x65, 0x53, 0x99, 0xac, 0x11, 0x28,
  0xea, 0x6d, 0x4e, 0xa2, 0xab, 0x93, 0xeb, 0x2b, 0x8a, 0xf3, 0x12, 0x03,
  0xf0, 0x40, 0x52, 0xe3, 0x62, 0xc3, 0x80, 0x04, 0x09, 0x3b, 0xb3, 0x7a,
  0x88, 0x65, 0x10, 0x8c, 0x5f, 0x66, 0xce, 0x9b, 0xff, 0xa9, 0xef, 0x71,
  0xf5, 0x4b, 0xa2, 0xb5, 0x26, 0x36, 0xa2, 0x53, 0x47, 0x56, 0xdb, 0xd9,

  0xb1, 0x59, 0x48, 0xdc, 0x3a, 0x99, 0xc5, 0x9c, 0x64, 0x92, 0xf7, 0x25,

  0xbb, 0x45, 0x8b, 0x2f, 0xb4, 0x55, 0x1e, 0x3e, 0xc4, 0xd9, 0xd8, 0x79,
  0x11, 0x10, 0xb9, 0xf2, 0x69, 0x95, 0xff, 0x3c, 0x05, 0x8b, 0xa2, 0xc6,
  0x5f, 0xe3, 0x9f, 0x32, 0xf7, 0x94, 0x0a, 0xc0, 0x68, 0x6f, 0x6b, 0x2b,
  0x00, 0x3b, 0x1c, 0x0f, 0x81, 0xa9, 0x8a, 0x36, 0x27, 0x55, 0x3d, 0xf4,
  0x16, 0x7b, 0x4d, 0x49, 0xbd, 0x2c, 0xd1, 0xd4, 0xe8, 0x4d, 0xd0, 0x8d,
  0x89, 0x3b, 0xe6, 0x1b, 0x15, 0x3b, 0xcc, 0x63, 0xbe, 0xa7, 0x2a, 0x23,

  0xdd, 0xb4, 0x06, 0x73, 0xe1, 0x12, 0x24, 0xed, 0xcd, 0x1b, 0x3b, 0x60,
  0xcc, 0xe2, 0xff, 0xf6, 0x66, 0xe6, 0xf1, 0xef, 0x9d, 0x7d, 0x9f, 0x22,
  0x06, 0xd7, 0x17, 0x57, 0x42, 0x61, 0xbe, 0x68, 0xe6, 0x1d, 0xa1, 0x47,
  0x2c, 0xda, 0x4a, 0xd7, 0x87, 0xdc, 0x19, 0x1b, 0x7c, 0x00, 0x83, 0x62,
  0xea, 0x7c, 0x95, 0x39, 0x00, 0xb5, 0xe7, 0x93, 0xa5, 0x7d, 0x27, 0x88,
  0x00, 0x8a, 0xd7, 0xab, 0xf7, 0xd2, 0x79, 0x89, 0xaf, 0xd9, 0x05, 0xdf,
  0x5f, 0xae, 0x5e, 0x47, 0x3a, 0x92, 0x3a, 0x76, 0xc4, 0xfb, 0x95, 0x74,
  0x58, 0xd3, 0x47, 0xb4, 0x49, 0x8b, 0x7c, 0x89, 0x2e, 0x2c, 0x24, 0x33,
  0x73, 0x78, 0x59, 0xa7, 0xb1, 0x8a, 0xa9, 0x97, 0x2d, 0xf2, 0x09, 0x86,
  0x2c, 0x96, 0xc4, 0xa6, 0x98, 0x7d, 0x61, 0x23, 0x0f, 0xd6, 0x3d, 0x2f,
  0xc6, 0x92, 0xbe, 0x22, 0x82, 0x53, 0x8d, 0x05, 0xab, 0x67, 0x5b, 0xa9,
  0x7f, 0x79, 0x71, 0x75, 0x6d, 0x64, 0x3e, 0x7e, 0x96, 0x7e, 0xd0, 0xb8,
  0x3d, 0xd8, 0x2f, 0x45, 0xf0, 0x27, 0x44, 0xb2, 0x51, 0x87, 0xe0, 0xcf,
  0x82, 0x10, 0x04, 0x72, 0x24, 0x34, 0x8e, 0x0e, 0xd4, 0xa5, 0x3e, 0x7e,
  0xe3, 0x9c, 0xe1, 0x7c, 0x0c, 0xbf, 0x61, 0x0f, 0x3a, 0x09, 0x9a, 0x16,
  0x64, 0x30, 0xab, 0xdc, 0xee, 0x6e, 0xfb, 0x94, 0x81, 0x36, 0xf4, 0xd5,
  0xc9, 0xe0, 0x9a, 0x67, 0x8e, 0x7f, 0xf3, 0x66, 0xce, 0xf5, 0xa1, 0xf2,
  0x43, 0xdf, 0x89, 0x6a, 0x28, 0x03, 0x33, 0xd0, 0xc0, 0xda, 0xa0, 0xf1,
  0x4d, 0x81, 0xbb, 0xb3, 0x63, 0xbb, 0x4e, 0xb6, 0x21, 0x31, 0x4d, 0xa1,
  0x13, 0xba, 0xdf, 0xf4, 0x83, 0x8e, 0x7c, 0xa5, 0x03, 0x6a, 0xd9, 0x58,
  0x1b, 0x87, 0x39, 0x23, 0xec, 0xd9, 0x11, 0x16, 0x28, 0xa9, 0x64, 0x80,
  0x53, 0x6d, 0xc2, 0x8b, 0x3f, 0xec, 0x29, 0xa9, 0x90, 0xb0, 0x60, 0xa2,
  0xe0, 0xe7, 0xec, 0x38, 0xfb, 0x52, 0xa2, 0x7e, 0x66, 0x54, 0x05, 0x67,

  0x2a, 0xf8, 0x63, 0x4d, 0xf9, 0x21, 0x6d, 0xa3, 0x41, 0x72, 0xbb, 0x4c,
  0xe9, 0x5f, 0x63, 0xb6, 0xa0, 0x49, 0x5b, 0xe4, 0xb5, 0xbb, 0x72, 0x01,
  0x94, 0xad, 0x34, 0x5b, 0x26, 0xa4, 0xa3, 0xc5, 0xc5, 0x0c, 0x7b, 0x3d,
  0x00, 0x13, 0x29, 0xb8, 0x7e, 0xec, 0x3e, 0x0b, 0xc1, 0x52, 0x3b, 0xdf,
  0x10, 0xf9, 0x73, 0x7a, 0x76, 0x62, 0x8f, 0x8a, 0xfb, 0x44, 0xd0, 0x25,
  0xb6, 0xba, 0x3e, 0x5c, 0xd8, 0xcc, 0x88, 0x89, 0x7e, 0x74, 0x89, 0x1d,
  0xd1, 0x49, 0x67, 0x2a, 0xff, 0xdd, 0x8e, 0xc6, 0x97, 0x84, 0x3c, 0xf0,
  0x20, 0x36, 0xa9, 0xdc, 0x39, 0xcd, 0xe0, 0x64, 0xe9, 0x27, 0xf8, 0x57,
  0x07, 0xd3, 0xdc, 0x5b, 0xee, 0x2b, 0xfb, 0x72, 0x09, 0x2b, 0x01, 0x0b,

  0xbd, 0xf9, 0xc8, 0x9e, 0xd0, 0x15, 0x98, 0xef, 0x34, 0x84, 0x61, 0xcd,
  0x78, 0x97, 0xa5, 0x59, 0xcc, 0x98, 0x47, 0x98, 0xe8, 0x33, 0x35, 0x16,
  0xee, 0x0c, 0xc5, 0xc2, 0xe0, 0x68, 0x68, 0x1a, 0x08, 0x61, 0x92, 0x30,
  0x2a, 0x72, 0x30, 0x56, 0x86, 0x9c, 0x76, 0x66, 0x72, 0xed, 0xdd, 0x18,
  0x30, 0x6d, 0xad, 0xc1, 0x8b, 0x6a, 0x6e, 0x6e, 0xa3, 0xbd, 0xfb, 0x1e,
  0x53, 0xa2, 0x21, 0x1b, 0x23, 0xbf, 0x6a, 0xb3, 0x93, 0xec, 0x64, 0xc1,
  0xbd, 0x43, 0xa7, 0x01, 0xc6, 0x03, 0x40, 0xbe, 0xbb, 0xca, 0xff, 0xde,
  0xbe, 0x1d, 0x6a, 0x42, 0xe0, 0x3d, 0xca, 0xd7, 0x8f, 0x6a, 0x4e, 0x39,

  0xd3, 0x49, 0x22, 0x35, 0x4f, 0xb2, 0xd9, 0xc8, 0xb5, 0xe7, 0x81, 0x2b,
  0xe5, 0x7c, 0xe3, 0xa5, 0x98, 0xbe, 0x68, 0xfb, 0x66, 0x8f, 0x36, 0xf9,
  0xbe, 0xcf, 0x51, 0x65, 0xf6, 0x9b, 0x71, 0xa3, 0x1a, 0xf9, 0x8d, 0x80,

  0x30, 0xde, 0x88, 0x5f, 0x06, 0x5b, 0x51, 0x79, 0x88, 0x8b, 0xcb, 0xb9,
  0xe4, 0xf0, 0x3a, 0x5f, 0xfa, 0x5c, 0x3c, 0x19, 0x58, 0x7c, 0x9e, 0x59,

  0x90, 0x22, 0x67, 0x21, 0xa8, 0xe8, 0x8a, 0xd5, 0xac, 0xa1, 0x7c, 0x60,
  0x8e, 0xa3, 0xd8, 0xa4, 0x00, 0xfb, 0x18, 0x7b, 0x88, 0x5c, 0x86, 0x6c,
  0x56, 0x94, 0x5d, 0xf5, 0x28, 0xe4, 0x5a, 0x04, 0x2c, 0x9e, 0x05, 0x79,

  0x8c, 0x7f, 0x65, 0x9a, 0x06, 0xf9, 0x2e, 0xf1, 0x22, 0xf9, 0x1b, 0x29,
  0x92, 0x7d, 0xd3, 0x0b, 0x56, 0x03, 0xca, 0x71, 0xb6, 0x8c, 0x1d, 0x5b,
  0x7e, 0xef, 0x95, 0x78, 0xa8, 0xc4, 0x0d, 0x82, 0x91, 0xf5, 0x0c, 0xc1,
  0xaf, 0x1b, 0xe1, 0xc5, 0xfd, 0x6d, 0xe3, 0xab, 0xc4, 0x94, 0x59, 0xa9,
  0x03, 0x71, 0x13, 0x67, 0x11, 0xfe, 0x78, 0xf0, 0x2e, 0x7a, 0xff, 0x66,
  0x1f, 0x13, 0x7a, 0xa6, 0x49, 0xb1, 0x28, 0x30, 0x89, 0x53, 0x69, 0xf8,
  0xe2, 0x5b, 0x67, 0xb0, 0x1d, 0x9b, 0x7d, 0xa1, 0xe0, 0x88, 0xc2, 0xcc,
  0xc4, 0x5e, 0x80, 0x23, 0xc4, 0xc2, 0xe7, 0xa9, 0x36, 0xd8, 0x54, 0x1c,
  0x3f, 0x45, 0xab, 0x22, 0xad, 0xe5, 0xb3, 0x66, 0x52, 0x78, 0x8d, 0x81,
  0xed, 0xef, 0x5a, 0x06, 0x56, 0x3c, 0x2e, 0xb0, 0xb9, 0x4a, 0x36, 0x45,
  0xb3, 0x20, 0x70, 0xa3, 0xf6, 0x99, 0x69, 0x1e, 0xf3, 0xbd, 0x47, 0x1d,
  0xd6, 0x7f, 0x8d, 0xd4, 0x73, 0x72, 0x97, 0x3a, 0xef, 0xed, 0xbb, 0x5e,
  0x85, 0x52, 0x3a, 0xa3, 0x49, 0x4b, 0x0c, 0xd2, 0x50, 0x9c, 0x67, 0x5f,

  0x98, 0x67, 0xd1, 0x6f, 0x94, 0x66, 0x4e, 0x0b, 0xa3, 0x96, 0x37, 0x44,
  0xf9, 0x55, 0x03, 0x41, 0x15, 0x33, 0xd6, 0x77, 0x9c, 0xbd, 0x77, 0x5e,
  0x79, 0x55, 0x77, 0x9a, 0x50, 0x6f, 0x03, 0x43, 0x98, 0xb4, 0x28, 0xea,
  0x5b, 0xeb, 0xb8, 0x59, 0x58, 0x46, 0x5f, 0x36, 0xf3, 0xa0, 0x95, 0x07,
  0x26, 0x2e, 0x82, 0x88, 0x5e, 0x75, 0x26, 0xfd, 0xe3, 0xa3, 0xa8, 0xad,
  0x08, 0x88, 0x68, 0xdd, 0xf9, 0xc8, 0xb6, 0xdc, 0x19, 0xec, 0x7a, 0x3d,
  0xcd, 0xd2, 0x9f, 0x13, 0x27, 0x17, 0x4c, 0xdb, 0x4f, 0x39, 0x8f, 0xef,
  0x08, 0xc3, 0xe0, 0xce, 0xc6, 0xc4, 0x14, 0x31, 0x78, 0x6a, 0x1f, 0xd8,

  0x15, 0xaa, 0xe5, 0xee, 0x71, 0x9c, 0xfb, 0x00, 0xa3, 0x52, 0xe8, 0x3e,
  0xa9, 0xa5, 0xd5, 0xbf, 0xd8, 0x13, 0x9d, 0x4b, 0x75, 0x63, 0x94, 0xbc,
  0xb8, 0x11, 0x33, 0x02, 0x64, 0x6c, 0xb2, 0xe9, 0x17, 0x22, 0xf6, 0xe4,
  0x28, 0x4d, 0x0b, 0x2a, 0xd3, 0xce, 0x0b, 0xff, 0x7a, 0x9f, 0x66, 0x92,
  0xe8, 0xee, 0xbd, 0xfe, 0xa2, 0xc5, 0xfd, 0x58, 0xb2, 0xcc, 0x3c, 0x21,
  0x5a, 0x72, 0x9e, 0x7f, 0x69, 0x6f, 0x82, 0x45, 0xa0, 0xed, 0x5a, 0xdc,
  0xdb, 0xae, 0x8b, 0x59, 0xaa, 0x77, 0x89, 0x5d, 0x28, 0x09, 0xf7, 0x3a,
  0x08, 0x20, 0xcb, 0x4f, 0xcc, 0xe7, 0x67, 0x39, 0x72, 0x53, 0xe7, 0x7b,
  0x4c, 0x52, 0x6f, 0xa9, 0x57, 0x85, 0x35, 0x0e, 0xb2, 0xe8, 0xda, 0x29,
  0x93, 0xb5, 0x4f, 0xbf, 0x12, 0xda, 0x50, 0x79, 0x69, 0x8c, 0xd5, 0xb6,
  0x37, 0x5e, 0x6e, 0xb9, 0xca, 0xea, 0x18, 0xa3, 0xb2, 0x5c, 0xc6, 0xdf,
  0xfa, 0x02, 0x53, 0xc6, 0x29, 0x88, 0x91, 0x29, 0x10, 0x35, 0x3d, 0x63,

  0xd1, 0x0c, 0xed, 0x63, 0x3b, 0x35, 0xa6, 0x7b, 0xed, 0xaa, 0x4f, 0xd1,
  0xe9, 0x1b, 0xe7, 0xc1, 0x5d, 0xbb, 0xc0, 0x78, 0x86, 0xda, 0xc0, 0x23,
  0xfb, 0xa9, 0xca, 0x68, 0x1d, 0xdf, 0x72, 0x30, 0x4b, 0x5e, 0x32, 0x65,
  0x9c, 0xe7, 0x8c, 0xba, 0x45, 0xdb, 0xef, 0x3d, 0xc3, 0xe4, 0x70, 0x7c,
  0x03, 0x52, 0x6d, 0x54, 0x51, 0x4e, 0x68, 0xa6, 0x31, 0xae, 0xe6, 0xd9,
  0xbf, 0x7c, 0xb1, 0xe2, 0x59, 0x11, 0x9a, 0xa5, 0x11, 0xf5, 0xce, 0x7b,
  0x2f, 0xfd, 0x6b, 0xae, 0xe6, 0x80, 0x96, 0x29, 0xc0, 0x55, 0xc3, 0x9b,
  0x16, 0xad, 0x63, 0x79, 0xf4, 0xbf, 0xab, 0x63, 0xb0, 0x40, 0x3c, 0xc1,
  0xf2, 0xdf, 0xdd, 0xf9, 0x7e, 0xee, 0xd6, 0x3a, 0xb0, 0x57, 0xb0, 0x48,
  0x28, 0x4e, 0x30, 0xaa, 0xb5, 0x8b, 0xb0, 0x39, 0x42, 0xb4, 0x3b, 0xce,
  0x08, 0x7c, 0xe6, 0xa0, 0x47, 0x2c, 0x33, 0xcb, 0x39, 0xd8, 0x08, 0x14,

  0x34, 0x82, 0xb1, 0x0b, 0x3d, 0x89, 0x3c, 0x5f, 0x3c, 0x50, 0x8e, 0x0f,
  0x75, 0xab, 0x71, 0x0d, 0xca, 0x9b, 0x25, 0x9b, 0xdc, 0x66, 0x45, 0xd6,
  0xc1, 0xe6, 0xbc, 0xb6, 0x63, 0xb9, 0x17, 0xcd, 0x8d, 0xd4, 0xc6, 0x63,
  0x98, 0x2d, 0xdb, 0xe4, 0xa6, 0x7f, 0x00, 0xd5, 0x4b, 0xdf, 0x17, 0x39,
  0xfe, 0x55, 0x21, 0x42, 0xd6, 0xe3, 0x96, 0xd4, 0x4c, 0x49, 0x22, 0x77,
  0x3e, 0x23, 0xaa, 0x0d, 0xa6, 0x38, 0xc1, 0x29, 0xdd, 0x24, 0xa3, 0x5b,
  0xbd, 0x32, 0x32, 0x88, 0x4d, 0x3d, 0x77, 0xde, 0xda, 0x33, 0x5b, 0x4b,
  0x06, 0xcd, 0xd5, 0x49, 0xd3, 0x0a, 0xb0, 0x8f, 0x32, 0xd5, 0x5c, 0x5d,
  0x0f, 0x2e, 0x0f, 0x70, 0xce, 0x1c, 0x37, 0x84, 0x0b, 0x71, 0x3c, 0x48,
  0xfe, 0x2e, 0x75, 0x66, 0xa5, 0x7d, 0xfa, 0x45, 0xcb, 0xd3, 0x03, 0x71,
  0xec, 0x9d, 0x12, 0x52, 0x33, 0x9c, 0x83, 0xfb, 0x12, 0x13, 0xcd, 0x32,
  0x53, 0xff, 0x3e, 0xfb, 0xbf, 0x70, 0x66, 0xc4, 0x0d, 0x31, 0xb6, 0x6c,
  0x1f, 0xfe, 0xdc, 0xda, 0x34, 0x37, 0xcb, 0xec, 0xd6, 0xe8, 0x8b, 0x82,
  0xa3, 0xa7, 0x07, 0x6c, 0x5f, 0x78, 0xa5, 0x57, 0xc3, 0xf1, 0x83, 0x9a,
  0xbc, 0xa7, 0xae, 0x78, 0x28, 0xc4, 0xed, 0x28, 0x31, 0x4f, 0xe0, 0xaf,
  0x4b, 0x67, 0x0f, 0x5e, 0x6d, 0x19, 0xf1, 0x2b, 0x90, 0x3c, 0xb7, 0xc9,
  0xa3, 0xa5, 0x3a, 0xcd, 0xb1, 0x58, 0xa4, 0x19, 0xba, 0x20, 0xec, 0x23,
  0x76, 0x80, 0xed, 0x9a, 0x10, 0x68, 0xaa, 0x1b, 0x65, 0x15, 0x57, 0x4b,
  0x47, 0xc4, 0xbc, 0x62, 0xda, 0x19, 0x60, 0xd4, 0x71, 0x2e, 0xf4, 0x9a,
  0x66, 0xea, 0x6d, 0x6b, 0xb8, 0xd0, 0xf4, 0xa5, 0x1f, 0x7e, 0x60, 0x39,
  0x92, 0x2b, 0x30, 0x92, 0x84, 0xae, 0x4c, 0xf3, 0x27, 0x60, 0xba, 0xac,
  0x7a, 0xe0, 0x15, 0xa6, 0x78, 0x4f, 0x91, 0x60, 0x7f, 0x4a, 0xc5, 0xbe,
  0xa1, 0xcb, 0x13, 0x8a, 0x9e, 0xe7, 0x99, 0xc4, 0x6c, 0x31, 0x79, 0x93,
  0x5c, 0x9f, 0x0c, 0x36, 0xcd, 0xae, 0x30, 0x98, 0xc1, 0xd1, 0x87, 0xeb,
  0x77, 0x17, 0x57, 0x83, 0x68, 0x13, 0x6b, 0xdb, 0xaf, 0xaf, 0x4e, 0xbf,
  0xfe, 0x70, 0x0d, 0xff, 0xd4, 0x91, 0xde, 0xc4, 0x59, 0x0a, 0xd2, 0x69,
  0x50, 0x25, 0x19, 0xd0, 0xca, 0x54, 0x7b, 0x34, 0x51, 0x0e, 0x0a, 0xca,
  0xe3, 0xbc, 0x50, 0x48, 0x13, 0x4c, 0x47, 0xc9, 0x67, 0x36, 0x99, 0x80,
  0x3d, 0xd8, 0x98, 0xe3, 0x97, 0x5b, 0xcb, 0x39, 0x6d, 0x14, 0xe5, 0x6b,
  0xda, 0x4e, 0x74, 0xfd, 0xee, 0xe8, 0xfc, 0xdb, 0x81, 0x76, 0xf0, 0xf8,
  0xfe, 0xfb, 0xef, 0x9b, 0xc1, 0x5d, 0xd2, 0x61, 0x6f, 0xe2, 0x87, 0x87,
  0x7e, 0x99, 0x7c, 0xf6, 0xd9, 0xe0, 0xe4, 0x24, 0x3a, 0x3a, 0x1b, 0x5c,
  0x7c, 0x66, 0x71, 0x1c, 0xd6, 0xb7, 0x37, 0x40, 0x49, 0x9b, 0x26, 0x15,
  0xfc, 0xe5, 0xb3, 0xcf, 0xfe, 0x3f, 0x9c, 0x42, 0xb5, 0x6c, 0xe8, 0xa0,
  0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
{
  (void) opaque;
  /* not a typo, keep it calloc() */
  return (voidpf) calloc(items, size);
Changes to jni/curl/src/tool_hugehelp.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HUGEHELP_H
#define HEADER_CURL_TOOL_HUGEHELP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_HUGEHELP_H
#define HEADER_CURL_TOOL_HUGEHELP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_libinfo.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_libinfo.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_LIBINFO_H
#define HEADER_CURL_TOOL_LIBINFO_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_LIBINFO_H
#define HEADER_CURL_TOOL_LIBINFO_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_main.c.
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

      if(!result) {
        /* Initialise the config */
        config_init(config->first);
        config->first->global = config;
      }
      else {
        helpf(stderr, "error retrieving curl library information\n");
        free(config->first);
      }
    }
    else {
      helpf(stderr, "error initializing curl library\n");
      free(config->first);
    }
  }
  else {
    helpf(stderr, "error initializing curl\n");
    result = CURLE_FAILED_INIT;
  }

  return result;
}

static void free_globalconfig(struct GlobalConfig *config)







|




|




|







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

      if(!result) {
        /* Initialise the config */
        config_init(config->first);
        config->first->global = config;
      }
      else {
        errorf(config, "error retrieving curl library information\n");
        free(config->first);
      }
    }
    else {
      errorf(config, "error initializing curl library\n");
      free(config->first);
    }
  }
  else {
    errorf(config, "error initializing curl\n");
    result = CURLE_FAILED_INIT;
  }

  return result;
}

static void free_globalconfig(struct GlobalConfig *config)
Changes to jni/curl/src/tool_metalink.c.
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
    free(*(str)); \
    *(str) = NULL; \
  } \
  if((val)) \
    *(str) = strdup((val)); \
  if(!(val)) \
    return PARAM_NO_MEM; \
} WHILE_FALSE

#if defined(USE_OPENSSL)
/* Functions are already defined */
#elif defined(USE_GNUTLS_NETTLE)

static int MD5_Init(MD5_CTX *ctx)
{







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
    free(*(str)); \
    *(str) = NULL; \
  } \
  if((val)) \
    *(str) = strdup((val)); \
  if(!(val)) \
    return PARAM_NO_MEM; \
} while(0)

#if defined(USE_OPENSSL)
/* Functions are already defined */
#elif defined(USE_GNUTLS_NETTLE)

static int MD5_Init(MD5_CTX *ctx)
{
Changes to jni/curl/src/tool_msgs.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
28
29
30
31
32
33
34

35
36
37
38
39
40
41
#include "tool_cfgable.h"
#include "tool_msgs.h"

#include "memdebug.h" /* keep this as LAST include */

#define WARN_PREFIX "Warning: "
#define NOTE_PREFIX "Note: "


static void voutf(struct GlobalConfig *config,
                  const char *prefix,
                  const char *fmt,
                  va_list ap)
{
  size_t width = (79 - strlen(prefix));







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "tool_cfgable.h"
#include "tool_msgs.h"

#include "memdebug.h" /* keep this as LAST include */

#define WARN_PREFIX "Warning: "
#define NOTE_PREFIX "Note: "
#define ERROR_PREFIX "curl: "

static void voutf(struct GlobalConfig *config,
                  const char *prefix,
                  const char *fmt,
                  va_list ap)
{
  size_t width = (79 - strlen(prefix));
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














{
  va_list ap;
  va_start(ap, fmt);
  voutf(config, WARN_PREFIX, fmt, ap);
  va_end(ap);
}
/*
 * Emit help formatted message on given stream.

 */

void helpf(FILE *errors, const char *fmt, ...)
{
  if(fmt) {
    va_list ap;
    va_start(ap, fmt);
    fputs("curl: ", errors); /* prefix it */
    vfprintf(errors, fmt, ap);
    va_end(ap);
  }
  fprintf(errors, "curl: try 'curl --help' "
#ifdef USE_MANUAL
          "or 'curl --manual' "
#endif
          "for more information\n");
}





















|
>

<















>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
{
  va_list ap;
  va_start(ap, fmt);
  voutf(config, WARN_PREFIX, fmt, ap);
  va_end(ap);
}
/*
 * Emit help formatted message on given stream. This is for errors with or
 * related to command line arguments.
 */

void helpf(FILE *errors, const char *fmt, ...)
{
  if(fmt) {
    va_list ap;
    va_start(ap, fmt);
    fputs("curl: ", errors); /* prefix it */
    vfprintf(errors, fmt, ap);
    va_end(ap);
  }
  fprintf(errors, "curl: try 'curl --help' "
#ifdef USE_MANUAL
          "or 'curl --manual' "
#endif
          "for more information\n");
}

/*
 * Emit error message on error stream if not muted. When errors are not tied
 * to command line arguments, use helpf() for such errors.
 */
void errorf(struct GlobalConfig *config, const char *fmt, ...)
{
  if(!config->mute) {
    va_list ap;
    va_start(ap, fmt);
    voutf(config, ERROR_PREFIX, fmt, ap);
    va_end(ap);
  }
}
Changes to jni/curl/src/tool_msgs.h.
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
#ifndef HEADER_CURL_TOOL_MSGS_H
#define HEADER_CURL_TOOL_MSGS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"

void warnf(struct GlobalConfig *config, const char *fmt, ...);
void notef(struct GlobalConfig *config, const char *fmt, ...);

void helpf(FILE *errors, const char *fmt, ...);


#endif /* HEADER_CURL_TOOL_MSGS_H */









|

















<

>


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
#ifndef HEADER_CURL_TOOL_MSGS_H
#define HEADER_CURL_TOOL_MSGS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"

void warnf(struct GlobalConfig *config, const char *fmt, ...);
void notef(struct GlobalConfig *config, const char *fmt, ...);

void helpf(FILE *errors, const char *fmt, ...);
void errorf(struct GlobalConfig *config, const char *fmt, ...);

#endif /* HEADER_CURL_TOOL_MSGS_H */
Changes to jni/curl/src/tool_operate.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
640
641
642
643
644
645
646






647
648
649
650
651
652
653
  /* Close function-local opened file descriptors */
  if(per->heads.fopened && per->heads.stream)
    fclose(per->heads.stream);

  if(per->heads.alloc_filename)
    Curl_safefree(per->heads.filename);







  curl_easy_cleanup(per->curl);
  if(outs->alloc_filename)
    free(outs->filename);
  free(per->this_url);
  free(per->separator_err);
  free(per->separator);
  free(per->outfile);







>
>
>
>
>
>







640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
  /* Close function-local opened file descriptors */
  if(per->heads.fopened && per->heads.stream)
    fclose(per->heads.stream);

  if(per->heads.alloc_filename)
    Curl_safefree(per->heads.filename);

  if(per->etag_save.fopened && per->etag_save.stream)
    fclose(per->etag_save.stream);

  if(per->etag_save.alloc_filename)
    Curl_safefree(per->etag_save.filename);

  curl_easy_cleanup(per->curl);
  if(outs->alloc_filename)
    free(outs->filename);
  free(per->this_url);
  free(per->separator_err);
  free(per->separator);
  free(per->outfile);
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
  if(config->postfields) {
    if(config->use_httpget) {
      if(!httpgetfields) {
        /* Use the postfields data for a http get */
        httpgetfields = state->httpgetfields = strdup(config->postfields);
        Curl_safefree(config->postfields);
        if(!httpgetfields) {
          helpf(global->errors, "out of memory\n");
          result = CURLE_OUT_OF_MEMORY;
        }
        else if(SetHTTPrequest(config,
                               (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                               &config->httpreq)) {
          result = CURLE_FAILED_INIT;
        }
      }
    }
    else {
      if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq))
        result = CURLE_FAILED_INIT;
    }
    if(result)

      return result;

  }
  if(!state->urlnode) {
    /* first time caller, setup things */
    state->urlnode = config->url_list;
    state->infilenum = 1;
  }








|













|
>

>







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
  if(config->postfields) {
    if(config->use_httpget) {
      if(!httpgetfields) {
        /* Use the postfields data for a http get */
        httpgetfields = state->httpgetfields = strdup(config->postfields);
        Curl_safefree(config->postfields);
        if(!httpgetfields) {
          errorf(global, "out of memory\n");
          result = CURLE_OUT_OF_MEMORY;
        }
        else if(SetHTTPrequest(config,
                               (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                               &config->httpreq)) {
          result = CURLE_FAILED_INIT;
        }
      }
    }
    else {
      if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq))
        result = CURLE_FAILED_INIT;
    }
    if(result) {
      single_transfer_cleanup(config);
      return result;
    }
  }
  if(!state->urlnode) {
    /* first time caller, setup things */
    state->urlnode = config->url_list;
    state->infilenum = 1;
  }

758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
      continue; /* next URL please */
    }

    /* save outfile pattern before expansion */
    if(urlnode->outfile && !state->outfiles) {
      state->outfiles = strdup(urlnode->outfile);
      if(!state->outfiles) {
        helpf(global->errors, "out of memory\n");
        result = CURLE_OUT_OF_MEMORY;
        break;
      }
    }

    infiles = urlnode->infile;








|







766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
      continue; /* next URL please */
    }

    /* save outfile pattern before expansion */
    if(urlnode->outfile && !state->outfiles) {
      state->outfiles = strdup(urlnode->outfile);
      if(!state->outfiles) {
        errorf(global, "out of memory\n");
        result = CURLE_OUT_OF_MEMORY;
        break;
      }
    }

    infiles = urlnode->infile;

786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
      if(!state->up && !infiles)
        Curl_nop_stmt;
      else {
        if(!state->uploadfile) {
          if(inglob) {
            result = glob_next_url(&state->uploadfile, inglob);
            if(result == CURLE_OUT_OF_MEMORY)
              helpf(global->errors, "out of memory\n");
          }
          else if(!state->up) {
            state->uploadfile = strdup(infiles);
            if(!state->uploadfile) {
              helpf(global->errors, "out of memory\n");
              result = CURLE_OUT_OF_MEMORY;
            }
          }
        }
        if(result)
          break;
      }







|




|







794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
      if(!state->up && !infiles)
        Curl_nop_stmt;
      else {
        if(!state->uploadfile) {
          if(inglob) {
            result = glob_next_url(&state->uploadfile, inglob);
            if(result == CURLE_OUT_OF_MEMORY)
              errorf(global, "out of memory\n");
          }
          else if(!state->up) {
            state->uploadfile = strdup(infiles);
            if(!state->uploadfile) {
              errorf(global, "out of memory\n");
              result = CURLE_OUT_OF_MEMORY;
            }
          }
        }
        if(result)
          break;
      }
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
      else
        urlnum = state->urlnum;

      /* if multiple files extracted to stdout, insert separators! */
      separator = ((!state->outfiles ||
                    !strcmp(state->outfiles, "-")) && urlnum > 1);

      /* Here's looping around each globbed URL */

      if(state->li >= urlnum) {
        state->li = 0;
        state->up++;
      }
      if(state->up < state->infilenum) {
        struct per_transfer *per;
        struct OutStruct *outs;
        struct InStruct *input;
        struct OutStruct *heads;

        struct HdrCbData *hdrcbdata = NULL;
        CURL *curl = curl_easy_init();
        result = add_per_transfer(&per);
        if(result || !curl) {
          curl_easy_cleanup(curl);
          result = CURLE_OUT_OF_MEMORY;
          break;







<
<
<
<
<
<





>







833
834
835
836
837
838
839






840
841
842
843
844
845
846
847
848
849
850
851
852
      else
        urlnum = state->urlnum;

      /* if multiple files extracted to stdout, insert separators! */
      separator = ((!state->outfiles ||
                    !strcmp(state->outfiles, "-")) && urlnum > 1);







      if(state->up < state->infilenum) {
        struct per_transfer *per;
        struct OutStruct *outs;
        struct InStruct *input;
        struct OutStruct *heads;
        struct OutStruct *etag_save;
        struct HdrCbData *hdrcbdata = NULL;
        CURL *curl = curl_easy_init();
        result = add_per_transfer(&per);
        if(result || !curl) {
          curl_easy_cleanup(curl);
          result = CURLE_OUT_OF_MEMORY;
          break;
884
885
886
887
888
889
890





































































891
892
893
894
895
896
897
          }
          else {
            /* always use binary mode for protocol header output */
            set_binmode(heads->stream);
          }
        }







































































        hdrcbdata = &per->hdrcbdata;

        outs = &per->outs;
        input = &per->input;

        per->outfile = NULL;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
          }
          else {
            /* always use binary mode for protocol header output */
            set_binmode(heads->stream);
          }
        }

        /* --etag-save */
        etag_save = &per->etag_save;
        etag_save->stream = stdout;
        etag_save->config = config;
        if(config->etag_save_file) {
          /* open file for output: */
          if(strcmp(config->etag_save_file, "-")) {
            FILE *newfile = fopen(config->etag_save_file, "wb");
            if(!newfile) {
              warnf(
                config->global,
                "Failed to open %s\n", config->etag_save_file);

              result = CURLE_WRITE_ERROR;
              break;
            }
            else {
              etag_save->filename = config->etag_save_file;
              etag_save->s_isreg = TRUE;
              etag_save->fopened = TRUE;
              etag_save->stream = newfile;
            }
          }
          else {
            /* always use binary mode for protocol header output */
            set_binmode(etag_save->stream);
          }
        }

        /* --etag-compare */
        if(config->etag_compare_file) {
          char *etag_from_file = NULL;
          char *header = NULL;

          /* open file for reading: */
          FILE *file = fopen(config->etag_compare_file, FOPEN_READTEXT);
          if(!file) {
            errorf(config->global,
                   "Failed to open %s\n", config->etag_compare_file);
            result = CURLE_READ_ERROR;
            break;
          }

          if((PARAM_OK == file2string(&etag_from_file, file)) &&
             etag_from_file) {
            header = aprintf("If-None-Match: \"%s\"", etag_from_file);
            Curl_safefree(etag_from_file);
          }
          else
            header = aprintf("If-None-Match: \"\"");

          if(!header) {
            if(file)
              fclose(file);
            errorf(config->global,
                   "Failed to allocate memory for custom etag header\n");
            result = CURLE_OUT_OF_MEMORY;
            break;
          }

          /* add Etag from file to list of custom headers */
          add2list(&config->headers, header);

          Curl_safefree(header);

          if(file) {
            fclose(file);
          }
        }

        hdrcbdata = &per->hdrcbdata;

        outs = &per->outs;
        input = &per->input;

        per->outfile = NULL;
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969

          if(!per->outfile) {
            /* extract the file name from the URL */
            result = get_url_file_name(&per->outfile, per->this_url);
            if(result)
              break;
            if(!*per->outfile && !config->content_disposition) {
              helpf(global->errors, "Remote file name has no length!\n");
              result = CURLE_WRITE_ERROR;
              break;
            }
          }
          else if(state->urls) {
            /* fill '#1' ... '#9' terms from URL pattern */
            char *storefile = per->outfile;







|







1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041

          if(!per->outfile) {
            /* extract the file name from the URL */
            result = get_url_file_name(&per->outfile, per->this_url);
            if(result)
              break;
            if(!*per->outfile && !config->content_disposition) {
              errorf(global, "Remote file name has no length!\n");
              result = CURLE_WRITE_ERROR;
              break;
            }
          }
          else if(state->urls) {
            /* fill '#1' ... '#9' terms from URL pattern */
            char *storefile = per->outfile;
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
            FILE *file = fopen(outfile, "ab",
                               "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
#else
            /* open file for output: */
            FILE *file = fopen(per->outfile, "ab");
#endif
            if(!file) {
              helpf(global->errors, "Can't open '%s'!\n", per->outfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
            outs->fopened = TRUE;
            outs->stream = file;
            outs->init = config->resume_from;
          }







|







1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
            FILE *file = fopen(outfile, "ab",
                               "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
#else
            /* open file for output: */
            FILE *file = fopen(per->outfile, "ab");
#endif
            if(!file) {
              errorf(global, "Can't open '%s'!\n", per->outfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
            outs->fopened = TRUE;
            outs->stream = file;
            outs->init = config->resume_from;
          }
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
        if(per->uploadfile && config->resume_from_current)
          config->resume_from = -1; /* -1 will then force get-it-yourself */

        if(output_expected(per->this_url, per->uploadfile) && outs->stream &&
           isatty(fileno(outs->stream)))
          /* we send the output to a tty, therefore we switch off the progress
             meter */
          global->noprogress = global->isatty = TRUE;
        else {
          /* progress meter is per download, so restore config
             values */
          global->noprogress = orig_noprogress;
          global->isatty = orig_isatty;
        }

        if(urlnum > 1 && !global->mute) {
          per->separator_err =
            aprintf("\n[%lu/%lu]: %s --> %s",
                    state->li + 1, urlnum, per->this_url,







|



|







1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
        if(per->uploadfile && config->resume_from_current)
          config->resume_from = -1; /* -1 will then force get-it-yourself */

        if(output_expected(per->this_url, per->uploadfile) && outs->stream &&
           isatty(fileno(outs->stream)))
          /* we send the output to a tty, therefore we switch off the progress
             meter */
          per->noprogress = global->noprogress = global->isatty = TRUE;
        else {
          /* progress meter is per download, so restore config
             values */
          per->noprogress = global->noprogress = orig_noprogress;
          global->isatty = orig_isatty;
        }

        if(urlnum > 1 && !global->mute) {
          per->separator_err =
            aprintf("\n[%lu/%lu]: %s --> %s",
                    state->li + 1, urlnum, per->this_url,
1281
1282
1283
1284
1285
1286
1287



1288
1289
1290
1291
1292
1293
1294
        case HTTPREQ_SIMPLEPOST:
          my_setopt_str(curl, CURLOPT_POSTFIELDS,
                        config->postfields);
          my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
                    config->postfieldsize);
          break;
        case HTTPREQ_MIMEPOST:



          result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
          if(result)
            break;
          my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
          break;
        default:
          break;







>
>
>







1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
        case HTTPREQ_SIMPLEPOST:
          my_setopt_str(curl, CURLOPT_POSTFIELDS,
                        config->postfields);
          my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
                    config->postfieldsize);
          break;
        case HTTPREQ_MIMEPOST:
          /* free previous remainders */
          curl_mime_free(config->mimepost);
          config->mimepost = NULL;
          result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
          if(result)
            break;
          my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
          break;
        default:
          break;
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537



1538
1539
1540
1541
1542
1543
1544
        if(config->path_as_is)
          my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);

        if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
          if(!config->insecure_ok) {
            char *home;
            char *file;
            result = CURLE_OUT_OF_MEMORY;
            home = homedir();
            if(home) {
              file = aprintf("%s/.ssh/known_hosts", home);
              if(file) {
                /* new in curl 7.19.6 */
                result = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
                curl_free(file);
                if(result == CURLE_UNKNOWN_OPTION)
                  /* libssh2 version older than 1.1.1 */
                  result = CURLE_OK;
              }
              Curl_safefree(home);
            }



            if(result)
              break;
          }
        }

        if(config->no_body || config->remote_time) {
          /* no body or use remote time */







|













>
>
>







1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
        if(config->path_as_is)
          my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);

        if(built_in_protos & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
          if(!config->insecure_ok) {
            char *home;
            char *file;
            result = CURLE_FAILED_INIT;
            home = homedir();
            if(home) {
              file = aprintf("%s/.ssh/known_hosts", home);
              if(file) {
                /* new in curl 7.19.6 */
                result = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
                curl_free(file);
                if(result == CURLE_UNKNOWN_OPTION)
                  /* libssh2 version older than 1.1.1 */
                  result = CURLE_OK;
              }
              Curl_safefree(home);
            }
            else {
              errorf(global, "Failed to figure out user's home dir!");
            }
            if(result)
              break;
          }
        }

        if(config->no_body || config->remote_time) {
          /* no body or use remote time */
1575
1576
1577
1578
1579
1580
1581
1582







1583
1584
1585
1586
1587
1588
1589
        progressbarinit(&per->progressbar, config);

        if((global->progressmode == CURL_PROGRESS_BAR) &&
           !global->noprogress && !global->mute) {
          /* we want the alternative style, then we have to implement it
             ourselves! */
          my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
          my_setopt(curl, CURLOPT_XFERINFODATA, &per->progressbar);







        }

        /* new in libcurl 7.24.0: */
        if(config->dns_servers)
          my_setopt_str(curl, CURLOPT_DNS_SERVERS, config->dns_servers);

        /* new in libcurl 7.33.0: */







|
>
>
>
>
>
>
>







1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
        progressbarinit(&per->progressbar, config);

        if((global->progressmode == CURL_PROGRESS_BAR) &&
           !global->noprogress && !global->mute) {
          /* we want the alternative style, then we have to implement it
             ourselves! */
          my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
          my_setopt(curl, CURLOPT_XFERINFODATA, per);
        }
        else if(per->uploadfile && !strcmp(per->uploadfile, ".")) {
          /* when reading from stdin in non-blocking mode, we use the progress
             function to unpause a busy read */
          my_setopt(curl, CURLOPT_NOPROGRESS, 0L);
          my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_readbusy_cb);
          my_setopt(curl, CURLOPT_XFERINFODATA, per);
        }

        /* new in libcurl 7.24.0: */
        if(config->dns_servers)
          my_setopt_str(curl, CURLOPT_DNS_SERVERS, config->dns_servers);

        /* new in libcurl 7.33.0: */
1764
1765
1766
1767
1768
1769
1770

1771
1772
1773
1774
1775
1776
1777
           && (urlnode->flags & GETOUT_USEREMOTE))
          hdrcbdata->honor_cd_filename = TRUE;
        else
          hdrcbdata->honor_cd_filename = FALSE;

        hdrcbdata->outs = outs;
        hdrcbdata->heads = heads;

        hdrcbdata->global = global;
        hdrcbdata->config = config;

        my_setopt(curl, CURLOPT_HEADERFUNCTION, tool_header_cb);
        my_setopt(curl, CURLOPT_HEADERDATA, per);

        if(config->resolve)







>







1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
           && (urlnode->flags & GETOUT_USEREMOTE))
          hdrcbdata->honor_cd_filename = TRUE;
        else
          hdrcbdata->honor_cd_filename = FALSE;

        hdrcbdata->outs = outs;
        hdrcbdata->heads = heads;
        hdrcbdata->etag_save = etag_save;
        hdrcbdata->global = global;
        hdrcbdata->config = config;

        my_setopt(curl, CURLOPT_HEADERFUNCTION, tool_header_cb);
        my_setopt(curl, CURLOPT_HEADERDATA, per);

        if(config->resolve)
1904
1905
1906
1907
1908
1909
1910









1911
1912
1913
1914
1915
1916
1917
        per->retry_sleep_default = (config->retry_delay) ?
          config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
        per->retry_numretries = config->req_retry;
        per->retry_sleep = per->retry_sleep_default; /* ms */
        per->retrystart = tvnow();

        state->li++;









      }
      else {
        /* Free this URL node data without destroying the
           the node itself nor modifying next pointer. */
        Curl_safefree(urlnode->outfile);
        Curl_safefree(urlnode->infile);
        urlnode->flags = 0;







>
>
>
>
>
>
>
>
>







1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
        per->retry_sleep_default = (config->retry_delay) ?
          config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
        per->retry_numretries = config->req_retry;
        per->retry_sleep = per->retry_sleep_default; /* ms */
        per->retrystart = tvnow();

        state->li++;
        /* Here's looping around each globbed URL */
        if(state->li >= urlnum) {
          state->li = 0;
          state->urlnum = 0; /* forced reglob of URLs */
          glob_cleanup(state->urls);
          state->urls = NULL;
          state->up++;
          Curl_safefree(state->uploadfile); /* clear it to get the next */
        }
      }
      else {
        /* Free this URL node data without destroying the
           the node itself nor modifying next pointer. */
        Curl_safefree(urlnode->outfile);
        Curl_safefree(urlnode->infile);
        urlnode->flags = 0;
1969
1970
1971
1972
1973
1974
1975




1976
1977
1978
1979
1980
1981
1982
      /* already added */
      continue;

    result = pre_transfer(global, per);
    if(result)
      break;





    (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);

    mcode = curl_multi_add_handle(multi, per->curl);
    if(mcode)
      return CURLE_OUT_OF_MEMORY;







>
>
>
>







2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
      /* already added */
      continue;

    result = pre_transfer(global, per);
    if(result)
      break;

    /* parallel connect means that we don't set PIPEWAIT since pipewait
       will make libcurl prefer multiplexing */
    (void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
                           global->parallel_connect ? 0L : 1L);
    (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);

    mcode = curl_multi_add_handle(multi, per->curl);
    if(mcode)
      return CURLE_OUT_OF_MEMORY;
2005
2006
2007
2008
2009
2010
2011
2012

2013

2014
2015
2016
2017
2018
2019
2020

  multi = curl_multi_init();
  if(!multi)
    return CURLE_OUT_OF_MEMORY;

  result = add_parallel_transfers(global, multi, share,
                                  &more_transfers, &added_transfers);
  if(result)

    return result;


  while(!mcode && (still_running || more_transfers)) {
    mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
    if(!mcode)
      mcode = curl_multi_perform(multi, &still_running);

    progress_meter(global, &start, FALSE);







|
>

>







2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121

  multi = curl_multi_init();
  if(!multi)
    return CURLE_OUT_OF_MEMORY;

  result = add_parallel_transfers(global, multi, share,
                                  &more_transfers, &added_transfers);
  if(result) {
    curl_multi_cleanup(multi);
    return result;
  }

  while(!mcode && (still_running || more_transfers)) {
    mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
    if(!mcode)
      mcode = curl_multi_perform(multi, &still_running);

    progress_meter(global, &start, FALSE);
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
    if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
      char *env;
      env = curlx_getenv("CURL_CA_BUNDLE");
      if(env) {
        config->cacert = strdup(env);
        if(!config->cacert) {
          curl_free(env);
          helpf(global->errors, "out of memory\n");
          return CURLE_OUT_OF_MEMORY;
        }
      }
      else {
        env = curlx_getenv("SSL_CERT_DIR");
        if(env) {
          config->capath = strdup(env);
          if(!config->capath) {
            curl_free(env);
            helpf(global->errors, "out of memory\n");
            return CURLE_OUT_OF_MEMORY;
          }
          capath_from_env = true;
        }
        else {
          env = curlx_getenv("SSL_CERT_FILE");
          if(env) {
            config->cacert = strdup(env);
            if(!config->cacert) {
              curl_free(env);
              helpf(global->errors, "out of memory\n");
              return CURLE_OUT_OF_MEMORY;
            }
          }
        }
      }

      if(env)







|




















|







2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
    if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
      char *env;
      env = curlx_getenv("CURL_CA_BUNDLE");
      if(env) {
        config->cacert = strdup(env);
        if(!config->cacert) {
          curl_free(env);
          errorf(global, "out of memory\n");
          return CURLE_OUT_OF_MEMORY;
        }
      }
      else {
        env = curlx_getenv("SSL_CERT_DIR");
        if(env) {
          config->capath = strdup(env);
          if(!config->capath) {
            curl_free(env);
            helpf(global->errors, "out of memory\n");
            return CURLE_OUT_OF_MEMORY;
          }
          capath_from_env = true;
        }
        else {
          env = curlx_getenv("SSL_CERT_FILE");
          if(env) {
            config->cacert = strdup(env);
            if(!config->cacert) {
              curl_free(env);
              errorf(global, "out of memory\n");
              return CURLE_OUT_OF_MEMORY;
            }
          }
        }
      }

      if(env)
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409

          /* Dump the libcurl code if previously enabled */
          dumpeasysrc(global);
        }
#endif
      }
      else
        helpf(global->errors, "out of memory\n");
    }
  }

  return result;
}







|





2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510

          /* Dump the libcurl code if previously enabled */
          dumpeasysrc(global);
        }
#endif
      }
      else
        errorf(global, "out of memory\n");
    }
  }

  return result;
}
Changes to jni/curl/src/tool_operate.h.
40
41
42
43
44
45
46

47
48
49

50
51
52
53
54
55
56
  bool metalink_next_res;
  metalinkfile *mlfile;
  metalink_resource *mlres;
  char *this_url;
  char *outfile;
  bool infdopen; /* TRUE if infd needs closing */
  int infd;

  struct ProgressData progressbar;
  struct OutStruct outs;
  struct OutStruct heads;

  struct InStruct input;
  struct HdrCbData hdrcbdata;
  char errorbuffer[CURL_ERROR_SIZE];

  bool added; /* set TRUE when added to the multi handle */

  /* for parallel progress bar */







>



>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  bool metalink_next_res;
  metalinkfile *mlfile;
  metalink_resource *mlres;
  char *this_url;
  char *outfile;
  bool infdopen; /* TRUE if infd needs closing */
  int infd;
  bool noprogress;
  struct ProgressData progressbar;
  struct OutStruct outs;
  struct OutStruct heads;
  struct OutStruct etag_save;
  struct InStruct input;
  struct HdrCbData hdrcbdata;
  char errorbuffer[CURL_ERROR_SIZE];

  bool added; /* set TRUE when added to the multi handle */

  /* for parallel progress bar */
Changes to jni/curl/src/tool_operhlp.c.
111
112
113
114
115
116
117
118
119
120
121

122
123
124
125
126

127


128
129
130
131
132
133
134
        /* there is a trailing slash on the URL */
        urlbuffer = aprintf("%s%s", url, encfile);
      else
        /* there is no trailing slash on the URL */
        urlbuffer = aprintf("%s/%s", url, encfile);

      curl_free(encfile);
      Curl_safefree(url);

      if(!urlbuffer)
        return NULL;


      url = urlbuffer; /* use our new URL instead! */
    }
    else
      Curl_safefree(url);

  }


  curl_easy_cleanup(curl);
  return url;
}

/* Extracts the name portion of the URL.
 * Returns a pointer to a heap-allocated string or NULL if
 * no name part, at location indicated by first argument.







<

|
|
>
|
<
|
<

>
|
>
>







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
        /* there is a trailing slash on the URL */
        urlbuffer = aprintf("%s%s", url, encfile);
      else
        /* there is no trailing slash on the URL */
        urlbuffer = aprintf("%s/%s", url, encfile);

      curl_free(encfile);


      if(!urlbuffer) {
        url = NULL;
        goto end;
      }



      Curl_safefree(url);
      url = urlbuffer; /* use our new URL instead! */
    }
  }
  end:
  curl_easy_cleanup(curl);
  return url;
}

/* Extracts the name portion of the URL.
 * Returns a pointer to a heap-allocated string or NULL if
 * no name part, at location indicated by first argument.
Changes to jni/curl/src/tool_panykey.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_panykey.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_PANYKEY_H
#define HEADER_CURL_TOOL_PANYKEY_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_PANYKEY_H
#define HEADER_CURL_TOOL_PANYKEY_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_paramhlp.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  char *string = NULL;
  if(file) {
    char *ptr;
    size_t alloc = 512;
    size_t alloc_needed;
    char buffer[256];
    size_t stringlen = 0;
    string = malloc(alloc);
    if(!string)
      return PARAM_NO_MEM;

    while(fgets(buffer, sizeof(buffer), file)) {
      size_t buflen;
      ptr = strchr(buffer, '\r');
      if(ptr)







|







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  char *string = NULL;
  if(file) {
    char *ptr;
    size_t alloc = 512;
    size_t alloc_needed;
    char buffer[256];
    size_t stringlen = 0;
    string = calloc(1, alloc);
    if(!string)
      return PARAM_NO_MEM;

    while(fgets(buffer, sizeof(buffer), file)) {
      size_t buflen;
      ptr = strchr(buffer, '\r');
      if(ptr)
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570

  warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
        str);

  return CURLFTPSSL_CCC_PASSIVE;
}

long delegation(struct OperationConfig *config, char *str)
{
  if(curl_strequal("none", str))
    return CURLGSSAPI_DELEGATION_NONE;
  if(curl_strequal("policy", str))
    return CURLGSSAPI_DELEGATION_POLICY_FLAG;
  if(curl_strequal("always", str))
    return CURLGSSAPI_DELEGATION_FLAG;







|







556
557
558
559
560
561
562
563
564
565
566
567
568
569
570

  warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
        str);

  return CURLFTPSSL_CCC_PASSIVE;
}

long delegation(struct OperationConfig *config, const char *str)
{
  if(curl_strequal("none", str))
    return CURLGSSAPI_DELEGATION_NONE;
  if(curl_strequal("policy", str))
    return CURLGSSAPI_DELEGATION_POLICY_FLAG;
  if(curl_strequal("always", str))
    return CURLGSSAPI_DELEGATION_FLAG;
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
      return result;
  }

  /* Check we have a user agent */
  if(!config->useragent) {
    config->useragent = my_useragent();
    if(!config->useragent) {
      helpf(config->global->errors, "out of memory\n");
      result = CURLE_OUT_OF_MEMORY;
    }
  }

  return result;
}








|







602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
      return result;
  }

  /* Check we have a user agent */
  if(!config->useragent) {
    config->useragent = my_useragent();
    if(!config->useragent) {
      errorf(config->global, "out of memory\n");
      result = CURLE_OUT_OF_MEMORY;
    }
  }

  return result;
}

Changes to jni/curl/src/tool_paramhlp.h.
46
47
48
49
50
51
52
53
54
55
56
57

ParameterError add2list(struct curl_slist **list, const char *ptr);

int ftpfilemethod(struct OperationConfig *config, const char *str);

int ftpcccmethod(struct OperationConfig *config, const char *str);

long delegation(struct OperationConfig *config, char *str);

ParameterError str2tls_max(long *val, const char *str);

#endif /* HEADER_CURL_TOOL_PARAMHLP_H */







|




46
47
48
49
50
51
52
53
54
55
56
57

ParameterError add2list(struct curl_slist **list, const char *ptr);

int ftpfilemethod(struct OperationConfig *config, const char *str);

int ftpcccmethod(struct OperationConfig *config, const char *str);

long delegation(struct OperationConfig *config, const char *str);

ParameterError str2tls_max(long *val, const char *str);

#endif /* HEADER_CURL_TOOL_PARAMHLP_H */
Changes to jni/curl/src/tool_parsecfg.c.
93
94
95
96
97
98
99


100
101
102
103
104
105
106
      filename = pathalloc;
    }
#else /* Windows */
    if(home) {
      int i = 0;
      char prefix = '.';
      do {


        /* check for .curlrc then _curlrc in the home dir */
        pathalloc = curl_maprintf("%s%s%ccurlrc", home, DIR_CHAR, prefix);
        if(!pathalloc) {
          free(home);
          return 1; /* out of memory */
        }








>
>







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
      filename = pathalloc;
    }
#else /* Windows */
    if(home) {
      int i = 0;
      char prefix = '.';
      do {
        /* if it was allocated in a previous attempt */
        curl_free(pathalloc);
        /* check for .curlrc then _curlrc in the home dir */
        pathalloc = curl_maprintf("%s%s%ccurlrc", home, DIR_CHAR, prefix);
        if(!pathalloc) {
          free(home);
          return 1; /* out of memory */
        }

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    }
    if(file != stdin)
      fclose(file);
  }
  else
    rc = 1; /* couldn't open the file */

  free(pathalloc);
  return rc;
}

/*
 * Copies the string from line to the buffer at param, unquoting
 * backslash-quoted characters and NUL-terminating the output string.
 * Stops at the first non-backslash-quoted double quote character or the







|







283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
    }
    if(file != stdin)
      fclose(file);
  }
  else
    rc = 1; /* couldn't open the file */

  curl_free(pathalloc);
  return rc;
}

/*
 * Copies the string from line to the buffer at param, unquoting
 * backslash-quoted characters and NUL-terminating the output string.
 * Stops at the first non-backslash-quoted double quote character or the
Changes to jni/curl/src/tool_parsecfg.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_PARSECFG_H
#define HEADER_CURL_TOOL_PARSECFG_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_PARSECFG_H
#define HEADER_CURL_TOOL_PARSECFG_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_progress.c.
91
92
93
94
95
96
97


98
99
100
101






102
103
104
105
106
107
108
int xferinfo_cb(void *clientp,
                curl_off_t dltotal,
                curl_off_t dlnow,
                curl_off_t ultotal,
                curl_off_t ulnow)
{
  struct per_transfer *per = clientp;


  per->dltotal = dltotal;
  per->dlnow = dlnow;
  per->ultotal = ultotal;
  per->ulnow = ulnow;






  return 0;
}

/* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
   byte) */
static void time2str(char *r, curl_off_t seconds)
{







>
>




>
>
>
>
>
>







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
int xferinfo_cb(void *clientp,
                curl_off_t dltotal,
                curl_off_t dlnow,
                curl_off_t ultotal,
                curl_off_t ulnow)
{
  struct per_transfer *per = clientp;
  struct OutStruct *outs = &per->outs;
  struct OperationConfig *config = outs->config;
  per->dltotal = dltotal;
  per->dlnow = dlnow;
  per->ultotal = ultotal;
  per->ulnow = ulnow;

  if(config->readbusy) {
    config->readbusy = FALSE;
    curl_easy_pause(per->curl, CURLPAUSE_CONT);
  }

  return 0;
}

/* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
   byte) */
static void time2str(char *r, curl_off_t seconds)
{
Changes to jni/curl/src/tool_sdecls.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SDECLS_H
#define HEADER_CURL_TOOL_SDECLS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SDECLS_H
#define HEADER_CURL_TOOL_SDECLS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_setopt.c.
120
121
122
123
124
125
126

127
128
129
130
131
132
133
  NV(CURLUSESSL_ALL),
  NVEND,
};

const NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
  NV(CURLSSLOPT_ALLOW_BEAST),
  NV(CURLSSLOPT_NO_REVOKE),

  NVEND,
};

const NameValue setopt_nv_CURL_NETRC[] = {
  NV(CURL_NETRC_IGNORED),
  NV(CURL_NETRC_OPTIONAL),
  NV(CURL_NETRC_REQUIRED),







>







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  NV(CURLUSESSL_ALL),
  NVEND,
};

const NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
  NV(CURLSSLOPT_ALLOW_BEAST),
  NV(CURLSSLOPT_NO_REVOKE),
  NV(CURLSSLOPT_NO_PARTIALCHAIN),
  NVEND,
};

const NameValue setopt_nv_CURL_NETRC[] = {
  NV(CURL_NETRC_IGNORED),
  NV(CURL_NETRC_OPTIONAL),
  NV(CURL_NETRC_REQUIRED),
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
};

/* Format and add code; jump to nomem on malloc error */
#define ADD(args) do { \
  ret = easysrc_add args; \
  if(ret) \
    goto nomem; \
} WHILE_FALSE
#define ADDF(args) do { \
  ret = easysrc_addf args; \
  if(ret) \
    goto nomem; \
} WHILE_FALSE
#define NULL_CHECK(p) do { \
  if(!p) { \
    ret = CURLE_OUT_OF_MEMORY; \
    goto nomem; \
  } \
} WHILE_FALSE

#define DECL0(s) ADD((&easysrc_decl, s))
#define DECL1(f,a) ADDF((&easysrc_decl, f,a))

#define DATA0(s) ADD((&easysrc_data, s))
#define DATA1(f,a) ADDF((&easysrc_data, f,a))
#define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b))







|




|





|







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
};

/* Format and add code; jump to nomem on malloc error */
#define ADD(args) do { \
  ret = easysrc_add args; \
  if(ret) \
    goto nomem; \
} while(0)
#define ADDF(args) do { \
  ret = easysrc_addf args; \
  if(ret) \
    goto nomem; \
} while(0)
#define NULL_CHECK(p) do { \
  if(!p) { \
    ret = CURLE_OUT_OF_MEMORY; \
    goto nomem; \
  } \
} while(0)

#define DECL0(s) ADD((&easysrc_decl, s))
#define DECL1(f,a) ADDF((&easysrc_decl, f,a))

#define DATA0(s) ADD((&easysrc_data, s))
#define DATA1(f,a) ADDF((&easysrc_data, f,a))
#define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b))
Changes to jni/curl/src/tool_setopt.h.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

#define SETOPT_CHECK(v,opt) do {                \
    if(!tool_setopt_skip(opt)) {                \
      result = (v);                             \
      if(result)                                \
        break;                                  \
    }                                           \
  } WHILE_FALSE

/* allow removed features to simulate success: */
bool tool_setopt_skip(CURLoption tag);

#ifndef CURL_DISABLE_LIBCURL_OPTION

/* Associate symbolic names with option values */







|







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

#define SETOPT_CHECK(v,opt) do {                \
    if(!tool_setopt_skip(opt)) {                \
      result = (v);                             \
      if(result)                                \
        break;                                  \
    }                                           \
  } while(0)

/* allow removed features to simulate success: */
bool tool_setopt_skip(CURLoption tag);

#ifndef CURL_DISABLE_LIBCURL_OPTION

/* Associate symbolic names with option values */
Changes to jni/curl/src/tool_setup.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SETUP_H
#define HEADER_CURL_TOOL_SETUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SETUP_H
#define HEADER_CURL_TOOL_SETUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_sleep.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_sleep.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SLEEP_H
#define HEADER_CURL_TOOL_SLEEP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_SLEEP_H
#define HEADER_CURL_TOOL_SLEEP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_strdup.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_TOOL_STRDUP_H
#define HEADER_TOOL_STRDUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_TOOL_STRDUP_H
#define HEADER_TOOL_STRDUP_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_urlglob.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_URLGLOB_H
#define HEADER_CURL_TOOL_URLGLOB_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_URLGLOB_H
#define HEADER_CURL_TOOL_URLGLOB_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_util.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_util.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_UTIL_H
#define HEADER_CURL_TOOL_UTIL_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_UTIL_H
#define HEADER_CURL_TOOL_UTIL_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_version.h.
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
#ifndef HEADER_CURL_TOOL_VERSION_H
#define HEADER_CURL_TOOL_VERSION_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.67.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */









|

















|






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
#ifndef HEADER_CURL_TOOL_VERSION_H
#define HEADER_CURL_TOOL_VERSION_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.68.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */
Changes to jni/curl/src/tool_vms.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_vms.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_VMS_H
#define HEADER_CURL_TOOL_VMS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_VMS_H
#define HEADER_CURL_TOOL_VMS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_writeout.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_WRITEOUT_H
#define HEADER_CURL_TOOL_WRITEOUT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_WRITEOUT_H
#define HEADER_CURL_TOOL_WRITEOUT_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/src/tool_xattr.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_XATTR_H
#define HEADER_CURL_TOOL_XATTR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_TOOL_XATTR_H
#define HEADER_CURL_TOOL_XATTR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/Makefile.am.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
 getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl           \
 valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
 serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl      \
 CMakeLists.txt mem-include-scan.pl valgrind.supp extern-scan.pl              \
 manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
 negtelnetserver.py $(SMBDEPS) objnames-test08.sh objnames-test10.sh          \
 objnames.inc disable-scan.pl manpage-syntax.pl

DISTCLEANFILES = configurehelp.pm

# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
# added twice as then targets such as 'distclean' misbehave and try to
# do things twice in that subdir at times (and thus fails).
if BUILD_UNITTESTS







|







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
 getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl           \
 valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
 serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl      \
 CMakeLists.txt mem-include-scan.pl valgrind.supp extern-scan.pl              \
 manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
 negtelnetserver.py $(SMBDEPS) objnames-test08.sh objnames-test10.sh          \
 objnames.inc disable-scan.pl manpage-syntax.pl error-codes.pl

DISTCLEANFILES = configurehelp.pm

# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
# added twice as then targets such as 'distclean' misbehave and try to
# do things twice in that subdir at times (and thus fails).
if BUILD_UNITTESTS
Changes to jni/curl/tests/Makefile.in.
338
339
340
341
342
343
344

345
346
347
348
349
350
351
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
 getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl           \
 valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
 serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl      \
 CMakeLists.txt mem-include-scan.pl valgrind.supp extern-scan.pl              \
 manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
 negtelnetserver.py $(SMBDEPS) objnames-test08.sh objnames-test10.sh          \
 objnames.inc disable-scan.pl manpage-syntax.pl

DISTCLEANFILES = configurehelp.pm
@BUILD_UNITTESTS_FALSE@BUILD_UNIT = 

# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
# added twice as then targets such as 'distclean' misbehave and try to
# do things twice in that subdir at times (and thus fails).







|







435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
 getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl           \
 valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 \
 serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl      \
 CMakeLists.txt mem-include-scan.pl valgrind.supp extern-scan.pl              \
 manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
 negtelnetserver.py $(SMBDEPS) objnames-test08.sh objnames-test10.sh          \
 objnames.inc disable-scan.pl manpage-syntax.pl error-codes.pl

DISTCLEANFILES = configurehelp.pm
@BUILD_UNITTESTS_FALSE@BUILD_UNIT = 

# we have two variables here to make sure DIST_SUBDIRS won't get 'unit'
# added twice as then targets such as 'distclean' misbehave and try to
# do things twice in that subdir at times (and thus fails).
Changes to jni/curl/tests/certs/Makefile.in.
317
318
319
320
321
322
323

324
325
326
327
328
329
330
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/tests/certs/scripts/Makefile.in.
257
258
259
260
261
262
263

264
265
266
267
268
269
270
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
Changes to jni/curl/tests/data/Makefile.in.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
279
280
281
282
283
284
285

286
287
288
289
290
291
292
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409


410
411
412
413
414
415
416
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \


\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
        test537 test538 test539 test540 test541 test542 test543 test544 \
test545 test546 test547 test548 test549 test550 test551 test552 test553 \







|
|
<





>
>







396
397
398
399
400
401
402
403
404

405
406
407
408
409
410
411
412
413
414
415
416
417
418
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 \

test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \
\
test490 test491 test492 \
\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
        test537 test538 test539 test540 test541 test542 test543 test544 \
test545 test546 test547 test548 test549 test550 test551 test552 test553 \
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
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
test1268 test1269 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 \
test1298 test1299 \
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \







|










|


|







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
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 test1175 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
test1268 test1269 test1270 test1271 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 \
test1298 test1299 \
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \







|







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
Changes to jni/curl/tests/data/Makefile.inc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


68
69
70
71
72
73
74
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \


\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
        test537 test538 test539 test540 test541 test542 test543 test544 \
test545 test546 test547 test548 test549 test550 test551 test552 test553 \







|
|
<





>
>







53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 test339 test340 test341 test342 \
test343 \

test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \
\
test490 test491 test492 \
\
test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
        test537 test538 test539 test540 test541 test542 test543 test544 \
test545 test546 test547 test548 test549 test550 test551 test552 test553 \
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
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
test1268 test1269 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 \
test1298 test1299 \
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \







|










|


|







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
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 test1175 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
test1268 test1269 test1270 test1271 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 test1293 \
test1298 test1299 \
test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \







|







174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
Changes to jni/curl/tests/data/test1008.
82
83
84
85
86
87
88

89
90
91
92
93
94
95
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
 </name>







>







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
 </name>
Changes to jni/curl/tests/data/test1021.
87
88
89
90
91
92
93

94
95
96
97
98
99
100
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
 </name>







>







87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
 </name>
Changes to jni/curl/tests/data/test1097.
41
42
43
44
45
46
47

48
49
50
51
52
53
54
# Client-side
<client>
<server>
https
</server>
<features>
NTLM

!SSPI
</features>
 <name>
HTTP POST using CONNECT with --proxy-ntlm but no auth is required
 </name>
 <command>
http://test.a.galaxy.far.far.away.1097:%HTTPPORT/1097 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -d "dummy=value" -p







>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Client-side
<client>
<server>
https
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
HTTP POST using CONNECT with --proxy-ntlm but no auth is required
 </name>
 <command>
http://test.a.galaxy.far.far.away.1097:%HTTPPORT/1097 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -d "dummy=value" -p
Changes to jni/curl/tests/data/test1100.
59
60
61
62
63
64
65

66
67
68
69
70
71
72

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test1135.
88
89
90
91
92
93
94

95
96
97
98
99
100
101
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
CURL_EXTERN CURLM *curl_multi_init(void);
CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,

CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,







>







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
CURL_EXTERN CURLM *curl_multi_init(void);
CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);
CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
Added jni/curl/tests/data/test1175.


















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
source analysis
symbols-in-versions
</keywords>
</info>

#
# Client-side
<client>
<server>
none
</server>

 <name>
Verify that symbols-in-versions and libcurl-errors.3 are in sync
 </name>

<command type="perl">
%SRCDIR/error-codes.pl %SRCDIR
</command>
</client>

</testcase>
Changes to jni/curl/tests/data/test1215.
54
55
56
57
58
59
60

61
62
63
64
65
66
67

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
proxy
</features>
<server>
http
</server>







>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
<server>
http
</server>
Added jni/curl/tests/data/test1270.










































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
redirect_url
followlocation
--write-out
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 Captive Portal
Server: ohlala/2000
Date: Tue, 17 Dec 2019 13:08:30 GMT
Cache-Control: no-cache,no-store,must-revalidate,post-check=0,pre-check=0
Location: https://moo.moo.moo
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=604800
Content-Length: 0
Connection: close

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
Basic 'redirect_url'
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1270 -w '%{redirect_url}\n' -s
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/want/our/1270 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>

<stdout>
HTTP/1.1 302 Captive Portal
Server: ohlala/2000
Date: Tue, 17 Dec 2019 13:08:30 GMT
Cache-Control: no-cache,no-store,must-revalidate,post-check=0,pre-check=0
Location: https://moo.moo.moo
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=604800
Content-Length: 0
Connection: close

https://moo.moo.moo/
</stdout>
</verify>
</testcase>
Added jni/curl/tests/data/test1271.
































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--write-out
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 This is a weirdo text message swsclose
Content-Length: 4
Connection: close

Moo
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
--write-out from file with empty file
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/our/1271 -w @log/blank1271
</command>
<file name="log/blank1271">
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/want/our/1271 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test1293.






































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
-F
</keywords>
</info>

#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Multipart formpost to two URLs, the first failing
 </name>
 <command>
http://0 http://%HOSTIP:%HTTPPORT/1293 -F=
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<strippart>
s/^--------------------------[a-z0-9]*/------------------------------/
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
</strippart>
<protocol>
POST /1293 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Content-Length: 126
Content-Type: multipart/form-data; boundary=----------------------------

------------------------------
Content-Disposition: form-data


--------------------------------
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1330.
41
42
43
44
45
46
47

48
49
50
51
MEM unit1330.c: free()
</file>
<stripfile>
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM )(.*/)(.*):$1$3:

</stripfile>
</verify>

</testcase>







>




41
42
43
44
45
46
47
48
49
50
51
52
MEM unit1330.c: free()
</file>
<stripfile>
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM )(.*/)(.*):$1$3:
s/\r\n/\n/
</stripfile>
</verify>

</testcase>
Changes to jni/curl/tests/data/test1448.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Redirect following to UTF-8 IDN host name







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Redirect following to UTF-8 IDN host name
Changes to jni/curl/tests/data/test1455.
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
<server>
http
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<strippart>
s/^PROXY TCP4 %CLIENTIP %HOSTIP (\d*) %HTTPPORT/proxy-line/
</strippart>
<protocol>
proxy-line
GET /1455 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*


</protocol>
</verify>
</testcase>







|




















>




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
<server>
http
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol -H "Testno: 1455"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<strippart>
s/^PROXY TCP4 %CLIENTIP %HOSTIP (\d*) %HTTPPORT/proxy-line/
</strippart>
<protocol>
proxy-line
GET /1455 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Testno: 1455

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1456.
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
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1456" --local-port 44444 --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:
</strip>






<protocol>
PROXY TCP6 ::1 ::1 44444 %HTTP6PORT
GET /1456 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Accept: */*

</protocol>
</verify>
</testcase>







|












>
>
>
>
>
>

|







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
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1456" --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:
</strip>

# Strip off the (random) local port number. This test used to use a fixed
# local port number that frequently causes the test to fail
<strippart>
s/PROXY TCP6 ::1 ::1 (\d+) (\d+)/PROXY TCP6 ::1 ::1 $2/
</strippart>
<protocol>
PROXY TCP6 ::1 ::1 %HTTP6PORT
GET /1456 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test150.
53
54
55
56
57
58
59

60
61
62
63
64
65
66

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test1538.
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
e88: Chunk callback failed
e89: The max connection limit is reached
e90: SSL public key does not match pinned public key
e91: SSL server certificate status verification FAILED
e92: Stream error in the HTTP/2 framing layer
e93: API function called from within callback
e94: An authentication function returned an error

e95: Unknown error
m-1: Please call curl_multi_perform() soon
m0: No error
m1: Invalid multi handle
m2: Invalid easy handle
m3: Out of memory
m4: Internal error
m5: Invalid socket argument
m6: Unknown option
m7: The easy handle is already added to a multi handle
m8: API function called from within callback

m9: Unknown error
s0: No error
s1: Unknown share option
s2: Share currently in use
s3: Invalid share handle
s4: Out of memory
s5: Feature not enabled in this library
s6: CURLSHcode unknown







>
|










>
|







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
e88: Chunk callback failed
e89: The max connection limit is reached
e90: SSL public key does not match pinned public key
e91: SSL server certificate status verification FAILED
e92: Stream error in the HTTP/2 framing layer
e93: API function called from within callback
e94: An authentication function returned an error
e95: HTTP/3 error
e96: Unknown error
m-1: Please call curl_multi_perform() soon
m0: No error
m1: Invalid multi handle
m2: Invalid easy handle
m3: Out of memory
m4: Internal error
m5: Invalid socket argument
m6: Unknown option
m7: The easy handle is already added to a multi handle
m8: API function called from within callback
m9: Wakeup is unavailable or failed
m10: Unknown error
s0: No error
s1: Unknown share option
s2: Share currently in use
s3: Invalid share handle
s4: Out of memory
s5: Feature not enabled in this library
s6: CURLSHcode unknown
Changes to jni/curl/tests/data/test155.
72
73
74
75
76
77
78

79
80
81
82
83
84
85

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test1554.
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
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock


run 1: foobar and so on fun!


-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
run 1: foobar and so on fun!


-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
</datacheck>








>
>

>
>









>
>







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
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
run 1: foobar and so on fun!
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
run 1: foobar and so on fun!
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
-> Mutex lock
<- Mutex unlock
</datacheck>
Changes to jni/curl/tests/data/test1558.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<tool>
lib1558
</tool>

<name>
CURLINFO_PROTOCOL for file:// transfer
</name>
<setenv>
# force MSYS2 to not convert the file: URL
MSYS2_ARG_CONV_EXCL=file:
</setenv>
<command>
file:%FILE_PWD/log/data1558
</command>
<file name="log/data1558">
hello
</file>
</client>

#







<
<
<
<

|







19
20
21
22
23
24
25




26
27
28
29
30
31
32
33
34
<tool>
lib1558
</tool>

<name>
CURLINFO_PROTOCOL for file:// transfer
</name>




<command>
file://%FILE_PWD/log/data1558
</command>
<file name="log/data1558">
hello
</file>
</client>

#
Changes to jni/curl/tests/data/test1560.
18
19
20
21
22
23
24

25
26
27
28
29
30
31
http
pop3
smtp
imap
ldap
dict
ftp

</features>
 <name>
URL API
 </name>
<tool>
lib1560
</tool>







>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
http
pop3
smtp
imap
ldap
dict
ftp
ipv6
</features>
 <name>
URL API
 </name>
<tool>
lib1560
</tool>
Added jni/curl/tests/data/test1564.






























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
multi
wakeup
</keywords>
</info>

# Server-side
<reply>
</reply>

# Client-side
<client>
<server>
none
</server>
<tool>
lib1564
</tool>
<name>
wakeup before poll with no easy handles
</name>
<command>
</command>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Added jni/curl/tests/data/test1565.


















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
multi
multi-threaded
wakeup
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Content-Length: 3

OK
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
<tool>
lib1565
</tool>
<name>
wakeup from another thread
</name>
<command>
http://%HOSTIP:%HTTPPORT/1
</command>
</client>

# Verify data after the test has been "shot"
<verify>
</verify>
</testcase>
Changes to jni/curl/tests/data/test159.
39
40
41
42
43
44
45

46
47
48
49
50
51
52

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test162.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
</data1001>
</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
proxy
</features>
<server>
http
</server>
 <name>







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</data1001>
</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
proxy
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test165.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
http
</server>
<features>
idn
proxy
</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with IDN host name







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
http
</server>
<features>
idn
proxy
</features>
<setenv>
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
HTTP over proxy with IDN host name
Changes to jni/curl/tests/data/test1650.
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
# Client-side
<client>
<server>
none
</server>
<features>
unittest
http/2

</features>
 <name>
DOH
 </name>
<tool>
unit1650
</tool>







<
>







10
11
12
13
14
15
16

17
18
19
20
21
22
23
24
# Client-side
<client>
<server>
none
</server>
<features>
unittest

DoH
</features>
 <name>
DOH
 </name>
<tool>
unit1650
</tool>
Changes to jni/curl/tests/data/test1655.
10
11
12
13
14
15
16

17
18
19
20
21
22
23
# Client-side
<client>
<server>
none
</server>
<features>
unittest

</features>
 <name>
unit test for doh_encode
 </name>
<tool>
unit1655
</tool>







>







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Client-side
<client>
<server>
none
</server>
<features>
unittest
DoH
</features>
 <name>
unit test for doh_encode
 </name>
<tool>
unit1655
</tool>
Changes to jni/curl/tests/data/test169.
73
74
75
76
77
78
79

80
81
82
83
84
85
86
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
 </name>







>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
 </name>
Changes to jni/curl/tests/data/test170.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
proxy
</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
proxy
</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>
Changes to jni/curl/tests/data/test176.
44
45
46
47
48
49
50

51
52
53
54
55
56
57

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
 <name>
HTTP POST --ntlm to server not requiring any auth at all







>







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
 <name>
HTTP POST --ntlm to server not requiring any auth at all
Changes to jni/curl/tests/data/test2025.
191
192
193
194
195
196
197

198
199
200
201
202
203
204

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry







>







191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry
Changes to jni/curl/tests/data/test2028.
227
228
229
230
231
232
233

234
235
236
237
238
239
240

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry







>







227
228
229
230
231
232
233
234
235
236
237
238
239
240
241

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry
Changes to jni/curl/tests/data/test2029.
164
165
166
167
168
169
170

171
172
173
174
175
176
177

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry







>







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry
Changes to jni/curl/tests/data/test2030.
216
217
218
219
220
221
222

223
224
225
226
227
228
229

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry







>







216
217
218
219
220
221
222
223
224
225
226
227
228
229
230

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry
Changes to jni/curl/tests/data/test2031.
230
231
232
233
234
235
236

237
238
239
240
241
242
243

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry







>







230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libauthretry
Changes to jni/curl/tests/data/test2032.
62
63
64
65
66
67
68

69
70
71
72
73
74
75

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
libntlmconnect







>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
libntlmconnect
Changes to jni/curl/tests/data/test2033.
63
64
65
66
67
68
69

70
71
72
73
74
75
76

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
</features>
<server>
http
</server>
<tool>
lib2033







>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
</features>
<server>
http
</server>
<tool>
lib2033
Changes to jni/curl/tests/data/test2046.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name







|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name
Changes to jni/curl/tests/data/test2047.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name over HTTP proxy







|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<server>
http
</server>
<features>
idn
</features>
<setenv>
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
</precheck>
 <name>
Connection re-use with IDN host name over HTTP proxy
jni/curl/tests/data/test2055 became a regular file.
Changes to jni/curl/tests/data/test209.
73
74
75
76
77
78
79

80
81
82
83
84
85
86
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM
 </name>







>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM
 </name>
Changes to jni/curl/tests/data/test2100.

cannot compute difference between binary files

Changes to jni/curl/tests/data/test213.
73
74
75
76
77
78
79

80
81
82
83
84
85
86
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP 1.0 proxy CONNECT auth NTLM and then POST
 </name>







>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP 1.0 proxy CONNECT auth NTLM and then POST
 </name>
Changes to jni/curl/tests/data/test239.
48
49
50
51
52
53
54

55
56
57
58
59
60
61
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy-auth NTLM and then POST
 </name>







>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy-auth NTLM and then POST
 </name>
Changes to jni/curl/tests/data/test243.
69
70
71
72
73
74
75

76
77
78
79
80
81
82
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP POST with --proxy-anyauth, picking NTLM
 </name>







>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP POST with --proxy-anyauth, picking NTLM
 </name>
Changes to jni/curl/tests/data/test265.
74
75
76
77
78
79
80

81
82
83
84
85
86
87
# Client-side
<client>
<server>
http
</server>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
 </name>







>







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
 </name>
Changes to jni/curl/tests/data/test267.
52
53
54
55
56
57
58

59
60
61
62
63
64
65

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Added jni/curl/tests/data/test339.






























































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo
ETag: "asdf"

40
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
30
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
21;heresatest=moooo
cccccccccccccccccccccccccccccccc

0
chunky-trailer: header data

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
Check if --etag-save saved correct etag to a file
</name>
<command>
http://%HOSTIP:%HTTPPORT/339 --etag-save log/etag339
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /339 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<file name="log/etag339">
asdf
</file>
</verify>

</testcase>
Added jni/curl/tests/data/test341.


















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 funky chunky!
Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Trailer: chunky-trailer
Connection: mooo
ETag: "asdf"

40
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
30
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
21;heresatest=moooo
cccccccccccccccccccccccccccccccc

0
chunky-trailer: header data

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
Try to open a non existing file with --etag-compare should return an error
</name>
<command>
http://%HOSTIP:%HTTPPORT/341 --etag-compare log/etag341
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<errorcode>
26
</errorcode>
</verify>

</testcase>
Added jni/curl/tests/data/test342.




















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 304 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
Check if --etag-compare set correct etag in header
</name>
<file name="log/etag342">
21025-dc7-39462498
</file>
<command>
http://%HOSTIP:%HTTPPORT/342 --etag-compare log/etag342
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /342 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test343.


























































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-11111"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
Funny-head: yesyes

</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
<name>
Both --etag-compare and --etag-save to save new Etag
</name>
<file name="log/etag343">
21025-dc7-39462498
</file>
<command>
http://%HOSTIP:%HTTPPORT/343 --etag-compare log/etag343 --etag-save log/out343
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /343 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
If-None-Match: "21025-dc7-39462498"

</protocol>
<file name="log/out343">
21025-dc7-11111
</file>
</verify>
</testcase>
Added jni/curl/tests/data/test490.








































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Two globbed HTTP PUTs
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/490 -T '{log/in490,log/in490}'
</command>
<file name="log/in490">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /490 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
PUT /490 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test491.
































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Two globbed HTTP PUTs, the second upload file is missing
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/491 -T '{log/in491,log/bad491}'
</command>
<file name="log/in491">
surprise!
</file>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /491 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Content-Length: 10
Expect: 100-continue

surprise!
</protocol>
<errorcode>
26
</errorcode>
</verify>
</testcase>
Added jni/curl/tests/data/test492.


















































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
Two globbed HTTP PUTs to two globbed URLs
 </name>
 <command>
'http://%HOSTIP:%HTTPPORT/{one,two}/' -T '{log/first492,log/second492}' -H "Testno: 492"
</command>
<file name="log/first492">
first 492 contents
</file>
<file1 name="log/second492">
second 492 contents
</file1>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /one/first492 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Testno: 492
Content-Length: 19
Expect: 100-continue

first 492 contents
PUT /two/first492 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Testno: 492
Content-Length: 19
Expect: 100-continue

first 492 contents
PUT /one/second492 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Testno: 492
Content-Length: 20
Expect: 100-continue

second 492 contents
PUT /two/second492 HTTP/1.1
Host: 127.0.0.1:8990
Accept: */*
Testno: 492
Content-Length: 20
Expect: 100-continue

second 492 contents
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test547.
72
73
74
75
76
77
78

79
80
81
82
83
84
85
</server>
# tool to use
<tool>
lib547
</tool>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>







>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</server>
# tool to use
<tool>
lib547
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>
Changes to jni/curl/tests/data/test548.
72
73
74
75
76
77
78

79
80
81
82
83
84
85
</server>
# tool to use
<tool>
lib548
</tool>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>







>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</server>
# tool to use
<tool>
lib548
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>
Changes to jni/curl/tests/data/test555.
77
78
79
80
81
82
83

84
85
86
87
88
89
90
</server>
# tool to use
<tool>
lib555
</tool>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>







>







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
</server>
# tool to use
<tool>
lib555
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>
Changes to jni/curl/tests/data/test558.
47
48
49
50
51
52
53

54
55
56
57
</file>
<stripfile>
s/^MEM escape.c:\d+ free\(\(nil\)\)[\n]$//
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM |FD )(.*/)(.*):$1$3:

</stripfile>
</verify>

</testcase>







>




47
48
49
50
51
52
53
54
55
56
57
58
</file>
<stripfile>
s/^MEM escape.c:\d+ free\(\(nil\)\)[\n]$//
s/ =.*//
s/\(.*\)/()/
s/:\d+/:/
s:^(MEM |FD )(.*/)(.*):$1$3:
s/\r\n/\n/
</stripfile>
</verify>

</testcase>
Changes to jni/curl/tests/data/test590.
70
71
72
73
74
75
76

77
78
79
80
81
82
83
</server>
# tool to use
<tool>
lib590
</tool>
<features>
NTLM

!SSPI
debug
proxy
</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>







>







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
</server>
# tool to use
<tool>
lib590
</tool>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>
Changes to jni/curl/tests/data/test67.
52
53
54
55
56
57
58

59
60
61
62
63
64
65

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test68.
51
52
53
54
55
56
57

58
59
60
61
62
63
64

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test69.
68
69
70
71
72
73
74

75
76
77
78
79
80
81

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
jni/curl/tests/data/test714 became a regular file.
jni/curl/tests/data/test715 became a regular file.
Changes to jni/curl/tests/data/test81.
51
52
53
54
55
56
57

58
59
60
61
62
63
64

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
proxy
</features>
<server>
http
</server>







>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
proxy
</features>
<server>
http
</server>
Changes to jni/curl/tests/data/test822.
31
32
33
34
35
36
37

38
39
40
41
42
43
44
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
IMAP NTLM authentication
 </name>
 <setenv>







>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
IMAP NTLM authentication
 </name>
 <setenv>
Changes to jni/curl/tests/data/test827.
32
33
34
35
36
37
38

39
40
41
42
43
44
45
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
IMAP NTLM authentication with initial response
 </name>
 <setenv>







>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
IMAP NTLM authentication with initial response
 </name>
 <setenv>
Changes to jni/curl/tests/data/test831.
24
25
26
27
28
29
30

31
32
33
34
35
36
37
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM

!SSPI
</features>
 <name>
IMAP NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
IMAP NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
Changes to jni/curl/tests/data/test834.
35
36
37
38
39
40
41

42
43
44
45
46
47
48
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM

!SSPI
</features>
 <name>
IMAP NTLM authentication with SASL downgrade
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent







>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Client-side
<client>
<server>
imap
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
IMAP NTLM authentication with SASL downgrade
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
Changes to jni/curl/tests/data/test868.
33
34
35
36
37
38
39

40
41
42
43
44
45
46
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
POP3 NTLM authentication
 </name>
 <setenv>







>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
POP3 NTLM authentication
 </name>
 <setenv>
Changes to jni/curl/tests/data/test873.
33
34
35
36
37
38
39

40
41
42
43
44
45
46
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
POP3 NTLM authentication with initial response
 </name>
 <setenv>







>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
POP3 NTLM authentication with initial response
 </name>
 <setenv>
Changes to jni/curl/tests/data/test877.
25
26
27
28
29
30
31

32
33
34
35
36
37
38
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM

!SSPI
</features>
 <name>
POP3 NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
POP3 NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
Changes to jni/curl/tests/data/test880.
37
38
39
40
41
42
43

44
45
46
47
48
49
50
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM

!SSPI
</features>
 <name>
POP3 NTLM authentication with SASL downgrade
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent







>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Client-side
<client>
<server>
pop3
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
POP3 NTLM authentication with SASL downgrade
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
Changes to jni/curl/tests/data/test89.
85
86
87
88
89
90
91

92
93
94
95
96
97
98

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test90.
123
124
125
126
127
128
129

130
131
132
133
134
135
136

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test906.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
SMTP NTLM authentication
 </name>
 <setenv>







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
SMTP NTLM authentication
 </name>
 <setenv>
Changes to jni/curl/tests/data/test91.
69
70
71
72
73
74
75

76
77
78
79
80
81
82

</reply>

# Client-side
<client>
<features>
NTLM

!SSPI
debug
</features>
<server>
http
</server>
 <name>







>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

</reply>

# Client-side
<client>
<features>
NTLM
SSL
!SSPI
debug
</features>
<server>
http
</server>
 <name>
Changes to jni/curl/tests/data/test921.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM

!SSPI
debug
</features>
 <name>
SMTP NTLM authentication with initial response
 </name>
 <setenv>







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM
SSL
!SSPI
debug
</features>
 <name>
SMTP NTLM authentication with initial response
 </name>
 <setenv>
Changes to jni/curl/tests/data/test933.
24
25
26
27
28
29
30

31
32
33
34
35
36
37
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM

!SSPI
</features>
 <name>
SMTP NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
SMTP NTLM graceful cancellation
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
Changes to jni/curl/tests/data/test936.
27
28
29
30
31
32
33

34
35
36
37
38
39
40
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM

!SSPI
</features>
 <name>
SMTP NTLM authentication with SASL downgrade
 </name>
<stdin>
mail body







>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Client-side
<client>
<server>
smtp
</server>
<features>
NTLM
SSL
!SSPI
</features>
 <name>
SMTP NTLM authentication with SASL downgrade
 </name>
<stdin>
mail body
Changes to jni/curl/tests/disable-scan.pl.
25
26
27
28
29
30
31


32
33
34

35
36
37
38
39
40
41
use strict;
use warnings;

# the DISABLE options that can be set by configure
my %disable;
# the DISABLE options that are used in C files
my %file;



# we may get the dir root pointed out
my $root=$ARGV[0] || ".";


sub scan_configure {
    open S, "<$root/configure.ac";
    while(<S>) {
        if(/(CURL_DISABLE_[A-Z_]+)/g) {
            my ($sym)=($1);
            $disable{$sym} = 1;







>
>



>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use strict;
use warnings;

# the DISABLE options that can be set by configure
my %disable;
# the DISABLE options that are used in C files
my %file;
# the DISABLE options that are documented
my %docs;

# we may get the dir root pointed out
my $root=$ARGV[0] || ".";
my $DOCS="CURL-DISABLE.md";

sub scan_configure {
    open S, "<$root/configure.ac";
    while(<S>) {
        if(/(CURL_DISABLE_[A-Z_]+)/g) {
            my ($sym)=($1);
            $disable{$sym} = 1;
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

sub scan_sources {
    scan_dir("$root/src");
    scan_dir("$root/lib");
    scan_dir("$root/lib/vtls");
    scan_dir("$root/lib/vauth");
}














scan_configure();
scan_sources();



my $error = 0;
# Check the configure symbols for use in code
for my $s (sort keys %disable) {
    if(!$file{$s}) {
        printf "Present in configure.ac, not used by code: %s\n", $s;
        $error++;
    }




}

# Check the code symbols for use in configure
for my $s (sort keys %file) {
    if(!$disable{$s}) {
        printf "Not set by configure: %s (%s)\n", $s, $file{$s};
        $error++;
















    }
}

exit $error;







>
>
>
>
>
>
>
>
>
>
>
>
>



>









>
>
>
>







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




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

sub scan_sources {
    scan_dir("$root/src");
    scan_dir("$root/lib");
    scan_dir("$root/lib/vtls");
    scan_dir("$root/lib/vauth");
}

sub scan_docs {
    open F, "<$root/docs/$DOCS";
    my $line = 0;
    while(<F>) {
        $line++;
        if(/^## (CURL_DISABLE_[A-Z_]+)/g) {
            my ($sym)=($1);
            $docs{$sym} = $line;
        }
    }
    close F;
}

scan_configure();
scan_sources();
scan_docs();


my $error = 0;
# Check the configure symbols for use in code
for my $s (sort keys %disable) {
    if(!$file{$s}) {
        printf "Present in configure.ac, not used by code: %s\n", $s;
        $error++;
    }
    if(!$docs{$s}) {
        printf "Present in configure.ac, not documented in $DOCS: %s\n", $s;
        $error++;
    }
}

# Check the code symbols for use in configure
for my $s (sort keys %file) {
    if(!$disable{$s}) {
        printf "Not set by configure: %s (%s)\n", $s, $file{$s};
        $error++;
    }
    if(!$docs{$s}) {
        printf "Used in code, not documented in $DOCS: %s\n", $s;
        $error++;
    }
}

# Check the documented symbols
for my $s (sort keys %docs) {
    if(!$disable{$s}) {
        printf "Documented but not in configure: %s\n", $s;
        $error++;
    }
    if(!$file{$s}) {
        printf "Documented, but not used by code: %s\n", $s;
        $error++;
    }
}

exit $error;
Added jni/curl/tests/error-codes.pl.
































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2010-2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
#
#

use strict;
use warnings;

# we may get the dir root pointed out
my $root=$ARGV[0] || ".";

my %error; # from the include file
my %docs; # from libcurl-errors.3

sub getdocserrors {
    open(F, "<$root/docs/libcurl/libcurl-errors.3");
    while(<F>) {
        if($_ =~ /^.IP \"(CURL[EM]_[^ \t\"]*)/) {
            my ($symbol) = ($1);
            if($symbol =~ /OBSOLETE/) {
                ;
            }
            else {
                $docs{$symbol}=1;
            }
        }
    }
    close(F);
}

sub getincludeerrors {
    open(F, "<$root/docs/libcurl/symbols-in-versions");
    while(<F>) {
        if($_ =~ /^(CURL[EM]_[^ \t]*)[ \t]*([0-9.]+)[ \t]*(.*)/) {
            my ($symbol, $added, $rest) = ($1,$2,$3);
            if($rest =~ /^([0-9.]+)/) {
                # removed!
            }
            else {
                $error{$symbol}=$added;
            }
        }
    }
    close(F);
}

getincludeerrors();
getdocserrors();

for(sort keys %error) {
    if($error{$_} && !$docs{$_}) {
        print "$_ is not in libcurl-errors.3\n";
    }
}

for(sort keys %docs) {
    if($docs{$_} && !$error{$_}) {
        print "$_ is not in symbols-in-versions\n";
    }
}
Changes to jni/curl/tests/ftpserver.pl.
63
64
65
66
67
68
69




70
71
72
73
74
75
76
    server_pidfilename
    server_logfilename
    mainsockf_pidfilename
    mainsockf_logfilename
    datasockf_pidfilename
    datasockf_logfilename
    );





#**********************************************************************
# global vars...
#
my $verbose = 0;    # set to 1 for debugging
my $idstr = "";     # server instance string
my $idnum = 1;      # server instance number







>
>
>
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    server_pidfilename
    server_logfilename
    mainsockf_pidfilename
    mainsockf_logfilename
    datasockf_pidfilename
    datasockf_logfilename
    );

use sshhelp qw(
    exe_ext
    );

#**********************************************************************
# global vars...
#
my $verbose = 0;    # set to 1 for debugging
my $idstr = "";     # server instance string
my $idnum = 1;      # server instance number
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
        exit;
    }

    return $result;
}

sub startsf {
    my $mainsockfcmd = "./server/sockfilt " .
        "--ipv$ipvnum --port $port " .
        "--pidfile \"$mainsockf_pidfile\" " .
        "--logfile \"$mainsockf_logfile\"";
    $sfpid = open2(*SFREAD, *SFWRITE, $mainsockfcmd);

    print STDERR "$mainsockfcmd\n" if($verbose);








|







411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
        exit;
    }

    return $result;
}

sub startsf {
    my $mainsockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
        "--ipv$ipvnum --port $port " .
        "--pidfile \"$mainsockf_pidfile\" " .
        "--logfile \"$mainsockf_logfile\"";
    $sfpid = open2(*SFREAD, *SFWRITE, $mainsockfcmd);

    print STDERR "$mainsockfcmd\n" if($verbose);

2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
    datasockf_state('STOPPED');

    logmsg "====> Passive DATA channel requested by client\n";

    logmsg "DATA sockfilt for passive data channel starting...\n";

    # We fire up a new sockfilt to do the data transfer for us.
    my $datasockfcmd = "./server/sockfilt " .
        "--ipv$ipvnum $bindonly --port 0 " .
        "--pidfile \"$datasockf_pidfile\" " .
        "--logfile \"$datasockf_logfile\"";
    $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);

    if($nodataconn) {
        datasockf_state('PASSIVE_NODATACONN');







|







2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
    datasockf_state('STOPPED');

    logmsg "====> Passive DATA channel requested by client\n";

    logmsg "DATA sockfilt for passive data channel starting...\n";

    # We fire up a new sockfilt to do the data transfer for us.
    my $datasockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
        "--ipv$ipvnum $bindonly --port 0 " .
        "--pidfile \"$datasockf_pidfile\" " .
        "--logfile \"$datasockf_logfile\"";
    $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);

    if($nodataconn) {
        datasockf_state('PASSIVE_NODATACONN');
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
        logmsg "====> Active DATA channel not established\n";
        return;
    }

    logmsg "DATA sockfilt for active data channel starting...\n";

    # We fire up a new sockfilt to do the data transfer for us.
    my $datasockfcmd = "./server/sockfilt " .
        "--ipv$ipvnum --connect $port --addr \"$addr\" " .
        "--pidfile \"$datasockf_pidfile\" " .
        "--logfile \"$datasockf_logfile\"";
    $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);

    datasockf_state('ACTIVE');








|







2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
        logmsg "====> Active DATA channel not established\n";
        return;
    }

    logmsg "DATA sockfilt for active data channel starting...\n";

    # We fire up a new sockfilt to do the data transfer for us.
    my $datasockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
        "--ipv$ipvnum --connect $port --addr \"$addr\" " .
        "--pidfile \"$datasockf_pidfile\" " .
        "--logfile \"$datasockf_logfile\"";
    $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);

    datasockf_state('ACTIVE');

Changes to jni/curl/tests/httpserver.pl.
29
30
31
32
33
34
35




36
37
38
39
40
41
42
use strict;
use warnings;

use serverhelp qw(
    server_pidfilename
    server_logfilename
    );





my $verbose = 0;     # set to 1 for debugging
my $port = 8990;     # just a default
my $unix_socket;     # location to place a listening Unix socket
my $ipvnum = 4;      # default IP version of http server
my $idnum = 1;       # default http server instance number
my $proto = 'http';  # protocol the http server speaks







>
>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use strict;
use warnings;

use serverhelp qw(
    server_pidfilename
    server_logfilename
    );

use sshhelp qw(
    exe_ext
    );

my $verbose = 0;     # set to 1 for debugging
my $port = 8990;     # just a default
my $unix_socket;     # location to place a listening Unix socket
my $ipvnum = 4;      # default IP version of http server
my $idnum = 1;       # default http server instance number
my $proto = 'http';  # protocol the http server speaks
129
130
131
132
133
134
135
136
137
138
139
    $flags .= "--unix-socket '$unix_socket' ";
} else {
    $flags .= "--ipv$ipvnum --port $port ";
}
$flags .= "--srcdir \"$srcdir\"";

if($verbose) {
    print STDERR "RUN: server/sws $flags\n";
}

exec("server/sws $flags");







|


|
133
134
135
136
137
138
139
140
141
142
143
    $flags .= "--unix-socket '$unix_socket' ";
} else {
    $flags .= "--ipv$ipvnum --port $port ";
}
$flags .= "--srcdir \"$srcdir\"";

if($verbose) {
    print STDERR "RUN: server/sws".exe_ext('SRV')." $flags\n";
}

exec("server/sws".exe_ext('SRV')." $flags");
Changes to jni/curl/tests/libtest/CMakeLists.txt.
1
2
3
4
5
6
7
8
9
10
11
12
13
set(TARGET_LABEL_PREFIX "Test ")

if(MSVC)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127")
endif()

function(setup_test TEST_NAME)          # ARGN are the files in the test
  add_executable( ${TEST_NAME} ${ARGN} )
  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)

  include_directories(
    ${CURL_SOURCE_DIR}/lib          # To be able to reach "curl_setup_once.h"
    ${CURL_BINARY_DIR}/lib          # To be able to reach "curl_config.h"


<
<
<
<







1
2




3
4
5
6
7
8
9
set(TARGET_LABEL_PREFIX "Test ")





function(setup_test TEST_NAME)          # ARGN are the files in the test
  add_executable( ${TEST_NAME} ${ARGN} )
  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)

  include_directories(
    ${CURL_SOURCE_DIR}/lib          # To be able to reach "curl_setup_once.h"
    ${CURL_BINARY_DIR}/lib          # To be able to reach "curl_config.h"
Changes to jni/curl/tests/libtest/Makefile.am.
133
134
135
136
137
138
139
140
141
142
143
144
145

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
all-local: checksrc
endif







|





133
134
135
136
137
138
139
140
141
142
143
144
145

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
all-local: checksrc
endif
Changes to jni/curl/tests/libtest/Makefile.in.
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147
148
149
150
	lib1529$(EXEEXT) lib1530$(EXEEXT) lib1531$(EXEEXT) \
	lib1532$(EXEEXT) lib1533$(EXEEXT) lib1534$(EXEEXT) \
	lib1535$(EXEEXT) lib1536$(EXEEXT) lib1537$(EXEEXT) \
	lib1538$(EXEEXT) lib1540$(EXEEXT) lib1541$(EXEEXT) \
	lib1550$(EXEEXT) lib1551$(EXEEXT) lib1552$(EXEEXT) \
	lib1553$(EXEEXT) lib1554$(EXEEXT) lib1555$(EXEEXT) \
	lib1556$(EXEEXT) lib1557$(EXEEXT) lib1558$(EXEEXT) \
	lib1559$(EXEEXT) lib1560$(EXEEXT) lib1591$(EXEEXT) \

	lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \
	lib1596$(EXEEXT) lib1900$(EXEEXT) lib1905$(EXEEXT) \
	lib1906$(EXEEXT) lib1907$(EXEEXT) lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_4 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = $(CFLAG_CURL_SYMBOL_HIDING)

# Build a stub gssapi implementation for testing







|
>
|
|
|







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	lib1529$(EXEEXT) lib1530$(EXEEXT) lib1531$(EXEEXT) \
	lib1532$(EXEEXT) lib1533$(EXEEXT) lib1534$(EXEEXT) \
	lib1535$(EXEEXT) lib1536$(EXEEXT) lib1537$(EXEEXT) \
	lib1538$(EXEEXT) lib1540$(EXEEXT) lib1541$(EXEEXT) \
	lib1550$(EXEEXT) lib1551$(EXEEXT) lib1552$(EXEEXT) \
	lib1553$(EXEEXT) lib1554$(EXEEXT) lib1555$(EXEEXT) \
	lib1556$(EXEEXT) lib1557$(EXEEXT) lib1558$(EXEEXT) \
	lib1559$(EXEEXT) lib1560$(EXEEXT) lib1564$(EXEEXT) \
	lib1565$(EXEEXT) lib1591$(EXEEXT) lib1592$(EXEEXT) \
	lib1593$(EXEEXT) lib1594$(EXEEXT) lib1596$(EXEEXT) \
	lib1900$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
	lib1907$(EXEEXT) lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_4 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = $(CFLAG_CURL_SYMBOL_HIDING)

# Build a stub gssapi implementation for testing
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
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
	$(am__objects_122) $(am__objects_123)
lib1559_OBJECTS = $(am_lib1559_OBJECTS)
lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1560_OBJECTS = $(am_lib1560_OBJECTS)
lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_124 = lib1591-first.$(OBJEXT)
am__objects_125 = lib1591-testutil.$(OBJEXT)
am__objects_126 = ../../lib/lib1591-warnless.$(OBJEXT)
am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_124) \
	$(am__objects_125) $(am__objects_126)














lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_127 = lib1592-first.$(OBJEXT)
am__objects_128 = lib1592-testutil.$(OBJEXT)
am__objects_129 = ../../lib/lib1592-warnless.$(OBJEXT)
am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_127) \
	$(am__objects_128) $(am__objects_129)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_130 = lib1596-first.$(OBJEXT)
am__objects_131 = lib1596-testutil.$(OBJEXT)
am__objects_132 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_130) \
	$(am__objects_131) $(am__objects_132)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_133 = lib1900-first.$(OBJEXT)
am__objects_134 = lib1900-testutil.$(OBJEXT)
am__objects_135 = ../../lib/lib1900-warnless.$(OBJEXT)
am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_133) \
	$(am__objects_134) $(am__objects_135)
lib1900_OBJECTS = $(am_lib1900_OBJECTS)
lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_136 = lib1905-first.$(OBJEXT)
am__objects_137 = lib1905-testutil.$(OBJEXT)
am__objects_138 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_136) \
	$(am__objects_137) $(am__objects_138)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_139 = lib1906-first.$(OBJEXT)
am__objects_140 = lib1906-testutil.$(OBJEXT)
am__objects_141 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_139) \
	$(am__objects_140) $(am__objects_141)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_142 = lib1907-first.$(OBJEXT)
am__objects_143 = lib1907-testutil.$(OBJEXT)
am__objects_144 = ../../lib/lib1907-warnless.$(OBJEXT)
am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_142) \
	$(am__objects_143) $(am__objects_144)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_145 = lib2033-first.$(OBJEXT)
am__objects_146 = lib2033-testutil.$(OBJEXT)
am__objects_147 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
	$(am__objects_145) $(am__objects_146) $(am__objects_147)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_148 = lib500-first.$(OBJEXT)
am__objects_149 = lib500-testutil.$(OBJEXT)
am__objects_150 = lib500-testtrace.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_148) \
	$(am__objects_149) $(am__objects_150)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_151 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_151)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_152 = lib502-first.$(OBJEXT)
am__objects_153 = lib502-testutil.$(OBJEXT)
am__objects_154 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_152) \
	$(am__objects_153) $(am__objects_154)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_155 = lib503-first.$(OBJEXT)
am__objects_156 = lib503-testutil.$(OBJEXT)
am__objects_157 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_155) \
	$(am__objects_156) $(am__objects_157)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_158 = lib504-first.$(OBJEXT)
am__objects_159 = lib504-testutil.$(OBJEXT)
am__objects_160 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_158) \
	$(am__objects_159) $(am__objects_160)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_161 = lib505-first.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_161)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_162 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_162)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_163 = lib507-first.$(OBJEXT)
am__objects_164 = lib507-testutil.$(OBJEXT)
am__objects_165 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_163) \
	$(am__objects_164) $(am__objects_165)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_166 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_166)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_167 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_167)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_168 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_168)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_169 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_169)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_170 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_170)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_171 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_171)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_172 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_172)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_173 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_173)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_174 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_174)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_175 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_175)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_176 = lib518-first.$(OBJEXT)
am__objects_177 = ../../lib/lib518-warnless.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_176) \
	$(am__objects_177)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_178 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_178)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_179 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_179)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_180 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_180)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_181 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_181)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_182 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_182)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_183 = lib525-first.$(OBJEXT)
am__objects_184 = lib525-testutil.$(OBJEXT)
am__objects_185 = ../../lib/lib525-warnless.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_183) \
	$(am__objects_184) $(am__objects_185)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_186 = lib526-first.$(OBJEXT)
am__objects_187 = lib526-testutil.$(OBJEXT)
am__objects_188 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_186) \
	$(am__objects_187) $(am__objects_188)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_189 = lib527-first.$(OBJEXT)
am__objects_190 = lib527-testutil.$(OBJEXT)
am__objects_191 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_189) \
	$(am__objects_190) $(am__objects_191)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_192 = lib529-first.$(OBJEXT)
am__objects_193 = lib529-testutil.$(OBJEXT)
am__objects_194 = ../../lib/lib529-warnless.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_192) \
	$(am__objects_193) $(am__objects_194)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_195 = lib530-first.$(OBJEXT)
am__objects_196 = lib530-testutil.$(OBJEXT)
am__objects_197 = ../../lib/lib530-warnless.$(OBJEXT)
am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_195) \
	$(am__objects_196) $(am__objects_197)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_198 = lib532-first.$(OBJEXT)
am__objects_199 = lib532-testutil.$(OBJEXT)
am__objects_200 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_198) \
	$(am__objects_199) $(am__objects_200)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_201 = lib533-first.$(OBJEXT)
am__objects_202 = lib533-testutil.$(OBJEXT)
am__objects_203 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_201) \
	$(am__objects_202) $(am__objects_203)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_204 = lib537-first.$(OBJEXT)
am__objects_205 = ../../lib/lib537-warnless.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_204) \
	$(am__objects_205)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_206 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_206)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_207 = lib540-first.$(OBJEXT)
am__objects_208 = lib540-testutil.$(OBJEXT)
am__objects_209 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_207) \
	$(am__objects_208) $(am__objects_209)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_210 = lib541-first.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_210)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_211 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_211)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_212)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_213)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_214 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_214)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_215 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_215)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_216 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_216)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_217)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib552-first.$(OBJEXT)
am__objects_219 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_218) \
	$(am__objects_219)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_220 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_220)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_221 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_221)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_222 = lib555-first.$(OBJEXT)
am__objects_223 = lib555-testutil.$(OBJEXT)
am__objects_224 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_222) \
	$(am__objects_223) $(am__objects_224)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_225 = lib556-first.$(OBJEXT)
am__objects_226 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_225) \
	$(am__objects_226)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_227)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_228 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_228)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_229 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_229)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_230 = lib560-first.$(OBJEXT)
am__objects_231 = lib560-testutil.$(OBJEXT)
am__objects_232 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_230) \
	$(am__objects_231) $(am__objects_232)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_233 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_233)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_234 = lib564-first.$(OBJEXT)
am__objects_235 = lib564-testutil.$(OBJEXT)
am__objects_236 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_234) \
	$(am__objects_235) $(am__objects_236)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_237 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_237)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_238 = lib566-first.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_238)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_239 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_239)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_240 = lib568-first.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_240)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_241 = lib569-first.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_241)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_242 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_242)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_243 = lib571-first.$(OBJEXT)
am__objects_244 = ../../lib/lib571-warnless.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_243) \
	$(am__objects_244)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_245 = lib572-first.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_245)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_246 = lib573-first.$(OBJEXT)
am__objects_247 = lib573-testutil.$(OBJEXT)
am__objects_248 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_249 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_246) \
	$(am__objects_247) $(am__objects_248) $(am__objects_249)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_250 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_250)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_251 = lib575-first.$(OBJEXT)
am__objects_252 = lib575-testutil.$(OBJEXT)
am__objects_253 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_251) \
	$(am__objects_252) $(am__objects_253)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_254 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_254)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_255 = lib578-first.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_255)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_256 = lib579-first.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_256)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_257 = lib582-first.$(OBJEXT)
am__objects_258 = lib582-testutil.$(OBJEXT)
am__objects_259 = ../../lib/lib582-warnless.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_257) \
	$(am__objects_258) $(am__objects_259)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_260 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_260)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib585-first.$(OBJEXT)
am__objects_262 = lib585-testutil.$(OBJEXT)
am__objects_263 = lib585-testtrace.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_261) \
	$(am__objects_262) $(am__objects_263)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_264 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_264)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_265 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_265)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_266 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_266)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_267 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_267)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_268 = lib591-first.$(OBJEXT)
am__objects_269 = lib591-testutil.$(OBJEXT)
am__objects_270 = ../../lib/lib591-warnless.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_268) \
	$(am__objects_269) $(am__objects_270)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_271 = lib597-first.$(OBJEXT)
am__objects_272 = lib597-testutil.$(OBJEXT)
am__objects_273 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_271) \
	$(am__objects_272) $(am__objects_273)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_274 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_274)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_275 = lib599-first.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_275)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_276 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_276)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_277)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_278 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_278)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_279 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_279)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_280 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_280)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_281)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_282 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_282)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_283 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_283)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_284 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_284)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib658-first.$(OBJEXT)
am__objects_286 = lib658-testutil.$(OBJEXT)
am__objects_287 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_285) \
	$(am__objects_286) $(am__objects_287)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_288 = lib659-first.$(OBJEXT)
am__objects_289 = lib659-testutil.$(OBJEXT)
am__objects_290 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_288) \
	$(am__objects_289) $(am__objects_290)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_291 = lib661-first.$(OBJEXT)
am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_291)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_292 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_292)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_293 = libntlmconnect-first.$(OBJEXT)
am__objects_294 = libntlmconnect-testutil.$(OBJEXT)
am__objects_295 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_293) $(am__objects_294) $(am__objects_295)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)







|
|
|
|

>
>
>
>
>
>
>
>
>
>
>
>
>
>


|
|
|
|
|










|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|

|


|
|
|
|
|


|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|



|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|



|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|



|
|
|
|
|


|
|
|
|



|
|



|
|



|
|



|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|



|

|



|
|
|

|







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
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
	$(am__objects_122) $(am__objects_123)
lib1559_OBJECTS = $(am_lib1559_OBJECTS)
lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1560_OBJECTS = $(am_lib1560_OBJECTS)
lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_124 = lib1564-first.$(OBJEXT)
am__objects_125 = lib1564-testutil.$(OBJEXT)
am__objects_126 = ../../lib/lib1564-warnless.$(OBJEXT)
am_lib1564_OBJECTS = lib1564-lib1564.$(OBJEXT) $(am__objects_124) \
	$(am__objects_125) $(am__objects_126)
lib1564_OBJECTS = $(am_lib1564_OBJECTS)
lib1564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_127 = lib1565-first.$(OBJEXT)
am__objects_128 = lib1565-testutil.$(OBJEXT)
am__objects_129 = ../../lib/lib1565-warnless.$(OBJEXT)
am_lib1565_OBJECTS = lib1565-lib1565.$(OBJEXT) $(am__objects_127) \
	$(am__objects_128) $(am__objects_129)
lib1565_OBJECTS = $(am_lib1565_OBJECTS)
lib1565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_130 = lib1591-first.$(OBJEXT)
am__objects_131 = lib1591-testutil.$(OBJEXT)
am__objects_132 = ../../lib/lib1591-warnless.$(OBJEXT)
am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_130) \
	$(am__objects_131) $(am__objects_132)
lib1591_OBJECTS = $(am_lib1591_OBJECTS)
lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_133 = lib1592-first.$(OBJEXT)
am__objects_134 = lib1592-testutil.$(OBJEXT)
am__objects_135 = ../../lib/lib1592-warnless.$(OBJEXT)
am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_133) \
	$(am__objects_134) $(am__objects_135)
lib1592_OBJECTS = $(am_lib1592_OBJECTS)
lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_121) \
	$(am__objects_122) $(am__objects_123)
lib1594_OBJECTS = $(am_lib1594_OBJECTS)
lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_136 = lib1596-first.$(OBJEXT)
am__objects_137 = lib1596-testutil.$(OBJEXT)
am__objects_138 = ../../lib/lib1596-warnless.$(OBJEXT)
am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_136) \
	$(am__objects_137) $(am__objects_138)
lib1596_OBJECTS = $(am_lib1596_OBJECTS)
lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_139 = lib1900-first.$(OBJEXT)
am__objects_140 = lib1900-testutil.$(OBJEXT)
am__objects_141 = ../../lib/lib1900-warnless.$(OBJEXT)
am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_139) \
	$(am__objects_140) $(am__objects_141)
lib1900_OBJECTS = $(am_lib1900_OBJECTS)
lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_142 = lib1905-first.$(OBJEXT)
am__objects_143 = lib1905-testutil.$(OBJEXT)
am__objects_144 = ../../lib/lib1905-warnless.$(OBJEXT)
am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_142) \
	$(am__objects_143) $(am__objects_144)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_145 = lib1906-first.$(OBJEXT)
am__objects_146 = lib1906-testutil.$(OBJEXT)
am__objects_147 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_145) \
	$(am__objects_146) $(am__objects_147)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_148 = lib1907-first.$(OBJEXT)
am__objects_149 = lib1907-testutil.$(OBJEXT)
am__objects_150 = ../../lib/lib1907-warnless.$(OBJEXT)
am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_148) \
	$(am__objects_149) $(am__objects_150)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_151 = lib2033-first.$(OBJEXT)
am__objects_152 = lib2033-testutil.$(OBJEXT)
am__objects_153 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
	$(am__objects_151) $(am__objects_152) $(am__objects_153)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_154 = lib500-first.$(OBJEXT)
am__objects_155 = lib500-testutil.$(OBJEXT)
am__objects_156 = lib500-testtrace.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_154) \
	$(am__objects_155) $(am__objects_156)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_157 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_157)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_158 = lib502-first.$(OBJEXT)
am__objects_159 = lib502-testutil.$(OBJEXT)
am__objects_160 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_158) \
	$(am__objects_159) $(am__objects_160)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_161 = lib503-first.$(OBJEXT)
am__objects_162 = lib503-testutil.$(OBJEXT)
am__objects_163 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_161) \
	$(am__objects_162) $(am__objects_163)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_164 = lib504-first.$(OBJEXT)
am__objects_165 = lib504-testutil.$(OBJEXT)
am__objects_166 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_164) \
	$(am__objects_165) $(am__objects_166)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_167 = lib505-first.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_167)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_168 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_168)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_169 = lib507-first.$(OBJEXT)
am__objects_170 = lib507-testutil.$(OBJEXT)
am__objects_171 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_169) \
	$(am__objects_170) $(am__objects_171)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_172 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_172)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_173 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_173)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_174 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_174)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_175 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_175)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_176 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_176)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_177 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_177)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_178 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_178)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_179 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_179)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_180 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_180)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_181 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_181)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_182 = lib518-first.$(OBJEXT)
am__objects_183 = ../../lib/lib518-warnless.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_182) \
	$(am__objects_183)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_184 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_184)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_185 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_185)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_186 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_186)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_187 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_187)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_188 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_188)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_189 = lib525-first.$(OBJEXT)
am__objects_190 = lib525-testutil.$(OBJEXT)
am__objects_191 = ../../lib/lib525-warnless.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_189) \
	$(am__objects_190) $(am__objects_191)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_192 = lib526-first.$(OBJEXT)
am__objects_193 = lib526-testutil.$(OBJEXT)
am__objects_194 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_192) \
	$(am__objects_193) $(am__objects_194)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_195 = lib527-first.$(OBJEXT)
am__objects_196 = lib527-testutil.$(OBJEXT)
am__objects_197 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_195) \
	$(am__objects_196) $(am__objects_197)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_198 = lib529-first.$(OBJEXT)
am__objects_199 = lib529-testutil.$(OBJEXT)
am__objects_200 = ../../lib/lib529-warnless.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_198) \
	$(am__objects_199) $(am__objects_200)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_201 = lib530-first.$(OBJEXT)
am__objects_202 = lib530-testutil.$(OBJEXT)
am__objects_203 = ../../lib/lib530-warnless.$(OBJEXT)
am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_201) \
	$(am__objects_202) $(am__objects_203)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_204 = lib532-first.$(OBJEXT)
am__objects_205 = lib532-testutil.$(OBJEXT)
am__objects_206 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_204) \
	$(am__objects_205) $(am__objects_206)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_207 = lib533-first.$(OBJEXT)
am__objects_208 = lib533-testutil.$(OBJEXT)
am__objects_209 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_207) \
	$(am__objects_208) $(am__objects_209)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_210 = lib537-first.$(OBJEXT)
am__objects_211 = ../../lib/lib537-warnless.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_210) \
	$(am__objects_211)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_212)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib540-first.$(OBJEXT)
am__objects_214 = lib540-testutil.$(OBJEXT)
am__objects_215 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_213) \
	$(am__objects_214) $(am__objects_215)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_216 = lib541-first.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_216)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_217)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_218)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_219 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_219)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_220 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_220)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_221 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_221)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_222 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_222)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_223 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_223)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_224 = lib552-first.$(OBJEXT)
am__objects_225 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_224) \
	$(am__objects_225)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_226 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_226)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_227)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_228 = lib555-first.$(OBJEXT)
am__objects_229 = lib555-testutil.$(OBJEXT)
am__objects_230 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_228) \
	$(am__objects_229) $(am__objects_230)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_231 = lib556-first.$(OBJEXT)
am__objects_232 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_231) \
	$(am__objects_232)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_233 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_233)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_234 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_234)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_235 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_235)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_236 = lib560-first.$(OBJEXT)
am__objects_237 = lib560-testutil.$(OBJEXT)
am__objects_238 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_236) \
	$(am__objects_237) $(am__objects_238)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_239 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_239)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_240 = lib564-first.$(OBJEXT)
am__objects_241 = lib564-testutil.$(OBJEXT)
am__objects_242 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_240) \
	$(am__objects_241) $(am__objects_242)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_243 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_243)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_244 = lib566-first.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_244)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_245 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_245)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_246 = lib568-first.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_246)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_247 = lib569-first.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_247)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_248 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_248)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_249 = lib571-first.$(OBJEXT)
am__objects_250 = ../../lib/lib571-warnless.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_249) \
	$(am__objects_250)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_251 = lib572-first.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_251)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_252 = lib573-first.$(OBJEXT)
am__objects_253 = lib573-testutil.$(OBJEXT)
am__objects_254 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_255 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_252) \
	$(am__objects_253) $(am__objects_254) $(am__objects_255)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_256 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_256)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_257 = lib575-first.$(OBJEXT)
am__objects_258 = lib575-testutil.$(OBJEXT)
am__objects_259 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_257) \
	$(am__objects_258) $(am__objects_259)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_260 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_260)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib578-first.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_261)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_262 = lib579-first.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_262)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_263 = lib582-first.$(OBJEXT)
am__objects_264 = lib582-testutil.$(OBJEXT)
am__objects_265 = ../../lib/lib582-warnless.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_263) \
	$(am__objects_264) $(am__objects_265)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_266 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_266)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_267 = lib585-first.$(OBJEXT)
am__objects_268 = lib585-testutil.$(OBJEXT)
am__objects_269 = lib585-testtrace.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_267) \
	$(am__objects_268) $(am__objects_269)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_270 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_270)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_271 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_271)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_272 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_272)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_273 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_273)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_274 = lib591-first.$(OBJEXT)
am__objects_275 = lib591-testutil.$(OBJEXT)
am__objects_276 = ../../lib/lib591-warnless.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_274) \
	$(am__objects_275) $(am__objects_276)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib597-first.$(OBJEXT)
am__objects_278 = lib597-testutil.$(OBJEXT)
am__objects_279 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_277) \
	$(am__objects_278) $(am__objects_279)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_280 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_280)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib599-first.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_281)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_282 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_282)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_283 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_283)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_284 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_284)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_285)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_286 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_286)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_287 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_287)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_288 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_288)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_289 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_289)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_290 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_290)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_291 = lib658-first.$(OBJEXT)
am__objects_292 = lib658-testutil.$(OBJEXT)
am__objects_293 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_291) \
	$(am__objects_292) $(am__objects_293)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_294 = lib659-first.$(OBJEXT)
am__objects_295 = lib659-testutil.$(OBJEXT)
am__objects_296 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_294) \
	$(am__objects_295) $(am__objects_296)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_297 = lib661-first.$(OBJEXT)
am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_297)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_298 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_298)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_299 = libntlmconnect-first.$(OBJEXT)
am__objects_300 = libntlmconnect-testutil.$(OBJEXT)
am__objects_301 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_299) $(am__objects_300) $(am__objects_301)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
1172
1173
1174
1175
1176
1177
1178


1179
1180
1181
1182
1183
1184
1185
	../../lib/$(DEPDIR)/lib1537-warnless.Po \
	../../lib/$(DEPDIR)/lib1538-warnless.Po \
	../../lib/$(DEPDIR)/lib1540-warnless.Po \
	../../lib/$(DEPDIR)/lib1541-warnless.Po \
	../../lib/$(DEPDIR)/lib1555-warnless.Po \
	../../lib/$(DEPDIR)/lib1556-warnless.Po \
	../../lib/$(DEPDIR)/lib1557-warnless.Po \


	../../lib/$(DEPDIR)/lib1591-warnless.Po \
	../../lib/$(DEPDIR)/lib1592-warnless.Po \
	../../lib/$(DEPDIR)/lib1596-warnless.Po \
	../../lib/$(DEPDIR)/lib1900-warnless.Po \
	../../lib/$(DEPDIR)/lib1905-warnless.Po \
	../../lib/$(DEPDIR)/lib1906-warnless.Po \
	../../lib/$(DEPDIR)/lib1907-warnless.Po \







>
>







1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
	../../lib/$(DEPDIR)/lib1537-warnless.Po \
	../../lib/$(DEPDIR)/lib1538-warnless.Po \
	../../lib/$(DEPDIR)/lib1540-warnless.Po \
	../../lib/$(DEPDIR)/lib1541-warnless.Po \
	../../lib/$(DEPDIR)/lib1555-warnless.Po \
	../../lib/$(DEPDIR)/lib1556-warnless.Po \
	../../lib/$(DEPDIR)/lib1557-warnless.Po \
	../../lib/$(DEPDIR)/lib1564-warnless.Po \
	../../lib/$(DEPDIR)/lib1565-warnless.Po \
	../../lib/$(DEPDIR)/lib1591-warnless.Po \
	../../lib/$(DEPDIR)/lib1592-warnless.Po \
	../../lib/$(DEPDIR)/lib1596-warnless.Po \
	../../lib/$(DEPDIR)/lib1900-warnless.Po \
	../../lib/$(DEPDIR)/lib1905-warnless.Po \
	../../lib/$(DEPDIR)/lib1906-warnless.Po \
	../../lib/$(DEPDIR)/lib1907-warnless.Po \
1278
1279
1280
1281
1282
1283
1284
1285



1286
1287
1288
1289
1290
1291
1292
	./$(DEPDIR)/lib1553-testutil.Po ./$(DEPDIR)/lib1554-first.Po \
	./$(DEPDIR)/lib1554-lib1554.Po ./$(DEPDIR)/lib1555-first.Po \
	./$(DEPDIR)/lib1555-lib1555.Po ./$(DEPDIR)/lib1555-testutil.Po \
	./$(DEPDIR)/lib1556-first.Po ./$(DEPDIR)/lib1556-lib1556.Po \
	./$(DEPDIR)/lib1556-testutil.Po ./$(DEPDIR)/lib1557-first.Po \
	./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \
	./$(DEPDIR)/lib1558.Po ./$(DEPDIR)/lib1559.Po \
	./$(DEPDIR)/lib1560.Po ./$(DEPDIR)/lib1591-first.Po \



	./$(DEPDIR)/lib1591-lib1591.Po ./$(DEPDIR)/lib1591-testutil.Po \
	./$(DEPDIR)/lib1592-first.Po ./$(DEPDIR)/lib1592-lib1592.Po \
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1900-first.Po ./$(DEPDIR)/lib1900-lib1900.Po \
	./$(DEPDIR)/lib1900-testutil.Po ./$(DEPDIR)/lib1905-first.Po \







|
>
>
>







1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
	./$(DEPDIR)/lib1553-testutil.Po ./$(DEPDIR)/lib1554-first.Po \
	./$(DEPDIR)/lib1554-lib1554.Po ./$(DEPDIR)/lib1555-first.Po \
	./$(DEPDIR)/lib1555-lib1555.Po ./$(DEPDIR)/lib1555-testutil.Po \
	./$(DEPDIR)/lib1556-first.Po ./$(DEPDIR)/lib1556-lib1556.Po \
	./$(DEPDIR)/lib1556-testutil.Po ./$(DEPDIR)/lib1557-first.Po \
	./$(DEPDIR)/lib1557-lib1557.Po ./$(DEPDIR)/lib1557-testutil.Po \
	./$(DEPDIR)/lib1558.Po ./$(DEPDIR)/lib1559.Po \
	./$(DEPDIR)/lib1560.Po ./$(DEPDIR)/lib1564-first.Po \
	./$(DEPDIR)/lib1564-lib1564.Po ./$(DEPDIR)/lib1564-testutil.Po \
	./$(DEPDIR)/lib1565-first.Po ./$(DEPDIR)/lib1565-lib1565.Po \
	./$(DEPDIR)/lib1565-testutil.Po ./$(DEPDIR)/lib1591-first.Po \
	./$(DEPDIR)/lib1591-lib1591.Po ./$(DEPDIR)/lib1591-testutil.Po \
	./$(DEPDIR)/lib1592-first.Po ./$(DEPDIR)/lib1592-lib1592.Po \
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1900-first.Po ./$(DEPDIR)/lib1900-lib1900.Po \
	./$(DEPDIR)/lib1900-testutil.Po ./$(DEPDIR)/lib1905-first.Po \
1442
1443
1444
1445
1446
1447
1448























































1449
1450
1451
1452
1453
1454
1455
1456
	$(lib1530_SOURCES) $(lib1531_SOURCES) $(lib1532_SOURCES) \
	$(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
	$(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
	$(lib1540_SOURCES) $(lib1541_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \























































	$(lib1560_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
	$(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
	$(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
	$(lib1907_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
	$(lib1530_SOURCES) $(lib1531_SOURCES) $(lib1532_SOURCES) \
	$(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
	$(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
	$(lib1540_SOURCES) $(lib1541_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
	$(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \
	$(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \
	$(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1900_SOURCES) \
	$(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
	$(lib2033_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
	$(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
	$(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
	$(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
	$(lib511_SOURCES) $(lib512_SOURCES) $(lib513_SOURCES) \
	$(lib514_SOURCES) $(lib515_SOURCES) $(lib516_SOURCES) \
	$(lib517_SOURCES) $(lib518_SOURCES) $(lib519_SOURCES) \
	$(lib520_SOURCES) $(lib521_SOURCES) $(lib523_SOURCES) \
	$(lib524_SOURCES) $(lib525_SOURCES) $(lib526_SOURCES) \
	$(lib527_SOURCES) $(lib529_SOURCES) $(lib530_SOURCES) \
	$(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
	$(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
	$(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
	$(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
	$(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
	$(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
	$(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
	$(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
	$(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
	$(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
	$(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
	$(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
	$(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
	$(lib583_SOURCES) $(lib585_SOURCES) $(lib586_SOURCES) \
	$(lib587_SOURCES) $(lib589_SOURCES) $(lib590_SOURCES) \
	$(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
	$(lib599_SOURCES) $(lib643_SOURCES) $(lib644_SOURCES) \
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(lib661_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \
	$(lib1565_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
	$(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
	$(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
	$(lib1907_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
	$(lib644_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
	$(lib659_SOURCES) $(lib661_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1591_SOURCES) \
	$(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
	$(lib1596_SOURCES) $(lib1900_SOURCES) $(lib1905_SOURCES) \
	$(lib1906_SOURCES) $(lib1907_SOURCES) $(lib2033_SOURCES) \
	$(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
	$(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
	$(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
	$(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
	$(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
	$(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
	$(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
	$(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
	$(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
	$(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
	$(lib533_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
	$(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
	$(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
	$(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
	$(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
	$(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
	$(lib558_SOURCES) $(lib559_SOURCES) $(lib560_SOURCES) \
	$(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
	$(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
	$(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
	$(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
	$(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
	$(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
	$(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
	$(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
	$(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
	$(lib643_SOURCES) $(lib644_SOURCES) $(lib645_SOURCES) \
	$(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \
	$(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \
	$(lib658_SOURCES) $(lib659_SOURCES) $(lib661_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1552
1553
1554
1555
1556
1557
1558





















































1559
1560
1561
1562
1563
1564
1565
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
	$(lib644_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
	$(lib659_SOURCES) $(lib661_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)





















































am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
1684
1685
1686
1687
1688
1689
1690

1691
1692
1693
1694
1695
1696
1697
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
2185
2186
2187
2188
2189
2190
2191






2192
2193
2194
2195
2196
2197
2198
lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557
lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1558_LDADD = $(TESTUTIL_LIBS)
lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1559_LDADD = $(TESTUTIL_LIBS)
lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1560_LDADD = $(TESTUTIL_LIBS)






lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591
lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)







>
>
>
>
>
>







2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
lib1557_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1557
lib1558_SOURCES = lib1558.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1558_LDADD = $(TESTUTIL_LIBS)
lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1559_LDADD = $(TESTUTIL_LIBS)
lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1560_LDADD = $(TESTUTIL_LIBS)
lib1564_SOURCES = lib1564.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1564_LDADD = $(TESTUTIL_LIBS)
lib1564_CPPFLAGS = $(AM_CPPFLAGS)
lib1565_SOURCES = lib1565.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1565_LDADD = $(TESTUTIL_LIBS)
lib1565_CPPFLAGS = $(AM_CPPFLAGS)
lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591
lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
2596
2597
2598
2599
2600
2601
2602












2603
2604
2605
2606
2607
2608
2609
lib1559$(EXEEXT): $(lib1559_OBJECTS) $(lib1559_DEPENDENCIES) $(EXTRA_lib1559_DEPENDENCIES) 
	@rm -f lib1559$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1559_OBJECTS) $(lib1559_LDADD) $(LIBS)

lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES) 
	@rm -f lib1560$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS)












../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES) 
	@rm -f lib1591$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \







>
>
>
>
>
>
>
>
>
>
>
>







2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
lib1559$(EXEEXT): $(lib1559_OBJECTS) $(lib1559_DEPENDENCIES) $(EXTRA_lib1559_DEPENDENCIES) 
	@rm -f lib1559$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1559_OBJECTS) $(lib1559_LDADD) $(LIBS)

lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES) 
	@rm -f lib1560$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS)
../../lib/lib1564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1564$(EXEEXT): $(lib1564_OBJECTS) $(lib1564_DEPENDENCIES) $(EXTRA_lib1564_DEPENDENCIES) 
	@rm -f lib1564$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1564_OBJECTS) $(lib1564_LDADD) $(LIBS)
../../lib/lib1565-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1565$(EXEEXT): $(lib1565_OBJECTS) $(lib1565_DEPENDENCIES) $(EXTRA_lib1565_DEPENDENCIES) 
	@rm -f lib1565$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1565_OBJECTS) $(lib1565_LDADD) $(LIBS)
../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES) 
	@rm -f lib1591$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
3122
3123
3124
3125
3126
3127
3128


3129
3130
3131
3132
3133
3134
3135
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1541-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker


@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-warnless.Po@am__quote@ # am--include-marker







>
>







3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1541-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1564-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1565-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-warnless.Po@am__quote@ # am--include-marker
3297
3298
3299
3300
3301
3302
3303






3304
3305
3306
3307
3308
3309
3310
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-lib1557.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1558.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1559.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1560.Po@am__quote@ # am--include-marker






@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1593.Po@am__quote@ # am--include-marker







>
>
>
>
>
>







3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1556-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-lib1557.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1557-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1558.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1559.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1560.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1564-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1564-lib1564.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1564-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-lib1565.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1565-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-lib1591.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1591-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1593.Po@am__quote@ # am--include-marker
5991
5992
5993
5994
5995
5996
5997
















































































































5998
5999
6000
6001
6002
6003
6004
../../lib/lib1557-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-warnless.Tpo -c -o ../../lib/lib1557-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-warnless.Tpo ../../lib/$(DEPDIR)/lib1557-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1557-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

















































































































lib1591-lib1591.o: lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-lib1591.o -MD -MP -MF $(DEPDIR)/lib1591-lib1591.Tpo -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-lib1591.Tpo $(DEPDIR)/lib1591-lib1591.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1591.c' object='lib1591-lib1591.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
../../lib/lib1557-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-warnless.Tpo -c -o ../../lib/lib1557-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-warnless.Tpo ../../lib/$(DEPDIR)/lib1557-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1557-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib1564-lib1564.o: lib1564.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-lib1564.o -MD -MP -MF $(DEPDIR)/lib1564-lib1564.Tpo -c -o lib1564-lib1564.o `test -f 'lib1564.c' || echo '$(srcdir)/'`lib1564.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-lib1564.Tpo $(DEPDIR)/lib1564-lib1564.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1564.c' object='lib1564-lib1564.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-lib1564.o `test -f 'lib1564.c' || echo '$(srcdir)/'`lib1564.c

lib1564-lib1564.obj: lib1564.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-lib1564.obj -MD -MP -MF $(DEPDIR)/lib1564-lib1564.Tpo -c -o lib1564-lib1564.obj `if test -f 'lib1564.c'; then $(CYGPATH_W) 'lib1564.c'; else $(CYGPATH_W) '$(srcdir)/lib1564.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-lib1564.Tpo $(DEPDIR)/lib1564-lib1564.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1564.c' object='lib1564-lib1564.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-lib1564.obj `if test -f 'lib1564.c'; then $(CYGPATH_W) 'lib1564.c'; else $(CYGPATH_W) '$(srcdir)/lib1564.c'; fi`

lib1564-first.o: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-first.o -MD -MP -MF $(DEPDIR)/lib1564-first.Tpo -c -o lib1564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-first.Tpo $(DEPDIR)/lib1564-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1564-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c

lib1564-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-first.obj -MD -MP -MF $(DEPDIR)/lib1564-first.Tpo -c -o lib1564-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-first.Tpo $(DEPDIR)/lib1564-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1564-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

lib1564-testutil.o: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-testutil.o -MD -MP -MF $(DEPDIR)/lib1564-testutil.Tpo -c -o lib1564-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-testutil.Tpo $(DEPDIR)/lib1564-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1564-testutil.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c

lib1564-testutil.obj: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-testutil.obj -MD -MP -MF $(DEPDIR)/lib1564-testutil.Tpo -c -o lib1564-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-testutil.Tpo $(DEPDIR)/lib1564-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1564-testutil.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`

../../lib/lib1564-warnless.o: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-warnless.Tpo -c -o ../../lib/lib1564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-warnless.Tpo ../../lib/$(DEPDIR)/lib1564-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1564-warnless.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c

../../lib/lib1564-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-warnless.Tpo -c -o ../../lib/lib1564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-warnless.Tpo ../../lib/$(DEPDIR)/lib1564-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1564-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib1565-lib1565.o: lib1565.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-lib1565.o -MD -MP -MF $(DEPDIR)/lib1565-lib1565.Tpo -c -o lib1565-lib1565.o `test -f 'lib1565.c' || echo '$(srcdir)/'`lib1565.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-lib1565.Tpo $(DEPDIR)/lib1565-lib1565.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1565.c' object='lib1565-lib1565.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-lib1565.o `test -f 'lib1565.c' || echo '$(srcdir)/'`lib1565.c

lib1565-lib1565.obj: lib1565.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-lib1565.obj -MD -MP -MF $(DEPDIR)/lib1565-lib1565.Tpo -c -o lib1565-lib1565.obj `if test -f 'lib1565.c'; then $(CYGPATH_W) 'lib1565.c'; else $(CYGPATH_W) '$(srcdir)/lib1565.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-lib1565.Tpo $(DEPDIR)/lib1565-lib1565.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1565.c' object='lib1565-lib1565.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-lib1565.obj `if test -f 'lib1565.c'; then $(CYGPATH_W) 'lib1565.c'; else $(CYGPATH_W) '$(srcdir)/lib1565.c'; fi`

lib1565-first.o: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-first.o -MD -MP -MF $(DEPDIR)/lib1565-first.Tpo -c -o lib1565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-first.Tpo $(DEPDIR)/lib1565-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1565-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c

lib1565-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-first.obj -MD -MP -MF $(DEPDIR)/lib1565-first.Tpo -c -o lib1565-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-first.Tpo $(DEPDIR)/lib1565-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1565-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

lib1565-testutil.o: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-testutil.o -MD -MP -MF $(DEPDIR)/lib1565-testutil.Tpo -c -o lib1565-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-testutil.Tpo $(DEPDIR)/lib1565-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1565-testutil.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c

lib1565-testutil.obj: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-testutil.obj -MD -MP -MF $(DEPDIR)/lib1565-testutil.Tpo -c -o lib1565-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-testutil.Tpo $(DEPDIR)/lib1565-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1565-testutil.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`

../../lib/lib1565-warnless.o: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-warnless.Tpo -c -o ../../lib/lib1565-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-warnless.Tpo ../../lib/$(DEPDIR)/lib1565-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1565-warnless.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c

../../lib/lib1565-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-warnless.Tpo -c -o ../../lib/lib1565-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-warnless.Tpo ../../lib/$(DEPDIR)/lib1565-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1565-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib1591-lib1591.o: lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-lib1591.o -MD -MP -MF $(DEPDIR)/lib1591-lib1591.Tpo -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-lib1591.Tpo $(DEPDIR)/lib1591-lib1591.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1591.c' object='lib1591-lib1591.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.o `test -f 'lib1591.c' || echo '$(srcdir)/'`lib1591.c

9972
9973
9974
9975
9976
9977
9978


9979
9980
9981
9982
9983
9984
9985
	-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1541-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po


	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po







>
>







10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
	-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1541-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
10147
10148
10149
10150
10151
10152
10153






10154
10155
10156
10157
10158
10159
10160
	-rm -f ./$(DEPDIR)/lib1556-testutil.Po
	-rm -f ./$(DEPDIR)/lib1557-first.Po
	-rm -f ./$(DEPDIR)/lib1557-lib1557.Po
	-rm -f ./$(DEPDIR)/lib1557-testutil.Po
	-rm -f ./$(DEPDIR)/lib1558.Po
	-rm -f ./$(DEPDIR)/lib1559.Po
	-rm -f ./$(DEPDIR)/lib1560.Po






	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po







>
>
>
>
>
>







10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
	-rm -f ./$(DEPDIR)/lib1556-testutil.Po
	-rm -f ./$(DEPDIR)/lib1557-first.Po
	-rm -f ./$(DEPDIR)/lib1557-lib1557.Po
	-rm -f ./$(DEPDIR)/lib1557-testutil.Po
	-rm -f ./$(DEPDIR)/lib1558.Po
	-rm -f ./$(DEPDIR)/lib1559.Po
	-rm -f ./$(DEPDIR)/lib1560.Po
	-rm -f ./$(DEPDIR)/lib1564-first.Po
	-rm -f ./$(DEPDIR)/lib1564-lib1564.Po
	-rm -f ./$(DEPDIR)/lib1564-testutil.Po
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
10471
10472
10473
10474
10475
10476
10477


10478
10479
10480
10481
10482
10483
10484
	-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1541-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po


	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po







>
>







10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
	-rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1541-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
10646
10647
10648
10649
10650
10651
10652






10653
10654
10655
10656
10657
10658
10659
	-rm -f ./$(DEPDIR)/lib1556-testutil.Po
	-rm -f ./$(DEPDIR)/lib1557-first.Po
	-rm -f ./$(DEPDIR)/lib1557-lib1557.Po
	-rm -f ./$(DEPDIR)/lib1557-testutil.Po
	-rm -f ./$(DEPDIR)/lib1558.Po
	-rm -f ./$(DEPDIR)/lib1559.Po
	-rm -f ./$(DEPDIR)/lib1560.Po






	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po







>
>
>
>
>
>







10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
	-rm -f ./$(DEPDIR)/lib1556-testutil.Po
	-rm -f ./$(DEPDIR)/lib1557-first.Po
	-rm -f ./$(DEPDIR)/lib1557-lib1557.Po
	-rm -f ./$(DEPDIR)/lib1557-testutil.Po
	-rm -f ./$(DEPDIR)/lib1558.Po
	-rm -f ./$(DEPDIR)/lib1559.Po
	-rm -f ./$(DEPDIR)/lib1560.Po
	-rm -f ./$(DEPDIR)/lib1564-first.Po
	-rm -f ./$(DEPDIR)/lib1564-lib1564.Po
	-rm -f ./$(DEPDIR)/lib1564-testutil.Po
	-rm -f ./$(DEPDIR)/lib1565-first.Po
	-rm -f ./$(DEPDIR)/lib1565-lib1565.Po
	-rm -f ./$(DEPDIR)/lib1565-testutil.Po
	-rm -f ./$(DEPDIR)/lib1591-first.Po
	-rm -f ./$(DEPDIR)/lib1591-lib1591.Po
	-rm -f ./$(DEPDIR)/lib1591-testutil.Po
	-rm -f ./$(DEPDIR)/lib1592-first.Po
	-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
	-rm -f ./$(DEPDIR)/lib1592-testutil.Po
	-rm -f ./$(DEPDIR)/lib1593.Po
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
.PRECIOUS: Makefile


lib1521.c: $(top_srcdir)/tests/libtest/mk-lib1521.pl $(top_srcdir)/include/curl/curl.h
	@PERL@ $(top_srcdir)/tests/libtest/mk-lib1521.pl < $(top_srcdir)/include/curl/curl.h > lib1521.c

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:







|







11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
.PRECIOUS: Makefile


lib1521.c: $(top_srcdir)/tests/libtest/mk-lib1521.pl $(top_srcdir)/include/curl/curl.h
	@PERL@ $(top_srcdir)/tests/libtest/mk-lib1521.pl < $(top_srcdir)/include/curl/curl.h > lib1521.c

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
Changes to jni/curl/tests/libtest/Makefile.inc.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 \
 lib1540 lib1541 \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
 lib1900 lib1905 lib1906 lib1907 \
 lib2033

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c
chkdecimalpoint_LDADD =







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 \
 lib1540 lib1541 \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 lib1564 lib1565 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
 lib1900 lib1905 lib1906 lib1907 \
 lib2033

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c
chkdecimalpoint_LDADD =
531
532
533
534
535
536
537








538
539
540
541
542
543
544
lib1558_LDADD = $(TESTUTIL_LIBS)

lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1559_LDADD = $(TESTUTIL_LIBS)

lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1560_LDADD = $(TESTUTIL_LIBS)









lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591

lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)







>
>
>
>
>
>
>
>







531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
lib1558_LDADD = $(TESTUTIL_LIBS)

lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1559_LDADD = $(TESTUTIL_LIBS)

lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1560_LDADD = $(TESTUTIL_LIBS)

lib1564_SOURCES = lib1564.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1564_LDADD = $(TESTUTIL_LIBS)
lib1564_CPPFLAGS = $(AM_CPPFLAGS)

lib1565_SOURCES = lib1565.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1565_LDADD = $(TESTUTIL_LIBS)
lib1565_CPPFLAGS = $(AM_CPPFLAGS)

lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1591_LDADD = $(TESTUTIL_LIBS)
lib1591_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1591

lib1592_SOURCES = lib1592.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1592_LDADD = $(TESTUTIL_LIBS)
Changes to jni/curl/tests/libtest/lib1557.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
45
46
47
48
49
50
51
52
53
54
55
56
57
58


59
60
61
62
  easy_init(curl2);
  easy_setopt(curl2, CURLOPT_URL, URL);
  multi_add_handle(curlm, curl2);

  multi_perform(curlm, &running_handles);

  multi_remove_handle(curlm, curl2);
  curl_easy_cleanup(curl2);

  /* If curl2 is still in the connect-pending list, this will crash */
  multi_remove_handle(curlm, curl1);
  curl_easy_cleanup(curl1);

test_cleanup:


  curl_multi_cleanup(curlm);
  curl_global_cleanup();
  return res;
}







<



<


>
>




45
46
47
48
49
50
51

52
53
54

55
56
57
58
59
60
61
62
  easy_init(curl2);
  easy_setopt(curl2, CURLOPT_URL, URL);
  multi_add_handle(curlm, curl2);

  multi_perform(curlm, &running_handles);

  multi_remove_handle(curlm, curl2);


  /* If curl2 is still in the connect-pending list, this will crash */
  multi_remove_handle(curlm, curl1);


test_cleanup:
  curl_easy_cleanup(curl1);
  curl_easy_cleanup(curl2);
  curl_multi_cleanup(curlm);
  curl_global_cleanup();
  return res;
}
Changes to jni/curl/tests/libtest/lib1559.c.
29
30
31
32
33
34
35



36
37
38
39
40
41
42
int test(char *URL)
{
  CURLcode res = 0;
  CURL *curl = NULL;
  char *longurl = malloc(EXCESSIVE);
  CURLU *u;
  (void)URL;




  memset(longurl, 'a', EXCESSIVE);
  longurl[EXCESSIVE-1] = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(curl);








>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int test(char *URL)
{
  CURLcode res = 0;
  CURL *curl = NULL;
  char *longurl = malloc(EXCESSIVE);
  CURLU *u;
  (void)URL;

  if(!longurl)
    return 1;

  memset(longurl, 'a', EXCESSIVE);
  longurl[EXCESSIVE-1] = 0;

  global_init(CURL_GLOBAL_ALL);
  easy_init(curl);

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
           EXCESSIVE, (int)uc);
    uc = curl_url_set(u, CURLUPART_USER, longurl, 0);
    printf("CURLUPART_USER %d bytes user == %d\n",
           EXCESSIVE, (int)uc);
    curl_url_cleanup(u);
  }

  free(longurl);

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return 0;

test_cleanup:

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return res; /* return the final return code */
}







<
<
<
<
<
<
<

|





61
62
63
64
65
66
67







68
69
70
71
72
73
74
           EXCESSIVE, (int)uc);
    uc = curl_url_set(u, CURLUPART_USER, longurl, 0);
    printf("CURLUPART_USER %d bytes user == %d\n",
           EXCESSIVE, (int)uc);
    curl_url_cleanup(u);
  }








test_cleanup:
  free(longurl);
  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return res; /* return the final return code */
}
Added jni/curl/tests/libtest/lib1564.c.




























































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"

#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

#define TEST_HANG_TIMEOUT 60 * 1000
#define WAKEUP_NUM 1234567

int test(char *URL)
{
  CURLM *multi = NULL;
  int numfds;
  int i;
  int res = 0;
  struct timeval time_before_wait, time_after_wait;

  (void)URL;

  start_test_timing();

  global_init(CURL_GLOBAL_ALL);

  multi_init(multi);

  /* no wakeup */

  time_before_wait = tutil_tvnow();
  multi_poll(multi, NULL, 0, 1000, &numfds);
  time_after_wait = tutil_tvnow();

  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
    fprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
            __FILE__, __LINE__);
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }

  abort_on_test_timeout();

  /* try a single wakeup */

  multi_wakeup(multi);

  time_before_wait = tutil_tvnow();
  multi_poll(multi, NULL, 0, 1000, &numfds);
  time_after_wait = tutil_tvnow();

  if(tutil_tvdiff(time_after_wait, time_before_wait) > 500) {
    fprintf(stderr, "%s:%d curl_multi_poll returned too late\n",
            __FILE__, __LINE__);
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }

  abort_on_test_timeout();

  /* previous wakeup should not wake up this */

  time_before_wait = tutil_tvnow();
  multi_poll(multi, NULL, 0, 1000, &numfds);
  time_after_wait = tutil_tvnow();

  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
    fprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
            __FILE__, __LINE__);
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }

  abort_on_test_timeout();

  /* try lots of wakeup */

  for(i = 0; i < WAKEUP_NUM; ++i)
    multi_wakeup(multi);

  time_before_wait = tutil_tvnow();
  multi_poll(multi, NULL, 0, 1000, &numfds);
  time_after_wait = tutil_tvnow();

  if(tutil_tvdiff(time_after_wait, time_before_wait) > 500) {
    fprintf(stderr, "%s:%d curl_multi_poll returned too late\n",
            __FILE__, __LINE__);
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }

  abort_on_test_timeout();

#if !defined(WIN32) && !defined(_WIN32) && !defined(__WIN32__) \
    && !defined(__CYGWIN__)
  /* Even lots of previous wakeups should not wake up this.

     On Windows (particularly when using MinGW), the socketpair
     used for curl_multi_wakeup() is really asynchronous,
     meaning when it's called a lot, it can take some time
     before all of the data can be read. Sometimes it can wake
     up more than one curl_multi_poll() call. */

  time_before_wait = tutil_tvnow();
  multi_poll(multi, NULL, 0, 1000, &numfds);
  time_after_wait = tutil_tvnow();

  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
    fprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
            __FILE__, __LINE__);
    res = TEST_ERR_MAJOR_BAD;
    goto test_cleanup;
  }

  abort_on_test_timeout();
#endif

test_cleanup:

  curl_multi_cleanup(multi);
  curl_global_cleanup();

  return res;
}
Added jni/curl/tests/libtest/lib1565.c.
























































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"

#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

#ifdef HAVE_PTHREAD_H
#include <pthread.h>
#include <unistd.h>

#define TEST_HANG_TIMEOUT 60 * 1000
#define CONN_NUM 3
#define TIME_BETWEEN_START_SECS 2

static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
static CURL *pending_handles[CONN_NUM];
static int pending_num = 0;
static int test_failure = 0;

static CURLM *multi = NULL;
static const char *url;

static void *run_thread(void *ptr)
{
  CURL *easy = NULL;
  int res = 0;
  int i;

  (void)ptr;

  for(i = 0; i < CONN_NUM; i++) {
    sleep(TIME_BETWEEN_START_SECS);

    easy_init(easy);

    easy_setopt(easy, CURLOPT_URL, url);
    easy_setopt(easy, CURLOPT_VERBOSE, 0L);

    pthread_mutex_lock(&lock);

    if(test_failure) {
      pthread_mutex_unlock(&lock);
      goto test_cleanup;
    }

    pending_handles[pending_num] = easy;
    pending_num++;
    easy = NULL;

    pthread_mutex_unlock(&lock);

    multi_wakeup(multi);
  }

test_cleanup:

  curl_easy_cleanup(easy);

  pthread_mutex_lock(&lock);

  if(!test_failure)
    test_failure = res;

  pthread_mutex_unlock(&lock);

  return NULL;
}

int test(char *URL)
{
  int still_running;
  int num;
  int i;
  int res = 0;
  CURL *started_handles[CONN_NUM];
  int started_num = 0;
  int finished_num = 0;
  pthread_t tid = 0;
  struct CURLMsg *message;

  start_test_timing();

  global_init(CURL_GLOBAL_ALL);

  multi_init(multi);

  url = URL;

  res = pthread_create(&tid, NULL, run_thread, NULL);
  if(0 != res) {
    fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
            __FILE__, __LINE__, res);
    goto test_cleanup;
  }

  while(1) {
    multi_perform(multi, &still_running);

    abort_on_test_timeout();

    while((message = curl_multi_info_read(multi, &num)) != NULL) {
      if(message->msg == CURLMSG_DONE) {
        res = message->data.result;
        if(res)
          goto test_cleanup;
        multi_remove_handle(multi, message->easy_handle);
        finished_num++;
      }
      else {
        fprintf(stderr, "%s:%d Got an unexpected message from curl: %i\n",
              __FILE__, __LINE__, (int)message->msg);
        res = TEST_ERR_MAJOR_BAD;
        goto test_cleanup;
      }

      abort_on_test_timeout();
    }

    if(CONN_NUM == finished_num)
      break;

    multi_poll(multi, NULL, 0, TEST_HANG_TIMEOUT, &num);

    abort_on_test_timeout();

    pthread_mutex_lock(&lock);

    while(pending_num > 0) {
      res_multi_add_handle(multi, pending_handles[pending_num - 1]);
      if(res) {
        pthread_mutex_unlock(&lock);
        goto test_cleanup;
      }

      started_handles[started_num] = pending_handles[pending_num - 1];
      started_num++;
      pending_num--;
    }

    pthread_mutex_unlock(&lock);

    abort_on_test_timeout();
  }

  if(CONN_NUM != started_num) {
    fprintf(stderr, "%s:%d Not all connections started: %d of %d\n",
            __FILE__, __LINE__, started_num, CONN_NUM);
    goto test_cleanup;
  }

  if(CONN_NUM != finished_num) {
    fprintf(stderr, "%s:%d Not all connections finished: %d of %d\n",
            __FILE__, __LINE__, started_num, CONN_NUM);
    goto test_cleanup;
  }

test_cleanup:

  pthread_mutex_lock(&lock);
  if(!test_failure)
    test_failure = res;
  pthread_mutex_unlock(&lock);

  if(0 != tid)
    pthread_join(tid, NULL);

  curl_multi_cleanup(multi);
  for(i = 0; i < pending_num; i++)
    curl_easy_cleanup(pending_handles[i]);
  for(i = 0; i < started_num; i++)
    curl_easy_cleanup(started_handles[i]);
  curl_global_cleanup();

  return test_failure;
}

#else /* without pthread, this test doesn't work */
int test(char *URL)
{
  (void)URL;
  return 0;
}
#endif
Changes to jni/curl/tests/libtest/lib1591.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
46
47
48
49
50
51
52



53
54


55
56

57


58





59
60
61
62
63
64
65

  consumed += amount;
  (void)stream;
  memcpy(ptr, data, amount);
  return amount;
}




static int trailers_callback(struct curl_slist **list, void *userdata)
{


  (void)userdata;
  *list = curl_slist_append(*list, "my-super-awesome-trailer: trail1");

  *list = curl_slist_append(*list, "my-other-awesome-trailer: trail2");


  return CURL_TRAILERFUNC_OK;





}

int test(char *URL)
{
  CURL *curl = NULL;
  CURLcode res = CURLE_FAILED_INIT;
  /* http and proxy header list*/







>
>
>


>
>

|
>
|
>
>
|
>
>
>
>
>







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

  consumed += amount;
  (void)stream;
  memcpy(ptr, data, amount);
  return amount;
}

/*
 * carefully not leak memory on OOM
 */
static int trailers_callback(struct curl_slist **list, void *userdata)
{
  struct curl_slist *nlist = NULL;
  struct curl_slist *nlist2 = NULL;
  (void)userdata;
  nlist = curl_slist_append(*list, "my-super-awesome-trailer: trail1");
  if(nlist)
    nlist2 = curl_slist_append(nlist, "my-other-awesome-trailer: trail2");
  if(nlist2) {
    *list = nlist2;
    return CURL_TRAILERFUNC_OK;
  }
  else {
    curl_slist_free_all(nlist);
    return CURL_TRAILERFUNC_ABORT;
  }
}

int test(char *URL)
{
  CURL *curl = NULL;
  CURLcode res = CURLE_FAILED_INIT;
  /* http and proxy header list*/
Changes to jni/curl/tests/libtest/test.h.
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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/* !checksrc! disable ASSIGNWITHINCONDITION all */

/* Now include the curl_setup.h file from libcurl's private libdir (the source
   version, but that might include "curl_config.h" from the build dir so we
   need both of them in the include path), so that we get good in-depth
   knowledge about the system we're building this on */

#define CURL_NO_OLDIES







|














|







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
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/* !checksrc! disable ASSIGNWITHINCONDITION 14 */

/* Now include the curl_setup.h file from libcurl's private libdir (the source
   version, but that might include "curl_config.h" from the build dir so we
   need both of them in the include path), so that we get good in-depth
   knowledge about the system we're building this on */

#define CURL_NO_OLDIES
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
/* ---------------------------------------------------------------- */

#define exe_easy_init(A,Y,Z) do {                                 \
  if(((A) = curl_easy_init()) == NULL) {                          \
    fprintf(stderr, "%s:%d curl_easy_init() failed\n", (Y), (Z)); \
    res = TEST_ERR_EASY_INIT;                                     \
  }                                                               \
} WHILE_FALSE

#define res_easy_init(A) \
  exe_easy_init((A), (__FILE__), (__LINE__))

#define chk_easy_init(A,Y,Z) do { \
  exe_easy_init((A), (Y), (Z));   \
  if(res)                         \
    goto test_cleanup;            \
} WHILE_FALSE

#define easy_init(A) \
  chk_easy_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_init(A,Y,Z) do {                                 \
  if(((A) = curl_multi_init()) == NULL) {                          \
    fprintf(stderr, "%s:%d curl_multi_init() failed\n", (Y), (Z)); \
    res = TEST_ERR_MULTI_INIT;                                     \
  }                                                                \
} WHILE_FALSE

#define res_multi_init(A) \
  exe_multi_init((A), (__FILE__), (__LINE__))

#define chk_multi_init(A,Y,Z) do { \
  exe_multi_init((A), (Y), (Z));   \
  if(res)                          \
    goto test_cleanup;             \
} WHILE_FALSE

#define multi_init(A) \
  chk_multi_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_easy_setopt(A,B,C,Y,Z) do {                    \
  CURLcode ec;                                             \
  if((ec = curl_easy_setopt((A), (B), (C))) != CURLE_OK) { \
    fprintf(stderr, "%s:%d curl_easy_setopt() failed, "    \
            "with code %d (%s)\n",                         \
            (Y), (Z), (int)ec, curl_easy_strerror(ec));    \
    res = (int)ec;                                         \
  }                                                        \
} WHILE_FALSE

#define res_easy_setopt(A, B, C) \
  exe_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))

#define chk_easy_setopt(A, B, C, Y, Z) do { \
  exe_easy_setopt((A), (B), (C), (Y), (Z)); \
  if(res)                                   \
    goto test_cleanup;                      \
} WHILE_FALSE

#define easy_setopt(A, B, C) \
  chk_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_setopt(A, B, C, Y, Z) do {                \
  CURLMcode ec;                                             \
  if((ec = curl_multi_setopt((A), (B), (C))) != CURLM_OK) { \
    fprintf(stderr, "%s:%d curl_multi_setopt() failed, "    \
            "with code %d (%s)\n",                          \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));    \
    res = (int)ec;                                          \
  }                                                         \
} WHILE_FALSE

#define res_multi_setopt(A,B,C) \
  exe_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))

#define chk_multi_setopt(A,B,C,Y,Z) do {     \
  exe_multi_setopt((A), (B), (C), (Y), (Z)); \
  if(res)                                    \
    goto test_cleanup;                       \
} WHILE_FALSE

#define multi_setopt(A,B,C) \
  chk_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_add_handle(A,B,Y,Z) do {                   \
  CURLMcode ec;                                              \
  if((ec = curl_multi_add_handle((A), (B))) != CURLM_OK) {   \
    fprintf(stderr, "%s:%d curl_multi_add_handle() failed, " \
            "with code %d (%s)\n",                           \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));     \
    res = (int)ec;                                           \
  }                                                          \
} WHILE_FALSE

#define res_multi_add_handle(A, B) \
  exe_multi_add_handle((A), (B), (__FILE__), (__LINE__))

#define chk_multi_add_handle(A, B, Y, Z) do { \
  exe_multi_add_handle((A), (B), (Y), (Z));   \
  if(res)                                     \
    goto test_cleanup;                        \
} WHILE_FALSE

#define multi_add_handle(A, B) \
  chk_multi_add_handle((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_remove_handle(A,B,Y,Z) do {                   \
  CURLMcode ec;                                                 \
  if((ec = curl_multi_remove_handle((A), (B))) != CURLM_OK) {   \
    fprintf(stderr, "%s:%d curl_multi_remove_handle() failed, " \
            "with code %d (%s)\n",                              \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));        \
    res = (int)ec;                                              \
  }                                                             \
} WHILE_FALSE

#define res_multi_remove_handle(A, B) \
  exe_multi_remove_handle((A), (B), (__FILE__), (__LINE__))

#define chk_multi_remove_handle(A, B, Y, Z) do { \
  exe_multi_remove_handle((A), (B), (Y), (Z));   \
  if(res)                                        \
    goto test_cleanup;                           \
} WHILE_FALSE


#define multi_remove_handle(A, B) \
  chk_multi_remove_handle((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */








|








|











|








|














|








|














|








|














|








|














|








|







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
/* ---------------------------------------------------------------- */

#define exe_easy_init(A,Y,Z) do {                                 \
  if(((A) = curl_easy_init()) == NULL) {                          \
    fprintf(stderr, "%s:%d curl_easy_init() failed\n", (Y), (Z)); \
    res = TEST_ERR_EASY_INIT;                                     \
  }                                                               \
} while(0)

#define res_easy_init(A) \
  exe_easy_init((A), (__FILE__), (__LINE__))

#define chk_easy_init(A,Y,Z) do { \
  exe_easy_init((A), (Y), (Z));   \
  if(res)                         \
    goto test_cleanup;            \
} while(0)

#define easy_init(A) \
  chk_easy_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_init(A,Y,Z) do {                                 \
  if(((A) = curl_multi_init()) == NULL) {                          \
    fprintf(stderr, "%s:%d curl_multi_init() failed\n", (Y), (Z)); \
    res = TEST_ERR_MULTI_INIT;                                     \
  }                                                                \
} while(0)

#define res_multi_init(A) \
  exe_multi_init((A), (__FILE__), (__LINE__))

#define chk_multi_init(A,Y,Z) do { \
  exe_multi_init((A), (Y), (Z));   \
  if(res)                          \
    goto test_cleanup;             \
} while(0)

#define multi_init(A) \
  chk_multi_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_easy_setopt(A,B,C,Y,Z) do {                    \
  CURLcode ec;                                             \
  if((ec = curl_easy_setopt((A), (B), (C))) != CURLE_OK) { \
    fprintf(stderr, "%s:%d curl_easy_setopt() failed, "    \
            "with code %d (%s)\n",                         \
            (Y), (Z), (int)ec, curl_easy_strerror(ec));    \
    res = (int)ec;                                         \
  }                                                        \
} while(0)

#define res_easy_setopt(A, B, C) \
  exe_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))

#define chk_easy_setopt(A, B, C, Y, Z) do { \
  exe_easy_setopt((A), (B), (C), (Y), (Z)); \
  if(res)                                   \
    goto test_cleanup;                      \
} while(0)

#define easy_setopt(A, B, C) \
  chk_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_setopt(A, B, C, Y, Z) do {                \
  CURLMcode ec;                                             \
  if((ec = curl_multi_setopt((A), (B), (C))) != CURLM_OK) { \
    fprintf(stderr, "%s:%d curl_multi_setopt() failed, "    \
            "with code %d (%s)\n",                          \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));    \
    res = (int)ec;                                          \
  }                                                         \
} while(0)

#define res_multi_setopt(A,B,C) \
  exe_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))

#define chk_multi_setopt(A,B,C,Y,Z) do {     \
  exe_multi_setopt((A), (B), (C), (Y), (Z)); \
  if(res)                                    \
    goto test_cleanup;                       \
} while(0)

#define multi_setopt(A,B,C) \
  chk_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_add_handle(A,B,Y,Z) do {                   \
  CURLMcode ec;                                              \
  if((ec = curl_multi_add_handle((A), (B))) != CURLM_OK) {   \
    fprintf(stderr, "%s:%d curl_multi_add_handle() failed, " \
            "with code %d (%s)\n",                           \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));     \
    res = (int)ec;                                           \
  }                                                          \
} while(0)

#define res_multi_add_handle(A, B) \
  exe_multi_add_handle((A), (B), (__FILE__), (__LINE__))

#define chk_multi_add_handle(A, B, Y, Z) do { \
  exe_multi_add_handle((A), (B), (Y), (Z));   \
  if(res)                                     \
    goto test_cleanup;                        \
} while(0)

#define multi_add_handle(A, B) \
  chk_multi_add_handle((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_remove_handle(A,B,Y,Z) do {                   \
  CURLMcode ec;                                                 \
  if((ec = curl_multi_remove_handle((A), (B))) != CURLM_OK) {   \
    fprintf(stderr, "%s:%d curl_multi_remove_handle() failed, " \
            "with code %d (%s)\n",                              \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));        \
    res = (int)ec;                                              \
  }                                                             \
} while(0)

#define res_multi_remove_handle(A, B) \
  exe_multi_remove_handle((A), (B), (__FILE__), (__LINE__))

#define chk_multi_remove_handle(A, B, Y, Z) do { \
  exe_multi_remove_handle((A), (B), (Y), (Z));   \
  if(res)                                        \
    goto test_cleanup;                           \
} while(0)


#define multi_remove_handle(A, B) \
  chk_multi_remove_handle((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

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
  }                                                              \
  else if(*((B)) < 0) {                                          \
    fprintf(stderr, "%s:%d curl_multi_perform() succeeded, "     \
            "but returned invalid running_handles value (%d)\n", \
            (Y), (Z), (int)*((B)));                              \
    res = TEST_ERR_NUM_HANDLES;                                  \
  }                                                              \
} WHILE_FALSE

#define res_multi_perform(A, B) \
  exe_multi_perform((A), (B), (__FILE__), (__LINE__))

#define chk_multi_perform(A, B, Y, Z) do { \
  exe_multi_perform((A), (B), (Y), (Z));   \
  if(res)                                  \
    goto test_cleanup;                     \
} WHILE_FALSE

#define multi_perform(A,B) \
  chk_multi_perform((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_fdset(A, B, C, D, E, Y, Z) do {                    \
  CURLMcode ec;                                                      \
  if((ec = curl_multi_fdset((A), (B), (C), (D), (E))) != CURLM_OK) { \
    fprintf(stderr, "%s:%d curl_multi_fdset() failed, "              \
            "with code %d (%s)\n",                                   \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));             \
    res = (int)ec;                                                   \
  }                                                                  \
  else if(*((E)) < -1) {                                             \
    fprintf(stderr, "%s:%d curl_multi_fdset() succeeded, "           \
            "but returned invalid max_fd value (%d)\n",              \
            (Y), (Z), (int)*((E)));                                  \
    res = TEST_ERR_NUM_HANDLES;                                      \
  }                                                                  \
} WHILE_FALSE

#define res_multi_fdset(A, B, C, D, E) \
  exe_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

#define chk_multi_fdset(A, B, C, D, E, Y, Z) do {       \
    exe_multi_fdset((A), (B), (C), (D), (E), (Y), (Z)); \
    if(res)                                             \
      goto test_cleanup;                                \
  } WHILE_FALSE

#define multi_fdset(A, B, C, D, E) \
  chk_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_timeout(A,B,Y,Z) do {                      \
  CURLMcode ec;                                              \
  if((ec = curl_multi_timeout((A), (B))) != CURLM_OK) {      \
    fprintf(stderr, "%s:%d curl_multi_timeout() failed, "    \
            "with code %d (%s)\n",                           \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));     \
    res = (int)ec;                                           \
  }                                                          \
  else if(*((B)) < -1L) {                                    \
    fprintf(stderr, "%s:%d curl_multi_timeout() succeeded, " \
            "but returned invalid timeout value (%ld)\n",    \
            (Y), (Z), (long)*((B)));                         \
    res = TEST_ERR_BAD_TIMEOUT;                              \
  }                                                          \
} WHILE_FALSE

#define res_multi_timeout(A, B) \
  exe_multi_timeout((A), (B), (__FILE__), (__LINE__))

#define chk_multi_timeout(A, B, Y, Z) do { \
    exe_multi_timeout((A), (B), (Y), (Z)); \
    if(res)                                \
      goto test_cleanup;                   \
  } WHILE_FALSE

#define multi_timeout(A, B) \
  chk_multi_timeout((A), (B), (__FILE__), (__LINE__))























































/* ---------------------------------------------------------------- */

#define exe_select_test(A, B, C, D, E, Y, Z) do {               \
    int ec;                                                     \
    if(select_wrapper((A), (B), (C), (D), (E)) == -1) {         \
      ec = SOCKERRNO;                                           \
      fprintf(stderr, "%s:%d select() failed, with "            \
              "errno %d (%s)\n",                                \
              (Y), (Z), ec, strerror(ec));                      \
      res = TEST_ERR_SELECT;                                    \
    }                                                           \
  } WHILE_FALSE

#define res_select_test(A, B, C, D, E) \
  exe_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

#define chk_select_test(A, B, C, D, E, Y, Z) do {       \
    exe_select_test((A), (B), (C), (D), (E), (Y), (Z)); \
    if(res)                                             \
      goto test_cleanup;                                \
  } WHILE_FALSE

#define select_test(A, B, C, D, E) \
  chk_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define start_test_timing() do { \
  tv_test_start = tutil_tvnow(); \
} WHILE_FALSE

#define exe_test_timedout(Y,Z) do {                                    \
  if(tutil_tvdiff(tutil_tvnow(), tv_test_start) > TEST_HANG_TIMEOUT) { \
    fprintf(stderr, "%s:%d ABORTING TEST, since it seems "             \
                    "that it would have run forever.\n", (Y), (Z));    \
    res = TEST_ERR_RUNS_FOREVER;                                       \
  }                                                                    \
} WHILE_FALSE

#define res_test_timedout() \
  exe_test_timedout((__FILE__), (__LINE__))

#define chk_test_timedout(Y, Z) do { \
    exe_test_timedout(Y, Z);         \
    if(res)                          \
      goto test_cleanup;             \
  } WHILE_FALSE

#define abort_on_test_timeout() \
  chk_test_timedout((__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_global_init(A,Y,Z) do {                     \
  CURLcode ec;                                          \
  if((ec = curl_global_init((A))) != CURLE_OK) {        \
    fprintf(stderr, "%s:%d curl_global_init() failed, " \
            "with code %d (%s)\n",                      \
            (Y), (Z), (int)ec, curl_easy_strerror(ec)); \
    res = (int)ec;                                      \
  }                                                     \
} WHILE_FALSE

#define res_global_init(A) \
  exe_global_init((A), (__FILE__), (__LINE__))

#define chk_global_init(A, Y, Z) do { \
    exe_global_init((A), (Y), (Z));   \
    if(res)                           \
      return res;                     \
  } WHILE_FALSE

/* global_init() is different than other macros. In case of
   failure it 'return's instead of going to 'test_cleanup'. */

#define global_init(A) \
  chk_global_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */







|








|




















|








|




















|








|



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>












|








|








|







|








|














|








|








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
  }                                                              \
  else if(*((B)) < 0) {                                          \
    fprintf(stderr, "%s:%d curl_multi_perform() succeeded, "     \
            "but returned invalid running_handles value (%d)\n", \
            (Y), (Z), (int)*((B)));                              \
    res = TEST_ERR_NUM_HANDLES;                                  \
  }                                                              \
} while(0)

#define res_multi_perform(A, B) \
  exe_multi_perform((A), (B), (__FILE__), (__LINE__))

#define chk_multi_perform(A, B, Y, Z) do { \
  exe_multi_perform((A), (B), (Y), (Z));   \
  if(res)                                  \
    goto test_cleanup;                     \
} while(0)

#define multi_perform(A,B) \
  chk_multi_perform((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_fdset(A, B, C, D, E, Y, Z) do {                    \
  CURLMcode ec;                                                      \
  if((ec = curl_multi_fdset((A), (B), (C), (D), (E))) != CURLM_OK) { \
    fprintf(stderr, "%s:%d curl_multi_fdset() failed, "              \
            "with code %d (%s)\n",                                   \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));             \
    res = (int)ec;                                                   \
  }                                                                  \
  else if(*((E)) < -1) {                                             \
    fprintf(stderr, "%s:%d curl_multi_fdset() succeeded, "           \
            "but returned invalid max_fd value (%d)\n",              \
            (Y), (Z), (int)*((E)));                                  \
    res = TEST_ERR_NUM_HANDLES;                                      \
  }                                                                  \
} while(0)

#define res_multi_fdset(A, B, C, D, E) \
  exe_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

#define chk_multi_fdset(A, B, C, D, E, Y, Z) do {       \
    exe_multi_fdset((A), (B), (C), (D), (E), (Y), (Z)); \
    if(res)                                             \
      goto test_cleanup;                                \
  } while(0)

#define multi_fdset(A, B, C, D, E) \
  chk_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_timeout(A,B,Y,Z) do {                      \
  CURLMcode ec;                                              \
  if((ec = curl_multi_timeout((A), (B))) != CURLM_OK) {      \
    fprintf(stderr, "%s:%d curl_multi_timeout() failed, "    \
            "with code %d (%s)\n",                           \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));     \
    res = (int)ec;                                           \
  }                                                          \
  else if(*((B)) < -1L) {                                    \
    fprintf(stderr, "%s:%d curl_multi_timeout() succeeded, " \
            "but returned invalid timeout value (%ld)\n",    \
            (Y), (Z), (long)*((B)));                         \
    res = TEST_ERR_BAD_TIMEOUT;                              \
  }                                                          \
} while(0)

#define res_multi_timeout(A, B) \
  exe_multi_timeout((A), (B), (__FILE__), (__LINE__))

#define chk_multi_timeout(A, B, Y, Z) do { \
    exe_multi_timeout((A), (B), (Y), (Z)); \
    if(res)                                \
      goto test_cleanup;                   \
  } while(0)

#define multi_timeout(A, B) \
  chk_multi_timeout((A), (B), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_poll(A,B,C,D,E,Y,Z) do {                          \
  CURLMcode ec;                                                     \
  if((ec = curl_multi_poll((A), (B), (C), (D), (E))) != CURLM_OK) { \
    fprintf(stderr, "%s:%d curl_multi_poll() failed, "              \
            "with code %d (%s)\n",                                  \
            (Y), (Z), (int)ec, curl_multi_strerror(ec));            \
    res = (int)ec;                                                  \
  }                                                                 \
  else if(*((E)) < 0) {                                             \
    fprintf(stderr, "%s:%d curl_multi_poll() succeeded, "           \
            "but returned invalid numfds value (%d)\n",             \
            (Y), (Z), (int)*((E)));                                 \
    res = TEST_ERR_NUM_HANDLES;                                     \
  }                                                                 \
} while(0)

#define res_multi_poll(A, B, C, D, E) \
  exe_multi_poll((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

#define chk_multi_poll(A, B, C, D, E, Y, Z) do {     \
  exe_multi_poll((A), (B), (C), (D), (E), (Y), (Z)); \
  if(res)                                            \
    goto test_cleanup;                               \
} while(0)

#define multi_poll(A, B, C, D, E) \
  chk_multi_poll((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_multi_wakeup(A,Y,Z) do {                     \
  CURLMcode ec;                                          \
  if((ec = curl_multi_wakeup((A))) != CURLM_OK) {        \
    fprintf(stderr, "%s:%d curl_multi_wakeup() failed, " \
            "with code %d (%s)\n",                       \
            (Y), (Z), (int)ec, curl_multi_strerror(ec)); \
    res = (int)ec;                                       \
  }                                                      \
} while(0)

#define res_multi_wakeup(A) \
  exe_multi_wakeup((A), (__FILE__), (__LINE__))

#define chk_multi_wakeup(A, Y, Z) do { \
  exe_multi_wakeup((A), (Y), (Z));     \
  if(res)                              \
    goto test_cleanup;                 \
} while(0)

#define multi_wakeup(A) \
  chk_multi_wakeup((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_select_test(A, B, C, D, E, Y, Z) do {               \
    int ec;                                                     \
    if(select_wrapper((A), (B), (C), (D), (E)) == -1) {         \
      ec = SOCKERRNO;                                           \
      fprintf(stderr, "%s:%d select() failed, with "            \
              "errno %d (%s)\n",                                \
              (Y), (Z), ec, strerror(ec));                      \
      res = TEST_ERR_SELECT;                                    \
    }                                                           \
  } while(0)

#define res_select_test(A, B, C, D, E) \
  exe_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

#define chk_select_test(A, B, C, D, E, Y, Z) do {       \
    exe_select_test((A), (B), (C), (D), (E), (Y), (Z)); \
    if(res)                                             \
      goto test_cleanup;                                \
  } while(0)

#define select_test(A, B, C, D, E) \
  chk_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define start_test_timing() do { \
  tv_test_start = tutil_tvnow(); \
} while(0)

#define exe_test_timedout(Y,Z) do {                                    \
  if(tutil_tvdiff(tutil_tvnow(), tv_test_start) > TEST_HANG_TIMEOUT) { \
    fprintf(stderr, "%s:%d ABORTING TEST, since it seems "             \
                    "that it would have run forever.\n", (Y), (Z));    \
    res = TEST_ERR_RUNS_FOREVER;                                       \
  }                                                                    \
} while(0)

#define res_test_timedout() \
  exe_test_timedout((__FILE__), (__LINE__))

#define chk_test_timedout(Y, Z) do { \
    exe_test_timedout(Y, Z);         \
    if(res)                          \
      goto test_cleanup;             \
  } while(0)

#define abort_on_test_timeout() \
  chk_test_timedout((__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */

#define exe_global_init(A,Y,Z) do {                     \
  CURLcode ec;                                          \
  if((ec = curl_global_init((A))) != CURLE_OK) {        \
    fprintf(stderr, "%s:%d curl_global_init() failed, " \
            "with code %d (%s)\n",                      \
            (Y), (Z), (int)ec, curl_easy_strerror(ec)); \
    res = (int)ec;                                      \
  }                                                     \
} while(0)

#define res_global_init(A) \
  exe_global_init((A), (__FILE__), (__LINE__))

#define chk_global_init(A, Y, Z) do { \
    exe_global_init((A), (Y), (Z));   \
    if(res)                           \
      return res;                     \
  } while(0)

/* global_init() is different than other macros. In case of
   failure it 'return's instead of going to 'test_cleanup'. */

#define global_init(A) \
  chk_global_init((A), (__FILE__), (__LINE__))

/* ---------------------------------------------------------------- */
jni/curl/tests/manpage-scan.pl became executable.
Changes to jni/curl/tests/runtests.1.
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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "May 05, 2017" "Curl 7.67.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [test number] [!test number] [key word] [!key word]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's







|














|







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
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "December 13, 2019" "Curl 7.68.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [test number] [!test number] [key word] [!key word]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's
79
80
81
82
83
84
85







86
87





88
89
90
91
92
93
94
access to the machine and logs.
.IP "-R"
Run the tests in a scrambled, or randomized, order instead of sequentially.
.IP "-r"
Display run time statistics. (Requires Perl Time::HiRes module)
.IP "-rf"
Display full run time statistics. (Requires Perl Time::HiRes module)







.IP "-s"
Shorter output. Speaks less than default.





.IP "-t[num]"
Selects a \fBtorture\fP test for the given tests. This makes runtests.pl first
run the tests once and count the number of memory allocations made. It then
reruns the test that number of times, each time forcing one of the allocations
to fail until all allocs have been tested. By setting \fInum\fP you can force
the allocation with that number to be set to fail at once instead of looping
through everyone, which is very handy when debugging and then often in







>
>
>
>
>
>
>


>
>
>
>
>







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
access to the machine and logs.
.IP "-R"
Run the tests in a scrambled, or randomized, order instead of sequentially.
.IP "-r"
Display run time statistics. (Requires Perl Time::HiRes module)
.IP "-rf"
Display full run time statistics. (Requires Perl Time::HiRes module)
.IP "--repeat=[num]"
This will repeat the given set of test numbers this many times. If no test
numbers are given, it will repeat ALL tests this many times. It iteratively
adds the new sequence at the end of the initially given one.

If \fB-R\fP is also used, the scrambling is done after the repeats have
extended the test sequence.
.IP "-s"
Shorter output. Speaks less than default.
.IP "--shallow=[num](,seed)"
Used together with \fB-t\fP. This limits the number of tests to fail in
torture mode to no more than 'num' per test case. If this reduces the amount,
the given 'seed' will be used to randomly discard entries to fail until the
amount is 'num'.
.IP "-t[num]"
Selects a \fBtorture\fP test for the given tests. This makes runtests.pl first
run the tests once and count the number of memory allocations made. It then
reruns the test that number of times, each time forcing one of the allocations
to fail until all allocs have been tested. By setting \fInum\fP you can force
the allocation with that number to be set to fail at once instead of looping
through everyone, which is very handy when debugging and then often in
Changes to jni/curl/tests/runtests.pl.
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
my $HTTP2PORT;           # HTTP/2 server port
my $DICTPORT;            # DICT server port
my $SMBPORT;             # SMB server port
my $SMBSPORT;            # SMBS server port
my $NEGTELNETPORT;       # TELNET server port with negotiation

my $srcdir = $ENV{'srcdir'} || '.';
my $CURL="../src/curl".exe_ext(); # what curl executable to run on the tests
my $VCURL=$CURL;   # what curl binary to use to verify the servers with
                   # VCURL is handy to set to the system one when the one you
                   # just built hangs or crashes and thus prevent verification
my $DBGCURL=$CURL; #"../src/.libs/curl";  # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="$srcdir/data";
my $LIBDIR="./libtest";







|







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
my $HTTP2PORT;           # HTTP/2 server port
my $DICTPORT;            # DICT server port
my $SMBPORT;             # SMB server port
my $SMBSPORT;            # SMBS server port
my $NEGTELNETPORT;       # TELNET server port with negotiation

my $srcdir = $ENV{'srcdir'} || '.';
my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the tests
my $VCURL=$CURL;   # what curl binary to use to verify the servers with
                   # VCURL is handy to set to the system one when the one you
                   # just built hangs or crashes and thus prevent verification
my $DBGCURL=$CURL; #"../src/.libs/curl";  # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="$srcdir/data";
my $LIBDIR="./libtest";
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
# invoke perl like this:
my $perl="perl -I$srcdir";
my $server_response_maxtime=13;

my $debug_build=0;          # built debug enabled (--enable-debug)
my $has_memory_tracking=0;  # built with memory tracking (--enable-curldebug)
my $libtool;


# name of the file that the memory debugging creates:
my $memdump="$LOGDIR/memdump";

# the path to the script that analyzes the memory debug output file:
my $memanalyze="$perl $srcdir/memanalyze.pl";

my $pwd = getcwd();          # current working directory
my $posix_pwd = $pwd;

my $start;
my $ftpchecktime=1; # time it took to verify our test FTP server
my $scrambleorder;
my $stunnel = checkcmd("stunnel4") || checkcmd("tstunnel") || checkcmd("stunnel");
my $valgrind = checktestcmd("valgrind");
my $valgrind_logfile="--logfile";
my $valgrind_tool;
my $gdb = checktestcmd("gdb");
my $httptlssrv = find_httptlssrv();




my $has_ssl;        # set if libcurl is built with SSL support
my $has_largefile;  # set if libcurl is built with large file support
my $has_idn;        # set if libcurl is built with IDN support
my $http_ipv6;      # set if HTTP server has IPv6 support
my $http_unix;      # set if HTTP server has Unix sockets support
my $ftp_ipv6;       # set if FTP server has IPv6 support
my $tftp_ipv6;      # set if TFTP server has IPv6 support







>




















>
>
>







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
# invoke perl like this:
my $perl="perl -I$srcdir";
my $server_response_maxtime=13;

my $debug_build=0;          # built debug enabled (--enable-debug)
my $has_memory_tracking=0;  # built with memory tracking (--enable-curldebug)
my $libtool;
my $repeat = 0;

# name of the file that the memory debugging creates:
my $memdump="$LOGDIR/memdump";

# the path to the script that analyzes the memory debug output file:
my $memanalyze="$perl $srcdir/memanalyze.pl";

my $pwd = getcwd();          # current working directory
my $posix_pwd = $pwd;

my $start;
my $ftpchecktime=1; # time it took to verify our test FTP server
my $scrambleorder;
my $stunnel = checkcmd("stunnel4") || checkcmd("tstunnel") || checkcmd("stunnel");
my $valgrind = checktestcmd("valgrind");
my $valgrind_logfile="--logfile";
my $valgrind_tool;
my $gdb = checktestcmd("gdb");
my $httptlssrv = find_httptlssrv();

my $uname_release = `uname -r`;
my $is_wsl = $uname_release =~ /Microsoft$/;

my $has_ssl;        # set if libcurl is built with SSL support
my $has_largefile;  # set if libcurl is built with large file support
my $has_idn;        # set if libcurl is built with IDN support
my $http_ipv6;      # set if HTTP server has IPv6 support
my $http_unix;      # set if HTTP server has Unix sockets support
my $ftp_ipv6;       # set if FTP server has IPv6 support
my $tftp_ipv6;      # set if TFTP server has IPv6 support
314
315
316
317
318
319
320


321
322
323
324
325
326





327
328
329
330
331
332
333
334
my %serverpidfile;# all server pid file names, identified by server id
my %runcert;      # cert file currently in use by an ssl running server

# torture test variables
my $torture;
my $tortnum;
my $tortalloc;



#######################################################################
# logmsg is our general message logging subroutine.
#
sub logmsg {
    for(@_) {





        print "$_";
    }
}

# get the name of the current user
my $USER = $ENV{USER};          # Linux
if (!$USER) {
    $USER = $ENV{USERNAME};     # Windows







>
>






>
>
>
>
>
|







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
my %serverpidfile;# all server pid file names, identified by server id
my %runcert;      # cert file currently in use by an ssl running server

# torture test variables
my $torture;
my $tortnum;
my $tortalloc;
my $shallow;
my $shallowseed;

#######################################################################
# logmsg is our general message logging subroutine.
#
sub logmsg {
    for(@_) {
        my $line = $_;
        if ($is_wsl) {
            # use \r\n for WSL shell
            $line =~ s/\r?\n$/\r\n/g;
        }
        print "$line";
    }
}

# get the name of the current user
my $USER = $ENV{USER};          # Linux
if (!$USER) {
    $USER = $ENV{USERNAME};     # Windows
586
587
588
589
590
591
592
















593
594
595

596
597
598
599




600
601
602
603
604
605
606
        }
    }
    if(!$count) {
        logmsg " found no functions to make fail\n";
        return 0;
    }

















    logmsg " $count functions to make fail\n";

    for ( 1 .. $count ) {

        my $limit = $_;
        my $fail;
        my $dumped_core;





        if($tortalloc && ($tortalloc != $limit)) {
            next;
        }

        if($verbose) {
            my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
                localtime(time());







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
>




>
>
>
>







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
        }
    }
    if(!$count) {
        logmsg " found no functions to make fail\n";
        return 0;
    }

    my @ttests = (1 .. $count);
    if($shallow && ($shallow < $count)) {
        my $discard = scalar(@ttests) - $shallow;
        my $percent = sprintf("%.2f%%", $shallow * 100 / scalar(@ttests));;
        logmsg " $count functions found, but only fail $shallow ($percent)\n";
        while($discard) {
            my $rm;
            do {
                # find a test to discard
                $rm = rand(scalar(@ttests));
            } while(!$ttests[$rm]);
            $ttests[$rm] = undef;
            $discard--;
        }
    }
    else {
        logmsg " $count functions to make fail\n";
    }

    for (@ttests) {
        my $limit = $_;
        my $fail;
        my $dumped_core;

        if(!defined($limit)) {
            # --shallow can undefine them
            next;
        }
        if($tortalloc && ($tortalloc != $limit)) {
            next;
        }

        if($verbose) {
            my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
                localtime(time());
2903
2904
2905
2906
2907
2908
2909

2910
2911
2912
2913
2914
2915
2916
2917

2918
2919
2920
2921
2922
2923
2924
2925
2926

2927
2928
2929
2930
2931
2932
2933
2934
        close(CONF);
    }

    if($has_ipv6) {
        # client has IPv6 support

        # check if the HTTP server has it!

        my @sws = `server/sws --version`;
        if($sws[0] =~ /IPv6/) {
            # HTTP server has IPv6 support!
            $http_ipv6 = 1;
            $gopher_ipv6 = 1;
        }

        # check if the FTP server has it!

        @sws = `server/sockfilt --version`;
        if($sws[0] =~ /IPv6/) {
            # FTP server has IPv6 support!
            $ftp_ipv6 = 1;
        }
    }

    if($has_unix) {
        # client has Unix sockets support, check whether the HTTP server has it

        my @sws = `server/sws --version`;
        $http_unix = 1 if($sws[0] =~ /unix/);
    }

    if(!$has_memory_tracking && $torture) {
        die "can't run torture tests since curl was built without ".
            "TrackMemory feature (--enable-curldebug)";
    }







>
|







>
|








>
|







2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
        close(CONF);
    }

    if($has_ipv6) {
        # client has IPv6 support

        # check if the HTTP server has it!
        my $cmd = "server/sws".exe_ext('SRV')." --version";
        my @sws = `$cmd`;
        if($sws[0] =~ /IPv6/) {
            # HTTP server has IPv6 support!
            $http_ipv6 = 1;
            $gopher_ipv6 = 1;
        }

        # check if the FTP server has it!
        $cmd = "server/sockfilt".exe_ext('SRV')." --version";
        @sws = `$cmd`;
        if($sws[0] =~ /IPv6/) {
            # FTP server has IPv6 support!
            $ftp_ipv6 = 1;
        }
    }

    if($has_unix) {
        # client has Unix sockets support, check whether the HTTP server has it
        my $cmd = "server/sws".exe_ext('SRV')." --version";
        my @sws = `$cmd`;
        $http_unix = 1 if($sws[0] =~ /unix/);
    }

    if(!$has_memory_tracking && $torture) {
        die "can't run torture tests since curl was built without ".
            "TrackMemory feature (--enable-curldebug)";
    }
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
                $oldenv{$var} = ($ENV{$var})?"$ENV{$var}":'notset';
                # set new value
                if(!$content) {
                    delete $ENV{$var} if($ENV{$var});
                }
                else {
                    if($var =~ /^LD_PRELOAD/) {
                        if(exe_ext() && (exe_ext() eq '.exe')) {
                            # print "Skipping LD_PRELOAD due to lack of OS support\n";
                            next;
                        }
                        if($debug_build || ($has_shared ne "yes")) {
                            # print "Skipping LD_PRELOAD due to no release shared build\n";
                            next;
                        }







|







3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
                $oldenv{$var} = ($ENV{$var})?"$ENV{$var}":'notset';
                # set new value
                if(!$content) {
                    delete $ENV{$var} if($ENV{$var});
                }
                else {
                    if($var =~ /^LD_PRELOAD/) {
                        if(exe_ext('TOOL') && (exe_ext('TOOL') eq '.exe')) {
                            # print "Skipping LD_PRELOAD due to lack of OS support\n";
                            next;
                        }
                        if($debug_build || ($has_shared ne "yes")) {
                            # print "Skipping LD_PRELOAD due to no release shared build\n";
                            next;
                        }
3477
3478
3479
3480
3481
3482
3483

3484
3485
3486
3487
3488
3489
3490

    my @codepieces = getpart("client", "tool");

    my $tool="";
    if(@codepieces) {
        $tool = $codepieces[0];
        chomp $tool;

    }

    # remove server output logfile
    unlink($SERVERIN);
    unlink($SERVER2IN);
    unlink($PROXYIN);








>







3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526

    my @codepieces = getpart("client", "tool");

    my $tool="";
    if(@codepieces) {
        $tool = $codepieces[0];
        chomp $tool;
        $tool .= exe_ext('TOOL');
    }

    # remove server output logfile
    unlink($SERVERIN);
    unlink($SERVER2IN);
    unlink($PROXYIN);

5005
5006
5007
5008
5009
5010
5011












5012
5013
5014
5015
5016
5017
5018
        # torture
        $torture=1;
        my $xtra = $1;

        if($xtra =~ s/(\d+)$//) {
            $tortalloc = $1;
        }












    }
    elsif($ARGV[0] eq "-a") {
        # continue anyway, even if a test fail
        $anyway=1;
    }
    elsif($ARGV[0] eq "-p") {
        $postmortem=1;







>
>
>
>
>
>
>
>
>
>
>
>







5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
        # torture
        $torture=1;
        my $xtra = $1;

        if($xtra =~ s/(\d+)$//) {
            $tortalloc = $1;
        }
    }
    elsif($ARGV[0] =~ /--shallow=(\d+)(,|)(\d*)/) {
        # Fail no more than this amount per tests when running
        # torture.
        my ($num, $seed)=($1,$3);
        $shallow=$num;
        $shallowseed=$seed?$seed:1234; # get a real seed later
        srand($shallowseed); # make it predictable
    }
    elsif($ARGV[0] =~ /--repeat=(\d+)/) {
        # Repeat-run the given tests this many times
        $repeat = $1;
    }
    elsif($ARGV[0] eq "-a") {
        # continue anyway, even if a test fail
        $anyway=1;
    }
    elsif($ARGV[0] eq "-p") {
        $postmortem=1;
5054
5055
5056
5057
5058
5059
5060

5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
        }
    }
    elsif(($ARGV[0] eq "-h") || ($ARGV[0] eq "--help")) {
        # show help text
        print <<EOHELP
Usage: runtests.pl [options] [test selection(s)]
  -a       continue even if a test fails

  -bN      use base port number N for test servers (default $base)
  -c path  use this curl executable
  -d       display server debug info
  -e       event-based execution
  -g       run the test case with gdb
  -gw      run the test case with gdb as a windowed application
  -h       this help text
  -k       keep stdout and stderr files present after tests
  -l       list all test case names/descriptions
  -n       no valgrind
  -p       print log file contents when a test fails
  -R       scrambled order
  -r       run time statistics
  -rf      full run time statistics
  -s       short output
  -am      automake style output PASS/FAIL: [number] [name]
  -t[N]    torture (simulate function failures); N means fail Nth function
  -v       verbose output
  -vc path use this curl only to verify the existing servers
  [num]    like "5 6 9" or " 5 to 22 " to run those tests only
  [!num]   like "!5 !6 !9" to disable those tests
  [keyword] like "IPv6" to select only tests containing the key word
  [!keyword] like "!cookies" to disable any tests containing the key word







>















|







5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
        }
    }
    elsif(($ARGV[0] eq "-h") || ($ARGV[0] eq "--help")) {
        # show help text
        print <<EOHELP
Usage: runtests.pl [options] [test selection(s)]
  -a       continue even if a test fails
  -am      automake style output PASS/FAIL: [number] [name]
  -bN      use base port number N for test servers (default $base)
  -c path  use this curl executable
  -d       display server debug info
  -e       event-based execution
  -g       run the test case with gdb
  -gw      run the test case with gdb as a windowed application
  -h       this help text
  -k       keep stdout and stderr files present after tests
  -l       list all test case names/descriptions
  -n       no valgrind
  -p       print log file contents when a test fails
  -R       scrambled order
  -r       run time statistics
  -rf      full run time statistics
  -s       short output
  --shallow=[num](,seed) make the torture tests thinner
  -t[N]    torture (simulate function failures); N means fail Nth function
  -v       verbose output
  -vc path use this curl only to verify the existing servers
  [num]    like "5 6 9" or " 5 to 22 " to run those tests only
  [!num]   like "!5 !6 !9" to disable those tests
  [keyword] like "IPv6" to select only tests containing the key word
  [!keyword] like "!cookies" to disable any tests containing the key word
5294
5295
5296
5297
5298
5299
5300







5301
5302
5303
5304
5305
5306
5307
    } split(" ", $TESTCASES);
    if($verified eq "") {
        print "No existing test cases were specified\n";
        exit;
    }
    $TESTCASES = $verified;
}








if($scrambleorder) {
    # scramble the order of the test cases
    my @rand;
    while($TESTCASES) {
        my @all = split(/ +/, $TESTCASES);
        if(!$all[0]) {







>
>
>
>
>
>
>







5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
    } split(" ", $TESTCASES);
    if($verified eq "") {
        print "No existing test cases were specified\n";
        exit;
    }
    $TESTCASES = $verified;
}
if($repeat) {
    my $s;
    for(1 .. $repeat) {
        $s .= $TESTCASES;
    }
    $TESTCASES = $s;
}

if($scrambleorder) {
    # scramble the order of the test cases
    my @rand;
    while($TESTCASES) {
        my @all = split(/ +/, $TESTCASES);
        if(!$all[0]) {
Changes to jni/curl/tests/server/CMakeLists.txt.
1
2
3
4
5
6
7
8
9
10
11
set(TARGET_LABEL_PREFIX "Test server ")

if(MSVC)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127 /wd4306")
endif()

function(SETUP_EXECUTABLE TEST_NAME)    # ARGN are the files in the test
  add_executable(${TEST_NAME} ${ARGN})
  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)

  include_directories(



|







1
2
3
4
5
6
7
8
9
10
11
set(TARGET_LABEL_PREFIX "Test server ")

if(MSVC)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4306")
endif()

function(SETUP_EXECUTABLE TEST_NAME)    # ARGN are the files in the test
  add_executable(${TEST_NAME} ${ARGN})
  string(TOUPPER ${TEST_NAME} UPPER_TEST_NAME)

  include_directories(
Changes to jni/curl/tests/server/Makefile.am.
58
59
60
61
62
63
64
65
66
67
68
69
70

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
all-local: checksrc
endif







|





58
59
60
61
62
63
64
65
66
67
68
69
70

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
all-local: checksrc
endif
Changes to jni/curl/tests/server/Makefile.in.
523
524
525
526
527
528
529

530
531
532
533
534
535
536
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am

.PRECIOUS: Makefile


checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:







|







2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am

.PRECIOUS: Makefile


checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
Changes to jni/curl/tests/server/resolve.c.
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  int arg = 1;
  const char *host = NULL;
  int rc = 0;

  while(argc>arg) {
    if(!strcmp("--version", argv[arg])) {
      printf("resolve IPv4%s\n",
#ifdef ENABLE_IPV6
             "/IPv6"
#else
             ""
#endif
             );
      return 0;
    }







|







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  int arg = 1;
  const char *host = NULL;
  int rc = 0;

  while(argc>arg) {
    if(!strcmp("--version", argv[arg])) {
      printf("resolve IPv4%s\n",
#if defined(CURLRES_IPV6)
             "/IPv6"
#else
             ""
#endif
             );
      return 0;
    }
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
      host = argv[arg++];
    }
  }
  if(!host) {
    puts("Usage: resolve [option] <host>\n"
         " --version\n"
         " --ipv4"
#ifdef ENABLE_IPV6
         "\n --ipv6"
#endif
         );
    return 1;
  }

#ifdef WIN32
  win32_init();
  atexit(win32_cleanup);
#endif

#ifdef ENABLE_IPV6
  if(use_ipv6) {
    /* Check that the system has IPv6 enabled before checking the resolver */
    curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
    if(s == CURL_SOCKET_BAD)
      /* an IPv6 address was requested and we can't get/use one */
      rc = -1;
    else {







|











|







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
      host = argv[arg++];
    }
  }
  if(!host) {
    puts("Usage: resolve [option] <host>\n"
         " --version\n"
         " --ipv4"
#if defined(CURLRES_IPV6)
         "\n --ipv6"
#endif
         );
    return 1;
  }

#ifdef WIN32
  win32_init();
  atexit(win32_cleanup);
#endif

#if defined(CURLRES_IPV6)
  if(use_ipv6) {
    /* Check that the system has IPv6 enabled before checking the resolver */
    curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
    if(s == CURL_SOCKET_BAD)
      /* an IPv6 address was requested and we can't get/use one */
      rc = -1;
    else {
Changes to jni/curl/tests/server/sws.c.
363
364
365
366
367
368
369


370
371
372
373
374
375
376
{
  FILE *stream;
  char *filename;
  int error;

  filename = test2file(req->testno);
  req->close = FALSE;


  stream = fopen(filename, "rb");
  if(!stream) {
    error = errno;
    logmsg("fopen() failed with error: %d %s", error, strerror(error));
    logmsg("  [1] Error opening file: %s", filename);
    logmsg("  Couldn't open test file %ld", req->testno);
    req->open = FALSE; /* closes connection */







>
>







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
{
  FILE *stream;
  char *filename;
  int error;

  filename = test2file(req->testno);
  req->close = FALSE;
  req->connmon = FALSE;

  stream = fopen(filename, "rb");
  if(!stream) {
    error = errno;
    logmsg("fopen() failed with error: %d %s", error, strerror(error));
    logmsg("  [1] Error opening file: %s", filename);
    logmsg("  Couldn't open test file %ld", req->testno);
    req->open = FALSE; /* closes connection */
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
    fclose(stream);
    if(error) {
      logmsg("getpart() failed with error: %d", error);
      req->open = FALSE; /* closes connection */
      return 1; /* done */
    }

    req->connmon = FALSE;

    cmd = orgcmd;
    while(cmd && cmdsize) {
      char *check;

      if(!strncmp(CMD_AUTH_REQUIRED, cmd, strlen(CMD_AUTH_REQUIRED))) {
        logmsg("instructed to require authorization header");
        req->auth_req = TRUE;







<
<







389
390
391
392
393
394
395


396
397
398
399
400
401
402
    fclose(stream);
    if(error) {
      logmsg("getpart() failed with error: %d", error);
      req->open = FALSE; /* closes connection */
      return 1; /* done */
    }



    cmd = orgcmd;
    while(cmd && cmdsize) {
      char *check;

      if(!strncmp(CMD_AUTH_REQUIRED, cmd, strlen(CMD_AUTH_REQUIRED))) {
        logmsg("instructed to require authorization header");
        req->auth_req = TRUE;
536
537
538
539
540
541
542
543
544
545
546
547

548

549
550
551
552
553
554
555
        req->partno = 0;

      if(req->testno) {

        msnprintf(logbuf, sizeof(logbuf), "Requested test number %ld part %ld",
                  req->testno, req->partno);
        logmsg("%s", logbuf);

        /* find and parse <servercmd> for this test */
        parse_servercmd(req);
      }
      else

        req->testno = DOCNUMBER_NOTHING;


    }

    if(req->testno == DOCNUMBER_NOTHING) {
      /* didn't find any in the first scan, try alternative test case
         number placements */








|
<
<
<
|
>

>







536
537
538
539
540
541
542
543



544
545
546
547
548
549
550
551
552
553
554
        req->partno = 0;

      if(req->testno) {

        msnprintf(logbuf, sizeof(logbuf), "Requested test number %ld part %ld",
                  req->testno, req->partno);
        logmsg("%s", logbuf);
      }



      else {
        logmsg("No test number");
        req->testno = DOCNUMBER_NOTHING;
      }

    }

    if(req->testno == DOCNUMBER_NOTHING) {
      /* didn't find any in the first scan, try alternative test case
         number placements */

601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622

        }
        logmsg("Port number: %d, test case number: %ld",
               req->connect_port, req->testno);
      }
    }

    if(req->testno == DOCNUMBER_NOTHING) {
      /* check for a Testno: header with the test case number */
      char *testno = strstr(line, "\nTestno: ");
      if(testno) {
        req->testno = strtol(&testno[9], NULL, 10);
        logmsg("Found test number %d in Testno: header!", req->testno);
      }
    }
    if(req->testno == DOCNUMBER_NOTHING) {
      /* Still no test case number. Try to get the the number off the last dot
         instead, IE we consider the TLD to be the test number. Test 123 can
         then be written as "example.com.123". */

      /* find the last dot */
      ptr = strrchr(doc, '.');







<
<
<
<
<
<
<
<







600
601
602
603
604
605
606








607
608
609
610
611
612
613

        }
        logmsg("Port number: %d, test case number: %ld",
               req->connect_port, req->testno);
      }
    }









    if(req->testno == DOCNUMBER_NOTHING) {
      /* Still no test case number. Try to get the the number off the last dot
         instead, IE we consider the TLD to be the test number. Test 123 can
         then be written as "example.com.123". */

      /* find the last dot */
      ptr = strrchr(doc, '.');
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665















666
667
668
669
670
671
672
        req->testno = DOCNUMBER_404;
      }
      else
        parse_servercmd(req);
    }
  }
  else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
    logmsg("** Unusual request. Starts with %02x %02x %02x",
           line[0], line[1], line[2]);
  }

  if(!end) {
    /* we don't have a complete request yet! */
    logmsg("request not complete yet");
    return 0; /* not complete yet */
  }
  logmsg("- request found to be complete");
















  if(use_gopher) {
    /* when using gopher we cannot check the request until the entire
       thing has been received */
    char *ptr;

    /* find the last slash in the line */







|
|







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







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
        req->testno = DOCNUMBER_404;
      }
      else
        parse_servercmd(req);
    }
  }
  else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
    logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
           line[0], line[1], line[2], line[0], line[1], line[2]);
  }

  if(!end) {
    /* we don't have a complete request yet! */
    logmsg("request not complete yet");
    return 0; /* not complete yet */
  }
  logmsg("- request found to be complete (%d)", req->testno);

  if(req->testno == DOCNUMBER_NOTHING) {
    /* check for a Testno: header with the test case number */
    char *testno = strstr(line, "\nTestno: ");
    if(testno) {
      req->testno = strtol(&testno[9], NULL, 10);
      logmsg("Found test number %d in Testno: header!", req->testno);
    }
    else {
      logmsg("No Testno: header");
    }
  }

  /* find and parse <servercmd> for this test */
  parse_servercmd(req);

  if(use_gopher) {
    /* when using gopher we cannot check the request until the entire
       thing has been received */
    char *ptr;

    /* find the last slash in the line */
1232
1233
1234
1235
1236
1237
1238


1239
1240
1241
1242
1243
1244
1245
    return -1;
  }

  if(sendfailure) {
    logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) "
           "were sent",
           responsesize-count, responsesize);


    free(ptr);
    free(cmd);
    return -1;
  }

  logmsg("Response sent (%zu bytes) and written to %s",
         responsesize, responsedump);







>
>







1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
    return -1;
  }

  if(sendfailure) {
    logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) "
           "were sent",
           responsesize-count, responsesize);
    prevtestno = req->testno;
    prevpartno = req->partno;
    free(ptr);
    free(cmd);
    return -1;
  }

  logmsg("Response sent (%zu bytes) and written to %s",
         responsesize, responsedump);
Changes to jni/curl/tests/server/util.c.
146
147
148
149
150
151
152
153

154
155
156
157
158
159
160
#ifdef WIN32
/* use instead of perror() on generic windows */
void win32_perror(const char *msg)
{
  char buf[512];
  DWORD err = SOCKERRNO;

  if(!FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,

                     LANG_NEUTRAL, buf, sizeof(buf), NULL))
    msnprintf(buf, sizeof(buf), "Unknown error %lu (%#lx)", err, err);
  if(msg)
    fprintf(stderr, "%s: ", msg);
  fprintf(stderr, "%s\n", buf);
}
#endif  /* WIN32 */







|
>







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#ifdef WIN32
/* use instead of perror() on generic windows */
void win32_perror(const char *msg)
{
  char buf[512];
  DWORD err = SOCKERRNO;

  if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
                      FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
                     LANG_NEUTRAL, buf, sizeof(buf), NULL))
    msnprintf(buf, sizeof(buf), "Unknown error %lu (%#lx)", err, err);
  if(msg)
    fprintf(stderr, "%s: ", msg);
  fprintf(stderr, "%s\n", buf);
}
#endif  /* WIN32 */
Changes to jni/curl/tests/sshhelp.pm.
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
    sshversioninfo
    );


#***************************************************************************
# Global variables initialization
#
$sshdexe         = 'sshd'        .exe_ext(); # base name and ext of ssh daemon
$sshexe          = 'ssh'         .exe_ext(); # base name and ext of ssh client
$sftpsrvexe      = 'sftp-server' .exe_ext(); # base name and ext of sftp-server
$sftpexe         = 'sftp'        .exe_ext(); # base name and ext of sftp client
$sshkeygenexe    = 'ssh-keygen'  .exe_ext(); # base name and ext of ssh-keygen
$httptlssrvexe   = 'gnutls-serv' .exe_ext(); # base name and ext of gnutls-serv
$sshdconfig      = 'curl_sshd_config';       # ssh daemon config file
$sshconfig       = 'curl_ssh_config';        # ssh client config file
$sftpconfig      = 'curl_sftp_config';       # sftp client config file
$sshdlog         = undef;                    # ssh daemon log file
$sshlog          = undef;                    # ssh client log file
$sftplog         = undef;                    # sftp client log file
$sftpcmds        = 'curl_sftp_cmds';         # sftp client commands batch file







|
|
|
|
|
|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
    sshversioninfo
    );


#***************************************************************************
# Global variables initialization
#
$sshdexe         = 'sshd'        .exe_ext('SSH'); # base name and ext of ssh daemon
$sshexe          = 'ssh'         .exe_ext('SSH'); # base name and ext of ssh client
$sftpsrvexe      = 'sftp-server' .exe_ext('SSH'); # base name and ext of sftp-server
$sftpexe         = 'sftp'        .exe_ext('SSH'); # base name and ext of sftp client
$sshkeygenexe    = 'ssh-keygen'  .exe_ext('SSH'); # base name and ext of ssh-keygen
$httptlssrvexe   = 'gnutls-serv' .exe_ext('SSH'); # base name and ext of gnutls-serv
$sshdconfig      = 'curl_sshd_config';       # ssh daemon config file
$sshconfig       = 'curl_ssh_config';        # ssh client config file
$sftpconfig      = 'curl_sftp_config';       # sftp client config file
$sshdlog         = undef;                    # ssh daemon log file
$sshlog          = undef;                    # ssh client log file
$sftplog         = undef;                    # sftp client log file
$sftpcmds        = 'curl_sftp_cmds';         # sftp client commands batch file
176
177
178
179
180
181
182







183
184
185
186
187
188
189
    );


#***************************************************************************
# Return file extension for executable files on this operating system
#
sub exe_ext {







    if ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys' ||
        $^O eq 'dos' || $^O eq 'os2') {
        return '.exe';
    }
}









>
>
>
>
>
>
>







176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
    );


#***************************************************************************
# Return file extension for executable files on this operating system
#
sub exe_ext {
    my ($component, @arr) = @_;
    if ($ENV{'CURL_TEST_EXE_EXT'}) {
        return $ENV{'CURL_TEST_EXE_EXT'};
    }
    if ($ENV{'CURL_TEST_EXE_EXT_'.$component}) {
        return $ENV{'CURL_TEST_EXE_EXT_'.$component};
    }
    if ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys' ||
        $^O eq 'dos' || $^O eq 'os2') {
        return '.exe';
    }
}


310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
#***************************************************************************
# Find an executable file somewhere in the given path
#
sub find_exe_file {
    my $fn = $_[0];
    shift;
    my @path = @_;
    my $xext = exe_ext();
    foreach (@path) {
        my $file = File::Spec->catfile($_, $fn);
        if(-e $file && ! -d $file) {
            return $file if(-x $file);
            return $file if(($xext) && (lc($file) =~ /\Q$xext\E$/));
        }
    }







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
#***************************************************************************
# Find an executable file somewhere in the given path
#
sub find_exe_file {
    my $fn = $_[0];
    shift;
    my @path = @_;
    my $xext = exe_ext('SSH');
    foreach (@path) {
        my $file = File::Spec->catfile($_, $fn);
        if(-e $file && ! -d $file) {
            return $file if(-x $file);
            return $file if(($xext) && (lc($file) =~ /\Q$xext\E$/));
        }
    }
Changes to jni/curl/tests/sshserver.pl.
367
368
369
370
371
372
373



374
375
376
377
378
379
380
        exit 1;
    }
    logmsg 'generating client keys...' if($verbose);
    if(system "\"$sshkeygen\" -q -t rsa -f $cliprvkeyf -C 'curl test client' -N ''") {
        logmsg 'Could not generate client key';
        exit 1;
    }



}


#***************************************************************************
# Convert paths for curl's tests running on Windows with Cygwin/Msys OpenSSH
#
my $clipubkeyf_config = abs_path("$path/$clipubkeyf");







>
>
>







367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
        exit 1;
    }
    logmsg 'generating client keys...' if($verbose);
    if(system "\"$sshkeygen\" -q -t rsa -f $cliprvkeyf -C 'curl test client' -N ''") {
        logmsg 'Could not generate client key';
        exit 1;
    }
    # Make sure that permissions are restricted so openssh doesn't complain
    system "chmod 600 $hstprvkeyf";
    system "chmod 600 $cliprvkeyf";
}


#***************************************************************************
# Convert paths for curl's tests running on Windows with Cygwin/Msys OpenSSH
#
my $clipubkeyf_config = abs_path("$path/$clipubkeyf");
jni/curl/tests/symbol-scan.pl became executable.
Changes to jni/curl/tests/testcurl.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "October 22, 2016" "Curl 7.67.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "October 22, 2016" "Curl 7.68.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl
Changes to jni/curl/tests/unit/Makefile.am.
66
67
68
69
70
71
72
73
74
75
76
77
78
79

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

if BUILD_UNITTESTS
noinst_PROGRAMS = $(UNITPROGS)
else
noinst_PROGRAMS =
endif







|






66
67
68
69
70
71
72
73
74
75
76
77
78
79

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 =
CS_ = $(CS_0)

checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

if BUILD_UNITTESTS
noinst_PROGRAMS = $(UNITPROGS)
else
noinst_PROGRAMS =
endif
Changes to jni/curl/tests/unit/Makefile.in.
624
625
626
627
628
629
630

631
632
633
634
635
636
637
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@

USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@







>







624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
SSL_BACKENDS = @SSL_BACKENDS@
SSL_ENABLED = @SSL_ENABLED@
SSL_LIBS = @SSL_LIBS@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
USE_ARES = @USE_ARES@
USE_BEARSSL = @USE_BEARSSL@
USE_GNUTLS = @USE_GNUTLS@
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
USE_LIBRTMP = @USE_LIBRTMP@
USE_LIBSSH = @USE_LIBSSH@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	tags tags-am uninstall uninstall-am

.PRECIOUS: Makefile


checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:







|




2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	tags tags-am uninstall uninstall-am

.PRECIOUS: Makefile


checksrc:
	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
Changes to jni/curl/tests/unit/curlcheck.h.
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

/* fail() is for when the test case figured out by itself that a check
   proved a failure */
#define fail(msg) do {                                                 \
    fprintf(stderr, "%s:%d test failed: '%s'\n",                       \
            __FILE__, __LINE__, msg);                                  \
    unitfail++;                                                        \
  } WHILE_FALSE


/* The abort macros mark the current test step as failed, and exit the test */
#define abort_if(expr, msg)                                   \
  if(expr) {                                                  \
    fprintf(stderr, "%s:%d Abort assertion '%s' met: %s\n",   \
            __FILE__, __LINE__, #expr, msg);                  \







|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

/* fail() is for when the test case figured out by itself that a check
   proved a failure */
#define fail(msg) do {                                                 \
    fprintf(stderr, "%s:%d test failed: '%s'\n",                       \
            __FILE__, __LINE__, msg);                                  \
    unitfail++;                                                        \
  } while(0)


/* The abort macros mark the current test step as failed, and exit the test */
#define abort_if(expr, msg)                                   \
  if(expr) {                                                  \
    fprintf(stderr, "%s:%d Abort assertion '%s' met: %s\n",   \
            __FILE__, __LINE__, #expr, msg);                  \
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  }

#define abort_test(msg) do {                                  \
    fprintf(stderr, "%s:%d test aborted: '%s'\n",             \
            __FILE__, __LINE__, msg);                         \
    unitfail++;                                               \
    goto unit_test_abort;                                     \
  } WHILE_FALSE



extern int unitfail;

#define UNITTEST_START                          \
  int test(char *arg)                           \







|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  }

#define abort_test(msg) do {                                  \
    fprintf(stderr, "%s:%d test aborted: '%s'\n",             \
            __FILE__, __LINE__, msg);                         \
    unitfail++;                                               \
    goto unit_test_abort;                                     \
  } while(0)



extern int unitfail;

#define UNITTEST_START                          \
  int test(char *arg)                           \
Changes to jni/curl/tests/unit/unit1607.c.
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
  },
  { "test.com:0:127.0.0.1",
    "test.com", 0, { "127.0.0.1", }
  },
};

UNITTEST_START

  int i;
  int testnum = sizeof(tests) / sizeof(struct testcase);




  for(i = 0; i < testnum; ++i) {
    int j;
    int addressnum = sizeof(tests[i].address) / sizeof(*tests[i].address);
    struct Curl_addrinfo *addr;
    struct Curl_dns_entry *dns;
    struct curl_slist *list;
    void *entry_id;
    bool problem = false;
    struct Curl_multi *multi;
    struct Curl_easy *easy = curl_easy_init();
    if(!easy) {
      curl_global_cleanup();
      return CURLE_OUT_OF_MEMORY;
    }


    /* create a multi handle and add the easy handle to it so that the
       hostcache is setup */
    multi = curl_multi_init();
    curl_multi_add_handle(multi, easy);

    list = curl_slist_append(NULL, tests[i].optval);
    if(!list)
        goto unit_test_abort;
    curl_easy_setopt(easy, CURLOPT_RESOLVE, list);

    Curl_loadhostpairs(easy);

    entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port);
    if(!entry_id) {
      curl_slist_free_all(list);
      goto unit_test_abort;
    }
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {







>


>
>
>






<


<
|
|
<
<
<
>








|





|
<
|
<







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
  },
  { "test.com:0:127.0.0.1",
    "test.com", 0, { "127.0.0.1", }
  },
};

UNITTEST_START
{
  int i;
  int testnum = sizeof(tests) / sizeof(struct testcase);
  struct Curl_multi *multi = NULL;
  struct Curl_easy *easy = NULL;
  struct curl_slist *list = NULL;

  for(i = 0; i < testnum; ++i) {
    int j;
    int addressnum = sizeof(tests[i].address) / sizeof(*tests[i].address);
    struct Curl_addrinfo *addr;
    struct Curl_dns_entry *dns;

    void *entry_id;
    bool problem = false;

    easy = curl_easy_init();
    if(!easy)



      goto error;

    /* create a multi handle and add the easy handle to it so that the
       hostcache is setup */
    multi = curl_multi_init();
    curl_multi_add_handle(multi, easy);

    list = curl_slist_append(NULL, tests[i].optval);
    if(!list)
      goto error;
    curl_easy_setopt(easy, CURLOPT_RESOLVE, list);

    Curl_loadhostpairs(easy);

    entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port);
    if(!entry_id)

      goto error;

    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
198
199
200
201
202
203
204

205

206

207
208
209
210
211
212





213
        break;
      }

      addr = addr->ai_next;
    }

    curl_easy_cleanup(easy);

    curl_multi_cleanup(multi);

    curl_slist_free_all(list);


    if(problem) {
      unitfail++;
      continue;
    }
  }





UNITTEST_STOP







>

>

>






>
>
>
>
>

196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
        break;
      }

      addr = addr->ai_next;
    }

    curl_easy_cleanup(easy);
    easy = NULL;
    curl_multi_cleanup(multi);
    multi = NULL;
    curl_slist_free_all(list);
    list = NULL;

    if(problem) {
      unitfail++;
      continue;
    }
  }
  error:
  curl_easy_cleanup(easy);
  curl_multi_cleanup(multi);
  curl_slist_free_all(list);
}
UNITTEST_STOP
Changes to jni/curl/tests/unit/unit1609.c.
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
  },
};

UNITTEST_START
{
  int i;
  int testnum = sizeof(tests) / sizeof(struct testcase);




/* important: we setup cache outside of the loop
  and also clean cache after the loop. In contrast,for example,
  test 1607 sets up and cleans cache on each iteration. */

  for(i = 0; i < testnum; ++i) {
    int j;
    int addressnum = sizeof (tests[i].address) / sizeof (*tests[i].address);
    struct Curl_addrinfo *addr;
    struct Curl_dns_entry *dns;
    struct curl_slist *list;
    void *entry_id;
    bool problem = false;
    struct Curl_multi *multi;
    struct Curl_easy *easy = curl_easy_init();
    if(!easy) {
      curl_global_cleanup();
      return CURLE_OUT_OF_MEMORY;
    }
    /* create a multi handle and add the easy handle to it so that the
       hostcache is setup */
    multi = curl_multi_init();


    curl_multi_add_handle(multi, easy);

    list = curl_slist_append(NULL, tests[i].optval);
    if(!list)
        goto unit_test_abort;

    curl_easy_setopt(easy, CURLOPT_RESOLVE, list);

    Curl_loadhostpairs(easy);


    entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port);
    if(!entry_id) {
      curl_slist_free_all(list);
      goto unit_test_abort;
    }
    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {







>
>
>










<


<
|







>
>




|



|
>


|
<
|
|







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
  },
};

UNITTEST_START
{
  int i;
  int testnum = sizeof(tests) / sizeof(struct testcase);
  struct Curl_multi *multi = NULL;
  struct Curl_easy *easy = NULL;
  struct curl_slist *list = NULL;

/* important: we setup cache outside of the loop
  and also clean cache after the loop. In contrast,for example,
  test 1607 sets up and cleans cache on each iteration. */

  for(i = 0; i < testnum; ++i) {
    int j;
    int addressnum = sizeof (tests[i].address) / sizeof (*tests[i].address);
    struct Curl_addrinfo *addr;
    struct Curl_dns_entry *dns;

    void *entry_id;
    bool problem = false;

    easy = curl_easy_init();
    if(!easy) {
      curl_global_cleanup();
      return CURLE_OUT_OF_MEMORY;
    }
    /* create a multi handle and add the easy handle to it so that the
       hostcache is setup */
    multi = curl_multi_init();
    if(!multi)
      goto error;
    curl_multi_add_handle(multi, easy);

    list = curl_slist_append(NULL, tests[i].optval);
    if(!list)
      goto error;

    curl_easy_setopt(easy, CURLOPT_RESOLVE, list);

    if(Curl_loadhostpairs(easy))
      goto error;

    entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port);
    if(!entry_id)

      goto error;

    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
    free(entry_id);
    entry_id = NULL;

    addr = dns ? dns->addr : NULL;

    for(j = 0; j < addressnum; ++j) {
190
191
192
193
194
195
196

197
198

199

200
201
202
203
204
205





206
207
        break;
      }

      addr = addr->ai_next;
    }

    curl_easy_cleanup(easy);

    Curl_hash_destroy(&multi->hostcache);
    curl_multi_cleanup(multi);

    curl_slist_free_all(list);


    if(problem) {
      unitfail++;
      continue;
    }
  }





}
UNITTEST_STOP







>


>

>






>
>
>
>
>


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
        break;
      }

      addr = addr->ai_next;
    }

    curl_easy_cleanup(easy);
    easy = NULL;
    Curl_hash_destroy(&multi->hostcache);
    curl_multi_cleanup(multi);
    multi = NULL;
    curl_slist_free_all(list);
    list = NULL;

    if(problem) {
      unitfail++;
      continue;
    }
  }
  goto unit_test_abort;
  error:
  curl_easy_cleanup(easy);
  curl_multi_cleanup(multi);
  curl_slist_free_all(list);
}
UNITTEST_STOP
Changes to jni/curl/tests/unit/unit1620.c.
42
43
44
45
46
47
48


49
50
51
52
53
54
55
  const char *hostname = "hostname";
  enum dupstring i;

  bool async = FALSE;
  bool protocol_connect = FALSE;

  rc = Curl_open(&empty);


  fail_unless(rc == CURLE_OK, "Curl_open() failed");

  rc = Curl_connect(empty, &async, &protocol_connect);
  fail_unless(rc == CURLE_URL_MALFORMAT,
              "Curl_connect() failed to return CURLE_URL_MALFORMAT");

  fail_unless(empty->magic == CURLEASY_MAGIC_NUMBER,







>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  const char *hostname = "hostname";
  enum dupstring i;

  bool async = FALSE;
  bool protocol_connect = FALSE;

  rc = Curl_open(&empty);
  if(rc)
    goto unit_test_abort;
  fail_unless(rc == CURLE_OK, "Curl_open() failed");

  rc = Curl_connect(empty, &async, &protocol_connect);
  fail_unless(rc == CURLE_URL_MALFORMAT,
              "Curl_connect() failed to return CURLE_URL_MALFORMAT");

  fail_unless(empty->magic == CURLEASY_MAGIC_NUMBER,
Changes to jni/curl/tests/unit/unit1650.c.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
}

static void unit_stop(void)
{

}

#ifdef USE_NGHTTP2
#define DNS_PREAMBLE "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00"
#define LABEL_TEST "\x04\x74\x65\x73\x74"
#define LABEL_HOST "\x04\x68\x6f\x73\x74"
#define LABEL_NAME "\x04\x6e\x61\x6d\x65"
#define DNSA_TYPE "\x01"
#define DNSAAAA_TYPE "\x1c"
#define DNSA_EPILOGUE "\x00\x00" DNSA_TYPE "\x00\x01"







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
}

static void unit_stop(void)
{

}

#ifndef CURL_DISABLE_DOH
#define DNS_PREAMBLE "\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00"
#define LABEL_TEST "\x04\x74\x65\x73\x74"
#define LABEL_HOST "\x04\x68\x6f\x73\x74"
#define LABEL_NAME "\x04\x6e\x61\x6d\x65"
#define DNSA_TYPE "\x01"
#define DNSAAAA_TYPE "\x1c"
#define DNSA_EPILOGUE "\x00\x00" DNSA_TYPE "\x00\x01"
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
      }
      fail_if(d.numcname, "bad cname counter");
    }
  }
}
UNITTEST_STOP

#else /* USE_NGHTTP2 */
UNITTEST_START
{
  return 1; /* nothing to do, just fail */
}
UNITTEST_STOP


#endif







|








279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
      }
      fail_if(d.numcname, "bad cname counter");
    }
  }
}
UNITTEST_STOP

#else /* CURL_DISABLE_DOH */
UNITTEST_START
{
  return 1; /* nothing to do, just fail */
}
UNITTEST_STOP


#endif
Changes to jni/curl/tests/unit/unit1655.c.
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










}

static void unit_stop(void)
{
    /* done before shutting down and exiting */
}



UNITTEST_START


/* introduce a scope and prove the corner case with write overflow,


 * so we can prove this test would detect it and that it is properly fixed
 */
do {
  const char *bad = "this.is.a.hostname.where.each.individual.part.is.within."



    "the.sixtythree.character.limit.but.still.long.enough.to."
    "trigger.the.the.buffer.overflow......it.is.chosen.to.be."


    "of.a.length.such.that.it.causes.a.two.byte.buffer......."
    "overwrite.....making.it.longer.causes.doh.encode.to....."
    ".return.early.so.dont.change.its.length.xxxx.xxxxxxxxxxx"





















    "..xxxxxx.....xx..........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    "xxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxx..x......xxxx"
    "xxxx..xxxxxxxxxxxxxxxxxxx.x...xxxx.x.x.x...xxxxx";





  /* plays the role of struct dnsprobe in urldata.h */
  struct demo {
    unsigned char dohbuffer[512];
    unsigned char canary1;
    unsigned char canary2;
    unsigned char canary3;
  };










  size_t olen = 100000;
  struct demo victim;
  DOHcode d;

  victim.canary1 = 87; /* magic numbers, arbritrarily picked */
  victim.canary2 = 35;
  victim.canary3 = 41;
  d = doh_encode(bad, DNS_TYPE_A, victim.dohbuffer,

                 sizeof(victim.dohbuffer), &olen);









  fail_unless(victim.canary1 == 87, "one byte buffer overwrite has happened");


  fail_unless(victim.canary2 == 35, "two byte buffer overwrite has happened");

  fail_unless(victim.canary3 == 41,
              "three byte buffer overwrite has happened");


  if(d == DOH_OK) {
    fail_unless(olen <= sizeof(victim.dohbuffer), "wrote outside bounds");
    fail_unless(olen > strlen(bad), "unrealistic low size");


  }
} while(0);

/* run normal cases and try to trigger buffer length related errors */
do {
  DNStype dnstype = DNS_TYPE_A;
  unsigned char buffer[128];
  const size_t buflen = sizeof(buffer);
  const size_t magic1 = 9765;
  size_t olen1 = magic1;
  const char *sunshine1 = "a.com";

  const char *sunshine2 = "aa.com";
  size_t olen2;
  DOHcode ret2;
  size_t olen;

  DOHcode ret = doh_encode(sunshine1, dnstype, buffer, buflen, &olen1);
  fail_unless(ret == DOH_OK, "sunshine case 1 should pass fine");
  fail_if(olen1 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 > strlen(sunshine1), "bad out length");








  /* add one letter, the response should be one longer */
  olen2 = magic1;
  ret2 = doh_encode(sunshine2, dnstype, buffer, buflen, &olen2);
  fail_unless(ret2 == DOH_OK, "sunshine case 2 should pass fine");
  fail_if(olen2 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 + 1 == olen2, "olen should grow with the hostname");

  /* pass a short buffer, should fail */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1 - 1, &olen);
  fail_if(ret == DOH_OK, "short buffer should have been noticed");

  /* pass a minimum buffer, should succeed */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1, &olen);
  fail_unless(ret == DOH_OK, "minimal length buffer should be long enough");
  fail_unless(olen == olen1, "bad buffer length");
} while(0);
UNITTEST_STOP

















>
>


>
|
>
>
|


|
>
>
>
|
<
>
>
|
<
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
<
>
>
>
>



|





>
>
>
>
>
>
>
>
>
|
|
|
>
|
|
|
|
>
|
>
>
>
>
>
>
>
>
>
|
>
>
|
>
|
|
>
>
|
|
|
>
>











>










>
>
>
>
>
>
>

















>
>
>
>
>
>
>
>
>
>
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
}

static void unit_stop(void)
{
    /* done before shutting down and exiting */
}

#ifndef CURL_DISABLE_DOH

UNITTEST_START

/*
 * Prove detection of write overflow using a short buffer and a name
 * of maximal valid length.
 *
 * Prove detection of other invalid input.
 */
do {
  const char *max =
    /* ..|....1.........2.........3.........4.........5.........6... */
    /* 3456789012345678901234567890123456789012345678901234567890123 */
    "this.is.a.maximum-length.hostname."                  /* 34:  34 */
    "with-no-label-of-greater-length-than-the-sixty-three-characters."

                                                          /* 64:  98 */
    "specified.in.the.RFCs."                              /* 22: 120 */
    "and.with.a.QNAME.encoding.whose.length.is.exactly."  /* 50: 170 */

    "the.maximum.length.allowed."                         /* 27: 197 */
    "that.is.two-hundred.and.fifty-six."                  /* 34: 231 */
    "including.the.last.null."                            /* 24: 255 */
    "";
  const char *toolong =
    /* ..|....1.........2.........3.........4.........5.........6... */
    /* 3456789012345678901234567890123456789012345678901234567890123 */
    "here.is.a.hostname.which.is.just.barely.too.long."   /* 49:  49 */
    "to.be.encoded.as.a.QNAME.of.the.maximum.allowed.length."
                                                          /* 55: 104 */
    "which.is.256.including.a.final.zero-length.label."   /* 49: 153 */
    "representing.the.root.node.so.that.a.name.with."     /* 47: 200 */
    "a.trailing.dot.may.have.up.to."                      /* 30: 230 */
    "255.characters.never.more."                          /* 26: 256 */
    "";
  const char *emptylabel =
    "this.is.an.otherwise-valid.hostname."
    ".with.an.empty.label.";
  const char *outsizelabel =
    "this.is.an.otherwise-valid.hostname."
    "with-a-label-of-greater-length-than-the-sixty-three-characters-"
    "specified.in.the.RFCs.";



  struct test {
    const char *name;
    const DOHcode expected_result;
  };

  /* plays the role of struct dnsprobe in urldata.h */
  struct demo {
    unsigned char dohbuffer[255 + 16]; /* deliberately short buffer */
    unsigned char canary1;
    unsigned char canary2;
    unsigned char canary3;
  };

  const struct test playlist[4] = {
    { toolong, DOH_DNS_NAME_TOO_LONG },  /* expect early failure */
    { emptylabel, DOH_DNS_BAD_LABEL },   /* also */
    { outsizelabel, DOH_DNS_BAD_LABEL }, /* also */
    { max, DOH_OK }                      /* expect buffer overwrite */
  };

  for(int i = 0; i < (int)(sizeof(playlist)/sizeof(*playlist)); i++) {
    const char *name = playlist[i].name;
    size_t olen = 100000;
    struct demo victim;
    DOHcode d;

    victim.canary1 = 87; /* magic numbers, arbritrarily picked */
    victim.canary2 = 35;
    victim.canary3 = 41;
    d = doh_encode(name, DNS_TYPE_A, victim.dohbuffer,
                   sizeof(struct demo), /* allow room for overflow */
                   &olen);

    fail_unless(d == playlist[i].expected_result,
                "result returned was not as expected");
    if(d == playlist[i].expected_result) {
      if(name == max) {
        fail_if(victim.canary1 == 87,
                "demo one-byte buffer overwrite did not happen");
      }
      else {
        fail_unless(victim.canary1 == 87,
                    "one-byte buffer overwrite has happened");
      }
      fail_unless(victim.canary2 == 35,
                  "two-byte buffer overwrite has happened");
      fail_unless(victim.canary3 == 41,
                  "three-byte buffer overwrite has happened");
    }
    else {
      if(d == DOH_OK) {
        fail_unless(olen <= sizeof(victim.dohbuffer), "wrote outside bounds");
        fail_unless(olen > strlen(name), "unrealistic low size");
      }
    }
  }
} while(0);

/* run normal cases and try to trigger buffer length related errors */
do {
  DNStype dnstype = DNS_TYPE_A;
  unsigned char buffer[128];
  const size_t buflen = sizeof(buffer);
  const size_t magic1 = 9765;
  size_t olen1 = magic1;
  const char *sunshine1 = "a.com";
  const char *dotshine1 = "a.com.";
  const char *sunshine2 = "aa.com";
  size_t olen2;
  DOHcode ret2;
  size_t olen;

  DOHcode ret = doh_encode(sunshine1, dnstype, buffer, buflen, &olen1);
  fail_unless(ret == DOH_OK, "sunshine case 1 should pass fine");
  fail_if(olen1 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 > strlen(sunshine1), "bad out length");

  /* with a trailing dot, the response should have the same length */
  olen2 = magic1;
  ret2 = doh_encode(dotshine1, dnstype, buffer, buflen, &olen2);
  fail_unless(ret2 == DOH_OK, "dotshine case should pass fine");
  fail_if(olen2 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 == olen2, "olen should not grow for a trailing dot");

  /* add one letter, the response should be one longer */
  olen2 = magic1;
  ret2 = doh_encode(sunshine2, dnstype, buffer, buflen, &olen2);
  fail_unless(ret2 == DOH_OK, "sunshine case 2 should pass fine");
  fail_if(olen2 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 + 1 == olen2, "olen should grow with the hostname");

  /* pass a short buffer, should fail */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1 - 1, &olen);
  fail_if(ret == DOH_OK, "short buffer should have been noticed");

  /* pass a minimum buffer, should succeed */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1, &olen);
  fail_unless(ret == DOH_OK, "minimal length buffer should be long enough");
  fail_unless(olen == olen1, "bad buffer length");
} while(0);
UNITTEST_STOP

#else /* CURL_DISABLE_DOH */

UNITTEST_START
{
  return 1; /* nothing to do, just fail */
}
UNITTEST_STOP

#endif
Changes to jni/curl/winbuild/BUILD.WINDOWS.txt.
109
110
111
112
113
114
115






116
117
118
119
120
121
122
libcurl but *not* the static CRT. If you must you can force nmake to link in
the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that
option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and
therefore rarely tested. When passing RTLIBCFG for a configuration that was
already built but not with that option, or if the option was specified
differently, you must destroy the build directory containing the configuration
so that nmake can build it from scratch.







Legacy Windows and SSL
======================
When you build curl using the build files in this directory the default SSL
backend will be WinSSL (Windows SSPI, more specifically Schannel), the native
SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able
to connect to servers that no longer support the legacy handshakes and







>
>
>
>
>
>







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
libcurl but *not* the static CRT. If you must you can force nmake to link in
the static CRT by passing RTLIBCFG=static. Typically you shouldn't use that
option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used and
therefore rarely tested. When passing RTLIBCFG for a configuration that was
already built but not with that option, or if the option was specified
differently, you must destroy the build directory containing the configuration
so that nmake can build it from scratch.

Building your own application with a static libcurl
===================================================
When building an application that uses the static libcurl library on Windows,
you must define CURL_STATICLIB. Otherwise the linker will look for dynamic
import symbols.

Legacy Windows and SSL
======================
When you build curl using the build files in this directory the default SSL
backend will be WinSSL (Windows SSPI, more specifically Schannel), the native
SSL library that comes with the Windows OS. WinSSL in Windows <= XP is not able
to connect to servers that no longer support the legacy handshakes and
Changes to jni/curl/winbuild/MakefileBuild.vc.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!If "$(CC)" == ""
CC = cl.exe
!Endif

!IF "$(VC)"=="6"
CC_NODEBUG  = $(CC) /O2 /DNDEBUG
CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
CFLAGS      = /I. /I../lib /I../include /nologo /W4 /wd4127 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
!ELSE
CC_NODEBUG  = $(CC) /O2 /DNDEBUG
CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /wd4127 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
!ENDIF

LFLAGS     = /nologo /machine:$(MACHINE)
LNKDLL     = link.exe /DLL
# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:
# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)
# - all (including Windows) dependencies are aggregated (as static parts) 







|



|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!If "$(CC)" == ""
CC = cl.exe
!Endif

!IF "$(VC)"=="6"
CC_NODEBUG  = $(CC) /O2 /DNDEBUG
CC_DEBUG    = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
CFLAGS      = /I. /I../lib /I../include /nologo /W4 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
!ELSE
CC_NODEBUG  = $(CC) /O2 /DNDEBUG
CC_DEBUG    = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd
CFLAGS      = /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
!ENDIF

LFLAGS     = /nologo /machine:$(MACHINE)
LNKDLL     = link.exe /DLL
# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:
# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)
# - all (including Windows) dependencies are aggregated (as static parts) 
218
219
220
221
222
223
224



225
226
227
228
229
230
231
!ENDIF
USE_CARES      = true
CARES          = static
!ENDIF

!IFDEF USE_CARES
CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"



!ENDIF


!IFDEF ZLIB_PATH
ZLIB_INC_DIR = $(ZLIB_PATH)\include
ZLIB_LIB_DIR = $(ZLIB_PATH)\lib
ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"







>
>
>







218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
!ENDIF
USE_CARES      = true
CARES          = static
!ENDIF

!IFDEF USE_CARES
CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"
!IF "$(CARES)"=="static"
CARES_CFLAGS   = $(CARES_CFLAGS) /DCARES_STATICLIB
!ENDIF
!ENDIF


!IFDEF ZLIB_PATH
ZLIB_INC_DIR = $(ZLIB_PATH)\include
ZLIB_LIB_DIR = $(ZLIB_PATH)\lib
ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"