2026-02-19T01:50:29,941 Created temporary directory: /tmp/pip-ephem-wheel-cache-scaf3i3b 2026-02-19T01:50:29,943 Created temporary directory: /tmp/pip-build-tracker-y8sxfhb9 2026-02-19T01:50:29,943 Initialized build tracking at /tmp/pip-build-tracker-y8sxfhb9 2026-02-19T01:50:29,944 Created build tracker: /tmp/pip-build-tracker-y8sxfhb9 2026-02-19T01:50:29,944 Entered build tracker: /tmp/pip-build-tracker-y8sxfhb9 2026-02-19T01:50:29,945 Created temporary directory: /tmp/pip-wheel-rtt73zzc 2026-02-19T01:50:29,948 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2026-02-19T01:50:29,950 Created temporary directory: /tmp/pip-ephem-wheel-cache-k7lowsmm 2026-02-19T01:50:29,972 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-02-19T01:50:29,975 2 location(s) to search for versions of yutori-mcp: 2026-02-19T01:50:29,975 * https://pypi.org/simple/yutori-mcp/ 2026-02-19T01:50:29,975 * https://www.piwheels.org/simple/yutori-mcp/ 2026-02-19T01:50:29,976 Fetching project page and analyzing links: https://pypi.org/simple/yutori-mcp/ 2026-02-19T01:50:29,977 Getting page https://pypi.org/simple/yutori-mcp/ 2026-02-19T01:50:29,978 Found index url https://pypi.org/simple 2026-02-19T01:50:30,195 Fetched page https://pypi.org/simple/yutori-mcp/ as application/vnd.pypi.simple.v1+json 2026-02-19T01:50:30,201 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/a1/63/de7b9bcd8072c765e5c2500943ab76516d682fd15bed1ef60a49534e24f4/yutori_mcp-0.1.0-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,202 Found link https://files.pythonhosted.org/packages/9c/0d/9451908e9e48ec9836e00fd455ee738bcb23029d6f5ff85c13e77e6999c0/yutori_mcp-0.1.0.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.0 2026-02-19T01:50:30,203 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/89/c0/db61796d93fb851b1acdf8140855f483db54a4d7aca18902956484f705c1/yutori_mcp-0.1.1-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,204 Found link https://files.pythonhosted.org/packages/de/8c/37abe21acaab44c91a9c5faf12b688bd1c265e07b85fad2075a00a50604c/yutori_mcp-0.1.1.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.1 2026-02-19T01:50:30,205 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/eb/5b/0480f17d4c9822e2119110856948b4ad72230361dbfcc25f8450fef8bec5/yutori_mcp-0.1.2-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,206 Found link https://files.pythonhosted.org/packages/a1/5c/c713b22c11f03cb55b3f5271669b44e1ee446fa011bc011ae0fb76fe9695/yutori_mcp-0.1.2.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.2 2026-02-19T01:50:30,206 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/ff/4c/ee04e874b04e523709752f80decdf95bff96f6e94bb466cd65fb2ac0489f/yutori_mcp-0.1.3-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,208 Found link https://files.pythonhosted.org/packages/4a/a6/0740817c25bf98b306cc7306b4b09f0423ff22c0894311a15f31b4d98652/yutori_mcp-0.1.3.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.3 2026-02-19T01:50:30,208 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/0e/6b/64b563404a44d8bba67d50ada8eb30f0c5fb060bf428fe8406de30437691/yutori_mcp-0.1.4-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,209 Found link https://files.pythonhosted.org/packages/4b/f3/3d02d90b67d72980aefbcb3b502f2d47a269fb4e517e806fc327c729c0e5/yutori_mcp-0.1.4.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.4 2026-02-19T01:50:30,210 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/62/b1/0b0ee0bbe0831856be8bc83af42b0bd461ec58b8edd5f995f6a306499620/yutori_mcp-0.1.5-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,211 Found link https://files.pythonhosted.org/packages/5d/56/cd7e70996e4ab64b32d17126983d34a491c6435207eca435b4e614f9f181/yutori_mcp-0.1.5.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.5 2026-02-19T01:50:30,211 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/db/bb/54a19a372ec3f394ea88d0c3f5eed32e1c269fffc85c30e94f213a36d460/yutori_mcp-0.1.6-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,212 Found link https://files.pythonhosted.org/packages/cc/ed/cb83af7b5d628843282b0be18e9509889b1b97e3e131753be92e06921546/yutori_mcp-0.1.6.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.6 2026-02-19T01:50:30,213 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/68/16/64e32a5affe5f83ebbf1733a13ce80e4aeee2ec67447c38b8657531d27c7/yutori_mcp-0.1.7-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,214 Found link https://files.pythonhosted.org/packages/e0/d9/98911451ae336394aadd9498edb7e25eec2815e9fcc0f564917397c7a971/yutori_mcp-0.1.7.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.1.7 2026-02-19T01:50:30,214 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/82/30/922b95cfe6c168b68558dc5e84cb1d29478eeceeab57513b0810b51ffbd2/yutori_mcp-0.2.0-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,215 Found link https://files.pythonhosted.org/packages/75/19/322d31efd09ba12cf29a3a2cc76001c9167592424db511e84a4111895a99/yutori_mcp-0.2.0.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.0 2026-02-19T01:50:30,216 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/4a/4e/03e3ee6692e76f4c085ad28e1e52bc61e55c33341e790ab85f3b371a42eb/yutori_mcp-0.2.1-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,216 Found link https://files.pythonhosted.org/packages/2d/22/010368e8104b94c14df549d52f838b6084baf623db221e07b544ede25e82/yutori_mcp-0.2.1.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.1 2026-02-19T01:50:30,217 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/18/c3/98ff944bb3e5cc9c810ebeeae43f59f51168ab5e4383e7611d6835d14587/yutori_mcp-0.2.2-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,218 Found link https://files.pythonhosted.org/packages/95/e9/80815182364bf5f401f4b87bcdf4f0c5a6e4994564b082d4a9014cab8832/yutori_mcp-0.2.2.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.2 2026-02-19T01:50:30,219 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/66/fd/264d3fdf9c7f73ce04f2b464b0808a141e79a83915f94f3c90a98e4c50a9/yutori_mcp-0.2.3-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,219 Found link https://files.pythonhosted.org/packages/fd/a0/8f266d36e8e5951637b494eaea4c57b5573f46ef7bf07863bbb088297a39/yutori_mcp-0.2.3.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.3 2026-02-19T01:50:30,220 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/7a/7b/528230fcac2510dae838e33ea1b91ff3441a1abb07c92d12b919191b7e21/yutori_mcp-0.2.4-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,221 Found link https://files.pythonhosted.org/packages/88/c1/ba3d0f9a2b4edfb8c50b043586a8463389423e50d3b87703ff069311bdd8/yutori_mcp-0.2.4.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.4 2026-02-19T01:50:30,222 Skipping link: No binaries permitted for yutori-mcp: https://files.pythonhosted.org/packages/b3/81/f186df54a299de2724ca7250d9a70c256c6e9057e6c3bed615a2f62dd64b/yutori_mcp-0.2.5-py3-none-any.whl (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,223 Found link https://files.pythonhosted.org/packages/09/4d/f343df11c386a9ffb7bc70189d7252798415c87c615fe5e711d19a20292c/yutori_mcp-0.2.5.tar.gz (from https://pypi.org/simple/yutori-mcp/) (requires-python:>=3.10), version: 0.2.5 2026-02-19T01:50:30,224 Fetching project page and analyzing links: https://www.piwheels.org/simple/yutori-mcp/ 2026-02-19T01:50:30,224 Getting page https://www.piwheels.org/simple/yutori-mcp/ 2026-02-19T01:50:30,225 Found index url https://www.piwheels.org/simple 2026-02-19T01:50:30,379 Fetched page https://www.piwheels.org/simple/yutori-mcp/ as text/html 2026-02-19T01:50:30,384 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.2.4-py3-none-any.whl#sha256=7450989bd40066c37965a36610d8b03c39ef1767599d8b0a5ac7703d821c852b (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,385 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.2.3-py3-none-any.whl#sha256=e9286fad0f6af47a1aa33553ae1f6945137875c7e478f8adfd95c3b101ea2496 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,385 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.2.2-py3-none-any.whl#sha256=e463acbfa83a95b7f5330e4c753c444af46ddcfe210ab20335d6d4df11a45be4 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,386 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.2.1-py3-none-any.whl#sha256=65f147b526d5eeb55d8310f6f8883d0e9115b46af65c21a69e5e45235538ae0e (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,387 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.2.0-py3-none-any.whl#sha256=21a5657512e072abd532dcdce77cc8c6cf8f44393d77454b3a1a28a0c90c8f69 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,387 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.7-py3-none-any.whl#sha256=460e0191f264c1ad0e0dc8b936e742b45948ab4342a4f91f90279bf32f60479c (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,388 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.6-py3-none-any.whl#sha256=a7003e8d265ec4abecc807e611f581c3da27d6b7ffb5b2b9d94d879a802d2b30 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,389 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.5-py3-none-any.whl#sha256=6d57b282635bb4264ca9e107a02c885d2eae9d927ce04d692547b74066d5cbff (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,389 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.4-py3-none-any.whl#sha256=b22838ad810d5b77e1f25625630fdb582c9c592ceaba426bafd6ddaf03a216b3 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,390 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.3-py3-none-any.whl#sha256=37be5af3f6f50cd5274746ba8fc48be6577c8a6b1b31211e26322c196b072cb6 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,391 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.2-py3-none-any.whl#sha256=9d70b31eb37c330a2f9160d8d97cf50ddfbcefb8c5ff2a7c03df915a857c9ec7 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,391 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.1-py3-none-any.whl#sha256=d0ece64f3545e30ffcacbcc40ff95bfc6450747e154496fce273e3e8cb0289e1 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,391 Skipping link: No binaries permitted for yutori-mcp: https://www.piwheels.org/simple/yutori-mcp/yutori_mcp-0.1.0-py3-none-any.whl#sha256=89f222d343f3e71d0ed63d0a6462e71f46b20e6fbcc9bbe7ca7f8882a2ae4971 (from https://www.piwheels.org/simple/yutori-mcp/) (requires-python:>=3.10) 2026-02-19T01:50:30,392 Skipping link: not a file: https://www.piwheels.org/simple/yutori-mcp/ 2026-02-19T01:50:30,392 Skipping link: not a file: https://pypi.org/simple/yutori-mcp/ 2026-02-19T01:50:30,414 Given no hashes to check 1 links for project 'yutori-mcp': discarding no candidates 2026-02-19T01:50:30,434 Collecting yutori-mcp==0.2.5 2026-02-19T01:50:30,436 Created temporary directory: /tmp/pip-unpack-rdgnw4_0 2026-02-19T01:50:30,649 Downloading yutori_mcp-0.2.5.tar.gz (611 kB) 2026-02-19T01:50:30,851 Added yutori-mcp==0.2.5 from https://files.pythonhosted.org/packages/09/4d/f343df11c386a9ffb7bc70189d7252798415c87c615fe5e711d19a20292c/yutori_mcp-0.2.5.tar.gz to build tracker '/tmp/pip-build-tracker-y8sxfhb9' 2026-02-19T01:50:30,855 Created temporary directory: /tmp/pip-build-env-e4pk7g9l 2026-02-19T01:50:30,860 Installing build dependencies: started 2026-02-19T01:50:30,861 Running command pip subprocess to install build dependencies 2026-02-19T01:50:30,892 Error processing line 1 of /home/piwheels/.local/lib/python3.11/site-packages/cntimer.pth: 2026-02-19T01:50:30,931 Traceback (most recent call last): 2026-02-19T01:50:30,932 File "", line 192, in addpackage 2026-02-19T01:50:30,932 File "", line 1, in 2026-02-19T01:50:30,933 ModuleNotFoundError: No module named 'cntimer' 2026-02-19T01:50:30,934 Remainder of file ignored 2026-02-19T01:50:31,995 Using pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11) 2026-02-19T01:50:32,576 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2026-02-19T01:50:32,600 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-02-19T01:50:33,122 Collecting hatchling 2026-02-19T01:50:33,139 Using cached https://www.piwheels.org/simple/hatchling/hatchling-1.28.0-py3-none-any.whl (76 kB) 2026-02-19T01:50:33,328 Collecting packaging>=24.2 2026-02-19T01:50:33,343 Using cached https://www.piwheels.org/simple/packaging/packaging-26.0-py3-none-any.whl (74 kB) 2026-02-19T01:50:33,461 Collecting pathspec>=0.10.1 2026-02-19T01:50:33,475 Using cached https://www.piwheels.org/simple/pathspec/pathspec-1.0.4-py3-none-any.whl (55 kB) 2026-02-19T01:50:33,594 Collecting pluggy>=1.0.0 2026-02-19T01:50:33,608 Using cached https://www.piwheels.org/simple/pluggy/pluggy-1.6.0-py3-none-any.whl (20 kB) 2026-02-19T01:50:33,850 Collecting trove-classifiers 2026-02-19T01:50:33,863 Using cached https://www.piwheels.org/simple/trove-classifiers/trove_classifiers-2026.1.14.14-py3-none-any.whl (14 kB) 2026-02-19T01:50:36,576 Installing collected packages: trove-classifiers, pluggy, pathspec, packaging, hatchling 2026-02-19T01:50:36,617 Creating /tmp/pip-build-env-e4pk7g9l/overlay/local/bin 2026-02-19T01:50:36,619 changing mode of /tmp/pip-build-env-e4pk7g9l/overlay/local/bin/trove-classifiers to 755 2026-02-19T01:50:37,635 changing mode of /tmp/pip-build-env-e4pk7g9l/overlay/local/bin/hatchling to 755 2026-02-19T01:50:37,670 Successfully installed hatchling-1.28.0 packaging-26.0 pathspec-1.0.4 pluggy-1.6.0 trove-classifiers-2026.1.14.14 2026-02-19T01:50:37,918 Installing build dependencies: finished with status 'done' 2026-02-19T01:50:37,924 Getting requirements to build wheel: started 2026-02-19T01:50:37,925 Running command Getting requirements to build wheel 2026-02-19T01:50:38,271 Getting requirements to build wheel: finished with status 'done' 2026-02-19T01:50:38,274 Created temporary directory: /tmp/pip-modern-metadata-35dpe4o8 2026-02-19T01:50:38,276 Preparing metadata (pyproject.toml): started 2026-02-19T01:50:38,277 Running command Preparing metadata (pyproject.toml) 2026-02-19T01:50:38,872 Preparing metadata (pyproject.toml): finished with status 'done' 2026-02-19T01:50:38,877 Source in /tmp/pip-wheel-rtt73zzc/yutori-mcp_d795e87c3fd943079b4875c2efc5b67b has version 0.2.5, which satisfies requirement yutori-mcp==0.2.5 from https://files.pythonhosted.org/packages/09/4d/f343df11c386a9ffb7bc70189d7252798415c87c615fe5e711d19a20292c/yutori_mcp-0.2.5.tar.gz 2026-02-19T01:50:38,878 Removed yutori-mcp==0.2.5 from https://files.pythonhosted.org/packages/09/4d/f343df11c386a9ffb7bc70189d7252798415c87c615fe5e711d19a20292c/yutori_mcp-0.2.5.tar.gz from build tracker '/tmp/pip-build-tracker-y8sxfhb9' 2026-02-19T01:50:38,884 Created temporary directory: /tmp/pip-unpack-viqqjkrn 2026-02-19T01:50:38,885 Building wheels for collected packages: yutori-mcp 2026-02-19T01:50:38,890 Created temporary directory: /tmp/pip-wheel-55ctktnq 2026-02-19T01:50:38,890 Destination directory: /tmp/pip-wheel-55ctktnq 2026-02-19T01:50:38,893 Building wheel for yutori-mcp (pyproject.toml): started 2026-02-19T01:50:38,894 Running command Building wheel for yutori-mcp (pyproject.toml) 2026-02-19T01:50:39,024 Building wheel for yutori-mcp (pyproject.toml): finished with status 'done' 2026-02-19T01:50:39,028 Created wheel for yutori-mcp: filename=yutori_mcp-0.2.5-py3-none-any.whl size=21810 sha256=86b4b11b1ad4c7296ea2f88b2545689673e799de762270e0623496ce20e4a25b 2026-02-19T01:50:39,030 Stored in directory: /tmp/pip-ephem-wheel-cache-k7lowsmm/wheels/6f/d1/54/bb12cd9ac726d1bbe912dac2bd8202fc7bccfbe2a4d960e8df 2026-02-19T01:50:39,042 Successfully built yutori-mcp 2026-02-19T01:50:39,045 Removed build tracker: '/tmp/pip-build-tracker-y8sxfhb9'