From 67e30fa91e12b452c1a18f6c5eb8a33cdb9ec625 Mon Sep 17 00:00:00 2001 From: jaseg Date: Sat, 30 Sep 2023 18:25:10 +0200 Subject: 8b/10b tx/rx works --- center_fw/match_test.ipynb | 105 ++++++++++++++++++++++++++++++++++++++++ center_fw/src/main.c | 12 ++--- common/8b10b_test_vector_gen.py | 3 ++ driver_fw/src/main.c | 16 ++++-- 4 files changed, 126 insertions(+), 10 deletions(-) diff --git a/center_fw/match_test.ipynb b/center_fw/match_test.ipynb index 308c5c3..018afce 100644 --- a/center_fw/match_test.ipynb +++ b/center_fw/match_test.ipynb @@ -693,6 +693,111 @@ " 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0)" ] }, + { + "cell_type": "code", + "execution_count": 40, + "id": "c1e0d614-32ac-4f26-8460-fbf518fd1c83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;5m00000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;4m1111\u001b[38;5;3m000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;4m0000\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;5m11111\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;4m1111\u001b[38;5;4m0000\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;3m000\u001b[38;5;2m11\u001b[38;5;2m00\u001b[38;5;3m111\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;2m11\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;1m0\u001b[38;5;1m1\u001b[38;5;2m00\u001b[38;5;1m1" + ] + } + ], + "source": [ + "print_rl(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, \n", + " 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, \n", + " 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, \n", + " 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, \n", + " 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, \n", + " 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, \n", + " 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, \n", + " 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, \n", + " 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, \n", + " 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, \n", + " 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, \n", + " 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, \n", + " 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, \n", + " 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, \n", + " 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, \n", + " 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, \n", + " 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, \n", + " 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, \n", + " 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, \n", + " 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, \n", + " 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, \n", + " 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, \n", + " 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, \n", + " 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, \n", + " 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, \n", + " 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, \n", + " 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, \n", + " 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, \n", + " 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, \n", + " 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, \n", + " 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, \n", + " 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, \n", + " 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, \n", + " 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, \n", + " 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, \n", + " 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, \n", + " 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, \n", + " 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, \n", + " 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, \n", + " 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, \n", + " 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, \n", + " 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, \n", + " 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, \n", + " 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, \n", + " 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, \n", + " 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, \n", + " 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, \n", + " 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, \n", + " 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, \n", + " 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, \n", + " 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, \n", + " 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, \n", + " 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, \n", + " 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, \n", + " 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, \n", + " 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, \n", + " 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, \n", + " 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, \n", + " 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, \n", + " 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, \n", + " 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, \n", + " 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, \n", + " 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, \n", + " 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, \n", + " 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, \n", + " 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, \n", + " 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, \n", + " 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, \n", + " 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, \n", + " 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, \n", + " 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, \n", + " 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, \n", + " 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, \n", + " 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, \n", + " 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, \n", + " 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, \n", + " 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, \n", + " 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, \n", + " 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, \n", + " 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, \n", + " 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, \n", + " 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, \n", + " 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, \n", + " 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, \n", + " 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, \n", + " 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, \n", + " 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, \n", + " 0, 1, 0, 1, 0, 1, 0, 0, 1)\n" + ] + }, { "cell_type": "code", "execution_count": 38, diff --git a/center_fw/src/main.c b/center_fw/src/main.c index 53b6aae..274abad 100644 --- a/center_fw/src/main.c +++ b/center_fw/src/main.c @@ -124,7 +124,7 @@ void TIM1_CC_IRQHandler(void) { } */ static size_t received_symbols = 0; -static int symbol_buf[32]; +static int symbol_buf[64]; static size_t received_bits = 0; static int16_t bit_buf[256]; size_t adc_reduced_pos = 0; @@ -145,16 +145,13 @@ void DMA1_Channel1_IRQHandler(void) { int sample = buf[i]; adc_reduced[adc_reduced_pos] = (sample & 0xffff)>>9; - if (adc_reduced_pos == 0) { - asm volatile ("bkpt"); - } if ((last_sample <= threshold_adc_counts && sample >= threshold_adc_counts) || (last_sample >= threshold_adc_counts && sample <= threshold_adc_counts)){ sampling_phase = sample_per_baud / 4; /* /2 for half baud sampling point, /2 for sinusoidal edge shape */ } else if (sampling_phase == 0) { - int bit = sample < threshold_adc_counts; + int bit = sample > threshold_adc_counts; adc_reduced[adc_reduced_pos] |= 0x80; bit_buf[received_bits] = bit; @@ -171,7 +168,10 @@ void DMA1_Channel1_IRQHandler(void) { sampling_phase--; } - adc_reduced_pos = (adc_reduced_pos+1) % COUNT_OF(adc_reduced); + adc_reduced_pos++; + if (adc_reduced_pos == COUNT_OF(adc_reduced)) { + adc_reduced_pos =0; + } last_sample = sample; } diff --git a/common/8b10b_test_vector_gen.py b/common/8b10b_test_vector_gen.py index 12460c1..6c0250b 100755 --- a/common/8b10b_test_vector_gen.py +++ b/common/8b10b_test_vector_gen.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 def parse_size(s): + if s is None: + return s + s = s.lower() SUFFIXES = {'k': 1e3, 'm': 1e6, 'g': 1e9} if s[-1] in SUFFIXES: diff --git a/driver_fw/src/main.c b/driver_fw/src/main.c index 52b4a4d..0b3c869 100644 --- a/driver_fw/src/main.c +++ b/driver_fw/src/main.c @@ -202,6 +202,9 @@ void dma_tx_constant(size_t table_size, uint16_t constant) { DMA1_Channel1->CCR |= DMA_CCR_EN; } +int8_t bit_arr[4096]; +size_t bit_pos = 0; + void DMA1_Channel1_IRQHandler() { static int transfer_errors = 0; static int current_symbol = 0x2aa; @@ -213,6 +216,10 @@ void DMA1_Channel1_IRQHandler() { DMA1->IFCR = DMA_IFCR_CGIF1; int bit = !!(current_symbol & (1<= 10) { - tx_bitpos = 0; - tx_sympos ++; + if (tx_bitpos == 0) { + tx_bitpos = 9; current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, tx_datagram[tx_sympos]); + tx_sympos ++; if (tx_sympos >= COUNT_OF(tx_datagram)) { tx_sympos = 0; } + } else { + tx_bitpos --; } } -- cgit