# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 1K of event 'task-clock:ppp' # Event count (approx.): 193100000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ......................................................................................................................................................................... # 41.27% 797 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 10.36% 200 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 6.63% 128 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 5.39% 104 osh oils-for-unix [.] MarkSweepHeap::Sweep() 3.73% 72 osh oils-for-unix [.] match::OneToken(types_asdl::lex_mode_e, BigStr*, int) 1.71% 33 osh [kernel.kallsyms] [k] 0xffffffffb88ea979 1.45% 28 osh [kernel.kallsyms] [k] 0xffffffffb78b5b52 1.24% 24 osh [kernel.kallsyms] [k] 0xffffffffb8866297 1.09% 21 osh oils-for-unix [.] cmd_parse::CommandParser::_GetWord() 0.98% 19 osh oils-for-unix [.] lexer::Lexer::_Read(types_asdl::lex_mode_e) 0.88% 17 osh oils-for-unix [.] word_parse::WordParser::_GetToken() 0.73% 14 osh oils-for-unix [.] word_parse::WordParser::_ReadCompoundOrRedir3(types_asdl::lex_mode_e, int, bool) 0.62% 12 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.62% 12 osh oils-for-unix [.] alloc::Arena::NewToken(int, int, int, syntax_asdl::SourceLine*) 0.57% 11 osh oils-for-unix [.] alloc::Arena::AddLine(BigStr*, int) 0.57% 11 osh oils-for-unix [.] consts::GetKind(unsigned short) 0.57% 11 osh oils-for-unix [.] word_parse::WordParser::_ReadWord(types_asdl::lex_mode_e) 0.52% 10 osh libc.so.6 [.] malloc 0.52% 10 osh oils-for-unix [.] BigStr::slice(int, int) 0.52% 10 osh oils-for-unix [.] word_parse::WordParser::_MaybeReadWordPart(bool, types_asdl::lex_mode_e, List*) 0.41% 8 osh [kernel.kallsyms] [k] 0xffffffffb7bc9bed 0.41% 8 osh oils-for-unix [.] lexer::LineLexer::Read(types_asdl::lex_mode_e) 0.41% 8 osh oils-for-unix [.] word_::CommandId(syntax_asdl::word_t*) 0.36% 7 osh libc.so.6 [.] __getdelim 0.31% 6 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSimpleCommand() 0.31% 6 osh oils-for-unix [.] cmd_parse::CommandParser::_ScanSimpleCommand() 0.26% 5 osh libc.so.6 [.] 0x00000000000a48b0 0.26% 5 osh oils-for-unix [.] List::at(int) 0.26% 5 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCommand() 0.21% 4 osh [kernel.kallsyms] [k] 0xffffffffb7c69e7f 0.21% 4 osh oils-for-unix [.] List::at(int) 0.21% 4 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.21% 4 osh oils-for-unix [.] List::at(int) 0.21% 4 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseAndOr() 0.21% 4 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandTerm() 0.21% 4 osh oils-for-unix [.] lexer::Lexer::Read(types_asdl::lex_mode_e) 0.21% 4 osh oils-for-unix [.] word_::DetectShAssignment(syntax_asdl::CompoundWord*) 0.21% 4 osh oils-for-unix [.] word_::_EvalWordPart(syntax_asdl::word_part_t*) 0.21% 4 osh oils-for-unix [.] word_parse::WordParser::ReadWord(types_asdl::lex_mode_e) 0.16% 3 osh [kernel.kallsyms] [k] 0xffffffffb7bc58f7 0.16% 3 osh [kernel.kallsyms] [k] 0xffffffffb7bfd1cf 0.16% 3 osh [kernel.kallsyms] [k] 0xffffffffb7fafaf8 0.16% 3 osh libc.so.6 [.] cfree 0.16% 3 osh libc.so.6 [.] 0x00000000001a0865 0.16% 3 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.16% 3 osh oils-for-unix [.] List::at(int) 0.16% 3 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.16% 3 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.16% 3 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCompoundCommand() 0.16% 3 osh oils-for-unix [.] cmd_parse::CommandParser::ParseRedirect() 0.16% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_Eat(int, BigStr*) 0.16% 3 osh oils-for-unix [.] executor::PureExecutor::PopProcessSub(runtime_asdl::StatusArray*) 0.16% 3 osh oils-for-unix [.] mylib::CFile::readline() 0.16% 3 osh oils-for-unix [.] reader::_Reader::GetLine() 0.16% 3 osh oils-for-unix [.] syntax_asdl::CompoundWord* Alloc*>(List*&&) 0.16% 3 osh oils-for-unix [.] word_::StaticEval(syntax_asdl::word_t*) [clone .part.0] 0.16% 3 osh oils-for-unix [.] word_::TildeDetect2(syntax_asdl::CompoundWord*) 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb78b5dc9 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7b6e3c3 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7b7fb73 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7ba24ee 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7bc9b57 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7bd1c13 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7bd2693 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7be64f1 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7be6521 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7bfbb5a 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7c15ac9 0.10% 2 osh [kernel.kallsyms] [k] 0xffffffffb7c66fc1 0.10% 2 osh libc.so.6 [.] 0x00000000000a3e62 0.10% 2 osh libc.so.6 [.] 0x00000000001a08a6 0.10% 2 osh libc.so.6 [.] 0x00000000001a1004 0.10% 2 osh libc.so.6 [.] 0x00000000001a10ca 0.10% 2 osh oils-for-unix [.] BigStr::join(List*) 0.10% 2 osh oils-for-unix [.] List::append(syntax_asdl::CaseArm*) 0.10% 2 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.10% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParsePipeline() 0.10% 2 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseElifElse(syntax_asdl::command__If*) 0.10% 2 osh oils-for-unix [.] consts::RedirDefaultFd(unsigned short) 0.10% 2 osh oils-for-unix [.] reader::VirtualLineReader::GetLine() 0.10% 2 osh oils-for-unix [.] syntax_asdl::command__CommandList* Alloc*&>(List*&) 0.10% 2 osh oils-for-unix [.] word_parse::WordParser::_ReadDoubleQuoted(syntax_asdl::Token*) 0.10% 2 osh oils-for-unix [.] word_parse::WordParser::_ReadLikeDQ(syntax_asdl::Token*, bool, List*) 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb78b5ae5 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb78b5ba7 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb78b5bb7 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb78b5bbc 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb78b5be3 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7974107 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb79b1795 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb79d46e9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7b47bfc 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7b6e3e7 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7b7fbcb 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7b80a80 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7ba4867 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc4fb9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc4fba 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc7fa5 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc9ac3 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc9c22 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc9c56 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bc9c67 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bcd5e3 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd09dd 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0a11 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0add 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0aea 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0b4e 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0bdb 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0bf9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd0e62 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd1dfe 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd1e8d 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd1eb9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd1fcf 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd2540 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd2656 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd26b7 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd26c8 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bd274d 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be62a3 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be6422 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be6485 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be652c 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be8fd5 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be8fec 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be901c 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7be92d1 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf49a6 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf628f 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf70b4 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf7bd1 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf8641 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf866b 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf9541 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf9d84 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bf9df0 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bfaf3c 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bfb015 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bfbb43 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7bfd171 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c0a24d 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c0be72 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c0bf0a 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c3334d 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c333c2 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c33cd0 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c33d12 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c6459e 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c66f49 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c66fb2 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c66fb9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c6b69a 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c6b69e 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7c9cf28 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7ca0269 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7f63224 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7f6322a 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb7fb0011 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb8842862 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb8846391 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb884dbbc 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb884e08e 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb885363f 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb885a40a 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb8862337 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb8862880 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb8866299 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb88d6fc9 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb88e3b06 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb88e6cb0 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb88eaed0 0.05% 1 osh [kernel.kallsyms] [k] 0xffffffffb88eafe6 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b734 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b791 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c12d 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c14e 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000010e86 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x00000000000113d9 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x00000000000268de 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000028648 0.05% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000002aff1 0.05% 1 osh libc.so.6 [.] __errno_location 0.05% 1 osh libc.so.6 [.] fstatat64 0.05% 1 osh libc.so.6 [.] getenv 0.05% 1 osh libc.so.6 [.] isupper 0.05% 1 osh libc.so.6 [.] 0x00000000000a1846 0.05% 1 osh libc.so.6 [.] 0x00000000000a1898 0.05% 1 osh libc.so.6 [.] 0x00000000000a18d6 0.05% 1 osh libc.so.6 [.] 0x00000000000a26a4 0.05% 1 osh libc.so.6 [.] 0x00000000000a26b5 0.05% 1 osh libc.so.6 [.] 0x00000000000a26c8 0.05% 1 osh libc.so.6 [.] 0x00000000000a26f5 0.05% 1 osh libc.so.6 [.] 0x00000000000a2735 0.05% 1 osh libc.so.6 [.] 0x00000000000a2801 0.05% 1 osh libc.so.6 [.] 0x00000000000a2802 0.05% 1 osh libc.so.6 [.] 0x00000000000a324b 0.05% 1 osh libc.so.6 [.] 0x00000000000a3a0d 0.05% 1 osh libc.so.6 [.] 0x00000000000a3a22 0.05% 1 osh libc.so.6 [.] 0x00000000000a3d74 0.05% 1 osh libc.so.6 [.] 0x00000000000a3d77 0.05% 1 osh libc.so.6 [.] 0x00000000000a3e43 0.05% 1 osh libc.so.6 [.] 0x00000000000a3e9a 0.05% 1 osh libc.so.6 [.] 0x00000000000a3f1a 0.05% 1 osh libc.so.6 [.] 0x00000000000a3fd3 0.05% 1 osh libc.so.6 [.] 0x00000000000a4086 0.05% 1 osh libc.so.6 [.] 0x00000000000a4257 0.05% 1 osh libc.so.6 [.] 0x00000000000a43cd 0.05% 1 osh libc.so.6 [.] 0x00000000000a447c 0.05% 1 osh libc.so.6 [.] 0x00000000000a449d 0.05% 1 osh libc.so.6 [.] 0x00000000000a4602 0.05% 1 osh libc.so.6 [.] 0x00000000000a48b4 0.05% 1 osh libc.so.6 [.] 0x0000000000199364 0.05% 1 osh libc.so.6 [.] 0x0000000000199e68 0.05% 1 osh libc.so.6 [.] 0x00000000001a0840 0.05% 1 osh libc.so.6 [.] 0x00000000001a0855 0.05% 1 osh libc.so.6 [.] 0x00000000001a0878 0.05% 1 osh libc.so.6 [.] 0x00000000001a0882 0.05% 1 osh libc.so.6 [.] 0x00000000001a0899 0.05% 1 osh libc.so.6 [.] 0x00000000001a08ac 0.05% 1 osh libc.so.6 [.] 0x00000000001a08b6 0.05% 1 osh libc.so.6 [.] 0x00000000001a08c5 0.05% 1 osh libc.so.6 [.] 0x00000000001a0ae4 0.05% 1 osh libstdc++.so.6.0.30 [.] operator new(unsigned long) 0.05% 1 osh oils-for-unix [.] BigStr::at(int) 0.05% 1 osh oils-for-unix [.] BigStr::internal_find(BigStr*, int, int, int) 0.05% 1 osh oils-for-unix [.] Dict*>*>*, Dict*>*>::reserve(int) 0.05% 1 osh oils-for-unix [.] List* Alloc>() 0.05% 1 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.05% 1 osh oils-for-unix [.] List*>::at(int) 0.05% 1 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.05% 1 osh oils-for-unix [.] List* Alloc>() 0.05% 1 osh oils-for-unix [.] List* Alloc>() 0.05% 1 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.05% 1 osh oils-for-unix [.] List* Alloc>() 0.05% 1 osh oils-for-unix [.] List::pop() 0.05% 1 osh oils-for-unix [.] __errno_location@plt 0.05% 1 osh oils-for-unix [.] braces::BraceDetect(syntax_asdl::CompoundWord*) 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCaseArm() 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseIf() 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseLogicalLine() 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_AtSecondaryKeyword() 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_MaybeParseRedirectList(syntax_asdl::command_t*) 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandLine() 0.05% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseForEachLoop(syntax_asdl::Token*) 0.05% 1 osh oils-for-unix [.] cmd_parse::_AppendMoreEnv(List*, List*) 0.05% 1 osh oils-for-unix [.] cmd_parse::_MakeAssignPair(parse_lib::ParseContext*, syntax_asdl::ParsedAssignment*, alloc::Arena*) 0.05% 1 osh oils-for-unix [.] cmd_parse::_ReadHereLines(reader::_Reader*, syntax_asdl::Redir*, BigStr*) 0.05% 1 osh oils-for-unix [.] hash_key(int) 0.05% 1 osh oils-for-unix [.] location::LeftTokenForCompoundWord(syntax_asdl::CompoundWord*) 0.05% 1 osh oils-for-unix [.] main_loop::ParseWholeFile(cmd_parse::CommandParser*) 0.05% 1 osh oils-for-unix [.] memcpy@plt 0.05% 1 osh oils-for-unix [.] parse_lib::_BaseTrail::SetLatestWords(List*, List*) 0.05% 1 osh oils-for-unix [.] reader::FileLineReader::_GetLine() 0.05% 1 osh oils-for-unix [.] str_equals(BigStr*, BigStr*) 0.05% 1 osh oils-for-unix [.] syntax_asdl::List_of_command* Alloc*&>(List*&) 0.05% 1 osh oils-for-unix [.] syntax_asdl::command__Sentence* Alloc(syntax_asdl::command_t*&, syntax_asdl::Token*&) 0.05% 1 osh oils-for-unix [.] syntax_asdl::suffix_op__Unary* Alloc(syntax_asdl::Token*&, syntax_asdl::rhs_word_t*&) 0.05% 1 osh oils-for-unix [.] word_::BraceToken(syntax_asdl::word_t*) 0.05% 1 osh oils-for-unix [.] word_::TildeDetectAll(List*) 0.05% 1 osh oils-for-unix [.] word_::TildeDetectAssign(syntax_asdl::CompoundWord*) 0.05% 1 osh oils-for-unix [.] word_parse::WordParser::WordParser(parse_lib::ParseContext*, lexer::Lexer*, reader::_Reader*) 0.05% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadDoubleQuotedLeftParts() 0.05% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadSingleQuoted(syntax_asdl::Token*, types_asdl::lex_mode_e) 0.05% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadVarOpArg(types_asdl::lex_mode_e) # # (Cannot load tips.txt file, please install perf!) #