2024/07/09-05:39:51.478101 139981169890880 DEBG dcompact_worker.cpp:2211: /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00: fork to child time = 0.007462 sec 2024/07/09-05:39:51.478566 139981169890880 DEBG dcompact_worker.cpp:1011: Beg SerDeRead: /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00 2024/07/09-05:39:51.482073 139981169890880 DEBG dcompact_worker.cpp:1031: End SerDeRead: /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00 2024/07/09-05:39:51.482904 139981169890880 TRAC dcompact_worker.cpp:1081: INFO_LOG_LEVEL: rpc = INFO_LEVEL, env_var = undefined 2024/07/09-05:39:51.483096 139981169890880 [WARN] [column_family.cc:386] multiple cf_paths/db_paths and level_compaction_dynamic_level_bytes can't be used together 2024/07/09-05:39:51.515476 139981169890880 [version_set.cc:6139] Recovering from manifest file: /worker/dcompact-log/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/2024-07-08T14.41.36/.rocksdb/job-32692/att-00/MANIFEST-12625661 2024/07/09-05:39:51.546835 139981169890880 [version_set.cc:6182] Recovered from manifest file:/worker/dcompact-log/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/2024-07-08T14.41.36/.rocksdb/job-32692/att-00/MANIFEST-12625661 succeeded,manifest_file_number is 12625661, next_file_number is 12663015, last_sequence is 148007820245, log_number is 0,prev_log_number is 0,max_column_family is 0,min_log_number_to_keep is 12662835 2024/07/09-05:39:51.546848 139981169890880 [version_set.cc:6197] Column family [default] (ID 0), log number is 0 2024/07/09-05:39:51.546911 139981169890880 [version_set.cc:5652] Creating manifest 12663015 2024/07/09-05:39:51.575998 139981169890880 DEBG dcompact_worker.cpp:1215: /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00: bottommost_level: fake = 1, rpc = 0 2024/07/09-05:39:51.589063 139981169890880 [compaction_job.cc:2433] [default] [JOB 32692] Compacting 1@2 + 2@3 files to L3, score 1.08, subcompactions 1 : 1 2024/07/09-05:39:51.589079 139981169890880 [compaction_job.cc:2441] [default]: Compaction start summary: Base version 17072 Base level 2, inputs: [12662898(19MB)], [12662200(16MB) 12661796(35MB)] 2024/07/09-05:39:51.594735 139981169890880 [top_zip_table.cc:59] core git_version_hash_info_is:commit 7517bad5c1a147474c3830831b9a22c996321ae8 Author: leipeng Date: 2024-01-08 19:18:17 +0800 vfork_cmd: call close before wait_finish g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. INCS = -Isrc -I3rdparty/re2 -I3rdparty/zstd -Iboost-include CXXFLAGS = -D TOPLING_IO_WITH_URING=1 -fPIC -time -Wno-class-memaccess -fdiagnostics-color -Wformat=2 -Wcomment -Wall -Wextra -Wno-unused-parameter -Wno-alloc-size-larger-than -mcx16 -Wno-deprecated-declarations -Wstrict-aliasing=3 -DCLIENT_LICENSE_ID="public" -DNO_THREADS -ftls-model=initial-exec -DDIVSUFSORT_API= -fno-stack-protector RLS_FLAGS = -O3 -DNDEBUG -g3 WITH_BMI2 = 1 compile_cpu_flag: -march=haswell -mbmi -mbmi2 2024/07/09-05:39:51.594769 139981169890880 [top_zip_table.cc:60] fsa git_version_hash_info_is:commit 7517bad5c1a147474c3830831b9a22c996321ae8 Author: leipeng Date: 2024-01-08 19:18:17 +0800 vfork_cmd: call close before wait_finish g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. INCS = -Isrc -I3rdparty/re2 -I3rdparty/zstd -Iboost-include CXXFLAGS = -D TOPLING_IO_WITH_URING=1 -fPIC -time -Wno-class-memaccess -fdiagnostics-color -Wformat=2 -Wcomment -Wall -Wextra -Wno-unused-parameter -Wno-alloc-size-larger-than -mcx16 -Wno-deprecated-declarations -Wstrict-aliasing=3 -DCLIENT_LICENSE_ID="public" -DNO_THREADS -ftls-model=initial-exec -DDIVSUFSORT_API= -fno-stack-protector RLS_FLAGS = -O3 -DNDEBUG -g3 WITH_BMI2 = 1 compile_cpu_flag: -march=haswell -mbmi -mbmi2 2024/07/09-05:39:51.594788 139981169890880 [top_zip_table.cc:61] zbs git_version_hash_info_is:commit 7517bad5c1a147474c3830831b9a22c996321ae8 Author: leipeng Date: 2024-01-08 19:18:17 +0800 vfork_cmd: call close before wait_finish g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. INCS = -Isrc -I3rdparty/re2 -I3rdparty/zstd -Iboost-include CXXFLAGS = -D TOPLING_IO_WITH_URING=1 -fPIC -time -Wno-class-memaccess -fdiagnostics-color -Wformat=2 -Wcomment -Wall -Wextra -Wno-unused-parameter -Wno-alloc-size-larger-than -mcx16 -Wno-deprecated-declarations -Wstrict-aliasing=3 -DCLIENT_LICENSE_ID="public" -DNO_THREADS -ftls-model=initial-exec -DDIVSUFSORT_API= -fno-stack-protector RLS_FLAGS = -O3 -DNDEBUG -g3 WITH_BMI2 = 1 compile_cpu_flag: -march=haswell -mbmi -mbmi2 2024/07/09-05:39:51.594797 139981169890880 [top_zip_table.cc:62] topling-zip_table_reader: git_version_hash_info_is: commit 7f80399bfbd2071b6e0f5683e8ab7225b8e6e394 Author: leipeng Date: 2024-01-19 14:52:30 +0800 Change ToplingZipTableOptions::sampleRatio to vector g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. cpu_flag: -march=native -mbmi -mbmi2 2024/07/09-05:39:51.594805 139981169890880 [top_zip_table.cc:64] topling-rocks git_version_hash_info_is: commit 1240987ca13d0fe562c9b9c037155079f0877840 Author: leipeng Date: 2024-01-19 15:07:04 +0800 Change ToplingZipTableOptions::sampleRatio to vector g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. cpu_flag: -march=native -mbmi -mbmi2 2024/07/09-05:39:51.866731 139981169890880 [top_zip_table_builder.cc:934] ToplingZipTableBuilder(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst) /dev/shm/ToplingTemp/Topling-28762-tr7XG2 2024/07/09-05:39:52.723717 139981169890880 [top_zip_table_builder.cc:1344] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst): first pass time = 0.86's, 156.627'MB/sec 2024/07/09-05:39:54.843707 139981169890880 [top_zip_table_builder.cc:2764] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst): old prealloc_size = 84045520, real_size = 35307568 2024/07/09-05:39:54.844299 139981169890880 [top_zip_table_builder.cc:1765] BuildReorderMap(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst): index type = NestLoudsTrieDAWG_Mixed_XL_256_32_FL, store type = DictZipBlobStore usrkeys = 928678 prefix = 4 raw-key = 0.0149 GB zip-key = 0.0018 GB avg-key = 16.00 avg-zkey = 1.90 raw-val = 0.1082 GB zip-val = 0.0333 GB avg-val = 116.53 avg-zval = 35.87 2024/07/09-05:39:54.845186 139981169890880 [top_zip_table_builder.cc:1295] /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst: sumWaitingMem = 0.002 GB, sumWorkingMem = 0.000 GB, reorder workingMem = 0.0023 GB, waited 0.000 sec, Key+Value = 0.134 GB 2024/07/09-05:39:55.843258 139981169890880 [top_zip_table_builder.cc:3092] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663016.sst): second pass time = 2.12's, 51.066'MB/sec, value only(80.6% of KV) wait indexing time = 0.00's, remap KeyValue time = 1.00's, 39.430'MB/sec (all stages of remap) Get OrderMap time = 0.00's, 3111.635'MB/sec (index lex order gen) rebuild zvType time = 0.74's, 0.312'MB/sec write SST data time = 0.25's, 154.838'MB/sec dict compress time = 4356233619.02's, 0.000'MB/sec z-dict build time = 0.00's, sample length = 1.080'MB, throughput = 35317.156'MB/sec zip my value time = 2.12's, unzip length = 0.108'GB zip my value throughput = 51.066'MB/sec zip pipeline throughput = 131.988'MB/sec entries = 928678 avg-key = 28.00 avg-zkey = 1.90 avg-val = 116.53 avg-zval = 35.87 usrkeys = 928678 avg-key = 20.00 avg-zkey = 1.90 avg-val = 123.53 avg-zval = 35.87 TagRS{ kinds = RS_Key0_Tag1 bytes = 0 } TagArray{ size = 928678 bytes = 3250384 } seq expand size = 6500746 multi value expand size = 0 cnt WriteAppend = 13 UnZipSize{ index = 0.0186 GB value = 0.1082 GB dict = 1.08 MB all = 0.1342 GB } __ZipSize{ index = 0.0018 GB value = 0.0333 GB dict = 1.08 MB all = 0.0394 GB } UnZip/Zip{ index = 10.5142 value = 3.2488 dict = 1.00 all = 3.4055 } Zip/UnZip{ index = 0.0951 value = 0.3078 dict = 1.00 all = 0.2936 } ---------------------------- total value len = 0.114715 GB avg = 0.124 KB (by entry num) total key len = 0.026003 GB avg = 0.028 KB total ukey len = 0.018574 GB avg = 0.020 KB total ukey num = 0.000928678 Billion total entry num = 0.000928678 Billion write speed all = 0.023718947 MB/sec (with seq num) write speed all = 0.022466673 MB/sec (without seq num) 2024/07/09-05:39:55.893711 139981169890880 [compaction_job.cc:1944] [default] [JOB 32692] Generated table #12663016: 928678 keys, 39411593 bytes, temperature: kWarm 2024/07/09-05:39:55.893824 139981169890880 EVENT_LOG_v1 {"time_micros": 1720474795893759, "cf_name": "default", "job": 32692, "event": "table_file_creation", "file_number": 12663016, "file_size": 39411593, "file_checksum": "", "file_checksum_func_name": "Unknown", "smallest_seqno": 147815407560, "largest_seqno": 148005729346, "table_properties": {"data_size": 33308704, "index_size": 1766528, "index_partitions": 0, "top_level_index_size": 0, "index_key_is_user_key": 0, "index_value_is_delta_encoded": 0, "filter_size": 0, "raw_key_size": 26002984, "raw_average_key_size": 28, "raw_value_size": 108214748, "raw_average_value_size": 116, "num_data_blocks": 1, "num_entries": 928678, "num_filter_entries": 0, "num_deletions": 0, "num_merge_operands": 0, "num_range_deletions": 0, "format_version": 0, "fixed_key_len": 28, "fixed_value_len": 18446744073709551615, "filter_policy": "", "column_family_name": "default", "column_family_id": 0, "comparator": "leveldb.BytewiseComparator", "merge_operator": "nullptr", "prefix_extractor_name": "nullptr", "property_collectors": "[Rdb_tbl_prop_coll_factory]", "compression": "FlatZip", "compression_options": "RS_Key0_Tag1-NestLoudsTrieDAWG_Mixed_XL_256_32_FL-DictZipBlobStore", "creation_time": 1720474791, "oldest_key_time": 0, "file_creation_time": 1720474791, "slow_compression_estimated_data_size": 0, "fast_compression_estimated_data_size": 0, "db_id": "a007a635-5c0a-4b4a-be96-b9c695cb016b", "db_session_id": "465QC0QPK7Q93426EREI", "orig_file_number": 12663016, "seqno_to_time_mapping": "N/A", "__indexstats__": "[...1 records...]"}} 2024/07/09-05:39:55.950273 139981169890880 [top_zip_table_builder.cc:934] ToplingZipTableBuilder(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst) /dev/shm/ToplingTemp/Topling-28762-TU0Kf1 2024/07/09-05:39:56.986070 139981169890880 [top_zip_table_builder.cc:1344] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst): first pass time = 1.04's, 111.433'MB/sec 2024/07/09-05:39:58.402332 139981169890880 [top_zip_table_builder.cc:2764] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst): old prealloc_size = 84045520, real_size = 28978832 2024/07/09-05:39:58.402781 139981169890880 [top_zip_table_builder.cc:1765] BuildReorderMap(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst): index type = NestLoudsTrieDAWG_Mixed_XL_256_32_FL, store type = DictZipBlobStore usrkeys = 800380 prefix = 4 raw-key = 0.0128 GB zip-key = 0.0015 GB avg-key = 16.00 avg-zkey = 1.90 raw-val = 0.0930 GB zip-val = 0.0273 GB avg-val = 116.20 avg-zval = 34.05 2024/07/09-05:39:58.403488 139981169890880 [top_zip_table_builder.cc:1295] /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst: sumWaitingMem = 0.002 GB, sumWorkingMem = 0.000 GB, reorder workingMem = 0.0020 GB, waited 0.000 sec, Key+Value = 0.115 GB 2024/07/09-05:39:59.151944 139981169890880 [top_zip_table_builder.cc:3092] ToplingZipTableBuilder::Finish(/storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00/12663017.sst): second pass time = 1.42's, 65.704'MB/sec, value only(80.6% of KV) wait indexing time = 0.00's, remap KeyValue time = 0.75's, 43.509'MB/sec (all stages of remap) Get OrderMap time = 0.00's, 3547.866'MB/sec (index lex order gen) rebuild zvType time = 0.64's, 0.313'MB/sec write SST data time = 0.11's, 295.292'MB/sec dict compress time = 4356233619.02's, 0.000'MB/sec z-dict build time = 0.00's, sample length = 0.928'MB, throughput = 32197.260'MB/sec zip my value time = 1.42's, unzip length = 0.093'GB zip my value throughput = 65.704'MB/sec zip pipeline throughput = 107.954'MB/sec entries = 800380 avg-key = 28.00 avg-zkey = 1.90 avg-val = 116.20 avg-zval = 34.05 usrkeys = 800380 avg-key = 20.00 avg-zkey = 1.90 avg-val = 123.20 avg-zval = 34.05 TagRS{ kinds = RS_Key0_Tag1 bytes = 0 } TagArray{ size = 800380 bytes = 2901392 } seq expand size = 5602660 multi value expand size = 0 cnt WriteAppend = 13 UnZipSize{ index = 0.0160 GB value = 0.0930 GB dict = 0.93 MB all = 0.1154 GB } __ZipSize{ index = 0.0015 GB value = 0.0273 GB dict = 0.93 MB all = 0.0326 GB } UnZip/Zip{ index = 10.5145 value = 3.4122 dict = 1.00 all = 3.5388 } Zip/UnZip{ index = 0.0951 value = 0.2931 dict = 1.00 all = 0.2826 } ---------------------------- total value len = 0.213322 GB avg = 0.123 KB (by entry num) total key len = 0.048414 GB avg = 0.028 KB total ukey len = 0.034581 GB avg = 0.020 KB total ukey num = 0.001729058 Billion total entry num = 0.001729058 Billion write speed all = 0.044092477 MB/sec (with seq num) write speed all = 0.041762231 MB/sec (without seq num) 2024/07/09-05:39:59.191938 139981169890880 [compaction_job.cc:1944] [default] [JOB 32692] Generated table #12663017: 800380 keys, 32613737 bytes, temperature: kWarm 2024/07/09-05:39:59.192021 139981169890880 EVENT_LOG_v1 {"time_micros": 1720474799191988, "cf_name": "default", "job": 32692, "event": "table_file_creation", "file_number": 12663017, "file_size": 32613737, "file_checksum": "", "file_checksum_func_name": "Unknown", "smallest_seqno": 147576087509, "largest_seqno": 148005728570, "table_properties": {"data_size": 27256128, "index_size": 1522432, "index_partitions": 0, "top_level_index_size": 0, "index_key_is_user_key": 0, "index_value_is_delta_encoded": 0, "filter_size": 0, "raw_key_size": 22410640, "raw_average_key_size": 28, "raw_value_size": 93003552, "raw_average_value_size": 116, "num_data_blocks": 1, "num_entries": 800380, "num_filter_entries": 0, "num_deletions": 0, "num_merge_operands": 0, "num_range_deletions": 0, "format_version": 0, "fixed_key_len": 28, "fixed_value_len": 18446744073709551615, "filter_policy": "", "column_family_name": "default", "column_family_id": 0, "comparator": "leveldb.BytewiseComparator", "merge_operator": "nullptr", "prefix_extractor_name": "nullptr", "property_collectors": "[Rdb_tbl_prop_coll_factory]", "compression": "FlatZip", "compression_options": "RS_Key0_Tag1-NestLoudsTrieDAWG_Mixed_XL_256_32_FL-DictZipBlobStore", "creation_time": 1720474795, "oldest_key_time": 0, "file_creation_time": 1720474795, "slow_compression_estimated_data_size": 0, "fast_compression_estimated_data_size": 0, "db_id": "a007a635-5c0a-4b4a-be96-b9c695cb016b", "db_session_id": "465QC0QPK7Q93426EREI", "orig_file_number": 12663017, "seqno_to_time_mapping": "N/A", "__indexstats__": "[...1 records...]"}} 2024/07/09-05:39:59.210920 139981169890880 [compaction_job.cc:699] job-32692: subcompact[0], size: 0.072025 G, files: /storage/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/mytopling/.rocksdb/job-32692/att-00 [12663016,12663017] 2024/07/09-05:39:59.231930 139981169890880 (Original Log Time 2024/07/09-05:39:51.589163) EVENT_LOG_v1 {"time_micros": 1720474791589098, "job": 32692, "event": "compaction_started", "compaction_reason": "LevelMaxLevelSize", "files_L2": [12662898], "files_L3": [12662200, 12661796], "score": 1.07725, "input_data_size": 76405019, "oldest_snapshot_seqno": 148007819530} 2024/07/09-05:39:59.231934 139981169890880 (Original Log Time 2024/07/09-05:39:59.228763) [compaction_job.cc:2018] [default] [JOB 32692] Compacted 1@2 + 2@3 files to L3 => 72025330 bytes 2024/07/09-05:39:59.231935 139981169890880 (Original Log Time 2024/07/09-05:39:59.231852) [compaction_job.cc:1220] [default] compacted to: files[0 0 0 2 0 0 0] max score 0.00, MB/sec: 10.0 rd, 9.4 wr, level 3, files in(1, 2) out(2 +0 blob) MB in(20.0, 52.9 +0.0 blob) out(68.7 +0.0 blob), read-write-amplify(7.1) write-amplify(3.4) OK, records in: 1795447, records dropped: 66389 output_compression: Snappy 2024/07/09-05:39:59.231941 139981169890880 (Original Log Time 2024/07/09-05:39:59.231906) EVENT_LOG_v1 {"time_micros": 1720474799231879, "cf": "default", "job": 32692, "event": "compaction_finished", "compaction_time_micros": 7621767, "compaction_time_cpu_micros": 3209156, "output_level": 3, "num_output_files": 2, "total_output_size": 72025330, "num_input_records": 1795447, "num_output_records": 1729058, "num_subcompactions": 1, "output_compression": "Snappy", "num_single_delete_mismatches": 0, "num_single_delete_fallthrough": 0, "file_write_nanos": 59264476, "file_range_sync_nanos": 0, "file_fsync_nanos": 1836, "file_prepare_write_nanos": 5176, "lsm_state": [0, 0, 0, 2, 0, 0, 0]} 2024/07/09-05:39:59.371731 139981169890880 DEBG dcompact_worker.cpp:240: HttpPost: 200 OK: url = http://nlb-7zny4kaa1poal01o64.cn-shenzhen.nlb.aliyuncs.com:8443, body = {"instanceId":"nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137","labourId":"","dbId":"a007a635-5c0a-4b4a-be96-b9c695cb016b","dbStarts":1720420896,"starts":1720474791,"executesMs":7745,"compactionJobId":32692,"attempt":0,"compactionInputRawBytes":259059162,"compactionInputZipBytes":76405019,"compactionOutputRawBytes":0,"compactionOutputZipBytes":72025330,"headers":{"Accept":"*/*","Connection":"close","Host":"aliyun-topling-saas.topling.cn:18443","RemoteIp":"120.24.192.169","X-Forwarded-For":"120.24.192.169","region":"cn-shenzhen","token":"e6474c481bd4415abc537135cc03626b","instance-token":"e6474c481bd4415abc537135cc03626b","provider":"aliyun","CloudMarketInstanceId":"si-59c0ae5c955845588903","MeteringAssit":"","Transfer-Encoding":"chunked","traceparent":"00-1b6176d6387fddd8b621113949186b03-0101d9b5755d66ba-00"}}, response = 2024/07/09-05:39:59.371808 139981169890880 INFO dcompact_worker.cpp:1456: finish /worker/dcompact-log/nfs/i-wz9deglxdazgiryp6ltb_10.57.5.137/2024-07-08T14.41.36/.rocksdb/job-32692/att-00: olev 3, work 7.746 s, result 4.821 ms, install 3.195 ms, input{raw 247.058 MiB zip 72.866 MiB}