Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
2ef15b46
Commit
2ef15b46
authored
Apr 01, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avpacket, bfi, bgmc, rawenc: K&R prettyprinting cosmetics
parent
992f71e9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
472 additions
and
479 deletions
+472
-479
avpacket.c
libavcodec/avpacket.c
+62
-51
bfi.c
libavcodec/bfi.c
+14
-20
bgmc.c
libavcodec/bgmc.c
+360
-372
rawenc.c
libavformat/rawenc.c
+36
-36
No files found.
libavcodec/avpacket.c
View file @
2ef15b46
...
...
@@ -19,13 +19,13 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avcodec.h"
#include "libavutil/avassert.h"
#include "avcodec.h"
void
av_destruct_packet_nofree
(
AVPacket
*
pkt
)
{
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
pkt
->
side_data
=
NULL
;
pkt
->
side_data_elems
=
0
;
}
...
...
@@ -35,7 +35,8 @@ void av_destruct_packet(AVPacket *pkt)
int
i
;
av_free
(
pkt
->
data
);
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
for
(
i
=
0
;
i
<
pkt
->
side_data_elems
;
i
++
)
av_free
(
pkt
->
side_data
[
i
].
data
);
...
...
@@ -45,40 +46,41 @@ void av_destruct_packet(AVPacket *pkt)
void
av_init_packet
(
AVPacket
*
pkt
)
{
pkt
->
pts
=
AV_NOPTS_VALUE
;
pkt
->
dts
=
AV_NOPTS_VALUE
;
pkt
->
pos
=
-
1
;
pkt
->
duration
=
0
;
pkt
->
pts
=
AV_NOPTS_VALUE
;
pkt
->
dts
=
AV_NOPTS_VALUE
;
pkt
->
pos
=
-
1
;
pkt
->
duration
=
0
;
pkt
->
convergence_duration
=
0
;
pkt
->
flags
=
0
;
pkt
->
stream_index
=
0
;
pkt
->
destruct
=
NULL
;
pkt
->
side_data
=
NULL
;
pkt
->
side_data_elems
=
0
;
pkt
->
flags
=
0
;
pkt
->
stream_index
=
0
;
pkt
->
destruct
=
NULL
;
pkt
->
side_data
=
NULL
;
pkt
->
side_data_elems
=
0
;
}
int
av_new_packet
(
AVPacket
*
pkt
,
int
size
)
{
uint8_t
*
data
=
NULL
;
if
((
unsigned
)
size
<
(
unsigned
)
size
+
FF_INPUT_BUFFER_PADDING_SIZE
)
uint8_t
*
data
=
NULL
;
if
((
unsigned
)
size
<
(
unsigned
)
size
+
FF_INPUT_BUFFER_PADDING_SIZE
)
data
=
av_malloc
(
size
+
FF_INPUT_BUFFER_PADDING_SIZE
);
if
(
data
){
if
(
data
)
{
memset
(
data
+
size
,
0
,
FF_INPUT_BUFFER_PADDING_SIZE
);
}
else
size
=
0
;
}
else
size
=
0
;
av_init_packet
(
pkt
);
pkt
->
data
=
data
;
pkt
->
size
=
size
;
pkt
->
data
=
data
;
pkt
->
size
=
size
;
pkt
->
destruct
=
av_destruct_packet
;
if
(
!
data
)
if
(
!
data
)
return
AVERROR
(
ENOMEM
);
return
0
;
}
void
av_shrink_packet
(
AVPacket
*
pkt
,
int
size
)
{
if
(
pkt
->
size
<=
size
)
return
;
if
(
pkt
->
size
<=
size
)
return
;
pkt
->
size
=
size
;
memset
(
pkt
->
data
+
size
,
0
,
FF_INPUT_BUFFER_PADDING_SIZE
);
}
...
...
@@ -89,40 +91,45 @@ int av_grow_packet(AVPacket *pkt, int grow_by)
av_assert0
((
unsigned
)
pkt
->
size
<=
INT_MAX
-
FF_INPUT_BUFFER_PADDING_SIZE
);
if
(
!
pkt
->
size
)
return
av_new_packet
(
pkt
,
grow_by
);
if
((
unsigned
)
grow_by
>
INT_MAX
-
(
pkt
->
size
+
FF_INPUT_BUFFER_PADDING_SIZE
))
if
((
unsigned
)
grow_by
>
INT_MAX
-
(
pkt
->
size
+
FF_INPUT_BUFFER_PADDING_SIZE
))
return
-
1
;
new_ptr
=
av_realloc
(
pkt
->
data
,
pkt
->
size
+
grow_by
+
FF_INPUT_BUFFER_PADDING_SIZE
);
new_ptr
=
av_realloc
(
pkt
->
data
,
pkt
->
size
+
grow_by
+
FF_INPUT_BUFFER_PADDING_SIZE
);
if
(
!
new_ptr
)
return
AVERROR
(
ENOMEM
);
pkt
->
data
=
new_ptr
;
pkt
->
data
=
new_ptr
;
pkt
->
size
+=
grow_by
;
memset
(
pkt
->
data
+
pkt
->
size
,
0
,
FF_INPUT_BUFFER_PADDING_SIZE
);
return
0
;
}
#define DUP_DATA(dst, src, size, padding) \
do { \
void *data; \
if (padding) { \
if ((unsigned)(size) > (unsigned)(size) + FF_INPUT_BUFFER_PADDING_SIZE) \
goto failed_alloc; \
data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); \
} else { \
data = av_malloc(size); \
} \
if (!data) \
goto failed_alloc; \
memcpy(data, src, size); \
if (padding) \
memset((uint8_t*)data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); \
dst = data; \
} while(0)
#define DUP_DATA(dst, src, size, padding) \
do { \
void *data; \
if (padding) { \
if ((unsigned)(size) > \
(unsigned)(size) + FF_INPUT_BUFFER_PADDING_SIZE) \
goto failed_alloc; \
data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); \
} else { \
data = av_malloc(size); \
} \
if (!data) \
goto failed_alloc; \
memcpy(data, src, size); \
if (padding) \
memset((uint8_t *)data + size, 0, \
FF_INPUT_BUFFER_PADDING_SIZE); \
dst = data; \
} while (0)
int
av_dup_packet
(
AVPacket
*
pkt
)
{
AVPacket
tmp_pkt
;
if
(((
pkt
->
destruct
==
av_destruct_packet_nofree
)
||
(
pkt
->
destruct
==
NULL
))
&&
pkt
->
data
)
{
if
(((
pkt
->
destruct
==
av_destruct_packet_nofree
)
||
(
pkt
->
destruct
==
NULL
))
&&
pkt
->
data
)
{
tmp_pkt
=
*
pkt
;
pkt
->
data
=
NULL
;
...
...
@@ -135,14 +142,15 @@ int av_dup_packet(AVPacket *pkt)
DUP_DATA
(
pkt
->
side_data
,
tmp_pkt
.
side_data
,
pkt
->
side_data_elems
*
sizeof
(
*
pkt
->
side_data
),
0
);
memset
(
pkt
->
side_data
,
0
,
pkt
->
side_data_elems
*
sizeof
(
*
pkt
->
side_data
));
for
(
i
=
0
;
i
<
pkt
->
side_data_elems
;
i
++
)
{
memset
(
pkt
->
side_data
,
0
,
pkt
->
side_data_elems
*
sizeof
(
*
pkt
->
side_data
));
for
(
i
=
0
;
i
<
pkt
->
side_data_elems
;
i
++
)
DUP_DATA
(
pkt
->
side_data
[
i
].
data
,
tmp_pkt
.
side_data
[
i
].
data
,
pkt
->
side_data
[
i
].
size
,
1
);
}
}
}
return
0
;
failed_alloc:
av_destruct_packet
(
pkt
);
return
AVERROR
(
ENOMEM
);
...
...
@@ -151,14 +159,16 @@ failed_alloc:
void
av_free_packet
(
AVPacket
*
pkt
)
{
if
(
pkt
)
{
if
(
pkt
->
destruct
)
pkt
->
destruct
(
pkt
);
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
if
(
pkt
->
destruct
)
pkt
->
destruct
(
pkt
);
pkt
->
data
=
NULL
;
pkt
->
size
=
0
;
pkt
->
side_data
=
NULL
;
pkt
->
side_data_elems
=
0
;
}
}
uint8_t
*
av_packet_new_side_data
(
AVPacket
*
pkt
,
enum
AVPacketSideDataType
type
,
uint8_t
*
av_packet_new_side_data
(
AVPacket
*
pkt
,
enum
AVPacketSideDataType
type
,
int
size
)
{
int
elems
=
pkt
->
side_data_elems
;
...
...
@@ -168,7 +178,8 @@ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
if
((
unsigned
)
size
>
INT_MAX
-
FF_INPUT_BUFFER_PADDING_SIZE
)
return
NULL
;
pkt
->
side_data
=
av_realloc
(
pkt
->
side_data
,
(
elems
+
1
)
*
sizeof
(
*
pkt
->
side_data
));
pkt
->
side_data
=
av_realloc
(
pkt
->
side_data
,
(
elems
+
1
)
*
sizeof
(
*
pkt
->
side_data
));
if
(
!
pkt
->
side_data
)
return
NULL
;
...
...
@@ -182,7 +193,7 @@ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
return
pkt
->
side_data
[
elems
].
data
;
}
uint8_t
*
av_packet_get_side_data
(
AVPacket
*
pkt
,
enum
AVPacketSideDataType
type
,
uint8_t
*
av_packet_get_side_data
(
AVPacket
*
pkt
,
enum
AVPacketSideDataType
type
,
int
*
size
)
{
int
i
;
...
...
libavcodec/bfi.c
View file @
2ef15b46
...
...
@@ -39,8 +39,8 @@ typedef struct BFIContext {
static
av_cold
int
bfi_decode_init
(
AVCodecContext
*
avctx
)
{
BFIContext
*
bfi
=
avctx
->
priv_data
;
avctx
->
pix_fmt
=
PIX_FMT_PAL8
;
bfi
->
dst
=
av_mallocz
(
avctx
->
width
*
avctx
->
height
);
avctx
->
pix_fmt
=
PIX_FMT_PAL8
;
bfi
->
dst
=
av_mallocz
(
avctx
->
width
*
avctx
->
height
);
return
0
;
}
...
...
@@ -48,9 +48,9 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
int
*
data_size
,
AVPacket
*
avpkt
)
{
GetByteContext
g
;
int
buf_size
=
avpkt
->
size
;
int
buf_size
=
avpkt
->
size
;
BFIContext
*
bfi
=
avctx
->
priv_data
;
uint8_t
*
dst
=
bfi
->
dst
;
uint8_t
*
dst
=
bfi
->
dst
;
uint8_t
*
src
,
*
dst_offset
,
colour1
,
colour2
;
uint8_t
*
frame_end
=
bfi
->
dst
+
avctx
->
width
*
avctx
->
height
;
uint32_t
*
pal
;
...
...
@@ -82,9 +82,8 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
int
shift
=
16
;
*
pal
=
0
;
for
(
j
=
0
;
j
<
3
;
j
++
,
shift
-=
8
)
*
pal
+=
((
avctx
->
extradata
[
i
*
3
+
j
]
<<
2
)
|
(
avctx
->
extradata
[
i
*
3
+
j
]
>>
4
))
<<
shift
;
*
pal
+=
((
avctx
->
extradata
[
i
*
3
+
j
]
<<
2
)
|
(
avctx
->
extradata
[
i
*
3
+
j
]
>>
4
))
<<
shift
;
pal
++
;
}
bfi
->
frame
.
palette_has_changed
=
1
;
...
...
@@ -107,7 +106,7 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
return
-
1
;
}
/* Get length and offset(if required) */
/* Get length and offset
(if required) */
if
(
length
==
0
)
{
if
(
code
==
1
)
{
length
=
bytestream2_get_byte
(
&
g
);
...
...
@@ -127,8 +126,7 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
break
;
switch
(
code
)
{
case
0
:
//Normal Chain
case
0
:
// normal chain
if
(
length
>=
bytestream2_get_bytes_left
(
&
g
))
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Frame larger than buffer.
\n
"
);
return
-
1
;
...
...
@@ -136,21 +134,18 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
bytestream2_get_buffer
(
&
g
,
dst
,
length
);
dst
+=
length
;
break
;
case
1
:
//Back Chain
case
1
:
// back chain
dst_offset
=
dst
-
offset
;
length
*=
4
;
//
Convert dwords to bytes.
length
*=
4
;
//
Convert dwords to bytes.
if
(
dst_offset
<
bfi
->
dst
)
break
;
while
(
length
--
)
*
dst
++
=
*
dst_offset
++
;
break
;
case
2
:
//Skip Chain
case
2
:
// skip chain
dst
+=
length
;
break
;
case
3
:
//Fill Chain
case
3
:
// fill chain
colour1
=
bytestream2_get_byte
(
&
g
);
colour2
=
bytestream2_get_byte
(
&
g
);
while
(
length
--
)
{
...
...
@@ -158,7 +153,6 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
*
dst
++
=
colour2
;
}
break
;
}
}
...
...
@@ -169,12 +163,12 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data,
src
+=
avctx
->
width
;
dst
+=
bfi
->
frame
.
linesize
[
0
];
}
*
data_size
=
sizeof
(
AVFrame
);
*
data_size
=
sizeof
(
AVFrame
);
*
(
AVFrame
*
)
data
=
bfi
->
frame
;
return
buf_size
;
}
static
av_cold
int
bfi_decode_close
(
AVCodecContext
*
avctx
)
static
av_cold
int
bfi_decode_close
(
AVCodecContext
*
avctx
)
{
BFIContext
*
bfi
=
avctx
->
priv_data
;
if
(
bfi
->
frame
.
data
[
0
])
...
...
libavcodec/bgmc.c
View file @
2ef15b46
...
...
@@ -25,10 +25,8 @@
* @author Thilo Borgmann <thilo.borgmann _at_ googlemail.com>
*/
#include "bgmc.h"
#define FREQ_BITS 14 // bits used by frequency counters
#define VALUE_BITS 18 // bits used to represent the values
#define TOP_VALUE ((1 << VALUE_BITS) - 1) // maximum value
...
...
@@ -41,382 +39,381 @@
#define LUT_BUFF 4 // number of buffered lookup tables
/** Cumulative frequency tables for block Gilbert-Moore coding.
*/
/** Cumulative frequency tables for block Gilbert-Moore coding. */
static
const
uint16_t
cf_tables_1
[
3
][
129
]
=
{
{
16384
,
16066
,
15748
,
15431
,
15114
,
14799
,
14485
,
14173
,
13861
,
13552
,
13243
,
12939
,
12635
,
12336
,
12038
,
11745
,
11452
,
11161
,
10870
,
10586
,
10303
,
10027
,
9751
,
9483
,
9215
,
8953
,
8692
,
8440
,
8189
,
7946
,
7704
,
7472
,
7240
,
7008
,
6776
,
6554
,
6333
,
6122
,
5912
,
5711
,
5512
,
5320
,
5128
,
4947
,
4766
,
4595
,
4425
,
4264
,
4104
,
3946
,
3788
,
3640
,
3493
,
3355
,
3218
,
3090
,
2963
,
2842
,
2721
,
2609
,
2498
,
2395
,
2292
,
2196
,
2100
,
2004
,
1908
,
1820
,
1732
,
1651
,
1570
,
1497
,
1424
,
1355
,
1287
,
1223
,
1161
,
1100
,
1044
,
988
,
938
,
888
,
839
,
790
,
746
,
702
,
662
,
623
,
588
,
553
,
520
,
488
,
459
,
431
,
405
,
380
,
357
,
334
,
311
,
288
,
268
,
248
,
230
,
213
,
197
,
182
,
168
,
154
,
142
,
130
,
119
,
108
,
99
,
90
,
81
,
72
,
64
,
56
,
49
,
42
,
36
,
30
,
25
,
20
,
15
,
11
,
7
,
3
,
0
},
{
16384
,
16080
,
15776
,
15473
,
15170
,
14868
,
14567
,
14268
,
13970
,
13674
,
13378
,
13086
,
12794
,
12505
,
12218
,
11936
,
11654
,
11373
,
11092
,
10818
,
10544
,
10276
,
10008
,
9749
,
9490
,
9236
,
8982
,
8737
,
8492
,
8256
,
8020
,
7792
,
7564
,
7336
,
7108
,
6888
,
6669
,
6459
,
6249
,
6050
,
5852
,
5660
,
5468
,
5286
,
5104
,
4931
,
4760
,
4598
,
4436
,
4275
,
4115
,
3965
,
3816
,
3674
,
3534
,
3403
,
3272
,
3147
,
3023
,
2907
,
2792
,
2684
,
2577
,
2476
,
2375
,
2274
,
2173
,
2079
,
1986
,
1897
,
1810
,
1724
,
1645
,
1567
,
1493
,
1419
,
1351
,
1284
,
1222
,
1161
,
1105
,
1050
,
995
,
941
,
891
,
842
,
797
,
753
,
713
,
673
,
636
,
599
,
566
,
533
,
503
,
473
,
446
,
419
,
392
,
365
,
340
,
316
,
294
,
272
,
253
,
234
,
216
,
199
,
184
,
169
,
155
,
142
,
130
,
118
,
106
,
95
,
85
,
75
,
66
,
57
,
49
,
41
,
34
,
27
,
21
,
15
,
10
,
5
,
0
},
{
16384
,
16092
,
15801
,
15510
,
15219
,
14930
,
14641
,
14355
,
14069
,
13785
,
13501
,
13219
,
12938
,
12661
,
12384
,
12112
,
11841
,
11571
,
11301
,
11037
,
10773
,
10514
,
10256
,
10005
,
9754
,
9508
,
9263
,
9025
,
8787
,
8557
,
8327
,
8103
,
7879
,
7655
,
7431
,
7215
,
7000
,
6792
,
6585
,
6387
,
6190
,
5998
,
5807
,
5625
,
5445
,
5272
,
5100
,
4937
,
4774
,
4613
,
4452
,
4301
,
4150
,
4007
,
3865
,
3731
,
3597
,
3469
,
3341
,
3218
,
3099
,
2981
,
2869
,
2758
,
2652
,
2546
,
2440
,
2334
,
2234
,
2134
,
2041
,
1949
,
1864
,
1779
,
1699
,
1620
,
1547
,
1474
,
1407
,
1340
,
1278
,
1217
,
1157
,
1097
,
1043
,
989
,
940
,
891
,
846
,
801
,
759
,
718
,
680
,
643
,
609
,
575
,
543
,
511
,
479
,
447
,
418
,
389
,
363
,
337
,
314
,
291
,
270
,
249
,
230
,
212
,
195
,
179
,
164
,
149
,
135
,
121
,
108
,
96
,
85
,
74
,
64
,
54
,
45
,
36
,
28
,
20
,
13
,
6
,
0
}
16384
,
16066
,
15748
,
15431
,
15114
,
14799
,
14485
,
14173
,
13861
,
13552
,
13243
,
12939
,
12635
,
12336
,
12038
,
11745
,
11452
,
11161
,
10870
,
10586
,
10303
,
10027
,
9751
,
9483
,
9215
,
8953
,
8692
,
8440
,
8189
,
7946
,
7704
,
7472
,
7240
,
7008
,
6776
,
6554
,
6333
,
6122
,
5912
,
5711
,
5512
,
5320
,
5128
,
4947
,
4766
,
4595
,
4425
,
4264
,
4104
,
3946
,
3788
,
3640
,
3493
,
3355
,
3218
,
3090
,
2963
,
2842
,
2721
,
2609
,
2498
,
2395
,
2292
,
2196
,
2100
,
2004
,
1908
,
1820
,
1732
,
1651
,
1570
,
1497
,
1424
,
1355
,
1287
,
1223
,
1161
,
1100
,
1044
,
988
,
938
,
888
,
839
,
790
,
746
,
702
,
662
,
623
,
588
,
553
,
520
,
488
,
459
,
431
,
405
,
380
,
357
,
334
,
311
,
288
,
268
,
248
,
230
,
213
,
197
,
182
,
168
,
154
,
142
,
130
,
119
,
108
,
99
,
90
,
81
,
72
,
64
,
56
,
49
,
42
,
36
,
30
,
25
,
20
,
15
,
11
,
7
,
3
,
0
},
{
16384
,
16080
,
15776
,
15473
,
15170
,
14868
,
14567
,
14268
,
13970
,
13674
,
13378
,
13086
,
12794
,
12505
,
12218
,
11936
,
11654
,
11373
,
11092
,
10818
,
10544
,
10276
,
10008
,
9749
,
9490
,
9236
,
8982
,
8737
,
8492
,
8256
,
8020
,
7792
,
7564
,
7336
,
7108
,
6888
,
6669
,
6459
,
6249
,
6050
,
5852
,
5660
,
5468
,
5286
,
5104
,
4931
,
4760
,
4598
,
4436
,
4275
,
4115
,
3965
,
3816
,
3674
,
3534
,
3403
,
3272
,
3147
,
3023
,
2907
,
2792
,
2684
,
2577
,
2476
,
2375
,
2274
,
2173
,
2079
,
1986
,
1897
,
1810
,
1724
,
1645
,
1567
,
1493
,
1419
,
1351
,
1284
,
1222
,
1161
,
1105
,
1050
,
995
,
941
,
891
,
842
,
797
,
753
,
713
,
673
,
636
,
599
,
566
,
533
,
503
,
473
,
446
,
419
,
392
,
365
,
340
,
316
,
294
,
272
,
253
,
234
,
216
,
199
,
184
,
169
,
155
,
142
,
130
,
118
,
106
,
95
,
85
,
75
,
66
,
57
,
49
,
41
,
34
,
27
,
21
,
15
,
10
,
5
,
0
},
{
16384
,
16092
,
15801
,
15510
,
15219
,
14930
,
14641
,
14355
,
14069
,
13785
,
13501
,
13219
,
12938
,
12661
,
12384
,
12112
,
11841
,
11571
,
11301
,
11037
,
10773
,
10514
,
10256
,
10005
,
9754
,
9508
,
9263
,
9025
,
8787
,
8557
,
8327
,
8103
,
7879
,
7655
,
7431
,
7215
,
7000
,
6792
,
6585
,
6387
,
6190
,
5998
,
5807
,
5625
,
5445
,
5272
,
5100
,
4937
,
4774
,
4613
,
4452
,
4301
,
4150
,
4007
,
3865
,
3731
,
3597
,
3469
,
3341
,
3218
,
3099
,
2981
,
2869
,
2758
,
2652
,
2546
,
2440
,
2334
,
2234
,
2134
,
2041
,
1949
,
1864
,
1779
,
1699
,
1620
,
1547
,
1474
,
1407
,
1340
,
1278
,
1217
,
1157
,
1097
,
1043
,
989
,
940
,
891
,
846
,
801
,
759
,
718
,
680
,
643
,
609
,
575
,
543
,
511
,
479
,
447
,
418
,
389
,
363
,
337
,
314
,
291
,
270
,
249
,
230
,
212
,
195
,
179
,
164
,
149
,
135
,
121
,
108
,
96
,
85
,
74
,
64
,
54
,
45
,
36
,
28
,
20
,
13
,
6
,
0
}
};
static
const
uint16_t
cf_tables_2
[
8
][
193
]
=
{
{
16384
,
16104
,
15825
,
15546
,
15268
,
14991
,
14714
,
14439
,
14164
,
13891
,
13620
,
13350
,
13081
,
12815
,
12549
,
12287
,
12025
,
11765
,
11505
,
11250
,
10996
,
10746
,
10497
,
10254
,
10011
,
9772
,
9534
,
9303
,
9072
,
8848
,
8624
,
8406
,
8188
,
7970
,
7752
,
7539
,
7327
,
7123
,
6919
,
6724
,
6529
,
6339
,
6150
,
5970
,
5790
,
5618
,
5446
,
5282
,
5119
,
4957
,
4795
,
4642
,
4490
,
4345
,
4201
,
4065
,
3929
,
3798
,
3669
,
3547
,
3425
,
3310
,
3196
,
3086
,
2976
,
2866
,
2756
,
2650
,
2545
,
2447
,
2350
,
2260
,
2170
,
2085
,
2000
,
1921
,
1843
,
1770
,
1698
,
1632
,
1566
,
1501
,
1436
,
1376
,
1316
,
1261
,
1207
,
1157
,
1108
,
1061
,
1015
,
973
,
931
,
893
,
855
,
819
,
783
,
747
,
711
,
677
,
644
,
614
,
584
,
557
,
530
,
505
,
480
,
458
,
436
,
416
,
396
,
378
,
360
,
343
,
326
,
310
,
295
,
281
,
267
,
255
,
243
,
232
,
221
,
211
,
201
,
192
,
183
,
174
,
166
,
158
,
150
,
142
,
134
,
126
,
119
,
112
,
106
,
100
,
95
,
90
,
85
,
80
,
76
,
72
,
69
,
66
,
63
,
60
,
57
,
54
,
51
,
48
,
46
,
44
,
42
,
40
,
38
,
36
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16104
,
15825
,
15546
,
15268
,
14991
,
14714
,
14439
,
14164
,
13891
,
13620
,
13350
,
13081
,
12815
,
12549
,
12287
,
12025
,
11765
,
11505
,
11250
,
10996
,
10746
,
10497
,
10254
,
10011
,
9772
,
9534
,
9303
,
9072
,
8848
,
8624
,
8406
,
8188
,
7970
,
7752
,
7539
,
7327
,
7123
,
6919
,
6724
,
6529
,
6339
,
6150
,
5970
,
5790
,
5618
,
5446
,
5282
,
5119
,
4957
,
4795
,
4642
,
4490
,
4345
,
4201
,
4065
,
3929
,
3798
,
3669
,
3547
,
3425
,
3310
,
3196
,
3086
,
2976
,
2866
,
2756
,
2650
,
2545
,
2447
,
2350
,
2260
,
2170
,
2085
,
2000
,
1921
,
1843
,
1770
,
1698
,
1632
,
1566
,
1501
,
1436
,
1376
,
1316
,
1261
,
1207
,
1157
,
1108
,
1061
,
1015
,
973
,
931
,
893
,
855
,
819
,
783
,
747
,
711
,
677
,
644
,
614
,
584
,
557
,
530
,
505
,
480
,
458
,
436
,
416
,
396
,
378
,
360
,
343
,
326
,
310
,
295
,
281
,
267
,
255
,
243
,
232
,
221
,
211
,
201
,
192
,
183
,
174
,
166
,
158
,
150
,
142
,
134
,
126
,
119
,
112
,
106
,
100
,
95
,
90
,
85
,
80
,
76
,
72
,
69
,
66
,
63
,
60
,
57
,
54
,
51
,
48
,
46
,
44
,
42
,
40
,
38
,
36
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16116
,
15849
,
15582
,
15316
,
15050
,
14785
,
14521
,
14257
,
13995
,
13734
,
13476
,
13218
,
12963
,
12708
,
12457
,
12206
,
11956
,
11706
,
11460
,
11215
,
10975
,
10735
,
10500
,
10265
,
10034
,
9803
,
9579
,
9355
,
9136
,
8917
,
8703
,
8489
,
8275
,
8061
,
7853
,
7645
,
7444
,
7244
,
7051
,
6858
,
6671
,
6484
,
6305
,
6127
,
5956
,
5785
,
5622
,
5459
,
5298
,
5137
,
4983
,
4830
,
4684
,
4539
,
4401
,
4263
,
4131
,
3999
,
3874
,
3750
,
3632
,
3515
,
3401
,
3287
,
3173
,
3059
,
2949
,
2840
,
2737
,
2635
,
2539
,
2444
,
2354
,
2264
,
2181
,
2098
,
2020
,
1943
,
1872
,
1801
,
1731
,
1661
,
1596
,
1532
,
1472
,
1412
,
1357
,
1303
,
1251
,
1200
,
1153
,
1106
,
1063
,
1020
,
979
,
938
,
897
,
856
,
818
,
780
,
746
,
712
,
681
,
650
,
621
,
592
,
566
,
540
,
517
,
494
,
473
,
452
,
431
,
410
,
391
,
373
,
356
,
340
,
325
,
310
,
296
,
282
,
270
,
258
,
247
,
236
,
225
,
214
,
203
,
192
,
182
,
172
,
162
,
153
,
144
,
136
,
128
,
121
,
114
,
108
,
102
,
97
,
92
,
87
,
82
,
77
,
73
,
69
,
65
,
62
,
59
,
56
,
53
,
50
,
47
,
45
,
43
,
41
,
39
,
37
,
35
,
33
,
31
,
29
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16116
,
15849
,
15582
,
15316
,
15050
,
14785
,
14521
,
14257
,
13995
,
13734
,
13476
,
13218
,
12963
,
12708
,
12457
,
12206
,
11956
,
11706
,
11460
,
11215
,
10975
,
10735
,
10500
,
10265
,
10034
,
9803
,
9579
,
9355
,
9136
,
8917
,
8703
,
8489
,
8275
,
8061
,
7853
,
7645
,
7444
,
7244
,
7051
,
6858
,
6671
,
6484
,
6305
,
6127
,
5956
,
5785
,
5622
,
5459
,
5298
,
5137
,
4983
,
4830
,
4684
,
4539
,
4401
,
4263
,
4131
,
3999
,
3874
,
3750
,
3632
,
3515
,
3401
,
3287
,
3173
,
3059
,
2949
,
2840
,
2737
,
2635
,
2539
,
2444
,
2354
,
2264
,
2181
,
2098
,
2020
,
1943
,
1872
,
1801
,
1731
,
1661
,
1596
,
1532
,
1472
,
1412
,
1357
,
1303
,
1251
,
1200
,
1153
,
1106
,
1063
,
1020
,
979
,
938
,
897
,
856
,
818
,
780
,
746
,
712
,
681
,
650
,
621
,
592
,
566
,
540
,
517
,
494
,
473
,
452
,
431
,
410
,
391
,
373
,
356
,
340
,
325
,
310
,
296
,
282
,
270
,
258
,
247
,
236
,
225
,
214
,
203
,
192
,
182
,
172
,
162
,
153
,
144
,
136
,
128
,
121
,
114
,
108
,
102
,
97
,
92
,
87
,
82
,
77
,
73
,
69
,
65
,
62
,
59
,
56
,
53
,
50
,
47
,
45
,
43
,
41
,
39
,
37
,
35
,
33
,
31
,
29
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16128
,
15872
,
15617
,
15362
,
15107
,
14853
,
14600
,
14347
,
14096
,
13846
,
13597
,
13350
,
13105
,
12860
,
12618
,
12376
,
12135
,
11894
,
11657
,
11421
,
11189
,
10957
,
10730
,
10503
,
10279
,
10056
,
9838
,
9620
,
9407
,
9195
,
8987
,
8779
,
8571
,
8363
,
8159
,
7955
,
7758
,
7561
,
7371
,
7182
,
6997
,
6812
,
6635
,
6459
,
6289
,
6120
,
5957
,
5795
,
5634
,
5473
,
5319
,
5165
,
5018
,
4871
,
4732
,
4593
,
4458
,
4324
,
4197
,
4071
,
3951
,
3831
,
3714
,
3597
,
3480
,
3363
,
3250
,
3138
,
3032
,
2927
,
2828
,
2729
,
2635
,
2541
,
2453
,
2366
,
2284
,
2202
,
2126
,
2050
,
1975
,
1900
,
1830
,
1761
,
1697
,
1633
,
1574
,
1515
,
1459
,
1403
,
1351
,
1300
,
1252
,
1205
,
1160
,
1115
,
1070
,
1025
,
982
,
939
,
899
,
860
,
824
,
789
,
756
,
723
,
693
,
663
,
636
,
609
,
584
,
559
,
535
,
511
,
489
,
467
,
447
,
427
,
409
,
391
,
374
,
358
,
343
,
328
,
313
,
300
,
287
,
274
,
261
,
248
,
235
,
223
,
211
,
200
,
189
,
179
,
169
,
160
,
151
,
143
,
135
,
128
,
121
,
115
,
109
,
103
,
97
,
92
,
87
,
82
,
77
,
73
,
69
,
65
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16128
,
15872
,
15617
,
15362
,
15107
,
14853
,
14600
,
14347
,
14096
,
13846
,
13597
,
13350
,
13105
,
12860
,
12618
,
12376
,
12135
,
11894
,
11657
,
11421
,
11189
,
10957
,
10730
,
10503
,
10279
,
10056
,
9838
,
9620
,
9407
,
9195
,
8987
,
8779
,
8571
,
8363
,
8159
,
7955
,
7758
,
7561
,
7371
,
7182
,
6997
,
6812
,
6635
,
6459
,
6289
,
6120
,
5957
,
5795
,
5634
,
5473
,
5319
,
5165
,
5018
,
4871
,
4732
,
4593
,
4458
,
4324
,
4197
,
4071
,
3951
,
3831
,
3714
,
3597
,
3480
,
3363
,
3250
,
3138
,
3032
,
2927
,
2828
,
2729
,
2635
,
2541
,
2453
,
2366
,
2284
,
2202
,
2126
,
2050
,
1975
,
1900
,
1830
,
1761
,
1697
,
1633
,
1574
,
1515
,
1459
,
1403
,
1351
,
1300
,
1252
,
1205
,
1160
,
1115
,
1070
,
1025
,
982
,
939
,
899
,
860
,
824
,
789
,
756
,
723
,
693
,
663
,
636
,
609
,
584
,
559
,
535
,
511
,
489
,
467
,
447
,
427
,
409
,
391
,
374
,
358
,
343
,
328
,
313
,
300
,
287
,
274
,
261
,
248
,
235
,
223
,
211
,
200
,
189
,
179
,
169
,
160
,
151
,
143
,
135
,
128
,
121
,
115
,
109
,
103
,
97
,
92
,
87
,
82
,
77
,
73
,
69
,
65
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16139
,
15894
,
15649
,
15405
,
15162
,
14919
,
14677
,
14435
,
14195
,
13955
,
13717
,
13479
,
13243
,
13008
,
12775
,
12542
,
12310
,
12079
,
11851
,
11623
,
11399
,
11176
,
10956
,
10737
,
10521
,
10305
,
10094
,
9883
,
9677
,
9471
,
9268
,
9065
,
8862
,
8659
,
8459
,
8260
,
8067
,
7874
,
7688
,
7502
,
7321
,
7140
,
6965
,
6790
,
6621
,
6452
,
6290
,
6128
,
5968
,
5808
,
5655
,
5503
,
5356
,
5209
,
5069
,
4929
,
4794
,
4660
,
4532
,
4404
,
4282
,
4160
,
4041
,
3922
,
3803
,
3684
,
3568
,
3452
,
3343
,
3234
,
3131
,
3029
,
2931
,
2833
,
2741
,
2649
,
2563
,
2477
,
2396
,
2316
,
2236
,
2157
,
2083
,
2009
,
1940
,
1871
,
1807
,
1743
,
1683
,
1623
,
1567
,
1511
,
1459
,
1407
,
1357
,
1307
,
1257
,
1207
,
1159
,
1111
,
1067
,
1023
,
983
,
943
,
905
,
868
,
834
,
800
,
769
,
738
,
709
,
681
,
653
,
625
,
600
,
575
,
552
,
529
,
508
,
487
,
466
,
447
,
428
,
410
,
392
,
376
,
360
,
344
,
328
,
313
,
298
,
283
,
268
,
255
,
242
,
230
,
218
,
207
,
196
,
186
,
176
,
167
,
158
,
150
,
142
,
135
,
128
,
121
,
114
,
108
,
102
,
97
,
92
,
87
,
82
,
78
,
74
,
70
,
66
,
62
,
58
,
54
,
50
,
47
,
44
,
41
,
38
,
35
,
32
,
30
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16139
,
15894
,
15649
,
15405
,
15162
,
14919
,
14677
,
14435
,
14195
,
13955
,
13717
,
13479
,
13243
,
13008
,
12775
,
12542
,
12310
,
12079
,
11851
,
11623
,
11399
,
11176
,
10956
,
10737
,
10521
,
10305
,
10094
,
9883
,
9677
,
9471
,
9268
,
9065
,
8862
,
8659
,
8459
,
8260
,
8067
,
7874
,
7688
,
7502
,
7321
,
7140
,
6965
,
6790
,
6621
,
6452
,
6290
,
6128
,
5968
,
5808
,
5655
,
5503
,
5356
,
5209
,
5069
,
4929
,
4794
,
4660
,
4532
,
4404
,
4282
,
4160
,
4041
,
3922
,
3803
,
3684
,
3568
,
3452
,
3343
,
3234
,
3131
,
3029
,
2931
,
2833
,
2741
,
2649
,
2563
,
2477
,
2396
,
2316
,
2236
,
2157
,
2083
,
2009
,
1940
,
1871
,
1807
,
1743
,
1683
,
1623
,
1567
,
1511
,
1459
,
1407
,
1357
,
1307
,
1257
,
1207
,
1159
,
1111
,
1067
,
1023
,
983
,
943
,
905
,
868
,
834
,
800
,
769
,
738
,
709
,
681
,
653
,
625
,
600
,
575
,
552
,
529
,
508
,
487
,
466
,
447
,
428
,
410
,
392
,
376
,
360
,
344
,
328
,
313
,
298
,
283
,
268
,
255
,
242
,
230
,
218
,
207
,
196
,
186
,
176
,
167
,
158
,
150
,
142
,
135
,
128
,
121
,
114
,
108
,
102
,
97
,
92
,
87
,
82
,
78
,
74
,
70
,
66
,
62
,
58
,
54
,
50
,
47
,
44
,
41
,
38
,
35
,
32
,
30
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16149
,
15915
,
15681
,
15447
,
15214
,
14981
,
14749
,
14517
,
14286
,
14055
,
13827
,
13599
,
13373
,
13147
,
12923
,
12699
,
12476
,
12253
,
12034
,
11815
,
11599
,
11383
,
11171
,
10959
,
10750
,
10541
,
10337
,
10133
,
9933
,
9733
,
9536
,
9339
,
9142
,
8945
,
8751
,
8557
,
8369
,
8181
,
7998
,
7816
,
7638
,
7460
,
7288
,
7116
,
6950
,
6785
,
6625
,
6465
,
6306
,
6147
,
5995
,
5843
,
5697
,
5551
,
5411
,
5271
,
5135
,
5000
,
4871
,
4742
,
4618
,
4495
,
4374
,
4253
,
4132
,
4011
,
3893
,
3775
,
3663
,
3552
,
3446
,
3340
,
3239
,
3138
,
3043
,
2948
,
2858
,
2768
,
2684
,
2600
,
2516
,
2433
,
2355
,
2278
,
2205
,
2133
,
2065
,
1997
,
1932
,
1867
,
1807
,
1747
,
1690
,
1634
,
1580
,
1526
,
1472
,
1418
,
1366
,
1314
,
1266
,
1218
,
1174
,
1130
,
1088
,
1047
,
1009
,
971
,
936
,
901
,
868
,
836
,
804
,
772
,
743
,
714
,
685
,
658
,
631
,
606
,
582
,
559
,
536
,
515
,
494
,
475
,
456
,
437
,
418
,
399
,
380
,
362
,
344
,
328
,
312
,
297
,
283
,
270
,
257
,
245
,
233
,
222
,
211
,
201
,
191
,
181
,
172
,
163
,
155
,
147
,
139
,
132
,
125
,
119
,
113
,
107
,
101
,
96
,
91
,
86
,
81
,
76
,
71
,
66
,
62
,
58
,
54
,
50
,
46
,
43
,
40
,
37
,
34
,
31
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
12
,
10
,
8
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16149
,
15915
,
15681
,
15447
,
15214
,
14981
,
14749
,
14517
,
14286
,
14055
,
13827
,
13599
,
13373
,
13147
,
12923
,
12699
,
12476
,
12253
,
12034
,
11815
,
11599
,
11383
,
11171
,
10959
,
10750
,
10541
,
10337
,
10133
,
9933
,
9733
,
9536
,
9339
,
9142
,
8945
,
8751
,
8557
,
8369
,
8181
,
7998
,
7816
,
7638
,
7460
,
7288
,
7116
,
6950
,
6785
,
6625
,
6465
,
6306
,
6147
,
5995
,
5843
,
5697
,
5551
,
5411
,
5271
,
5135
,
5000
,
4871
,
4742
,
4618
,
4495
,
4374
,
4253
,
4132
,
4011
,
3893
,
3775
,
3663
,
3552
,
3446
,
3340
,
3239
,
3138
,
3043
,
2948
,
2858
,
2768
,
2684
,
2600
,
2516
,
2433
,
2355
,
2278
,
2205
,
2133
,
2065
,
1997
,
1932
,
1867
,
1807
,
1747
,
1690
,
1634
,
1580
,
1526
,
1472
,
1418
,
1366
,
1314
,
1266
,
1218
,
1174
,
1130
,
1088
,
1047
,
1009
,
971
,
936
,
901
,
868
,
836
,
804
,
772
,
743
,
714
,
685
,
658
,
631
,
606
,
582
,
559
,
536
,
515
,
494
,
475
,
456
,
437
,
418
,
399
,
380
,
362
,
344
,
328
,
312
,
297
,
283
,
270
,
257
,
245
,
233
,
222
,
211
,
201
,
191
,
181
,
172
,
163
,
155
,
147
,
139
,
132
,
125
,
119
,
113
,
107
,
101
,
96
,
91
,
86
,
81
,
76
,
71
,
66
,
62
,
58
,
54
,
50
,
46
,
43
,
40
,
37
,
34
,
31
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
12
,
10
,
8
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16159
,
15934
,
15709
,
15485
,
15261
,
15038
,
14816
,
14594
,
14373
,
14152
,
13933
,
13714
,
13497
,
13280
,
13065
,
12850
,
12636
,
12422
,
12211
,
12000
,
11791
,
11583
,
11378
,
11173
,
10971
,
10769
,
10571
,
10373
,
10179
,
9985
,
9793
,
9601
,
9409
,
9217
,
9029
,
8842
,
8658
,
8475
,
8297
,
8120
,
7946
,
7773
,
7604
,
7435
,
7271
,
7108
,
6950
,
6792
,
6634
,
6477
,
6326
,
6175
,
6029
,
5883
,
5742
,
5602
,
5466
,
5330
,
5199
,
5068
,
4943
,
4818
,
4696
,
4574
,
4452
,
4330
,
4211
,
4093
,
3979
,
3866
,
3759
,
3652
,
3549
,
3446
,
3348
,
3250
,
3157
,
3065
,
2977
,
2889
,
2802
,
2716
,
2634
,
2553
,
2476
,
2399
,
2326
,
2254
,
2185
,
2117
,
2052
,
1987
,
1926
,
1866
,
1808
,
1750
,
1692
,
1634
,
1578
,
1522
,
1470
,
1418
,
1369
,
1321
,
1275
,
1229
,
1187
,
1145
,
1105
,
1066
,
1027
,
991
,
955
,
919
,
883
,
850
,
817
,
786
,
756
,
728
,
700
,
674
,
648
,
624
,
600
,
578
,
556
,
534
,
512
,
490
,
468
,
447
,
426
,
407
,
388
,
371
,
354
,
338
,
322
,
307
,
293
,
280
,
267
,
255
,
243
,
231
,
219
,
209
,
199
,
189
,
179
,
170
,
161
,
153
,
145
,
138
,
131
,
124
,
117
,
111
,
105
,
99
,
93
,
87
,
81
,
76
,
71
,
66
,
61
,
57
,
53
,
49
,
45
,
42
,
39
,
36
,
33
,
30
,
27
,
24
,
21
,
19
,
17
,
15
,
13
,
11
,
9
,
7
,
5
,
3
,
1
,
0
16384
,
16159
,
15934
,
15709
,
15485
,
15261
,
15038
,
14816
,
14594
,
14373
,
14152
,
13933
,
13714
,
13497
,
13280
,
13065
,
12850
,
12636
,
12422
,
12211
,
12000
,
11791
,
11583
,
11378
,
11173
,
10971
,
10769
,
10571
,
10373
,
10179
,
9985
,
9793
,
9601
,
9409
,
9217
,
9029
,
8842
,
8658
,
8475
,
8297
,
8120
,
7946
,
7773
,
7604
,
7435
,
7271
,
7108
,
6950
,
6792
,
6634
,
6477
,
6326
,
6175
,
6029
,
5883
,
5742
,
5602
,
5466
,
5330
,
5199
,
5068
,
4943
,
4818
,
4696
,
4574
,
4452
,
4330
,
4211
,
4093
,
3979
,
3866
,
3759
,
3652
,
3549
,
3446
,
3348
,
3250
,
3157
,
3065
,
2977
,
2889
,
2802
,
2716
,
2634
,
2553
,
2476
,
2399
,
2326
,
2254
,
2185
,
2117
,
2052
,
1987
,
1926
,
1866
,
1808
,
1750
,
1692
,
1634
,
1578
,
1522
,
1470
,
1418
,
1369
,
1321
,
1275
,
1229
,
1187
,
1145
,
1105
,
1066
,
1027
,
991
,
955
,
919
,
883
,
850
,
817
,
786
,
756
,
728
,
700
,
674
,
648
,
624
,
600
,
578
,
556
,
534
,
512
,
490
,
468
,
447
,
426
,
407
,
388
,
371
,
354
,
338
,
322
,
307
,
293
,
280
,
267
,
255
,
243
,
231
,
219
,
209
,
199
,
189
,
179
,
170
,
161
,
153
,
145
,
138
,
131
,
124
,
117
,
111
,
105
,
99
,
93
,
87
,
81
,
76
,
71
,
66
,
61
,
57
,
53
,
49
,
45
,
42
,
39
,
36
,
33
,
30
,
27
,
24
,
21
,
19
,
17
,
15
,
13
,
11
,
9
,
7
,
5
,
3
,
1
,
0
},
{
16384
,
16169
,
15954
,
15739
,
15524
,
15310
,
15096
,
14883
,
14670
,
14458
,
14246
,
14035
,
13824
,
13614
,
13405
,
13198
,
12991
,
12785
,
12579
,
12376
,
12173
,
11972
,
11772
,
11574
,
11377
,
11182
,
10987
,
10795
,
10603
,
10414
,
10226
,
10040
,
9854
,
9668
,
9482
,
9299
,
9116
,
8937
,
8759
,
8585
,
8411
,
8241
,
8071
,
7906
,
7741
,
7580
,
7419
,
7263
,
7107
,
6952
,
6797
,
6647
,
6497
,
6353
,
6209
,
6070
,
5931
,
5796
,
5661
,
5531
,
5401
,
5275
,
5150
,
5027
,
4904
,
4781
,
4658
,
4538
,
4419
,
4304
,
4190
,
4081
,
3972
,
3867
,
3762
,
3662
,
3562
,
3467
,
3372
,
3281
,
3191
,
3101
,
3012
,
2928
,
2844
,
2764
,
2684
,
2608
,
2533
,
2460
,
2387
,
2318
,
2250
,
2185
,
2121
,
2059
,
1997
,
1935
,
1873
,
1813
,
1754
,
1698
,
1642
,
1588
,
1535
,
1483
,
1433
,
1384
,
1338
,
1292
,
1249
,
1206
,
1165
,
1125
,
1085
,
1045
,
1008
,
971
,
937
,
903
,
871
,
840
,
810
,
780
,
752
,
724
,
698
,
672
,
647
,
622
,
597
,
572
,
548
,
524
,
502
,
480
,
460
,
440
,
421
,
403
,
386
,
369
,
353
,
337
,
323
,
309
,
295
,
281
,
268
,
255
,
243
,
231
,
220
,
209
,
199
,
189
,
180
,
171
,
163
,
155
,
147
,
139
,
131
,
123
,
116
,
109
,
102
,
95
,
89
,
83
,
77
,
72
,
67
,
62
,
57
,
52
,
48
,
44
,
40
,
36
,
32
,
28
,
25
,
22
,
19
,
16
,
13
,
10
,
8
,
6
,
4
,
2
,
0
16384
,
16169
,
15954
,
15739
,
15524
,
15310
,
15096
,
14883
,
14670
,
14458
,
14246
,
14035
,
13824
,
13614
,
13405
,
13198
,
12991
,
12785
,
12579
,
12376
,
12173
,
11972
,
11772
,
11574
,
11377
,
11182
,
10987
,
10795
,
10603
,
10414
,
10226
,
10040
,
9854
,
9668
,
9482
,
9299
,
9116
,
8937
,
8759
,
8585
,
8411
,
8241
,
8071
,
7906
,
7741
,
7580
,
7419
,
7263
,
7107
,
6952
,
6797
,
6647
,
6497
,
6353
,
6209
,
6070
,
5931
,
5796
,
5661
,
5531
,
5401
,
5275
,
5150
,
5027
,
4904
,
4781
,
4658
,
4538
,
4419
,
4304
,
4190
,
4081
,
3972
,
3867
,
3762
,
3662
,
3562
,
3467
,
3372
,
3281
,
3191
,
3101
,
3012
,
2928
,
2844
,
2764
,
2684
,
2608
,
2533
,
2460
,
2387
,
2318
,
2250
,
2185
,
2121
,
2059
,
1997
,
1935
,
1873
,
1813
,
1754
,
1698
,
1642
,
1588
,
1535
,
1483
,
1433
,
1384
,
1338
,
1292
,
1249
,
1206
,
1165
,
1125
,
1085
,
1045
,
1008
,
971
,
937
,
903
,
871
,
840
,
810
,
780
,
752
,
724
,
698
,
672
,
647
,
622
,
597
,
572
,
548
,
524
,
502
,
480
,
460
,
440
,
421
,
403
,
386
,
369
,
353
,
337
,
323
,
309
,
295
,
281
,
268
,
255
,
243
,
231
,
220
,
209
,
199
,
189
,
180
,
171
,
163
,
155
,
147
,
139
,
131
,
123
,
116
,
109
,
102
,
95
,
89
,
83
,
77
,
72
,
67
,
62
,
57
,
52
,
48
,
44
,
40
,
36
,
32
,
28
,
25
,
22
,
19
,
16
,
13
,
10
,
8
,
6
,
4
,
2
,
0
},
{
16384
,
16177
,
15970
,
15764
,
15558
,
15353
,
15148
,
14944
,
14740
,
14537
,
14334
,
14132
,
13930
,
13729
,
13529
,
13330
,
13131
,
12933
,
12735
,
12539
,
12343
,
12150
,
11957
,
11766
,
11576
,
11388
,
11200
,
11015
,
10830
,
10647
,
10465
,
10285
,
10105
,
9925
,
9745
,
9568
,
9391
,
9218
,
9045
,
8876
,
8707
,
8541
,
8375
,
8213
,
8051
,
7894
,
7737
,
7583
,
7429
,
7277
,
7125
,
6977
,
6830
,
6687
,
6544
,
6406
,
6268
,
6133
,
5998
,
5868
,
5738
,
5612
,
5487
,
5364
,
5241
,
5118
,
4995
,
4875
,
4755
,
4640
,
4525
,
4414
,
4304
,
4198
,
4092
,
3990
,
3888
,
3790
,
3693
,
3600
,
3507
,
3415
,
3323
,
3235
,
3147
,
3064
,
2981
,
2902
,
2823
,
2746
,
2670
,
2594
,
2522
,
2450
,
2382
,
2314
,
2248
,
2182
,
2116
,
2050
,
1987
,
1924
,
1864
,
1804
,
1748
,
1692
,
1638
,
1585
,
1534
,
1484
,
1437
,
1390
,
1346
,
1302
,
1258
,
1215
,
1174
,
1133
,
1095
,
1057
,
1021
,
986
,
952
,
918
,
887
,
856
,
827
,
798
,
770
,
742
,
714
,
686
,
659
,
632
,
607
,
582
,
559
,
536
,
514
,
492
,
472
,
452
,
433
,
415
,
398
,
381
,
364
,
348
,
333
,
318
,
304
,
290
,
277
,
264
,
252
,
240
,
229
,
218
,
208
,
198
,
188
,
178
,
168
,
158
,
149
,
140
,
132
,
124
,
116
,
108
,
101
,
94
,
87
,
81
,
75
,
69
,
64
,
59
,
54
,
49
,
44
,
39
,
35
,
31
,
27
,
23
,
19
,
15
,
12
,
9
,
6
,
3
,
0
16384
,
16177
,
15970
,
15764
,
15558
,
15353
,
15148
,
14944
,
14740
,
14537
,
14334
,
14132
,
13930
,
13729
,
13529
,
13330
,
13131
,
12933
,
12735
,
12539
,
12343
,
12150
,
11957
,
11766
,
11576
,
11388
,
11200
,
11015
,
10830
,
10647
,
10465
,
10285
,
10105
,
9925
,
9745
,
9568
,
9391
,
9218
,
9045
,
8876
,
8707
,
8541
,
8375
,
8213
,
8051
,
7894
,
7737
,
7583
,
7429
,
7277
,
7125
,
6977
,
6830
,
6687
,
6544
,
6406
,
6268
,
6133
,
5998
,
5868
,
5738
,
5612
,
5487
,
5364
,
5241
,
5118
,
4995
,
4875
,
4755
,
4640
,
4525
,
4414
,
4304
,
4198
,
4092
,
3990
,
3888
,
3790
,
3693
,
3600
,
3507
,
3415
,
3323
,
3235
,
3147
,
3064
,
2981
,
2902
,
2823
,
2746
,
2670
,
2594
,
2522
,
2450
,
2382
,
2314
,
2248
,
2182
,
2116
,
2050
,
1987
,
1924
,
1864
,
1804
,
1748
,
1692
,
1638
,
1585
,
1534
,
1484
,
1437
,
1390
,
1346
,
1302
,
1258
,
1215
,
1174
,
1133
,
1095
,
1057
,
1021
,
986
,
952
,
918
,
887
,
856
,
827
,
798
,
770
,
742
,
714
,
686
,
659
,
632
,
607
,
582
,
559
,
536
,
514
,
492
,
472
,
452
,
433
,
415
,
398
,
381
,
364
,
348
,
333
,
318
,
304
,
290
,
277
,
264
,
252
,
240
,
229
,
218
,
208
,
198
,
188
,
178
,
168
,
158
,
149
,
140
,
132
,
124
,
116
,
108
,
101
,
94
,
87
,
81
,
75
,
69
,
64
,
59
,
54
,
49
,
44
,
39
,
35
,
31
,
27
,
23
,
19
,
15
,
12
,
9
,
6
,
3
,
0
}
};
static
const
uint16_t
cf_tables_3
[
5
][
257
]
=
{
{
16384
,
16187
,
15990
,
15793
,
15597
,
15401
,
15205
,
15009
,
14813
,
14618
,
14423
,
14230
,
14037
,
13845
,
13653
,
13463
,
13273
,
13083
,
12894
,
12706
,
12518
,
12332
,
12146
,
11962
,
11778
,
11597
,
11416
,
11237
,
11059
,
10882
,
10706
,
10532
,
10358
,
10184
,
10010
,
9838
,
9666
,
9497
,
9328
,
9163
,
8999
,
8837
,
8675
,
8517
,
8359
,
8205
,
8051
,
7901
,
7751
,
7602
,
7453
,
7308
,
7163
,
7022
,
6882
,
6745
,
6609
,
6476
,
6343
,
6214
,
6085
,
5960
,
5835
,
5712
,
5589
,
5466
,
5343
,
5223
,
5103
,
4987
,
4872
,
4761
,
4650
,
4542
,
4435
,
4332
,
4229
,
4130
,
4031
,
3936
,
3841
,
3747
,
3653
,
3563
,
3473
,
3387
,
3302
,
3220
,
3138
,
3059
,
2980
,
2905
,
2830
,
2759
,
2688
,
2619
,
2550
,
2481
,
2412
,
2345
,
2278
,
2215
,
2152
,
2092
,
2032
,
1974
,
1917
,
1863
,
1809
,
1758
,
1707
,
1659
,
1611
,
1564
,
1517
,
1473
,
1429
,
1387
,
1346
,
1307
,
1268
,
1230
,
1193
,
1158
,
1123
,
1090
,
1058
,
1026
,
994
,
962
,
930
,
899
,
869
,
841
,
813
,
786
,
760
,
735
,
710
,
687
,
664
,
643
,
622
,
602
,
582
,
562
,
543
,
525
,
507
,
490
,
473
,
457
,
442
,
427
,
412
,
398
,
385
,
373
,
361
,
349
,
337
,
325
,
313
,
301
,
290
,
279
,
269
,
259
,
249
,
240
,
231
,
222
,
214
,
206
,
199
,
192
,
185
,
178
,
171
,
165
,
159
,
153
,
148
,
143
,
138
,
133
,
128
,
123
,
119
,
115
,
111
,
107
,
103
,
99
,
95
,
91
,
87
,
83
,
80
,
77
,
74
,
71
,
68
,
65
,
63
,
61
,
59
,
57
,
55
,
53
,
51
,
49
,
47
,
45
,
43
,
41
,
40
,
39
,
38
,
37
,
36
,
35
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16187
,
15990
,
15793
,
15597
,
15401
,
15205
,
15009
,
14813
,
14618
,
14423
,
14230
,
14037
,
13845
,
13653
,
13463
,
13273
,
13083
,
12894
,
12706
,
12518
,
12332
,
12146
,
11962
,
11778
,
11597
,
11416
,
11237
,
11059
,
10882
,
10706
,
10532
,
10358
,
10184
,
10010
,
9838
,
9666
,
9497
,
9328
,
9163
,
8999
,
8837
,
8675
,
8517
,
8359
,
8205
,
8051
,
7901
,
7751
,
7602
,
7453
,
7308
,
7163
,
7022
,
6882
,
6745
,
6609
,
6476
,
6343
,
6214
,
6085
,
5960
,
5835
,
5712
,
5589
,
5466
,
5343
,
5223
,
5103
,
4987
,
4872
,
4761
,
4650
,
4542
,
4435
,
4332
,
4229
,
4130
,
4031
,
3936
,
3841
,
3747
,
3653
,
3563
,
3473
,
3387
,
3302
,
3220
,
3138
,
3059
,
2980
,
2905
,
2830
,
2759
,
2688
,
2619
,
2550
,
2481
,
2412
,
2345
,
2278
,
2215
,
2152
,
2092
,
2032
,
1974
,
1917
,
1863
,
1809
,
1758
,
1707
,
1659
,
1611
,
1564
,
1517
,
1473
,
1429
,
1387
,
1346
,
1307
,
1268
,
1230
,
1193
,
1158
,
1123
,
1090
,
1058
,
1026
,
994
,
962
,
930
,
899
,
869
,
841
,
813
,
786
,
760
,
735
,
710
,
687
,
664
,
643
,
622
,
602
,
582
,
562
,
543
,
525
,
507
,
490
,
473
,
457
,
442
,
427
,
412
,
398
,
385
,
373
,
361
,
349
,
337
,
325
,
313
,
301
,
290
,
279
,
269
,
259
,
249
,
240
,
231
,
222
,
214
,
206
,
199
,
192
,
185
,
178
,
171
,
165
,
159
,
153
,
148
,
143
,
138
,
133
,
128
,
123
,
119
,
115
,
111
,
107
,
103
,
99
,
95
,
91
,
87
,
83
,
80
,
77
,
74
,
71
,
68
,
65
,
63
,
61
,
59
,
57
,
55
,
53
,
51
,
49
,
47
,
45
,
43
,
41
,
40
,
39
,
38
,
37
,
36
,
35
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16195
,
16006
,
15817
,
15629
,
15441
,
15253
,
15065
,
14878
,
14692
,
14506
,
14321
,
14136
,
13952
,
13768
,
13585
,
13402
,
13219
,
13037
,
12857
,
12677
,
12499
,
12321
,
12144
,
11967
,
11792
,
11617
,
11444
,
11271
,
11100
,
10930
,
10762
,
10594
,
10426
,
10258
,
10091
,
9925
,
9761
,
9598
,
9438
,
9278
,
9120
,
8963
,
8809
,
8655
,
8504
,
8354
,
8207
,
8060
,
7914
,
7769
,
7627
,
7485
,
7347
,
7209
,
7074
,
6939
,
6807
,
6676
,
6548
,
6420
,
6296
,
6172
,
6050
,
5928
,
5806
,
5684
,
5564
,
5444
,
5328
,
5212
,
5100
,
4988
,
4879
,
4771
,
4667
,
4563
,
4462
,
4362
,
4265
,
4169
,
4073
,
3978
,
3886
,
3795
,
3707
,
3619
,
3535
,
3451
,
3369
,
3288
,
3210
,
3133
,
3059
,
2985
,
2913
,
2841
,
2769
,
2697
,
2627
,
2557
,
2490
,
2424
,
2360
,
2297
,
2237
,
2177
,
2119
,
2062
,
2007
,
1953
,
1901
,
1849
,
1798
,
1748
,
1700
,
1652
,
1607
,
1562
,
1519
,
1476
,
1435
,
1394
,
1355
,
1317
,
1281
,
1245
,
1210
,
1175
,
1140
,
1105
,
1071
,
1037
,
1005
,
973
,
943
,
913
,
885
,
857
,
830
,
804
,
779
,
754
,
731
,
708
,
685
,
663
,
642
,
621
,
601
,
581
,
563
,
545
,
528
,
511
,
495
,
479
,
463
,
448
,
433
,
419
,
405
,
391
,
377
,
364
,
351
,
338
,
326
,
314
,
302
,
291
,
280
,
270
,
260
,
251
,
242
,
234
,
226
,
218
,
210
,
202
,
195
,
188
,
181
,
174
,
168
,
162
,
156
,
150
,
144
,
139
,
134
,
129
,
124
,
119
,
114
,
109
,
104
,
100
,
96
,
92
,
88
,
84
,
80
,
77
,
74
,
71
,
68
,
65
,
62
,
59
,
56
,
54
,
52
,
50
,
48
,
46
,
44
,
42
,
40
,
38
,
36
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16195
,
16006
,
15817
,
15629
,
15441
,
15253
,
15065
,
14878
,
14692
,
14506
,
14321
,
14136
,
13952
,
13768
,
13585
,
13402
,
13219
,
13037
,
12857
,
12677
,
12499
,
12321
,
12144
,
11967
,
11792
,
11617
,
11444
,
11271
,
11100
,
10930
,
10762
,
10594
,
10426
,
10258
,
10091
,
9925
,
9761
,
9598
,
9438
,
9278
,
9120
,
8963
,
8809
,
8655
,
8504
,
8354
,
8207
,
8060
,
7914
,
7769
,
7627
,
7485
,
7347
,
7209
,
7074
,
6939
,
6807
,
6676
,
6548
,
6420
,
6296
,
6172
,
6050
,
5928
,
5806
,
5684
,
5564
,
5444
,
5328
,
5212
,
5100
,
4988
,
4879
,
4771
,
4667
,
4563
,
4462
,
4362
,
4265
,
4169
,
4073
,
3978
,
3886
,
3795
,
3707
,
3619
,
3535
,
3451
,
3369
,
3288
,
3210
,
3133
,
3059
,
2985
,
2913
,
2841
,
2769
,
2697
,
2627
,
2557
,
2490
,
2424
,
2360
,
2297
,
2237
,
2177
,
2119
,
2062
,
2007
,
1953
,
1901
,
1849
,
1798
,
1748
,
1700
,
1652
,
1607
,
1562
,
1519
,
1476
,
1435
,
1394
,
1355
,
1317
,
1281
,
1245
,
1210
,
1175
,
1140
,
1105
,
1071
,
1037
,
1005
,
973
,
943
,
913
,
885
,
857
,
830
,
804
,
779
,
754
,
731
,
708
,
685
,
663
,
642
,
621
,
601
,
581
,
563
,
545
,
528
,
511
,
495
,
479
,
463
,
448
,
433
,
419
,
405
,
391
,
377
,
364
,
351
,
338
,
326
,
314
,
302
,
291
,
280
,
270
,
260
,
251
,
242
,
234
,
226
,
218
,
210
,
202
,
195
,
188
,
181
,
174
,
168
,
162
,
156
,
150
,
144
,
139
,
134
,
129
,
124
,
119
,
114
,
109
,
104
,
100
,
96
,
92
,
88
,
84
,
80
,
77
,
74
,
71
,
68
,
65
,
62
,
59
,
56
,
54
,
52
,
50
,
48
,
46
,
44
,
42
,
40
,
38
,
36
,
34
,
33
,
32
,
31
,
30
,
29
,
28
,
27
,
26
,
25
,
24
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16203
,
16022
,
15842
,
15662
,
15482
,
15302
,
15122
,
14942
,
14763
,
14584
,
14406
,
14228
,
14051
,
13874
,
13698
,
13522
,
13347
,
13172
,
12998
,
12824
,
12652
,
12480
,
12310
,
12140
,
11971
,
11803
,
11637
,
11471
,
11307
,
11143
,
10980
,
10817
,
10654
,
10491
,
10330
,
10169
,
10011
,
9853
,
9697
,
9542
,
9389
,
9236
,
9086
,
8936
,
8789
,
8642
,
8498
,
8355
,
8212
,
8070
,
7931
,
7792
,
7656
,
7520
,
7388
,
7256
,
7126
,
6996
,
6870
,
6744
,
6621
,
6498
,
6377
,
6256
,
6135
,
6014
,
5895
,
5776
,
5660
,
5545
,
5433
,
5321
,
5212
,
5104
,
4999
,
4895
,
4793
,
4692
,
4594
,
4496
,
4400
,
4304
,
4211
,
4118
,
4028
,
3939
,
3853
,
3767
,
3684
,
3601
,
3521
,
3441
,
3364
,
3287
,
3212
,
3137
,
3062
,
2987
,
2915
,
2843
,
2773
,
2704
,
2638
,
2572
,
2508
,
2445
,
2384
,
2324
,
2266
,
2208
,
2153
,
2098
,
2044
,
1990
,
1939
,
1888
,
1839
,
1791
,
1745
,
1699
,
1655
,
1611
,
1569
,
1527
,
1487
,
1448
,
1409
,
1370
,
1331
,
1292
,
1255
,
1218
,
1183
,
1148
,
1115
,
1082
,
1051
,
1020
,
990
,
960
,
932
,
904
,
878
,
852
,
826
,
801
,
777
,
753
,
731
,
709
,
687
,
666
,
645
,
625
,
605
,
586
,
567
,
550
,
533
,
516
,
499
,
482
,
465
,
449
,
433
,
418
,
403
,
389
,
375
,
362
,
349
,
337
,
325
,
314
,
303
,
293
,
283
,
273
,
263
,
254
,
245
,
236
,
227
,
219
,
211
,
204
,
197
,
190
,
183
,
177
,
171
,
165
,
159
,
153
,
147
,
141
,
135
,
130
,
125
,
120
,
115
,
110
,
105
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
74
,
71
,
68
,
65
,
62
,
59
,
56
,
53
,
51
,
49
,
47
,
45
,
43
,
41
,
39
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16203
,
16022
,
15842
,
15662
,
15482
,
15302
,
15122
,
14942
,
14763
,
14584
,
14406
,
14228
,
14051
,
13874
,
13698
,
13522
,
13347
,
13172
,
12998
,
12824
,
12652
,
12480
,
12310
,
12140
,
11971
,
11803
,
11637
,
11471
,
11307
,
11143
,
10980
,
10817
,
10654
,
10491
,
10330
,
10169
,
10011
,
9853
,
9697
,
9542
,
9389
,
9236
,
9086
,
8936
,
8789
,
8642
,
8498
,
8355
,
8212
,
8070
,
7931
,
7792
,
7656
,
7520
,
7388
,
7256
,
7126
,
6996
,
6870
,
6744
,
6621
,
6498
,
6377
,
6256
,
6135
,
6014
,
5895
,
5776
,
5660
,
5545
,
5433
,
5321
,
5212
,
5104
,
4999
,
4895
,
4793
,
4692
,
4594
,
4496
,
4400
,
4304
,
4211
,
4118
,
4028
,
3939
,
3853
,
3767
,
3684
,
3601
,
3521
,
3441
,
3364
,
3287
,
3212
,
3137
,
3062
,
2987
,
2915
,
2843
,
2773
,
2704
,
2638
,
2572
,
2508
,
2445
,
2384
,
2324
,
2266
,
2208
,
2153
,
2098
,
2044
,
1990
,
1939
,
1888
,
1839
,
1791
,
1745
,
1699
,
1655
,
1611
,
1569
,
1527
,
1487
,
1448
,
1409
,
1370
,
1331
,
1292
,
1255
,
1218
,
1183
,
1148
,
1115
,
1082
,
1051
,
1020
,
990
,
960
,
932
,
904
,
878
,
852
,
826
,
801
,
777
,
753
,
731
,
709
,
687
,
666
,
645
,
625
,
605
,
586
,
567
,
550
,
533
,
516
,
499
,
482
,
465
,
449
,
433
,
418
,
403
,
389
,
375
,
362
,
349
,
337
,
325
,
314
,
303
,
293
,
283
,
273
,
263
,
254
,
245
,
236
,
227
,
219
,
211
,
204
,
197
,
190
,
183
,
177
,
171
,
165
,
159
,
153
,
147
,
141
,
135
,
130
,
125
,
120
,
115
,
110
,
105
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
74
,
71
,
68
,
65
,
62
,
59
,
56
,
53
,
51
,
49
,
47
,
45
,
43
,
41
,
39
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
22
,
21
,
20
,
19
,
18
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16210
,
16036
,
15863
,
15690
,
15517
,
15344
,
15172
,
15000
,
14828
,
14656
,
14485
,
14314
,
14145
,
13976
,
13808
,
13640
,
13472
,
13304
,
13137
,
12970
,
12804
,
12639
,
12475
,
12312
,
12149
,
11987
,
11827
,
11667
,
11508
,
11349
,
11192
,
11035
,
10878
,
10721
,
10565
,
10410
,
10257
,
10104
,
9953
,
9802
,
9654
,
9506
,
9359
,
9213
,
9070
,
8927
,
8787
,
8647
,
8508
,
8369
,
8233
,
8097
,
7964
,
7831
,
7700
,
7570
,
7442
,
7315
,
7190
,
7065
,
6943
,
6821
,
6701
,
6581
,
6461
,
6341
,
6223
,
6105
,
5990
,
5876
,
5764
,
5653
,
5545
,
5437
,
5331
,
5226
,
5124
,
5022
,
4924
,
4826
,
4729
,
4632
,
4538
,
4444
,
4353
,
4262
,
4174
,
4087
,
4002
,
3917
,
3835
,
3753
,
3674
,
3595
,
3518
,
3441
,
3364
,
3287
,
3212
,
3138
,
3066
,
2995
,
2926
,
2858
,
2792
,
2726
,
2662
,
2599
,
2538
,
2478
,
2420
,
2362
,
2305
,
2249
,
2195
,
2141
,
2089
,
2037
,
1988
,
1939
,
1891
,
1844
,
1799
,
1754
,
1711
,
1668
,
1626
,
1584
,
1542
,
1500
,
1459
,
1418
,
1380
,
1342
,
1305
,
1269
,
1234
,
1199
,
1166
,
1133
,
1102
,
1071
,
1041
,
1012
,
983
,
954
,
926
,
899
,
872
,
847
,
822
,
798
,
774
,
751
,
728
,
707
,
686
,
666
,
646
,
627
,
608
,
589
,
570
,
552
,
534
,
517
,
500
,
484
,
468
,
453
,
438
,
424
,
410
,
397
,
384
,
372
,
360
,
348
,
336
,
325
,
314
,
303
,
293
,
283
,
273
,
264
,
255
,
246
,
237
,
229
,
221
,
213
,
205
,
197
,
189
,
181
,
174
,
167
,
160
,
154
,
148
,
142
,
136
,
131
,
126
,
121
,
116
,
111
,
106
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
73
,
70
,
67
,
64
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
21
,
19
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16210
,
16036
,
15863
,
15690
,
15517
,
15344
,
15172
,
15000
,
14828
,
14656
,
14485
,
14314
,
14145
,
13976
,
13808
,
13640
,
13472
,
13304
,
13137
,
12970
,
12804
,
12639
,
12475
,
12312
,
12149
,
11987
,
11827
,
11667
,
11508
,
11349
,
11192
,
11035
,
10878
,
10721
,
10565
,
10410
,
10257
,
10104
,
9953
,
9802
,
9654
,
9506
,
9359
,
9213
,
9070
,
8927
,
8787
,
8647
,
8508
,
8369
,
8233
,
8097
,
7964
,
7831
,
7700
,
7570
,
7442
,
7315
,
7190
,
7065
,
6943
,
6821
,
6701
,
6581
,
6461
,
6341
,
6223
,
6105
,
5990
,
5876
,
5764
,
5653
,
5545
,
5437
,
5331
,
5226
,
5124
,
5022
,
4924
,
4826
,
4729
,
4632
,
4538
,
4444
,
4353
,
4262
,
4174
,
4087
,
4002
,
3917
,
3835
,
3753
,
3674
,
3595
,
3518
,
3441
,
3364
,
3287
,
3212
,
3138
,
3066
,
2995
,
2926
,
2858
,
2792
,
2726
,
2662
,
2599
,
2538
,
2478
,
2420
,
2362
,
2305
,
2249
,
2195
,
2141
,
2089
,
2037
,
1988
,
1939
,
1891
,
1844
,
1799
,
1754
,
1711
,
1668
,
1626
,
1584
,
1542
,
1500
,
1459
,
1418
,
1380
,
1342
,
1305
,
1269
,
1234
,
1199
,
1166
,
1133
,
1102
,
1071
,
1041
,
1012
,
983
,
954
,
926
,
899
,
872
,
847
,
822
,
798
,
774
,
751
,
728
,
707
,
686
,
666
,
646
,
627
,
608
,
589
,
570
,
552
,
534
,
517
,
500
,
484
,
468
,
453
,
438
,
424
,
410
,
397
,
384
,
372
,
360
,
348
,
336
,
325
,
314
,
303
,
293
,
283
,
273
,
264
,
255
,
246
,
237
,
229
,
221
,
213
,
205
,
197
,
189
,
181
,
174
,
167
,
160
,
154
,
148
,
142
,
136
,
131
,
126
,
121
,
116
,
111
,
106
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
73
,
70
,
67
,
64
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
35
,
33
,
31
,
29
,
27
,
25
,
23
,
21
,
19
,
17
,
16
,
15
,
14
,
13
,
12
,
11
,
10
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
,
0
},
{
16384
,
16218
,
16052
,
15886
,
15720
,
15554
,
15389
,
15224
,
15059
,
14895
,
14731
,
14567
,
14403
,
14240
,
14077
,
13915
,
13753
,
13591
,
13429
,
13269
,
13109
,
12950
,
12791
,
12633
,
12476
,
12320
,
12164
,
12009
,
11854
,
11701
,
11548
,
11396
,
11244
,
11092
,
10940
,
10790
,
10640
,
10492
,
10344
,
10198
,
10052
,
9908
,
9764
,
9622
,
9481
,
9342
,
9203
,
9066
,
8929
,
8793
,
8657
,
8524
,
8391
,
8261
,
8131
,
8003
,
7875
,
7749
,
7624
,
7502
,
7380
,
7260
,
7140
,
7022
,
6904
,
6786
,
6668
,
6551
,
6435
,
6322
,
6209
,
6099
,
5989
,
5881
,
5773
,
5668
,
5563
,
5461
,
5359
,
5260
,
5161
,
5063
,
4965
,
4871
,
4777
,
4686
,
4595
,
4506
,
4417
,
4331
,
4245
,
4162
,
4079
,
3999
,
3919
,
3841
,
3763
,
3685
,
3607
,
3530
,
3454
,
3380
,
3307
,
3236
,
3166
,
3097
,
3029
,
2963
,
2897
,
2834
,
2771
,
2710
,
2650
,
2591
,
2532
,
2475
,
2418
,
2363
,
2309
,
2257
,
2205
,
2155
,
2105
,
2057
,
2009
,
1963
,
1918
,
1873
,
1828
,
1783
,
1738
,
1694
,
1650
,
1607
,
1565
,
1524
,
1484
,
1445
,
1407
,
1369
,
1333
,
1297
,
1263
,
1229
,
1197
,
1165
,
1134
,
1103
,
1073
,
1043
,
1015
,
987
,
960
,
933
,
907
,
882
,
858
,
834
,
811
,
788
,
766
,
744
,
722
,
700
,
679
,
658
,
638
,
618
,
599
,
581
,
563
,
545
,
528
,
511
,
495
,
480
,
465
,
451
,
437
,
423
,
410
,
397
,
384
,
372
,
360
,
348
,
337
,
326
,
315
,
305
,
295
,
285
,
275
,
265
,
255
,
245
,
236
,
227
,
219
,
211
,
203
,
195
,
188
,
181
,
174
,
167
,
161
,
155
,
149
,
143
,
137
,
131
,
126
,
121
,
116
,
111
,
106
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
73
,
69
,
65
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
34
,
32
,
30
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
12
,
10
,
8
,
6
,
5
,
4
,
3
,
2
,
1
,
0
16384
,
16218
,
16052
,
15886
,
15720
,
15554
,
15389
,
15224
,
15059
,
14895
,
14731
,
14567
,
14403
,
14240
,
14077
,
13915
,
13753
,
13591
,
13429
,
13269
,
13109
,
12950
,
12791
,
12633
,
12476
,
12320
,
12164
,
12009
,
11854
,
11701
,
11548
,
11396
,
11244
,
11092
,
10940
,
10790
,
10640
,
10492
,
10344
,
10198
,
10052
,
9908
,
9764
,
9622
,
9481
,
9342
,
9203
,
9066
,
8929
,
8793
,
8657
,
8524
,
8391
,
8261
,
8131
,
8003
,
7875
,
7749
,
7624
,
7502
,
7380
,
7260
,
7140
,
7022
,
6904
,
6786
,
6668
,
6551
,
6435
,
6322
,
6209
,
6099
,
5989
,
5881
,
5773
,
5668
,
5563
,
5461
,
5359
,
5260
,
5161
,
5063
,
4965
,
4871
,
4777
,
4686
,
4595
,
4506
,
4417
,
4331
,
4245
,
4162
,
4079
,
3999
,
3919
,
3841
,
3763
,
3685
,
3607
,
3530
,
3454
,
3380
,
3307
,
3236
,
3166
,
3097
,
3029
,
2963
,
2897
,
2834
,
2771
,
2710
,
2650
,
2591
,
2532
,
2475
,
2418
,
2363
,
2309
,
2257
,
2205
,
2155
,
2105
,
2057
,
2009
,
1963
,
1918
,
1873
,
1828
,
1783
,
1738
,
1694
,
1650
,
1607
,
1565
,
1524
,
1484
,
1445
,
1407
,
1369
,
1333
,
1297
,
1263
,
1229
,
1197
,
1165
,
1134
,
1103
,
1073
,
1043
,
1015
,
987
,
960
,
933
,
907
,
882
,
858
,
834
,
811
,
788
,
766
,
744
,
722
,
700
,
679
,
658
,
638
,
618
,
599
,
581
,
563
,
545
,
528
,
511
,
495
,
480
,
465
,
451
,
437
,
423
,
410
,
397
,
384
,
372
,
360
,
348
,
337
,
326
,
315
,
305
,
295
,
285
,
275
,
265
,
255
,
245
,
236
,
227
,
219
,
211
,
203
,
195
,
188
,
181
,
174
,
167
,
161
,
155
,
149
,
143
,
137
,
131
,
126
,
121
,
116
,
111
,
106
,
101
,
97
,
93
,
89
,
85
,
81
,
77
,
73
,
69
,
65
,
61
,
58
,
55
,
52
,
49
,
46
,
43
,
40
,
37
,
34
,
32
,
30
,
28
,
26
,
24
,
22
,
20
,
18
,
16
,
14
,
12
,
10
,
8
,
6
,
5
,
4
,
3
,
2
,
1
,
0
}
};
static
const
uint16_t
*
const
cf_table
[
16
]
=
{
static
const
uint16_t
*
const
cf_table
[
16
]
=
{
cf_tables_1
[
0
],
cf_tables_1
[
1
],
cf_tables_1
[
2
],
cf_tables_2
[
0
],
cf_tables_2
[
1
],
cf_tables_2
[
2
],
cf_tables_2
[
3
],
cf_tables_2
[
4
],
cf_tables_2
[
5
],
cf_tables_2
[
6
],
cf_tables_2
[
7
],
cf_tables_3
[
0
],
...
...
@@ -424,10 +421,8 @@ static const uint16_t * const cf_table[16] = {
};
/** Initialize a given lookup table using a given delta
*/
static
void
bgmc_lut_fillp
(
uint8_t
*
lut
,
int
*
lut_status
,
int
delta
)
/** Initialize a given lookup table using a given delta */
static
void
bgmc_lut_fillp
(
uint8_t
*
lut
,
int
*
lut_status
,
int
delta
)
{
unsigned
int
sx
,
i
;
...
...
@@ -446,10 +441,8 @@ static void bgmc_lut_fillp(uint8_t *lut, int *lut_status,
}
/** Retune the index of a suitable lookup table for a given delta
*/
static
uint8_t
*
bgmc_lut_getp
(
uint8_t
*
lut
,
int
*
lut_status
,
int
delta
)
/** Retune the index of a suitable lookup table for a given delta */
static
uint8_t
*
bgmc_lut_getp
(
uint8_t
*
lut
,
int
*
lut_status
,
int
delta
)
{
unsigned
int
i
=
av_clip
(
delta
,
0
,
LUT_BUFF
-
1
);
...
...
@@ -462,11 +455,10 @@ static uint8_t* bgmc_lut_getp(uint8_t *lut, int *lut_status,
}
/** Initialize the lookup table arrays
*/
/** Initialize the lookup table arrays */
int
ff_bgmc_init
(
AVCodecContext
*
avctx
,
uint8_t
**
cf_lut
,
int
**
cf_lut_status
)
{
*
cf_lut
=
av_malloc
(
sizeof
(
*
cf_lut
)
*
LUT_BUFF
*
16
*
LUT_SIZE
);
*
cf_lut
=
av_malloc
(
sizeof
(
*
cf_lut
)
*
LUT_BUFF
*
16
*
LUT_SIZE
);
*
cf_lut_status
=
av_malloc
(
sizeof
(
*
cf_lut_status
)
*
LUT_BUFF
);
if
(
!
cf_lut
||
!
cf_lut_status
)
{
...
...
@@ -474,8 +466,7 @@ int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status)
av_log
(
avctx
,
AV_LOG_ERROR
,
"Allocating buffer memory failed.
\n
"
);
return
AVERROR
(
ENOMEM
);
}
else
{
// initialize lut_status buffer to a value never used to compare
// against
// initialize lut_status buffer to a value never used to compare against
memset
(
*
cf_lut_status
,
-
1
,
sizeof
(
*
cf_lut_status
)
*
LUT_BUFF
);
}
...
...
@@ -483,8 +474,7 @@ int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status)
}
/** Release the lookup table arrays
*/
/** Release the lookup table arrays */
void
ff_bgmc_end
(
uint8_t
**
cf_lut
,
int
**
cf_lut_status
)
{
av_freep
(
cf_lut
);
...
...
@@ -492,10 +482,9 @@ void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
}
/** Initialize decoding and reads the first value
*/
void
ff_bgmc_decode_init
(
GetBitContext
*
gb
,
unsigned
int
*
h
,
unsigned
int
*
l
,
unsigned
int
*
v
)
/** Initialize decoding and reads the first value */
void
ff_bgmc_decode_init
(
GetBitContext
*
gb
,
unsigned
int
*
h
,
unsigned
int
*
l
,
unsigned
int
*
v
)
{
*
h
=
TOP_VALUE
;
*
l
=
0
;
...
...
@@ -503,16 +492,14 @@ void ff_bgmc_decode_init(GetBitContext *gb,
}
/** Finish decoding
*/
/** Finish decoding */
void
ff_bgmc_decode_end
(
GetBitContext
*
gb
)
{
skip_bits_long
(
gb
,
-
(
VALUE_BITS
-
2
));
}
/** Read and decode a block Gilbert-Moore coded symbol
*/
/** Read and decode a block Gilbert-Moore coded symbol */
void
ff_bgmc_decode
(
GetBitContext
*
gb
,
unsigned
int
num
,
int32_t
*
dst
,
int
delta
,
unsigned
int
sx
,
unsigned
int
*
h
,
unsigned
int
*
l
,
unsigned
int
*
v
,
...
...
@@ -522,9 +509,9 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
uint8_t
*
lut
=
bgmc_lut_getp
(
cf_lut
,
cf_lut_status
,
delta
);
// read current state
unsigned
int
high
=
*
h
;
unsigned
int
low
=
*
l
;
unsigned
int
value
=
*
v
;
unsigned
int
high
=
*
h
;
unsigned
int
low
=
*
l
;
unsigned
int
value
=
*
v
;
lut
+=
sx
*
LUT_SIZE
;
...
...
@@ -539,12 +526,12 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
symbol
=
(
symbol
>>
delta
)
-
1
;
high
=
low
+
((
range
*
cf_table
[
sx
][(
symbol
)
<<
delta
]
-
(
1
<<
FREQ_BITS
))
>>
FREQ_BITS
);
low
=
low
+
((
range
*
cf_table
[
sx
][(
symbol
+
1
)
<<
delta
]
)
>>
FREQ_BITS
);
high
=
low
+
((
range
*
cf_table
[
sx
][(
symbol
)
<<
delta
]
-
(
1
<<
FREQ_BITS
))
>>
FREQ_BITS
);
low
=
low
+
((
range
*
cf_table
[
sx
][(
symbol
+
1
)
<<
delta
]
)
>>
FREQ_BITS
);
while
(
1
)
{
if
(
high
>=
HALF
)
{
if
(
low
>=
HALF
)
{
if
(
low
>=
HALF
)
{
value
-=
HALF
;
low
-=
HALF
;
high
-=
HALF
;
...
...
@@ -552,12 +539,13 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
value
-=
FIRST_QTR
;
low
-=
FIRST_QTR
;
high
-=
FIRST_QTR
;
}
else
break
;
}
else
break
;
}
low
*=
2
;
high
=
2
*
high
+
1
;
value
=
2
*
value
+
get_bits1
(
gb
);
low
*=
2
;
high
=
2
*
high
+
1
;
value
=
2
*
value
+
get_bits1
(
gb
);
}
*
dst
++
=
symbol
;
...
...
libavformat/rawenc.c
View file @
2ef15b46
...
...
@@ -57,6 +57,18 @@ AVOutputFormat ff_adx_muxer = {
};
#endif
#if CONFIG_CAVSVIDEO_MUXER
AVOutputFormat
ff_cavsvideo_muxer
=
{
.
name
=
"cavsvideo"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"raw Chinese AVS video"
),
.
extensions
=
"cavs"
,
.
audio_codec
=
CODEC_ID_NONE
,
.
video_codec
=
CODEC_ID_CAVS
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
};
#endif
#if CONFIG_DIRAC_MUXER
AVOutputFormat
ff_dirac_muxer
=
{
.
name
=
"dirac"
,
...
...
@@ -158,18 +170,6 @@ AVOutputFormat ff_h264_muxer = {
};
#endif
#if CONFIG_CAVSVIDEO_MUXER
AVOutputFormat
ff_cavsvideo_muxer
=
{
.
name
=
"cavsvideo"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"raw Chinese AVS video"
),
.
extensions
=
"cavs"
,
.
audio_codec
=
CODEC_ID_NONE
,
.
video_codec
=
CODEC_ID_CAVS
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
};
#endif
#if CONFIG_M4V_MUXER
AVOutputFormat
ff_m4v_muxer
=
{
.
name
=
"m4v"
,
...
...
@@ -207,30 +207,6 @@ AVOutputFormat ff_mlp_muxer = {
};
#endif
#if CONFIG_SRT_MUXER
AVOutputFormat
ff_srt_muxer
=
{
.
name
=
"srt"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"SubRip subtitle format"
),
.
mime_type
=
"application/x-subrip"
,
.
extensions
=
"srt"
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
.
subtitle_codec
=
CODEC_ID_SRT
,
};
#endif
#if CONFIG_TRUEHD_MUXER
AVOutputFormat
ff_truehd_muxer
=
{
.
name
=
"truehd"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"raw TrueHD"
),
.
extensions
=
"thd"
,
.
audio_codec
=
CODEC_ID_TRUEHD
,
.
video_codec
=
CODEC_ID_NONE
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
};
#endif
#if CONFIG_MPEG1VIDEO_MUXER
AVOutputFormat
ff_mpeg1video_muxer
=
{
.
name
=
"mpeg1video"
,
...
...
@@ -267,3 +243,27 @@ AVOutputFormat ff_rawvideo_muxer = {
.
flags
=
AVFMT_NOTIMESTAMPS
,
};
#endif
#if CONFIG_SRT_MUXER
AVOutputFormat
ff_srt_muxer
=
{
.
name
=
"srt"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"SubRip subtitle format"
),
.
mime_type
=
"application/x-subrip"
,
.
extensions
=
"srt"
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
.
subtitle_codec
=
CODEC_ID_SRT
,
};
#endif
#if CONFIG_TRUEHD_MUXER
AVOutputFormat
ff_truehd_muxer
=
{
.
name
=
"truehd"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"raw TrueHD"
),
.
extensions
=
"thd"
,
.
audio_codec
=
CODEC_ID_TRUEHD
,
.
video_codec
=
CODEC_ID_NONE
,
.
write_packet
=
ff_raw_write_packet
,
.
flags
=
AVFMT_NOTIMESTAMPS
,
};
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment