Update ABI/API compatibility reports after commit 52d5690a6f

This commit is contained in:
OpenJPEG Travis CI 2017-08-14 16:19:32 +00:00
parent ac35a2e081
commit 3d30c03135
6 changed files with 102 additions and 73 deletions

View File

@ -207,7 +207,7 @@ $VAR1 = {
'Source' => 'cio.c', 'Source' => 'cio.c',
'SourceLine' => '271' 'SourceLine' => '271'
}, },
'152247' => { '152257' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Line' => '1059', 'Line' => '1059',
'Return' => '177', 'Return' => '177',
@ -215,13 +215,13 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '160' 'SourceLine' => '160'
}, },
'152550' => { '152560' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Line' => '1537', 'Line' => '1537',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'cstr_info', 'name' => 'cstr_info',
'type' => '152568' 'type' => '152578'
} }
}, },
'Reg' => { 'Reg' => {
@ -232,12 +232,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '924' 'SourceLine' => '924'
}, },
'214138' => { '214163' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_callback', 'name' => 'p_callback',
@ -258,12 +258,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '44' 'SourceLine' => '44'
}, },
'214236' => { '214261' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_callback', 'name' => 'p_callback',
@ -284,12 +284,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '59' 'SourceLine' => '59'
}, },
'214322' => { '214347' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_callback', 'name' => 'p_callback',
@ -310,23 +310,23 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '74' 'SourceLine' => '74'
}, },
'214437' => { '214462' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_format', 'name' => 'p_format',
'type' => '203503' 'type' => '203528'
} }
}, },
'Reg' => { 'Reg' => {
'0' => 'rdi' '0' => 'rdi'
}, },
'Return' => '214224', 'Return' => '214249',
'ShortName' => 'opj_create_decompress', 'ShortName' => 'opj_create_decompress',
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '168' 'SourceLine' => '168'
}, },
'214659' => { '214684' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -342,12 +342,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '352' 'SourceLine' => '352'
}, },
'214790' => { '214815' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'num_threads', 'name' => 'num_threads',
@ -363,12 +363,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '375' 'SourceLine' => '375'
}, },
'214908' => { '214933' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'parameters', 'name' => 'parameters',
@ -384,7 +384,7 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '386' 'SourceLine' => '386'
}, },
'215050' => { '215075' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -393,7 +393,7 @@ $VAR1 = {
}, },
'1' => { '1' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'2' => { '2' => {
'name' => 'p_image', 'name' => 'p_image',
@ -410,12 +410,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '406' 'SourceLine' => '406'
}, },
'215253' => { '215278' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -436,12 +436,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '429' 'SourceLine' => '429'
}, },
'215407' => { '215432' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_image', 'name' => 'p_image',
@ -477,12 +477,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '450' 'SourceLine' => '450'
}, },
'215615' => { '215640' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -538,12 +538,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '473' 'SourceLine' => '473'
}, },
'215833' => { '215858' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_tile_index', 'name' => 'p_tile_index',
@ -574,12 +574,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '504' 'SourceLine' => '504'
}, },
'216033' => { '216058' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -605,12 +605,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '530' 'SourceLine' => '530'
}, },
'216210' => { '216235' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'res_factor', 'name' => 'res_factor',
@ -626,23 +626,23 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '554' 'SourceLine' => '554'
}, },
'216319' => { '216344' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_format', 'name' => 'p_format',
'type' => '203503' 'type' => '203528'
} }
}, },
'Reg' => { 'Reg' => {
'0' => 'rdi' '0' => 'rdi'
}, },
'Return' => '214224', 'Return' => '214249',
'ShortName' => 'opj_create_compress', 'ShortName' => 'opj_create_compress',
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '572' 'SourceLine' => '572'
}, },
'216544' => { '216569' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -658,12 +658,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '670' 'SourceLine' => '670'
}, },
'216675' => { '216700' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'parameters', 'name' => 'parameters',
@ -684,12 +684,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '731' 'SourceLine' => '731'
}, },
'216813' => { '216838' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_image', 'name' => 'p_image',
@ -710,12 +710,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '749' 'SourceLine' => '749'
}, },
'216967' => { '216992' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_info', 'name' => 'p_info',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -731,12 +731,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '768' 'SourceLine' => '768'
}, },
'217098' => { '217123' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -752,12 +752,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '785' 'SourceLine' => '785'
}, },
'217229' => { '217254' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_stream', 'name' => 'p_stream',
@ -773,7 +773,7 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '802' 'SourceLine' => '802'
}, },
'217360' => { '217385' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -804,12 +804,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '822' 'SourceLine' => '822'
}, },
'217706' => { '217731' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'p_tile_index', 'name' => 'p_tile_index',
@ -840,12 +840,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '852' 'SourceLine' => '852'
}, },
'217906' => { '217931' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
} }
}, },
'Reg' => { 'Reg' => {
@ -856,12 +856,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '879' 'SourceLine' => '879'
}, },
'218007' => { '218032' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
}, },
'1' => { '1' => {
'name' => 'info_flag', 'name' => 'info_flag',
@ -882,12 +882,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '897' 'SourceLine' => '897'
}, },
'218144' => { '218169' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
} }
}, },
'Reg' => { 'Reg' => {
@ -898,12 +898,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '913' 'SourceLine' => '913'
}, },
'218308' => { '218333' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_codec', 'name' => 'p_codec',
'type' => '214224' 'type' => '214249'
} }
}, },
'Reg' => { 'Reg' => {
@ -914,12 +914,12 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '941' 'SourceLine' => '941'
}, },
'218393' => { '218418' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
'name' => 'p_cstr_index', 'name' => 'p_cstr_index',
'type' => '218453' 'type' => '218478'
} }
}, },
'Reg' => { 'Reg' => {
@ -930,7 +930,7 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '952' 'SourceLine' => '952'
}, },
'218459' => { '218484' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -956,7 +956,7 @@ $VAR1 = {
'Source' => 'openjpeg.c', 'Source' => 'openjpeg.c',
'SourceLine' => '967' 'SourceLine' => '967'
}, },
'218578' => { '218603' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Param' => { 'Param' => {
'0' => { '0' => {
@ -1371,7 +1371,7 @@ $VAR1 = {
'Size' => '1', 'Size' => '1',
'Type' => 'Intrinsic' 'Type' => 'Intrinsic'
}, },
'152568' => { '152578' => {
'BaseType' => '60940', 'BaseType' => '60940',
'Name' => 'opj_codestream_info_v2_t**', 'Name' => 'opj_codestream_info_v2_t**',
'Size' => '8', 'Size' => '8',
@ -1566,7 +1566,7 @@ $VAR1 = {
'Size' => '216', 'Size' => '216',
'Type' => 'Struct' 'Type' => 'Struct'
}, },
'203453' => { '203478' => {
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Line' => '292', 'Line' => '292',
'Memb' => { 'Memb' => {
@ -1599,15 +1599,15 @@ $VAR1 = {
'Size' => '4', 'Size' => '4',
'Type' => 'Enum' 'Type' => 'Enum'
}, },
'203503' => { '203528' => {
'BaseType' => '203453', 'BaseType' => '203478',
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Line' => '299', 'Line' => '299',
'Name' => 'OPJ_CODEC_FORMAT', 'Name' => 'OPJ_CODEC_FORMAT',
'Size' => '4', 'Size' => '4',
'Type' => 'Typedef' 'Type' => 'Typedef'
}, },
'205260' => { '205285' => {
'BaseType' => '141', 'BaseType' => '141',
'Header' => 'openjpeg.h', 'Header' => 'openjpeg.h',
'Line' => '575', 'Line' => '575',
@ -1615,13 +1615,13 @@ $VAR1 = {
'Size' => '8', 'Size' => '8',
'Type' => 'Typedef' 'Type' => 'Typedef'
}, },
'214224' => { '214249' => {
'BaseType' => '205260', 'BaseType' => '205285',
'Name' => 'opj_codec_t*', 'Name' => 'opj_codec_t*',
'Size' => '8', 'Size' => '8',
'Type' => 'Pointer' 'Type' => 'Pointer'
}, },
'218453' => { '218478' => {
'BaseType' => '58944', 'BaseType' => '58944',
'Name' => 'opj_codestream_index_t**', 'Name' => 'opj_codestream_index_t**',
'Size' => '8', 'Size' => '8',

View File

@ -20,7 +20,16 @@
<br/> <br/>
<h1>Changelog from Git</h1><br/><br/> <h1>Changelog from Git</h1><br/><br/>
<div class='changelog'> <div class='changelog'>
<pre class='wrap'>commit baf0c1ad4572daa89caa3b12985bdd93530f0dd7 <pre class='wrap'>commit 52d5690a6fcba86b5f117eeac8aca1971cac3688
Merge: baf0c1a bc59410
Author: Even Rouault &lt;even.rouault@mines-paris.org&gt;
Date: 2017-08-14 17:28:26 +0200
Merge pull request #984 from stweil/const
Use more const qualifiers
commit baf0c1ad4572daa89caa3b12985bdd93530f0dd7
Author: Even Rouault &lt;even.rouault@spatialys.com&gt; Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2017-08-14 17:26:58 +0200 Date: 2017-08-14 17:26:58 +0200
@ -32,6 +41,26 @@ Date: 2017-08-14 17:20:37 +0200
Encoder: grow buffer size in opj_tcd_code_block_enc_allocate_data() to avoid write heap buffer overflow in opj_mqc_flush (#982) Encoder: grow buffer size in opj_tcd_code_block_enc_allocate_data() to avoid write heap buffer overflow in opj_mqc_flush (#982)
commit bc59410f253b0cd3d4818ec06ce957cbdbfe4341
Author: Stefan Weil &lt;sw@weilnetz.de&gt;
Date: 2017-08-14 14:36:06 +0200
Use const qualifier for mqc_states
This allows more compiler optimizations.
Signed-off-by: Stefan Weil &lt;sw@weilnetz.de&gt;
commit 10e6ce2c2cfacf51fdde7e9c69bf2365840f4bb0
Author: Stefan Weil &lt;sw@weilnetz.de&gt;
Date: 2017-08-13 22:57:31 +0200
Use const qualifier for j2k_prog_order_list
This allows more compiler optimizations.
Signed-off-by: Stefan Weil &lt;sw@weilnetz.de&gt;
commit 0b4c3ce75d11600ebc6675bd871f78ca3c95bc60 commit 0b4c3ce75d11600ebc6675bd871f78ca3c95bc60
Merge: a35b489 9f75088 Merge: a35b489 9f75088
Author: Even Rouault &lt;even.rouault@mines-paris.org&gt; Author: Even Rouault &lt;even.rouault@mines-paris.org&gt;

View File

@ -560,7 +560,7 @@ $VAR1 = {
'2.1.1' => '2016-07-05 14:54', '2.1.1' => '2016-07-05 14:54',
'2.1.2' => '2016-09-28 18:18', '2.1.2' => '2016-09-28 18:18',
'2.2.0' => '2017-08-10 00:31', '2.2.0' => '2017-08-10 00:31',
'current' => '2017-08-14 17:26:58' 'current' => '2017-08-14 17:28:26'
}, },
'HeadersDiff' => { 'HeadersDiff' => {
'1.1' => { '1.1' => {
@ -648,7 +648,7 @@ $VAR1 = {
'Maintainer' => 'OpenJPEG team', 'Maintainer' => 'OpenJPEG team',
'MaintainerUrl' => 'http://www.openjpeg.org/', 'MaintainerUrl' => 'http://www.openjpeg.org/',
'PackageDiff' => {}, 'PackageDiff' => {},
'ScmUpdateTime' => '1502726180', 'ScmUpdateTime' => '1502727546',
'Soname' => { 'Soname' => {
'1.1' => { '1.1' => {
'lib/libopenjpeg.so' => 'libopenjpeg.so' 'lib/libopenjpeg.so' => 'libopenjpeg.so'

View File

@ -30,7 +30,7 @@
<th>Headers<br/>Diff</th> <th>Headers<br/>Diff</th>
</tr> </tr>
<tr id='current'><td>current</td> <tr id='current'><td>current</td>
<td>2017-08-14<br/>17:26</td> <td>2017-08-14<br/>17:28</td>
<td>7</td> <td>7</td>
<td><a href='../../changelog/openjpeg/current/log.html'>changelog</a></td> <td><a href='../../changelog/openjpeg/current/log.html'>changelog</a></td>
<td class='ok'><a href='../../objects_report/openjpeg/2.2.0/current/report.html'>100%</a></td> <td class='ok'><a href='../../objects_report/openjpeg/2.2.0/current/report.html'>100%</a></td>
@ -161,7 +161,7 @@
<td>N/A</td> <td>N/A</td>
<td>N/A</td> <td>N/A</td>
</tr> </tr>
</table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Mon Aug 14 15:56:46 2017.<br/> </table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Mon Aug 14 16:19:31 2017.<br/>
<br/> <br/>
<hr/> <hr/>
<div align='right'><a class='home' title="Andrey Ponomarenko's ABI laboratory" href='http://abi-laboratory.pro/'>abi-laboratory.pro</a></div> <div align='right'><a class='home' title="Andrey Ponomarenko's ABI laboratory" href='http://abi-laboratory.pro/'>abi-laboratory.pro</a></div>