diff --git a/research/r429-controller-accounting/ADAPTATIONS.json b/research/r429-controller-accounting/ADAPTATIONS.json new file mode 100644 index 0000000000..beb771f892 --- /dev/null +++ b/research/r429-controller-accounting/ADAPTATIONS.json @@ -0,0 +1,85 @@ +{ + "frozen/old/recursive/bit_native_controller.py": [ + { + "new": "REPO = PORTABLE.root/'frozen/upstream'", + "old": "REPO = Path('/Users/ross/git/math/integer-mult-bounds')", + "reason": "Relocate the unchanged upstream input tree." + }, + { + "new": "path = Path(PORTABLE.normalize(frozen['source_word']))", + "old": "path = Path(frozen['source_word'])", + "reason": "Relocate absolute frozen provenance input path; source hash remains enforced." + }, + { + "new": "PORTABLE.equal(HERE / 'BIT-NATIVE-CONTROLLER.json',complete)", + "old": "need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER.json').read_bytes()) == json.loads(output),\n 'full BIT native/controller receipt differs')", + "reason": "Full typed receipt comparison, mapping original absolute provenance paths only." + }, + { + "new": "PORTABLE.equal(HERE / 'BIT-NATIVE-CONTROLLER-WORD.json',\n {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word})", + "old": "need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').read_bytes()) ==\n {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word},\n 'full ordered BIT native/controller word differs')", + "reason": "Full typed ordered-word comparison." + }, + { + "new": " exec(compile(selected, str(RECIPE_SOURCE), 'exec', dont_inherit=True, optimize=0), env)", + "old": " exec(compile(selected, str(RECIPE_SOURCE), 'exec'), env)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": " exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec', dont_inherit=True, optimize=0), env)", + "old": " exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec'), env)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": "raw = PORTABLE.authenticate(RECIPE_SOURCE)", + "old": "raw = RECIPE_SOURCE.read_bytes()", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + }, + { + "new": "ast.parse(PORTABLE.authenticate(source))", + "old": "ast.parse(source.read_bytes())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + } + ], + "frozen/old/recursive/bit_owner_prune.py": [ + { + "new": "REPO = PORTABLE.root/'frozen/upstream'", + "old": "REPO = Path('/Users/ross/git/math/integer-mult-bounds')", + "reason": "Relocate the unchanged upstream input tree." + }, + { + "new": "PORTABLE.equal(path,data)", + "old": "need(json.loads(path.read_bytes()) == json.loads(cap.canonical(data)),'complete owner restriction receipt differs')", + "reason": "Full typed receipt comparison, mapping original absolute provenance paths only." + } + ], + "frozen/reviews/owner/check_owner_accounting.py": [ + { + "new": "PORTABLE.equal(path,result)", + "old": "need(json.loads(path.read_bytes()) == json.loads(canonical(result)), \"review receipt differs\")", + "reason": "Compare complete typed independent receipt; no mathematical fields omitted." + } + ], + "frozen/upstream/research/r438-rehost-projectors/verify.py": [ + { + "new": " exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec', dont_inherit=True, optimize=0), ns)", + "old": " exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec'), ns)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": " exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec', dont_inherit=True, optimize=0), ns)", + "old": " exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec'), ns)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": "ast.parse(PORTABLE.authenticate(ROOT / path))", + "old": "ast.parse((ROOT / path).read_text())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + }, + { + "new": "ast.parse(PORTABLE.authenticate(ROOT / GEOMETRY))", + "old": "ast.parse((ROOT / GEOMETRY).read_text())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + } + ] +} diff --git a/research/r429-controller-accounting/CONTROLS.json b/research/r429-controller-accounting/CONTROLS.json new file mode 100644 index 0000000000..d8ecb6e1e9 --- /dev/null +++ b/research/r429-controller-accounting/CONTROLS.json @@ -0,0 +1,457 @@ +{ + "frozen_manifest_sha256": "08c614b0d592257500767ff4df368fed6418fee53cf25d6419f21505f027b58a", + "no_large_mathematical_replay": true, + "no_new_kappa": true, + "package": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-staging", + "runs": [ + { + "compact_rejections": [ + { + "name": "boolean_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "float_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "integer_for_boolean", + "reason": "receipt mismatch: data.json" + }, + { + "name": "omitted_nested_field", + "reason": "receipt mismatch: data.json" + }, + { + "name": "reordered_list", + "reason": "receipt mismatch: data.json" + }, + { + "name": "missing_receipt", + "reason": "unregistered frozen input: frozen/absent.json" + }, + { + "name": "changed_word_bytes", + "reason": "complete word/geometry mismatch" + }, + { + "name": "normalized_key_collision", + "reason": "normalized key collision" + }, + { + "name": "direct_assert_under_parent_flags", + "reason": "DIRECT_SOURCE_ASSERT" + }, + { + "name": "source_changed", + "reason": "frozen input changed: frozen/source.py" + }, + { + "name": "missing_registered_source", + "reason": "[Errno 2] No such file or directory: '/private/var/folders/3v/9244hdf12cj1k9jjspv9wh2h0000gn/T/b02-control-fixtures-zrbw47u3/basic/frozen/source.py'" + }, + { + "name": "adaptation_not_unique", + "reason": "adaptation no longer unique: frozen/source.py" + }, + { + "name": "unbound_adaptation", + "reason": "unbound adaptation" + } + ], + "complete_real_receipt_controls": [ + { + "deep_path": [ + "owner_audit", + "idle_per_replica_including_zero", + "0" + ], + "receipt": "NATIVE-REMAINDERS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + } + ], + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + { + "deep_path": [ + "ordered_controller", + 0, + "stages", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + } + ], + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + { + "deep_path": [ + "chronological_owner_windows", + "windows", + 0, + "eligible_helper_stages_old", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + } + ], + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + { + "deep_path": [ + "deleted_slots_per_replica", + 0, + 0 + ], + "receipt": "frozen/old/recursive/BIT-OWNER-PRUNE.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + } + ], + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + { + "deep_path": [ + "native_one_gauge_omission_witnesses", + 0, + "q", + 0 + ], + "receipt": "frozen/reviews/owner/OWNER-REVIEW.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: OWNER-REVIEW.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: OWNER-REVIEW.json" + } + ], + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + { + "deep_path": [ + "theorem_finite_checks", + "premise_controls", + "wrong_factor_order", + "stages", + 0, + 0 + ], + "receipt": "frozen/reviews/sections/CHECKS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: CHECKS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: CHECKS.json" + } + ], + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + } + ], + "mathematical_controls": { + "deleted_named_check_detected": true, + "equivalent_factor_columns": 256, + "rejections": [ + { + "name": "missing_pending_axis", + "reason": "wrong pending operator" + }, + { + "name": "overlapping_factor", + "reason": "overlapping factors" + }, + { + "name": "equal_rank_wrong_axis", + "reason": "exterior address operator" + }, + { + "name": "extracted_ast_assert", + "reason": "AST_SOURCE_ASSERT" + }, + { + "name": "extracted_ast_changed_source", + "reason": "frozen input changed: frozen/upstream/probe.py" + } + ] + }, + "nested_cache_controls": { + "timestamp": { + "poison_was_executable": true, + "rejection": { + "name": "nested_timestamp_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + }, + "unchecked_hash": { + "poison_was_executable": true, + "rejection": { + "name": "nested_unchecked_hash_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + } + }, + "parent_optimization": 0, + "receipt_check_deletion_detected": true, + "verifier_sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + }, + { + "compact_rejections": [ + { + "name": "boolean_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "float_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "integer_for_boolean", + "reason": "receipt mismatch: data.json" + }, + { + "name": "omitted_nested_field", + "reason": "receipt mismatch: data.json" + }, + { + "name": "reordered_list", + "reason": "receipt mismatch: data.json" + }, + { + "name": "missing_receipt", + "reason": "unregistered frozen input: frozen/absent.json" + }, + { + "name": "changed_word_bytes", + "reason": "complete word/geometry mismatch" + }, + { + "name": "normalized_key_collision", + "reason": "normalized key collision" + }, + { + "name": "direct_assert_under_parent_flags", + "reason": "DIRECT_SOURCE_ASSERT" + }, + { + "name": "source_changed", + "reason": "frozen input changed: frozen/source.py" + }, + { + "name": "missing_registered_source", + "reason": "[Errno 2] No such file or directory: '/private/var/folders/3v/9244hdf12cj1k9jjspv9wh2h0000gn/T/b02-control-fixtures-k8mzoxj4/basic/frozen/source.py'" + }, + { + "name": "adaptation_not_unique", + "reason": "adaptation no longer unique: frozen/source.py" + }, + { + "name": "unbound_adaptation", + "reason": "unbound adaptation" + } + ], + "complete_real_receipt_controls": [ + { + "deep_path": [ + "owner_audit", + "idle_per_replica_including_zero", + "0" + ], + "receipt": "NATIVE-REMAINDERS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + } + ], + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + { + "deep_path": [ + "ordered_controller", + 0, + "stages", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + } + ], + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + { + "deep_path": [ + "chronological_owner_windows", + "windows", + 0, + "eligible_helper_stages_old", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + } + ], + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + { + "deep_path": [ + "deleted_slots_per_replica", + 0, + 0 + ], + "receipt": "frozen/old/recursive/BIT-OWNER-PRUNE.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + } + ], + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + { + "deep_path": [ + "native_one_gauge_omission_witnesses", + 0, + "q", + 0 + ], + "receipt": "frozen/reviews/owner/OWNER-REVIEW.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: OWNER-REVIEW.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: OWNER-REVIEW.json" + } + ], + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + { + "deep_path": [ + "theorem_finite_checks", + "premise_controls", + "wrong_factor_order", + "stages", + 0, + 0 + ], + "receipt": "frozen/reviews/sections/CHECKS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: CHECKS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: CHECKS.json" + } + ], + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + } + ], + "mathematical_controls": { + "deleted_named_check_detected": true, + "equivalent_factor_columns": 256, + "rejections": [ + { + "name": "missing_pending_axis", + "reason": "wrong pending operator" + }, + { + "name": "overlapping_factor", + "reason": "overlapping factors" + }, + { + "name": "equal_rank_wrong_axis", + "reason": "exterior address operator" + }, + { + "name": "extracted_ast_assert", + "reason": "AST_SOURCE_ASSERT" + }, + { + "name": "extracted_ast_changed_source", + "reason": "frozen input changed: frozen/upstream/probe.py" + } + ] + }, + "nested_cache_controls": { + "timestamp": { + "poison_was_executable": true, + "rejection": { + "name": "nested_timestamp_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + }, + "unchecked_hash": { + "poison_was_executable": true, + "rejection": { + "name": "nested_unchecked_hash_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + } + }, + "parent_optimization": 1, + "receipt_check_deletion_detected": true, + "verifier_sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + } + ], + "status": "PASS_COMPACT_B02_SOURCE_AND_CONTROL_AUDIT" +} diff --git a/research/r429-controller-accounting/CORE-SNAPSHOT.json b/research/r429-controller-accounting/CORE-SNAPSHOT.json new file mode 100644 index 0000000000..a2ef9df809 --- /dev/null +++ b/research/r429-controller-accounting/CORE-SNAPSHOT.json @@ -0,0 +1,197 @@ +{ + "controls_report_sha256": "595c4a66e6801b24bb85fd55111e73f2aba7c214d4755b4529a021879eaf6ece", + "core_files": 46, + "core_snapshot_sha256": "05bc76a0988968b3326a9d0df9bf7c709e12385155b407e80cb18351b290c6ad", + "files": { + "ADAPTATIONS.json": { + "bytes": 4438, + "sha256": "c229c5b8ba079328222c75da85dfcc8a7cc763b053d2bb4485704dd48bf62052" + }, + "EVIDENCE-INDEX.md": { + "bytes": 4915, + "sha256": "9dfb3a5d7660f0ac88d44c1c40895def0e296194c68220db24fb24cf85382d50" + }, + "FROZEN-SHA256.json": { + "bytes": 3947, + "sha256": "08c614b0d592257500767ff4df368fed6418fee53cf25d6419f21505f027b58a" + }, + "NATIVE-REMAINDERS.json": { + "bytes": 1185, + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + "ORIGINS.json": { + "bytes": 8440, + "sha256": "cf96e54a574ba0dcb1d706f81ef1b2569494db4a87b351c7a6b07aa6121621ef" + }, + "PROOF.md": { + "bytes": 8468, + "sha256": "a66c69ede1258b089d8b0e2ee03a228566e3dcb7810fc7ca8d47c655abc0619c" + }, + "README.md": { + "bytes": 7906, + "sha256": "7183ae1c5e3f953479d6a8686f5e3863bde91ba40321aa2ecd6c74d007eb79eb" + }, + "RELATED-WORK.json": { + "bytes": 3445, + "sha256": "166cb5c60a93b5185e83466fdb79fd7c45cd3174edf66c23faea5a92ca81e690" + }, + "REVIEW-OWNER.md": { + "bytes": 11664, + "sha256": "09ae48dde1cbcabbba7313877d9bc45d0607a6ec860be778eb3ded6b131e77bd" + }, + "REVIEW-SECTIONS.md": { + "bytes": 12724, + "sha256": "cbd975fabd31a8170cdeedef7336e1dab60c604238a141f15d2930643a596c20" + }, + "REVIEW-VERIFICATION.md": { + "bytes": 8718, + "sha256": "fa5e7693d87e9eca70186564074f6eb7d5e6323a074b129e5d0c2bcb77205dba" + }, + "SOURCES.json": { + "bytes": 3092, + "sha256": "8179cbdd20ff5d06ba0d37b44a6f0bc901c344fa527d36e8b69eed59c33102e3" + }, + "TASK.json": { + "bytes": 6964, + "sha256": "2fbf89fcce9196c5277f4230bb79da43079f2f502c7a270d5d2bc8e9fa94a9ee" + }, + "VERIFY.json": { + "bytes": 2373, + "sha256": "6e7f5efd5b5035f6e1a38b0761286d4890b840502086fd2015bfb49f1a037bdc" + }, + "controls.py": { + "bytes": 14308, + "sha256": "77ea06911fdb85d7161613c03575a4ccb9a8c74b967769b498b1d88672350f2b" + }, + "frozen/old/recursive/BIT-CODE-INPUT.json": { + "bytes": 17347, + "sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": { + "bytes": 215137, + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": { + "bytes": 22253, + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + "frozen/old/recursive/BIT-OWNER-PRUNE.json": { + "bytes": 9533, + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": { + "bytes": 7962, + "sha256": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9" + }, + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": { + "bytes": 2080, + "sha256": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321" + }, + "frozen/old/recursive/TWO-N-ALL-STAGES.md": { + "bytes": 2799, + "sha256": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "frozen/old/recursive/bit_cap_copy_local.py": { + "bytes": 7588, + "sha256": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb" + }, + "frozen/old/recursive/bit_native_controller.py": { + "bytes": 25018, + "sha256": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288" + }, + "frozen/old/recursive/bit_owner_prune.py": { + "bytes": 6107, + "sha256": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c" + }, + "frozen/reviews/owner/OWNER-REVIEW.json": { + "bytes": 35712, + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + "frozen/reviews/owner/check_owner_accounting.py": { + "bytes": 18966, + "sha256": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f" + }, + "frozen/reviews/sections/CHECKS.json": { + "bytes": 366219, + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + }, + "frozen/reviews/sections/check_sections.py": { + "bytes": 17774, + "sha256": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e" + }, + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": { + "bytes": 59514, + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870" + }, + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": { + "bytes": 15993, + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": { + "bytes": 42305, + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": { + "bytes": 6385, + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": { + "bytes": 33865, + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": { + "bytes": 1154, + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "bytes": 5987, + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "bytes": 16791, + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "bytes": 7268, + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": { + "bytes": 62860, + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c" + }, + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": { + "bytes": 3159, + "sha256": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": { + "bytes": 15993, + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": { + "bytes": 42305, + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/r438-rehost-projectors/verify.py": { + "bytes": 20686, + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f" + }, + "frozen/upstream/research/selected-bit-hosting-audit/README.md": { + "bytes": 12334, + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + }, + "native_remainders.py": { + "bytes": 5279, + "sha256": "61f6d74b472ba3e4daafdcd2ceeb8513b1a18e67de18512563128c676d9ff6bb" + }, + "verify.py": { + "bytes": 7171, + "sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + } + }, + "package": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-staging", + "post_freeze_refresh": true, + "registered_commands": 6, + "registered_inputs": 30, + "stable_during_controls": true, + "timestamp_utc": "2026-10-20T11:35:48.627584+00:00" +} diff --git a/research/r429-controller-accounting/EVIDENCE-INDEX.md b/research/r429-controller-accounting/EVIDENCE-INDEX.md new file mode 100644 index 0000000000..74f82a55a1 --- /dev/null +++ b/research/r429-controller-accounting/EVIDENCE-INDEX.md @@ -0,0 +1,58 @@ +# Claim and replay index + +All registered commands use only this package and Python's standard library. +The replay never depends on the original absolute workspace paths. + +| Claim or premise | Executed check | Boundary | +| --- | --- | --- | +| 429-helper local VALUE identity | Inherited PR3645, exact head and word pin in SOURCES/ORIGINS | Its 651-column integer/F2 replay is not repeated here. | +| Local paid profile | `native_remainders.py` reads the actual published `WORD.json.gz`, every MOVE/ADD/COPY/ERASE frame and snapshot lifecycle | Does not claim a new full VALUE-column replay. | +| Returned idle capacity | `verify.py --stage owner` replays the original restriction; `--stage independent-owner` independently rebuilds chronology, physical sets and all 123,552 roles | Fixed offsets and windows; no repacking optimum. | +| Actual pending operators | `native_remainders.py` applies the retained PR2653 checker to 23 changed patterns, 111 roots and 326,784 basis columns | Retained implementation, with missing/equal-rank wrong-axis controls; whole hosted emission remains open. | +| Generic coded controller | `verify.py --stage controller` replays every symbolic bank column, 63 added code factors, actual root charts and original borrowing windows | Endpoint is common code E; rank-zero scalar work still needs access/tape pricing. | +| Prefix comparison and terminal failure | Independent complete histograms plus PROOF.md's monotonic-weight inequalities | All real exponents a>=0 in the stipulated tariff; no comparable favorable supplier inferred. | +| Two original-input gauges | Independent exact D(P) involutions and 111 omission witnesses | 888 and 444 are named construction bills, not universal decoder/observer floors. | +| Variable-row-section theorem | Written row-ratio proof, with 127,968 finite 2x2 checks and premise controls | General proof is all-field; actual R438 rank data are over F2. | +| Actual section/rank/census premises | `verify.py --stage independent-sections` rebuilds R,K,J from the raw word; enumerates 511 support directions, all 120 return lines and 70,626 admissible sections | Only the stated three-row/root-line/two-tier alphabet; no arbitrary-normal or native-cost theorem. | +| Portable acceptance gates | `controls.py` checks all complete real receipts and disposable source/type/order/coverage/cache fixtures under normal and optimized Python | Valid cache poison is demonstrated executable before verifying rejection. Removing the named check makes its control fail. | + +## Frozen inputs and adaptations + +`FROZEN-SHA256.json` binds every retained original byte and the newly generated +`NATIVE-REMAINDERS.json`. `ORIGINS.json` records exact original local paths or +Git commit/path expressions. These absolute paths are provenance, not runtime +dependencies. The raw R438 word appears both at its source path and inside the +original PR2653 vendored tree because the retained source checker authenticates +both locations; neither copy is silently substituted. + +`frozen/old/recursive/` retains the original owner/controller programs, their +full receipts, the old local audit receipt and two proof notes. The imported +`bit_cap_copy_local.py` supplies utility functions to the owner script; its +standalone six-copy cap audit is not an executed stage. The full generic +controller performs its own actual native root/chart checks. + +`frozen/upstream/` contains the exact compiler/geometry fragments, original +manifests, placement and candidate invoice, raw words and full 120-root data. +The original projector verifier's `source_check` remains active. Only its +named pure AST fragments are evaluated from upstream global/hosting/geometry +files; their full native entrypoints and optimizers are not invoked. + +`frozen/reviews/owner/` and `frozen/reviews/sections/` contain two separate +implementations and their complete expected outputs. Neither independent +checker imports the historical producer. The owner checker inherits the local +operator identity; the section checker requires only the two raw geometry/word +inputs and reconstructs its own binary and rational matrices. + +`ADAPTATIONS.json` lists unique string replacements. They relocate paths, +route complete comparisons through type-preserving equality, retain assertions +in AST compilation, and compile the exact authenticated source bytes. No +coefficient, domain, loop bound, expected mathematical value or negative-control +condition is changed. Every patch has a single source occurrence or replay fails. + +## Validation distinctions + +The registered package replay checks these local claims. Committed-byte/source- +history preflight checks provenance. The Git-free export check establishes +portability. Hosted automatic CI is reported separately in the PR after its +exact source head is read back. None is independent human acceptance, a +formal-kernel proof, an all-size machine construction or a new kappa certificate. diff --git a/research/r429-controller-accounting/FROZEN-SHA256.json b/research/r429-controller-accounting/FROZEN-SHA256.json new file mode 100644 index 0000000000..254340b800 --- /dev/null +++ b/research/r429-controller-accounting/FROZEN-SHA256.json @@ -0,0 +1,32 @@ +{ + "NATIVE-REMAINDERS.json": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3", + "frozen/old/recursive/BIT-CODE-INPUT.json": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a", + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271", + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "frozen/old/recursive/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321", + "frozen/old/recursive/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b", + "frozen/old/recursive/bit_cap_copy_local.py": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb", + "frozen/old/recursive/bit_native_controller.py": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288", + "frozen/old/recursive/bit_owner_prune.py": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c", + "frozen/reviews/owner/OWNER-REVIEW.json": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee", + "frozen/reviews/owner/check_owner_accounting.py": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f", + "frozen/reviews/sections/CHECKS.json": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd", + "frozen/reviews/sections/check_sections.py": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e", + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870", + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1", + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "frozen/upstream/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "frozen/upstream/research/selected-bit-hosting-audit/README.md": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" +} diff --git a/research/r429-controller-accounting/LICENSE b/research/r429-controller-accounting/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r429-controller-accounting/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r429-controller-accounting/NATIVE-REMAINDERS.json b/research/r429-controller-accounting/NATIVE-REMAINDERS.json new file mode 100644 index 0000000000..78b9cd583f --- /dev/null +++ b/research/r429-controller-accounting/NATIVE-REMAINDERS.json @@ -0,0 +1,53 @@ +{ + "address_basis_columns": 326784, + "controls": [ + "missing_retained_helper", + "duplicate_retained_helper", + "missing_pending_axis", + "equal_rank_wrong_axis", + "missing_local_copy" + ], + "distinct_pending_signatures": 23, + "local_event_counts": { + "0": 2873, + "1": 13223, + "2": 3, + "3": 3 + }, + "local_profile": { + "1": 1298, + "2": 1342, + "3": 79, + "4": 44, + "5": 93, + "6": 11, + "7": 9 + }, + "no_new_kappa": true, + "owner_audit": { + "deadline_families": 71040, + "factorization_sha256": "d69c821a951a8439737107f24b1df89bbf349df941acaf18fb9f70175b41ae8b", + "families_with_multiple_children": 13632, + "idle_per_replica_including_zero": { + "0": 222, + "2": 420, + "4": 435, + "6": 435, + "7": 666, + "10": 2, + "14": 9, + "18": 2, + "26": 2, + "28": 9, + "34": 3, + "42": 15 + }, + "occupied_families": 27936, + "owner_projector_sha256": "14a74b706f16cded0daac85f134d5336bcd91ed4834149b297b36974b3822fea", + "physical_helpers": 123552, + "qperp_host_occurrences": 20992, + "slots": 3861 + }, + "ports": 111, + "status": "PASS_PRUNED_OWNER_NATIVE_REMAINDERS" +} diff --git a/research/r429-controller-accounting/ORIGINS.json b/research/r429-controller-accounting/ORIGINS.json new file mode 100644 index 0000000000..230b3343e7 --- /dev/null +++ b/research/r429-controller-accounting/ORIGINS.json @@ -0,0 +1,122 @@ +{ + "NATIVE-REMAINDERS.json": { + "origin": "Produced by package native_remainders.py from the stated frozen local word and allocation; new receipt, not a historical source.", + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + "frozen/old/recursive/BIT-CODE-INPUT.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-CODE-INPUT.json", + "sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-NATIVE-CONTROLLER.json", + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + "frozen/old/recursive/BIT-OWNER-PRUNE.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-OWNER-PRUNE.json", + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-PRUNE-AUDIT.json", + "sha256": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9" + }, + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/MIXED-SECTIONS-PROOF.md", + "sha256": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321" + }, + "frozen/old/recursive/TWO-N-ALL-STAGES.md": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/TWO-N-ALL-STAGES.md", + "sha256": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "frozen/old/recursive/bit_cap_copy_local.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_cap_copy_local.py", + "sha256": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb" + }, + "frozen/old/recursive/bit_native_controller.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_native_controller.py", + "sha256": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288" + }, + "frozen/old/recursive/bit_owner_prune.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_owner_prune.py", + "sha256": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c" + }, + "frozen/reviews/owner/OWNER-REVIEW.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-review/OWNER-REVIEW.json", + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + "frozen/reviews/owner/check_owner_accounting.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-review/check_owner_accounting.py", + "sha256": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f" + }, + "frozen/reviews/sections/CHECKS.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b03-review/CHECKS.json", + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + }, + "frozen/reviews/sections/check_sections.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b03-review/check_sections.py", + "sha256": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e" + }, + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": { + "origin": "99b901c9b5ac70cf441b3d7e585cc7b8744b5359:research/bit-r438-source-code/WORD.json.gz", + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870" + }, + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-carrier-skeleton/code/nine/geometry.py", + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/data/selection9-p111.json", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/tune/EXPECTED.json", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-native-rehost/CERTIFICATE.json", + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c" + }, + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/SOURCES.json", + "sha256": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/sources/pr2423-rehost.json", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/sources/pr2423-word.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/r438-rehost-projectors/verify.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/verify.py", + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f" + }, + "frozen/upstream/research/selected-bit-hosting-audit/README.md": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/selected-bit-hosting-audit/README.md", + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + } +} diff --git a/research/r429-controller-accounting/PROOF.md b/research/r429-controller-accounting/PROOF.md new file mode 100644 index 0000000000..6b5411644d --- /dev/null +++ b/research/r429-controller-accounting/PROOF.md @@ -0,0 +1,190 @@ +# Fixed coded-controller accounting and row-section boundary + +Ross Richardson with substantial OpenAI Codex assistance. Apache-2.0. +The written implications below are separate from the finite source checks. +No physical supplier, formal-kernel theorem or new kappa is claimed. + +## 1. Boundary and fixed allocation + +The inherited PR3645 local binary map is + +``` +F_A: (x,y,h) -> (Ax,y+Ax,h), +F_A^-1: (x,y,h) -> (A^-1 x,y+x,h). +``` + +The local word has 111 source and 111 target fields, 429 arbitrary dirty +helpers and one private copied field. Its literal integer lift has a distinct +signed source matrix; the target shear above is asserted over F2 only. +The published local identity and full integer/F2 replay are inherited. +This package recounts the actual word's frames, copies and rank profile. + +The ordinary nine-stage controller uses four bank pairs, 32 replicas and +ambient rank 64. Its literal orientation is F0,B1,F2,B3,F4,B5,F6,B7,F8. +Source codes are applied in the native charts at their actual cuts. The +retained generic code-controller proof gives a common coded endpoint and +places Y preloads before borrowing, X sweeps after restoration. It does not +make that endpoint identity or give code arithmetic free physical access. + +A physical owner family is +`replica*888+(2*pair+side)*111+port`. Every old width-eight helper slice +stays at its original pending child, copy and coordinate offset. Delete +helper numbers 249,...,257, corresponding to old registers 471,...,479, +and renumber only the later helper identifiers. There are nine deletions +at each of nine stages. Therefore precisely 81 disjoint width-eight +slices return to their original deadlines per replica. + +For every deadline, `new_remainder = old_remainder disjoint_union deleted_slices`. +The new remainder ranks sum to 648 more than the old ones per replica. +This is an exact physical partition, not a fractional repacking argument. +Both independent reconstructions check all 123,552 surviving owner roles. + +For root q, let P_q=qq^T/4 and K_q=I-P_q. The native pending spaces are +orthogonal sums of K_q and named exterior coordinate lines. Each slice and +remainder contains all of K_q or none. For orthogonal projectors P_i, + +``` +D(P) = [[I-P,P],[P,I-P]], +product_i D(P_i) = D(sum_i P_i). +``` + +Expanding the block products proves this over every odd ADDRESS field where +the dyadic coefficients are interpreted. The fixed allocation binds those +projectors to actual families and chronological windows. The finite native +check covers all 23 new factorization patterns and all 111 root lines on +326,784 ADDRESS basis columns. It preserves arbitrary head and tail values. +This does not emit a complete native hosted program or admit its descendants. + +## 2. Complete invoice and uniform profile comparison + +The old local mass is 5121 and the pruned mass is 4989. The 132 saving splits +as 72 deleted-helper rank plus 60 from replacing nine rank-seven copies by +three rank-one copies. Returned idle work cancels the first 72. Across +288 calls the complete saving is 17,280. + +The reconstructed complete pruned prefix histogram is + +``` +H = {1:373824, 2:399936, 3:22752, 4:26592, 5:26784, + 6:17088, 7:23904, 10:64, 14:288, 18:64, + 26:64, 28:288, 34:96, 42:480}. +``` + +Its mass is 1,791,072. Let H_old be the old complete candidate profile and +Delta=H-H_old. The exact signed difference is + +``` +{1:-6912, 2:-416, 4:-288, 5:-2592, 6:-288, 7:-2592, + 10:64, 14:288, 18:64, 26:64, 28:288, 34:64, 42:160}. +``` + +For real a>=0 the weight (64/r)^a decreases in r. Every negative Delta is +at r<=7 and every positive Delta at r>=10. Multiplying the negative terms +by their larger weights and the positive terms by their smaller weights gives + +``` +sum Delta[r]*r*(64/r)^a + <= 8^a * sum Delta[r]*r + = -17280*8^a < 0. +``` + +This compares the two paid child profiles, not two admitted suppliers with +matching endpoints. The prefix still owes its code removal. + +## 3. Known terminal completion and the strict remaining budget + +Each of the four hole banks has 111 fields. The named complete terminal +construction uses N E^-1 N, where N is the fieldwise rank-one native gauge. +Two gauge sweeps cost 2*4*111=888 rank-one children per replica. The +intervening scalar inverse code still needs a physical access invoice. + +Adding 888*32 to H[1] gives completed mass 1,819,488. The available budget +is 64*28416=1,818,624, so this completion exceeds stock by 864. It exceeds +the older candidate's mass 1,808,352 by 11,136; the baselines differ. + +For M(a)=sum H_completed[r]*(r/64)^(1-a), with acceptance M(a)<28416, +all nonzero child ranks lie between 1 and 42. Thus for every a>=0, + +``` +64*M(a) = sum H_completed[r]*r*(64/r)^a + >= 1819488 > 64*28416. +``` + +This is a lower bound on the actual moment. Extra nonnegative costs cannot +fix it at the same stock. Rank-zero census entries are omitted before powers. +A changed stock, child domain or endpoint requires a new argument. + +At a=0 the prefix leaves 861 rank units per replica. Strict acceptance +requires an integer terminal bill at most 860, before other costs. The known +888 construction must therefore save at least 28, not merely 27. + +For the stipulated ordinary-coverage ledger at L=2B+1 stages, B>=1, +with n ports and three rank-one local repairs per stage, + +``` +D=(L-1)n-3L-2Bn=-3L<0. +``` + +With T replicas the excess is 3LT; B=4,L=9,T=32 recovers 864. +The displayed algebra is all-parameter. A hosted layout is only source-bound +here for nine stages; no all-B construction or whole-machine realization is +inferred. The nonnegative-exponent conclusion additionally requires every +counted child rank to lie in its actual ambient range. + +The two-gauge cost is not a universal decoder lower bound. Omitting just +one gauge changes the arbitrary-input map: for invertible E and nonidentity +N, `(N-I)E^-1 N` is nonzero, and similarly on the right. For E=I, an exact +witness is `(q/2,0)`, which one gauge sends to `(0,q/2)` while two restore it. +Both gauges may cancel for a separately proved commuting E; that changed +construction is outside the present invoice. + +Likewise the 444 FULL-gather source ascents are a cost of lifting four banks +of 111 rank-seven caps to FULL. They are not an observer lower bound. Scalar +augmentation rank 9 supplies no nine-channel native reader. The preserved +ordered source word has an 81-channel factor; no minimality of 81 is claimed. + +## 4. Variable row-section obstruction + +Let J be n by n over any field. Let A_0,...,A_(2k) be invertible and suppose +A_s agrees with J outside row set P_s. Put P=union P_s and + +``` +E=(A_(2k) A_(2k-1)^-1) ... (A_2 A_1^-1) A_0. +``` + +For each adjacent pair, + +``` +A_(2i) A_(2i-1)^-1 + = I + (A_(2i)-A_(2i-1)) A_(2i-1)^-1. +``` + +The added matrix is supported only on rows P_(2i) union P_(2i-1). +For any coordinate p outside that support, left multiplication leaves row p +unchanged. Applying the ratios in order and then using A_0=J outside P_0 +shows E_row_p=J_row_p for every p outside P. No commutation, common section, +involution, finite quotient order or RW=0 assumption is used. + +Consequently every row where J differs from identity must lie in P if E=I. +For the actual binary R438 augmentation J=I+KR, all 111 diagonal entries +are zero. With nine stages and at most three repair rows at each stage, +|P|<=27; at least 84 diagonal entries of E differ from identity. +More generally, with at most r rows per stage, identity requires +rL >= |{p : J_row_p != e_p}|. If L must be odd and r=3 here, L>=37. +This is necessary, not sufficient, and gives no attaining controller. + +The diagonal count alone does not lower-bound rank by 84. For example, over +F2 the 2 by 2 swap J has two zero diagonal entries but rank(J-I)=1; +taking every A_s=J and empty repair sets gives that same odd endpoint. +The independent section proof records additional actual-matrix rank information +separately from this general warning. + +For a physical constant VALUE function on one uncovered family, every ADDRESS +permutation acts trivially. Thus its augmentation diagonal mismatch is an +actual source specialization, not merely a numeric surrogate. Native factors +and nonconstant inputs still need their own operator/access analysis. + +Paid terminal decoders, changed final codes/controllers, non-row-supported +repairs and changed observer contracts are outside this theorem. See +[REVIEW-SECTIONS.md](REVIEW-SECTIONS.md) for the exact source reconstruction, +finite section/return-line census and bounded rank refinements. diff --git a/research/r429-controller-accounting/README.md b/research/r429-controller-accounting/README.md new file mode 100644 index 0000000000..c490faa0b5 --- /dev/null +++ b/research/r429-controller-accounting/README.md @@ -0,0 +1,144 @@ +# Returned-owner costs and section limits for the coded R429 caller + +The three-snapshot R429 local word saves 132 rank units, but its nine deleted +width-eight helper families return 72 units to idle work at each call. This +package reconstructs every remaining owner role and the complete paid profile: +the net saving is **60 per call**, and the known two-N terminal completion +exceeds stock by **864**. It also proves a variable-row-section obstruction for +the same alternating controller. No new supplier or kappa is claimed. + +The local word is the existing [PR3645](https://github.com/CrocSwap/integer-mult-bounds/pull/3645) +construction, head `99b901c9b5ac70cf441b3d7e585cc7b8744b5359`. +Its 651-column integer/F2 identity is inherited, not re-executed here. +The new checks bind its actual literal frame and COPY events to the invoice, +reconstruct the changed physical allocation and check all its pending operators. +The 72-unit return was already noted in PR3645 and +[PR3672](https://github.com/CrocSwap/integer-mult-bounds/pull/3672); +the additional coverage here is the complete allocation, histograms, +all-exponent comparison and terminal/section boundaries. + +## Exact results + +With 111 ports, nine stages, 32 replicas, ambient rank 64 and stock 28,416: + +| Quantity | Exact result | +| --- | ---: | +| Retained physical owner roles | 123,552 | +| Returned idle rank per replica | 648 | +| Net saving across 288 local calls | 17,280 | +| Complete pruned prefix mass | 1,791,072 | +| Known two-N terminal charge per replica | 888 rank-one children | +| Completed mass | 1,819,488 | +| Stock rank budget | 1,818,624 | +| Excess over stock | 864 | + +The completed mass exceeds the **old candidate** by 11,136. That is a different +comparison from the 864 excess over stock. + +For `C(a)=sum H[r]*r*(64/r)^a` and every real `a>=0`, the complete pruned +prefix is cheaper than the old profile by at least `17280*8^a`. This compares +paid child profiles whose endpoint contracts differ. The known completed +profile still satisfies `C(a)>=1819488>64*28416`. A replacement terminal +must cost at most **860 rank-one units per replica** merely to satisfy the +strict zero-exponent budget, before any other charges. + +Under the stipulated ordinary-coverage ledger, `L=2B+1` stages and `n` ports +have deficit `(L-1)n-3L-2Bn=-3L`. This is an all-parameter accounting +implication, not an emitted hosted construction for every B. + +For invertible matrices `A_s` agreeing with `J` outside row sets `P_s`, the +alternating endpoint `E=A_(L-1) A_(L-2)^-1 ... A_1^-1 A_0` agrees with `J` +outside their union. Actual binary `J=I+KR` has 111 zero diagonal entries. +Nine stages with at most three repaired rows therefore leave at least +**84 diagonal mismatches**. Identity closure requires at least **37 odd +stages** under that repair limit. A count of mismatched diagonals is not a +rank lower bound; the proof and checker retain an explicit counterexample. + +See [PROOF.md](PROOF.md) for the exact premises and derived consequences. +The independent section review adds two precise finite consequences. The actual +scalar defect rank lies between **9 and 36**, and is exactly 9 when every stage +has the same-reader form `A_s-I=W_s R`. All **70,626** admissible three-row +sections and all 120 root return lines are checked: exactly **2,270** sections +admit a block, precisely those containing row 80, and their sole block is the +singleton mask 32. These scalar/root-line facts do not supply a native decoder +or its price. They are separate from the written arbitrary-field theorem. + +## Verification and evidence + +Use CPython 3.12 from the repository root: + +```sh +python3.12 -B scripts/check_research_commit.py --package research/r429-controller-accounting --check-source-history +python3.12 -B scripts/research_package.py --package research/r429-controller-accounting +``` + +[VERIFY.json](VERIFY.json) registers explicit checks. Frozen inputs are +self-contained; [ORIGINS.json](ORIGINS.json), [FROZEN-SHA256.json](FROZEN-SHA256.json) +and [ADAPTATIONS.json](ADAPTATIONS.json) preserve original bytes and enumerate +path/receipt adapters. Authenticated source bytes are compiled with assertions +enabled, including nested imports and extracted source functions, even under +optimized parent Python. Mathematical receipts are compared in full with JSON +scalar types preserved. Only original absolute provenance paths are relocated. + +The historical owner audit and complete generic code-controller replay remain +separate from two fresh independent implementations. The latter reconstruct +owner sets/histograms and binary row-section data without importing producer +code. The native remainder stage uses the retained PR2653 operator checker: +23 distinct pending factorizations, all 111 physical root lines, **326,784 +ADDRESS basis columns**, and wrong-axis/missing-factor controls. It is not a +third independent implementation. The generic controller's 63 added code +factors preserve the old borrowing windows; the endpoint remains coded. + +[EVIDENCE-INDEX.md](EVIDENCE-INDEX.md) maps claims to executable coverage and +inherited premises. [REVIEW-OWNER.md](REVIEW-OWNER.md), +[REVIEW-SECTIONS.md](REVIEW-SECTIONS.md) and +[REVIEW-VERIFICATION.md](REVIEW-VERIFICATION.md) preserve separate AI mathematical +and verification reviews. Finite exact computation, written all-parameter proof and formal-kernel +proof are distinct; this package supplies the first two only. + +## Scope and limits + +The 888 terminal and 444 FULL-gather source-ascent counts are costs of named +constructions, not lower bounds for every decoder or observer. Scalar +augmentation rank does not provide an accessible native factorization at a +hole cut. Both original-input gauges, arbitrary helper values, cleanup and +source access must be retained in any replacement. + +The owner result restricts the fixed placement without repacking. The section +result assumes the alternating common-code controller and the stated row +repairs. New coverage, wider observers, different codes/controllers or changed +endpoints can change these conclusions. Native child interiors, terminal +owner allocation, source scans, rounded cleanup, precision, full storage, +fixed-tape execution and joint outer transfer remain unadmitted. No selected +frontier file is changed. + +## Open next questions + +Can a fully priced decoder remove the actual ordered endpoint within the +strict remaining budget? Start from its complete arbitrary-input map at the +physical hole cuts, pay both gauges and every source/output/cleanup visit, +and compare the resulting histogram. A scalar rank factor alone is not that +construction. + +Can a changed controller escape the row-repair or coverage premises? State +the changed contract before searching, then bind its complete operator and +owner invoice. The 37-stage necessary condition provides no attaining caller. +[TASK.json](TASK.json) records these boundaries and the explicit assigned scope. + +## Sources and credit + +Scientific inputs retain base `20ecf2891d80b5acf18d980b2164fb44ea7faa90`; +publication guidance and catalogue revision 7 are pinned at +`12fa8c5c844be21bfefb38a19503fbd867a11244` in [SOURCES.json](SOURCES.json). +The R438 word and local boundary lineage belong to Ali Romman/PR1043; +Sagar Thakrar/PR2423 supplies transport and rehosting; commdata2338/PR2653 +supplies the pending-projector audit, with PR1307 geometry ancestry. +Retained source headers and manifests preserve the earlier +DreamingOfClouds/eumemic/PR589/555/543/545/510 notices. +James Reed/PR3672 independently recorded the published local arithmetic. +The source-code, pruning and recursive-audit findings here were prepared by +Ross Richardson with substantial OpenAI Codex assistance. + +[RELATED-WORK.json](RELATED-WORK.json) records exact nearby heads and scope +comparisons. Live overlap coverage is a search aid, not a novelty certificate. +Separate AI review is not independent human acceptance. Apache-2.0. diff --git a/research/r429-controller-accounting/RELATED-WORK.json b/research/r429-controller-accounting/RELATED-WORK.json new file mode 100644 index 0000000000..60bf71f66e --- /dev/null +++ b/research/r429-controller-accounting/RELATED-WORK.json @@ -0,0 +1,94 @@ +{ + "scope": "B02/B03 fixed coded-controller accounting; no generic source-coding or returned-idle priority claim", + "references": [ + { + "pr": 3672, + "head": "8f735782ecf4a3af439b4b0b02e665d4983e3c6d", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/3672", + "relationship": "Published local arithmetic and72-unit return are prior confirmation; new work binds full physical allocation/histogram and uniform moment comparison." + }, + { + "pr": 3645, + "head": "99b901c9b5ac70cf441b3d7e585cc7b8744b5359", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/3645", + "relationship": "Published source-coded local word, local profile and72 returned idle rank warning are inherited. New contribution reconstructs fixed owner complements, generic controller windows and terminal/variable-section boundary." + }, + { + "pr": 2423, + "head": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/2423", + "relationship": "Transported R438 word and selected owner placement; no new packing optimum claimed." + }, + { + "pr": 1043, + "head": "e309e17f83f5759b1ea1fa24a76f24838784cb4d", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/1043", + "relationship": "Original legal R438 boundary-persistence word and full hosted invoice lineage." + }, + { + "pr": 2653, + "head": "ff26f4477786cf9ab188e060d6820a39dd2ed117", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/2653", + "relationship": "Exact pending-projector algebra/checker, source/geometry pins and baseline owner audit; reused to test the restricted429 allocation." + } + ], + "overlap_searches": [ + { + "searched_at": "2026-10-20T11:14:11.757659+00:00", + "terms": [ + "returned-owner", + "two-N", + "alternating row", + "common-code", + "signed quotient", + "70626" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-20T11:13:22.758595+00:00", + "complete_pagination": true, + "records": 301 + }, + "discussions": { + "fetched_at": "2026-10-20T11:09:04.134297+00:00", + "complete_pagination": true, + "records": 2697 + }, + "closed_prs": { + "fetched_at": "2026-10-20T11:14:11.410658+00:00", + "complete_pagination": true, + "records": 3540 + } + }, + "matches": 28 + }, + { + "searched_at": "2026-10-20T11:19:01.929936+00:00", + "terms": [ + "R429", + "row-section", + "returned idle", + "rank drops 132" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-20T11:13:22.758595+00:00", + "complete_pagination": true, + "records": 301 + }, + "discussions": { + "fetched_at": "2026-10-20T11:09:04.134297+00:00", + "complete_pagination": true, + "records": 2697 + }, + "closed_prs": { + "fetched_at": "2026-10-20T11:14:11.410658+00:00", + "complete_pagination": true, + "records": 3540 + } + }, + "matches": 23 + } + ], + "limits": "Complete paginated open and closed/merged PR titles/bodies and discussion records; arbitrary diffs not searched. Exact relevant source packages inspected. A search is not a novelty certificate." +} diff --git a/research/r429-controller-accounting/REVIEW-OWNER.md b/research/r429-controller-accounting/REVIEW-OWNER.md new file mode 100644 index 0000000000..ae2049bf18 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-OWNER.md @@ -0,0 +1,256 @@ +# B02 independent owner and moment review + +Status: **PASS within the fixed contracts below. No new supplier or κ.** +Reviewed 2026-10-20. This review imports or executes no producer module. +`check_owner_accounting.py` independently reconstructs the actual chronological +windows, selected slots, physical owner rows, complements and complete +histograms. Its regenerated receipt is `OWNER-REVIEW.json`. + +The source scientific base remains +`20ecf2891d80b5acf18d980b2164fb44ea7faa90`; the current checkout is used only +for byte-identical pinned predecessor files. The three file hashes in +`BIT-OWNER-PRUNE.json` still match, as do all consumed PR2653 source inputs. +The source word is PR2423's R438 word, gzip SHA256 +`a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022`. +The independently rebuilt old slot digest matches +`1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e`; +the restricted slot digest matches +`5b2189e714523b5fa8b01e5aee52f332511920fa4620104b2a894907b57cc238`. + +## Fixed physical contract and returned rank + +There are 111 ordinary ports, nine local stages, 32 replicas, ambient rank +64 and 28,416 live data families. The physical family formula is + +``` +replica*888 + (2*pair+side)*111 + port. +``` + +The allocation has ten pending children per physical port/side, including +one zero-rank child. It retains all 71,040 physical deadlines. Each hosted +helper is a complete width-eight slice in its original pending child; +there is no repacking, changed offset or borrowing-window relaxation. + +The helper numbers 249 through 257 correspond to old physical registers +471 through 479. Exactly nine such helpers are deleted at each of nine +stages: 81 deleted occurrences per replica, each width eight. The actual +remaining set at every deadline is the old remaining set disjointly united +with the deleted slices. Consequently + +``` +returned idle rank per replica = 81*8 = 648. +``` + +The remaining 3,861 roles per replica give 123,552 roles over all replicas. +The independent owner and factorization digests agree with the historical +receipt for both the old and restricted allocations. + +The complete idle profiles, including rank zero, are: + +``` +old: {0:222, 2:433, 4:444, 6:444, 7:666, 34:1, 42:10} +new: {0:222, 2:420, 4:435, 6:435, 7:666, 10:2, 14:9, + 18:2, 26:2, 28:9, 34:3, 42:15} +``` + +The source projector chart consists of the root line, all seven root- +orthogonal axes, and exterior coordinates. Every retained slice and every +new remainder contains either all seven root-orthogonal axes or none. +The set partition therefore is a partition into actual orthogonal +projectors, rather than only a dimension sum. For +`D(P)=[[I-P,P],[P,I-P]]`, orthogonal `P_i` satisfy +`product_i D(P_i)=D(sum_i P_i)`. This identity holds on arbitrary head and +tail vectors; no zero-helper premise is used. The finite set/owner +reconstruction binds that algebraic identity to this fixed allocation. +The inherited whole-call realization and early-preload/late-X code-window +arguments remain distinct from the projector identity. + +## Complete histogram and the two baselines + +The old local rank mass is 5,121 and the pruned mass is 4,989. The apparent +132-unit saving consists of 72 deleted-helper units plus 60 COPY units +(nine rank-seven copies replaced by three rank-one copies). The first +72 units return to the idle invoice. The complete net saving is therefore +60 per local call, or `288*60=17,280` globally. + +The complete local-plus-idle histogram is reconstructed directly as +288 local histograms plus 32 idle histograms: + +``` +H = {1:373824, 2:399936, 3:22752, 4:26592, 5:26784, + 6:17088, 7:23904, 10:64, 14:288, 18:64, 26:64, + 28:288, 34:96, 42:480}. +``` + +Its mass is **1,791,072**. The known two-N terminal adds +`2*4*111=888` rank-one children per replica, hence 28,416 globally. +The completed histogram differs only at rank one, which becomes 402,240; +its mass is **1,819,488**. + +| Comparison | Exact quantity | +| --- | ---: | +| Old complete candidate mass | 1,808,352 | +| Pruned prefix mass | 1,791,072 | +| Pruned prefix plus known terminal mass | 1,819,488 | +| Available rank budget `64*28416` | 1,818,624 | +| Terminal excess over old candidate | 11,136 | +| Terminal excess over available budget | 864 | + +The receipt field `zero_exponent_two_N_excess_over_baseline=11136` uses +the old candidate as its baseline. It is not the excess over stock. +Both numbers are correct; publication prose should explicitly distinguish them. + +For the stated moment convention + +``` +M(a) = sum_r H[r]*(r/64)^(1-a), with acceptance M(a)<28416, +C(a) = 64*M(a) = sum_r H[r]*r*(64/r)^a, +``` + +every retained child has `0=0`, +each tariff is at least its rank, and + +``` +C_completed(a) >= 1819488 > 1818624. +``` + +This is a direct lower bound on the true moment, not failure of a sufficient +upper estimate. Additional nonnegative fallback, precision or routing +charges cannot reverse it at the same stock. A changed stock or child-rank +contract requires a different argument. Rank-zero census entries are +excluded before taking powers, including at `a>=1`. + +## Useful sharpening: a uniform prefix price comparison + +The signed histogram `H_pruned-H_old` is + +``` +{1:-6912, 2:-416, 3:0, 4:-288, 5:-2592, 6:-288, + 7:-2592, 10:64, 14:288, 18:64, 26:64, 28:288, + 34:64, 42:160}. +``` + +Its rank-mass sum is -17,280. Every negative entry is at rank at most +seven, and every positive entry is at rank at least ten. For `a>=0`, +`(64/r)^a` is decreasing in `r`; using separating rank eight gives + +``` +sum_r (H_pruned[r]-H_old[r])*r*(64/r)^a + <= (64/8)^a * sum_r (H_pruned[r]-H_old[r])*r + = -17280*8^a < 0. +``` + +This proves a strict uniform price comparison for every nonnegative real +exponent. It does not compare two suppliers satisfying the same endpoint +contract: the new prefix still has a coded endpoint requiring repair. +In particular it does not contradict the completed-word obstruction. +No numerical root search or formal-kernel proof is claimed. + +At exponent zero the available terminal rank budget is +`(1818624-1791072)/32=861` per replica. Strict acceptance requires an +integer terminal bill at most **860**, before any further charges. +Therefore an alternative to the 888-call construction must save at least +**28 rank-one units per replica** merely to pass this necessary first gate. +Saving 27 leaves equality and is insufficient. + +## All odd-stage accounting identity + +Under the specified ordinary-coverage ledger, let `B>=1`, `L=2B+1`, +and let `n` be the port count. Before the three rank-one local repairs per +stage, the deficit is `(L-1)n`. After those repairs and the stipulated two +endpoint normalizations on every one of the `Bn` hole fields, it is + +``` +D = (L-1)n - 3L - 2Bn + = 2Bn - 3L - 2Bn + = -3L < 0. +``` + +With `T` replicas the mass excess is `3LT`. At `B=4,L=9,T=32` this is +864. The general necessary integer terminal budget for strict passage, +before other charges, is `2Bn-3L-1`, whenever that number is nonnegative. + +This is a written all-parameter implication from the given coverage, +repair and terminal costs. It does not construct or admit a hosted +controller for every B. The inherited generator itself only emits the +fully banked layout at L=9. The checker includes 2,048 finite arithmetic +sanity cases; those cases do not replace the displayed algebraic proof. +The all-nonnegative-exponent conclusion additionally requires every +counted child to have positive rank at most its ambient rank, as verified +for the fixed nine-stage histogram. + +## Original-input gauge and source-access boundaries + +The actual terminal expression is `N E^-1 N`, where the diagonal fieldwise +operator `N` uses `D(P_q)` and `P_q=q q^T/4`. These rank-one projectors +come from the pinned 111 root lines. The checker verifies the involution +on all 1,776 rational basis columns and constructs 111 one-gauge omission +witnesses: for `E=I`, the correct two-gauge map is identity, while one +gauge sends `(q/2,0)` to `(0,q/2)`. + +More generally, for every invertible E and nonidentity N, removing only +the left N changes the map: `(N-I)E^-1 N` is nonzero. Removing only the +right N also changes it. This is an arbitrary-input algebraic statement, +independent of coefficient estimates. Removing both gauges can succeed +when E commutes with N; no universal obstruction to that separate +possibility is claimed. An actual commutation or joint-decoder word must +be supplied before charging such a cancellation. + +The number **888 is the bill of the known complete construction**. It is +not a lower bound for every terminal decoder. The number **444** is the +source ascent cost of the specified all-bank FULL gather: four banks, +111 rank-seven caps each, each lifted to FULL by one rank-one child. +It is not a universal observer lower bound. A different observer, copied +query or legal shared cut needs its own ordered arbitrary-input access, +dirty-workspace and restoration contract. + +In particular the proposed 288-unit descent assumes a nine-channel native +factorization inferred only from scalar augmentation. The actual ordered +word currently supplies an 81-channel factor. This review does not prove +that 81 channels are necessary; it records that the nine-channel native +factor and its readout are unbuilt. Even granting that factor, the stated +FULL-gather construction would add at least its own 444 ascents to the +288 descent, before output alignment and cleanup. + +## Validation, provenance and remaining obligations + +Run from any directory, with Python 3.12 or later: + +``` +python3 -I -B /absolute/path/to/b02-review/check_owner_accounting.py +python3 -I -O -B /absolute/path/to/b02-review/check_owner_accounting.py +``` + +The receipt contains every fixed histogram, deleted slot, source hash and +owner digest. Four injected accounting faults reject the missing physical +idle complement, false 132-unit net saving, missing second gauge charge, +and a child rank above ambient. The native gauge omission witnesses are +separate exact operator controls. + +The established 651-column integer/F2 local operator identity is inherited +from published [PR3645](https://github.com/CrocSwap/integer-mult-bounds/pull/3645) +and is not re-executed by this package. This independent checker consumes +the pinned local receipt, whose forward and inverse paid profiles agree. +The separate parent-owned `native_remainders.py` binds the actual published +`WORD.json.gz` to all local frame events, paid ranks and COPY lifecycle, and +checks the changed owner remainder operators. Its +`NATIVE-REMAINDERS.json` records 326,784 exact ADDRESS basis columns; this +is not a full integer/value replay of the local operator identity. +The recursive/owner specialists retain the whole native code-window +realization and terminal owner-allocation +obligations; rounded-network/machine specialists own child-error, +precision and physical tape interfaces if a future construction survives +the cost gate. + +No defect was found in the supplied B02 numerical claims. The most useful +presentation corrections are the two explicit excess baselines, the +conditional nature of the all-B ledger, and the construction-versus-lower- +bound distinctions for 888 and 444. The uniform prefix comparison and +860 strict terminal budget are safe additional deductions. + +Credit: Ali Romman's PR1043 R438 word, Sagar Thakrar's PR2423 transport and +rehosting, commdata2338's PR2653 pending-projector audit and its PR1307 +geometry predecessors; the local source-code, support-pruning and +recursive audit lanes identified in the preserved source handoff. +Prepared for Ross with substantial OpenAI Codex assistance. No human +independent review or formal-kernel proof is asserted. diff --git a/research/r429-controller-accounting/REVIEW-SECTIONS.md b/research/r429-controller-accounting/REVIEW-SECTIONS.md new file mode 100644 index 0000000000..8ce6b7eb12 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-SECTIONS.md @@ -0,0 +1,283 @@ +# B03 independent mathematical review + +**Finding:** the alternating row-section obstruction is correct. Its scope is +the specified common-endpoint word, with the original input gauge retained. +The argument does not prove a paid terminal-decoder lower bound. The fresh +independent checker also reproduces the complete archived root-line census +and gives useful exact strengthening of its classification. + +This is a written mathematical proof plus finite exact arithmetic verification, +prepared by Ross Richardson with substantial OpenAI Codex assistance. It is +not a formal-kernel proof or independent human review. The historical +scientific pin is `20ecf2891d80b5acf18d980b2164fb44ea7faa90`; the inspected +current checkout is `12fa8c5c844be21bfefb38a19503fbd867a11244`. + +## 1. Row-section theorem and its exact premises + +Let \(J\) be an \(n\)-by-\(n\) matrix over a field. Let the \(2k+1\) matrices +\(A_0,\ldots,A_{2k}\) be invertible. For each \(s\), let \(P_s\) be a physical +**row** set such that +\[ +e_p^T A_s=e_p^T J\quad(p\notin P_s). +\] +Set \(P=\bigcup_s P_s\) and preserve the ordered word +\[ +E=A_{2k}A_{2k-1}^{-1}\cdots A_2A_1^{-1}A_0 . +\] +Then \(e_p^TE=e_p^TJ\) for every \(p\notin P\). + +Indeed, write +\[ +T_i=A_{2i}A_{2i-1}^{-1} + =I+(A_{2i}-A_{2i-1})A_{2i-1}^{-1}. +\] +Right multiplication cannot create a nonzero row from a zero row. Thus +\(e_p^TT_i=e_p^T\) outside \(P_{2i}\cup P_{2i-1}\). For \(p\notin P\), +successively multiplying the row vector \(e_p^T\) by the factors +\(T_k,\ldots,T_1\) leaves it unchanged; multiplication by \(A_0\) then gives +\(e_p^TJ\). No commutation of the factors is used. + +The proof only requires the odd-indexed inverses for the algebraic identity; +the stated invertibility of every stage retains the reversible-interface +contract. There is no requirement that \(J\) be invertible. There is no +\(RW=0\), involution, finite quotient-order, fixed-section or identical-stage +premise. The general theorem is valid in every characteristic. The actual +R438 application and all rank numbers below are over \(\mathbb F_2\). + +The repair equation \(J=(I+Q_s)A_s\), with \(Q_s\) supported on \(P_s\), +implies the required agreement directly by taking rows outside \(P_s\). +The proof concerns rows, so a column-supported repair is not interchangeable. +Nor can the order \(A_{2i}A_{2i-1}^{-1}\) be reversed. + +The finite checker tests every \(J\in M_2(\mathbb F_2)\), every sequence in +\(\operatorname{GL}_2(\mathbb F_2)\), and lengths \(1,3,5\): 127,968 cases, +including 990 cases with at least one uncovered row. These finite tests +support the implementation; the preceding written proof supplies the +all-parameter statement. + +## 2. Exact coverage consequence + +Let +\[ +D=\{p:e_p^TJ\ne e_p^T\}. +\] +Identity restoration requires **\(D\subseteq P\)**, not merely a large +cardinality for \(P\). In particular, +\[ +|D|\le |P|\le\sum_s|P_s|. +\] +If every stage changes at most \(r>0\) rows, the odd stage count \(L=2k+1\) +must be at least the least odd integer not smaller than \(\lceil |D|/r\rceil\). +This is a necessary condition only. + +The independent R438 reconstruction gives \(n=111\), +\(J=I+KR\), \(\operatorname{rank}J=108\), and \(J_{pp}=0\) for every \(p\). +Thus \(D\) is all 111 physical rows. Nine stages with at most three repaired +rows each leave at least \(111-27=84\) diagonal entries unequal to identity. +With the same three-row budget, identity is impossible at every odd stage +count below **37**. At exactly 37 stages, all repair sets must have size +three and form a disjoint partition of the 111 rows. No 37-stage construction +or sufficiency assertion is supplied. + +The nullity-three fact also independently confirms why fewer than three +row replacements cannot make this \(J\) invertible: replacing \(r\) rows +increases rank by at most \(r\). + +## 3. Diagonal discrepancies and defect rank + +The count 84 is not a rank bound. For a smallest explicit counterexample, +over \(\mathbb F_2\) take +\[ +J=\begin{pmatrix}0&1\\1&0\end{pmatrix},\qquad +A_s=J,\quad P_s=\varnothing . +\] +For any odd alternating stage count, \(E=J\). Both diagonal entries differ +from identity, but +\[ +E-I=\begin{pmatrix}1&1\\1&1\end{pmatrix} +\] +has rank one. + +The actual fixed R438 data allow a separate, precise rank statement. +The checker reconstructs the \(111\)-by-9 scatter matrix \(K\) and the +9-by-111 reader matrix \(R\) directly from the frozen word's `D`, `A`, `ret` +and `scatter` data, without importing the historical producer. Both have +rank nine. The 511 nonzero binary vectors \(a\) have the following +\(|\operatorname{supp}(Ka)|\) histogram: + +``` +48:4, 49:12, 50:32, 51:50, 52:76, 53:52, 54:24, 55:5, +56:5, 57:24, 58:52, 59:76, 60:50, 61:32, 62:12, 63:4, 111:1. +``` + +Consequently, deleting any at most 47 rows of \(K\) leaves column rank nine. +Otherwise some nonzero \(a\) would have its support inside the deleted set, +contradicting the minimum support 48. For \(U=P^c\), +\[ +(E-I)_U=(J-I)_U=K_U R . +\] +When \(|P|\le47\), this has rank nine because \(R\) has full row rank. +Also \(E-J\) is supported on \(P\), so +\[ +9\le\operatorname{rank}(E-I) + \le\operatorname{rank}(J-I)+|P| + =9+|P|. +\] +For the nine three-row stages this yields **\(9\le\operatorname{rank}(E-I) +\le36\)**. + +There is an additional conditional equality. If every stage obeys the +**same-reader premise** +\[ +A_s-I=W_sR +\] +for the same actual \(R\), then products and inverses preserve the form +\(I+VR\): +\[ +(I+UR)(I+VR)=I+(U+V+URV)R,\qquad +A^{-1}-I=-A^{-1}WR . +\] +Thus \(E-I=VR\), whose rank is at most nine. Combined with the preceding +lower bound, its rank is **exactly nine** for \(|P|\le47\). +This equality is conditional on the displayed common-reader premise; the +broader row-section theorem does not require it. + +These are scalar-augmentation ranks. They provide no native factorization, +snapshot count, physical frame width, decoder tariff, precision theorem +or source-access bound. In particular, rank nine does not replace the +actual routed defect's separately derived operator channels. + +## 4. Native constant-input witness + +Retain the historical exact binary VALUE semantics and the native ADDRESS +interface in which layout changes act as permutations of each VALUE +function's ADDRESS arguments. On the subspace of functions constant on +ADDRESS, every such permutation acts as identity. An exact copied snapshot +copies that same constant; literal cleanup and source preservation remain +the ordinary interface obligations. + +For any uncovered family \(p\), take the source VALUE function on that +physical family to be constantly one, all other source families constantly +zero, and all other arbitrary public inputs to be zero. This is an allowed +specialization of a contract that claims correctness on arbitrary inputs. +The scalar-augmentation coefficient of its own output is +\(E_{pp}=J_{pp}=0\), whereas terminal identity requires one. This witnesses +failure of identity restoration on an actual input under that native +constant-subspace contract. + +This reasoning preserves the original input gauge. Relabelling the output +as already encoded, deleting a terminal permutation, changing the observer +contract, or using a non-permutation VALUE operation changes the premises. +Rounded/nonlinear implementations require their own invariant-subspace +argument. No arbitrary-input *positive* native supplier or restoration +claim follows from this negative specialization. + +## 5. Independent full finite root-line census + +The census has a different domain from the all-field row theorem. It covers +the actual binary \(R,K,J\), physical three-row deletions, the 120 E8 root +return lines, and the specified common-intersection two-tier block alphabet. +It does not cover arbitrary return normals or arbitrary native circuits. + +The checker independently derives each of the nine old retained query cap +normals by exact rational elimination of its actual final `A`-stage frame. +The 111 physical lines together with those nine normal lines agree exactly +with the separately authenticated complete 120-line geometry. + +For nonzero binary output direction \(a\) and candidate return normal \(u\), +define + +* \(d(a,u)=\{p:(Ka)_p=1,\ u\cdot r_p\ne0\}\), the rows that must be deleted; +* \(M(u)=\{j:u\cdot n_j=0\}\), the old query caps containing the return line. + +A template can be used after deletion \(P\) only if +\(d(a,u)\subseteq P\). A block of old query coordinates \(S\) can use it only +if +\[ +\operatorname{supp}(a)\subseteq S\subseteq M(u). +\] +The output directions must span the entire block for its mixing to be +invertible. Enumerating every \(a\ne0\) and all 120 root lines, with at most +three required deletions, produces exactly 111 eligible templates. +Each requires one distinct physical deleted row, and **every template has +\(M(u)=\operatorname{supp}(a)\)**. + +Therefore a fixed block \(S\) can use only the direction \(a=1_S\). Its +output rank is at most one, so invertibility forces \(|S|=1\). Among all +111 templates there is exactly one singleton: + +``` +output / input block mask: 32 = 1 << 5 +required deleted row: 80 +return normal: (0, 1, 0, -1, -1, 0, -1, 0) +``` + +To enumerate admissible sections, the checker computes the left kernel of +\(I+RK\), multiplies its three basis rows by \(R\), and obtains a complete +left-kernel matrix \(C\) of \(J\). A three-row set \(P\) allows an invertible +row replacement precisely when the three columns \(C_P\) are independent: +the unchanged 108 rows of \(J\) are independent exactly when no nonzero +left-kernel vector vanishes on \(P\). + +All \(\binom{111}{3}\) candidate subsets are inspected. Exactly **70,626** +are admissible. Exactly **2,270** contain row 80; these are all and only the +positive sections, and every one admits only block mask 32. The original +block-rank condition is evaluated for every admitted section, in addition +to the preceding simplifying classification. All eligible-direction ranks +are three, as in the archived receipt; that fact alone does not imply a +feasible three-channel block. + +An explicit positive witness is \(P=\{1,2,80\}\). Its section labels are +\((4,2,1)\), so it is admissible. The direction \(a=32\) has 63 supported +output rows, and exactly row 80 has nonzero inner product with the displayed +return normal. The normal lies inside old query cap 5. Removing row 80 +therefore makes this singleton geometry feasible. Omitting that deletion +reintroduces the actual incompatibility. In particular, this counterexample +prevents the historical no-nonempty-block result for \(P=\{0,1,2\}\) from +being generalized to all sections. + +This is a geometric singleton witness only. The old query is an arbitrary +dirty total. Its extraction, compensation, literal cleanup, owners, routing +and complete controller cost remain separate obligations. + +## 6. Reproduction, controls and source boundaries + +`check_sections.py` uses Python's standard library, exact integers, +`Fraction`, and two gzip JSON inputs. Its CLI is directly portable: + +``` +python3 -I -O -B check_sections.py \ + --word /path/to/r438-t154.json.gz \ + --geometry /path/to/bitE8-r865.json.gz \ + --output /fresh/path/CHECKS.json +``` + +The output must not already exist. It contains the complete reconstructed +matrices, all 111 templates, all 2,270 positive sections and the finite +proof checks. Source authentication occurs before interpretation. + +Mathematical controls use constructed matrices after authentication, so +they cannot pass merely because a source hash changed: + +* An even two-stage word of identical swap matrices is identity and fails + the claimed inheritance of \(J\). +* Omitting the inverse in a three-stage word of an order-three matrix + changes its endpoint to identity. +* Reversing the ordered numerator/inverse pair changes an explicitly + uncovered physical row. +* A singular odd-indexed stage is rejected when its inverse is requested. +* The explicit row-80 geometry has one and only one incompatible supported + row; omitting that deletion invalidates the singleton. +* The two-diagonal, rank-one example rejects the proposed rank interpretation. + +The fresh census's candidate count, complete template array, complete +eligible-direction rank histogram, section count and complete positive +array match the historical `ROOT-LINE-SECTION-DECODER.json` exactly. +That historical receipt was used only for this separate post-run comparison, +not as an input to the independent checker. The fresh input is the raw +R438 word plus the full geometry. `SOURCES.json` records exact byte hashes; +`VALIDATION.json` records actual commands, runtimes and output comparisons. + +The parent owns the global controller, full arbitrary-input restoration, +returned-owner accounting and publication integration. None is inferred +from these row and root-line calculations. diff --git a/research/r429-controller-accounting/REVIEW-VERIFICATION.md b/research/r429-controller-accounting/REVIEW-VERIFICATION.md new file mode 100644 index 0000000000..c17f1e7406 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-VERIFICATION.md @@ -0,0 +1,165 @@ +# B02/B03 exact-source and control review + +Status: **PASS for the reviewed verification core, with the scientific +boundaries below.** This is a separate AI source/control review, not a human +review or a formal-kernel proof. Prepared for Ross with substantial OpenAI +Codex assistance, 20 October 2026. + +`CORE-SNAPSHOT.json` records the reviewed file bytes and aggregate core hash. +`CONTROLS.json` records the compact executions, including their exact verifier +and frozen-manifest hashes. The final package registration, complete mathematical +stage executions and publication checks belong to the parent. + +## Findings resolved during review + +1. The historical AST extraction paths initially read source again after a + separate source check. Stable changes would fail the pre/post hashes, but + this did not literally compile the same bytes returned by authentication. + Four explicit adapters now make the controller recipe, owner-window + function, projector source functions and geometry statements parse the + bytes returned by `PORTABLE.authenticate`. No mathematical operation was + changed. The actual projector extractor rejects a changed-source fixture. +2. The independent owner's earlier prose implied that the parent would replay + the local 651-column scalar circuit. The package now explicitly inherits that + identity from the pinned published PR3645. Its new local stage reconstructs + the actual frame/COPY lifecycle and paid histogram. These are distinct + obligations. + +No unresolved defect was found in the reviewed loader, full-receipt comparison, +source-derived invoice, pending-operator coverage or tested controls. + +## Source execution and receipt contract + +`Portable.code` authenticates a registered source and compiles the returned +bytes after the enumerated unique adapters, with `dont_inherit=True` and +`optimize=0`. The nested `SourceFileLoader` hook takes the same path for Python +modules under the frozen tree. Therefore `-B` is not being mistaken for a +bytecode-read prohibition. The four AST compilation sites also explicitly use +`optimize=0`. + +The compact test installs two usable poisoned caches: a matching timestamp +cache and an unchecked-hash cache. An ordinary loader first proves that each +cache executes its poison. The package loader instead executes the authenticated +nested source and reaches its intended assertion. These tests pass with both +normal and optimized parent interpreters. Separate direct-source and +actual-extracted-AST assertions remain active in both modes. + +All registered frozen inputs are authenticated before and after each historical +stage. The import closure does not execute the full upstream generator, +optimizer or the unused signed-local main from `bit_cap_copy_local.py`. +The latter module supplies only the imported small helpers used by the owner +replay. Its unused absolute source constants are not runtime input accesses +of this package's registered stages. + +Every returned mathematical receipt is compared in full. The sole semantic +normalization maps the declared historical absolute provenance paths into the +portable tree; it does not discard numerical fields, status fields, limits or +ordered events. Canonical JSON comparison distinguishes `true`, `1` and `1.0`, +and preserves list order. Normalized-key collisions fail. Missing evidence +fails rather than being regenerated in place. + +The independent section stage writes a fresh temporary result, compares that +whole result with its fixed receipt, and deletes the temporary directory. Its +generation of a fresh result does not replace or manufacture a missing fixed +certificate. + +## Actual mathematical coverage + +The frozen local program comes from the published three-snapshot R429 word. +`native_remainders.local_profile` derives its histogram from every literal +event, checks the specified deleted physical families, binds its start and +final frames, checks MOVE containment/rank, the immutable source throughout +each COPY/ERASE interval, and the final closed lifecycle. It checks 2,873 +MOVEs, 13,223 ADDs and three COPY/ERASE pairs. The paid histogram is + +``` +{1:1298, 2:1342, 3:79, 4:44, 5:93, 6:11, 7:9}. +``` + +This is a frame and invoice reconstruction. The local VALUE operator identity +and arbitrary-helper restoration remain the explicitly inherited PR3645 +premise; this review does not promote the new frame replay into that proof. + +The pending-projector audit expands the actual selected placement, deletes the +nine named helper families at each stage and retains every surviving physical +coordinate. It examines 3,861 roles per replica, hence all **123,552 roles** +across 32 replicas, and checks all **71,040 deadlines**. It does not replace +the physical allocation by only its rank histogram. The independent owner +checker reconstructs the same chronology, set partitions, physical family +rows and complete invoices without executing the producer. + +The native ADDRESS stage applies the retained PR2653 checker to all **23** +distinct retained pending factorizations and all **111** physical root lines. +For each pair it covers the 16 rational local basis columns and both columns +of each of the 56 exterior swaps: **326,784 ADDRESS columns** in total. +Repeated owner roles reduce to these exact factorization classes. This is +complete coverage of those pending operators on arbitrary head/tail inputs, +not a new independent implementation of PR2653 or an execution of the whole +recursive supplier. + +The return-gauge witness is actual operator arithmetic. For every original +root, the independent owner checker verifies `N^2=I` on all 16 columns. +At `E=I`, one remaining gauge sends `(q/2,0)` to `(0,q/2)`, giving 111 +concrete omission witnesses. These do not prove that two gauges can never +cancel with a different commuting endpoint, nor that 888 is a universal +decoder lower bound. + +The B03 review supplies its own row-support derivation and finite geometry +census. Its factor-order/inverse/even-length controls and the explicit +row-80 deletion witness operate on the constructed matrices after input +authentication. The row-80 result is an exact incompatibility witness, not an +exception-based mutation check. The arbitrary-field theorem is a written +proof, distinct from the finite GL(2,2) sanity cases. + +## Compact defect controls + +The delivered `verifier_controls.py`, suitable as package-root `controls.py`, +uses only external temporary directories and does not rerun a large +mathematical stage. It can run against a read-only, Git-free package. + +In each of normal and optimized Python 3.12 it runs: + +- 13 source/receipt/type/adaptation controls, including a normalized-key + collision and direct assertion preservation; +- two valid poisoned nested-cache controls; +- three real projector-partition controls: a missing axis, overlapping + factors and an equal-rank wrong-axis replacement; +- two actual AST-extractor controls: assertion preservation and changed + authenticated source; +- complete comparison of all six registered scientific receipts, followed + by one deepest nested mutation and one nested omission in each receipt. + +Thus the integrated current set has **32 intended rejections per interpreter +mode**, with each expected message checked. The mathematical mutations run +after authentication; they cannot pass merely because a generic hash check +rejects the modified input. + +The harness also disables only the named receipt-equality gate and only the +named exterior-axis gate in disposable in-memory variants. Their respective +controls then fail with unexpected acceptance outside the caught-exception +path. This establishes that those controls depend on the intended checks. + +Positive controls accept an unchanged complete receipt, its declared +provenance relocation, the unchanged complete compressed word, and the +reversed order of pairwise disjoint projector factors. The latter agrees on +256 basis columns. Equivalent factor ordering is not rejected as if it were +a mathematical defect. + +The compact control command is: + +```sh +python3.12 -I -B controls.py +``` + +The review-local invocation uses `--package /absolute/path/to/package` and +`--output CONTROLS.json`. It does not regenerate the six scientific receipts; +the parent's registered mathematical stages do that. + +## Remaining interfaces + +The accounting obstruction is conditional on the fixed placement, child-rank +contract and named two-N completion. The 888 terminal and 444 FULL-gather +figures are construction bills. The native local circuit premise remains +inherited; changed whole-program source access, terminal owner allocation, +rounded child errors, precision, storage, physical tape and joint outer +transfer remain unadmitted. This review makes no supplier or new-kappa claim. diff --git a/research/r429-controller-accounting/SOURCES.json b/research/r429-controller-accounting/SOURCES.json new file mode 100644 index 0000000000..789b4d3b4d --- /dev/null +++ b/research/r429-controller-accounting/SOURCES.json @@ -0,0 +1,78 @@ +{ + "schema_version": 1, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "files": [ + { + "path": "certificates/selected-result.json", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "usage": "provenance" + }, + { + "path": "docs/research/agent-task-catalog.json", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96", + "usage": "provenance" + }, + { + "path": "docs/research/research-family-status.md", + "git_blob": "abdd2792e6a5596b3fa6be3dc9db882bd8e3ef89", + "sha256": "0e61c47dfbc6f16e5f64594fcc7d907d4187568e38dddf10d473f0992419c44f", + "usage": "provenance" + }, + { + "path": "research/bit-r438-source-code/README.md", + "git_blob": "e501165027be66b75c60b13ed93377c4a58c1d0c", + "sha256": "f1033297e1156f9fb154a4319bee394a82476195cd2a53d01d93ef7332536d27", + "usage": "provenance" + }, + { + "path": "research/bit-r438-source-code/WORD.json.gz", + "git_blob": "672c41534608d0d812b8020e496177d7c41c8527", + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870", + "usage": "provenance" + }, + { + "path": "research/r438-rank-drop/README.md", + "git_blob": "51a0186d47d66ef3cdab6793a1c4b1d296cae376", + "sha256": "cea212b3b9dc6197bfe50d0e000a8649f460ca589f3869a751e2cb1c4ffb04a4", + "usage": "provenance" + }, + { + "path": "research/r438-rehost-projectors/README.md", + "git_blob": "0ad17349f0bc5798fa49e679755999340f5a7165", + "sha256": "8579e7742e2659ea6b6be4a76049f3f453d83aecf20aac6e785fe4d25afd9ff3", + "usage": "provenance" + }, + { + "path": "research/r438-rehost-projectors/verify.py", + "git_blob": "30b18ceaf5605202ad688e4e2d45b691c8941139", + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "usage": "provenance" + }, + { + "path": "research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "git_blob": "c2fb443f44f2c7c420cd367ab5fa12644efe318a", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "usage": "provenance" + }, + { + "path": "research/r438-native-rehost/CERTIFICATE.json", + "git_blob": "674ef36f723fbcc593e7d2319dca131da09181e5", + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "usage": "provenance" + }, + { + "path": "research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "git_blob": "e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "usage": "provenance" + }, + { + "path": "research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "git_blob": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "usage": "provenance" + } + ] +} diff --git a/research/r429-controller-accounting/TASK.json b/research/r429-controller-accounting/TASK.json new file mode 100644 index 0000000000..c559195efa --- /dev/null +++ b/research/r429-controller-accounting/TASK.json @@ -0,0 +1,96 @@ +{ + "schema_version": 1, + "task_id": "joint-query-controller", + "priority_revision": 7, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "original_card": { + "id": "joint-query-controller", + "question": "Can the installed QQ16 caller win a complete matched protocol bill, or can a changed demand eliminate actual paid work?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/qq16-caller-install/README.md" + ], + "methods": [ + "Derive the matched whole-caller physical bill for installed and baseline protocols.", + "Change the actual demanded observations and prove a cheaper legal producer/consumer contract." + ], + "acceptance_gate": "Name the changed premise of the fixed F0/B1 observation obstruction. Show exactly which query is recovered, legal native reads and restoration, and a full favorable budget including cover maps, helpers and endpoints. Local inverse identities alone do not close the global controller. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read #4166 COST.md and ADMISSION.json. An actual caller connection is now proposed. Its native-component profile loses; parent park/restore versus external-call costs remain unresolved. Retain the producer and recovery lineage rather than rebuild it.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "At the actual installed cut, compare matched complete parent park/restore and external input/return protocols at the same bank/packet geometry, including every later root call and service cost. Alternatively pin both bridge observations and derive a genuinely smaller source-compatible demand. Stop if the complete necessary inequality fails or an essential cost is unknown; no larger decoder scan from a local tape-action saving.", + "bottleneck_link": "The native local words exist; retained query information and its physical access are the missing link to a composed recursive interface.", + "allowed_variations": [ + "One paid query, one changed first pair, or one precisely specified affine helper state.", + "A counterexample or lower bound for that exact proposed repair.", + "One unresolved obligation of a newer local decoder, with exact source heads and a distinct claim/domain." + ], + "scope_change_triggers": [ + "Retaining the fixed first pair and ordinary schedule while allowing only homogeneous selected-only control, already excluded by the witness.", + "Treating cover-map counts as zero-cost physical address operations.", + "Recreating the pending complete local decoder or early-record/output-bank coalescing already under investigation without a distinct audit or changed premise.", + "Treating a completed-output defect inequality as a producer-interior, dirty-range or physical-cost certificate.", + "Recreating completed-output recovery or caller wiring already supplied by #4166 without new independent coverage.", + "Dropping retained later root calls or claiming native-profile dominance from the isolated publication saving." + ], + "overlap_terms": [ + "QQ16", + "joint-query", + "changing-chart controller", + "selected observation", + "1969", + "2540", + "early record", + "output-bank retention", + "complete native decoder", + "2965", + "producer defect", + "dirty-helper range", + "F17 consumer", + "4166", + "qq16-caller-install" + ], + "existing_checks": [ + { + "scope": "PR #4166: author-checked installed producer/service/return/bridge connection; native-component comparison loses.", + "evidence": "research/qq16-caller-install/README.md", + "remaining": "Complete matched physical protocol bill, or changed source-compatible demand/circuit; no affordable supplier yet.", + "status": "author-checked", + "source_commit": "0b082d22a0e9a442d264ab0633e35ef26c790630", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Finish the preserved coded R429 alternating-controller boundary: exact returned-owner invoice, uniform paid-profile comparison, known two-N completion failure, and variable-row-section endpoint obstruction with source-bound finite census.", + "scope_change_reason": "Explicit donor assignment to finish unpublished contributions sequentially after review. B02/B03 share the coded alternating controller, but do not implement the current QQ16 card or propose a favorable supplier.", + "bottleneck_link": "The three-snapshot local saving must survive returned idle capacity and removal of the actual coded endpoint.", + "budget_minutes": 240, + "stop_rule": "Complete only the fixed allocation and alternating row-section model. No unbounded decoder search or favorable exponent claim from scalar augmentation rank.", + "outcome": "partial", + "evidence": "PROOF.md, independent owner and section checks, full historical controller/owner receipts, actual native remainder columns and rejecting controls.", + "author": "Ross Richardson", + "ai_assistance": "Substantial OpenAI Codex assistance in original construction, independent mathematical checking contexts and publication. AI review is not human or formal-kernel acceptance.", + "open_questions": [ + { + "question": "Can a changed native decoder remove the actual ordered endpoint for less than the complete available budget?", + "why_it_matters": "The known two-N completion loses despite the cheaper prefix; scalar rank9 does not construct native source/readout access.", + "first_step": "Emit the full arbitrary-input native word at the actual hole cuts, including both endpoint gauges, source access, cleanup and complete paid profile.", + "blocked_by": "No affordable complete native decoder or its physical/precision/recursive admission is supplied." + }, + { + "question": "Can a controller outside the row-section or coverage premises improve the complete supplier?", + "why_it_matters": "The necessary37-stage condition is not a universal controller lower bound.", + "first_step": "State the changed boundary and controller alphabet, then reconstruct all original input columns and the complete owner and child bill.", + "blocked_by": "No changed controller is constructed by this contribution." + } + ] +} diff --git a/research/r429-controller-accounting/VERIFY.json b/research/r429-controller-accounting/VERIFY.json new file mode 100644 index 0000000000..f5c43f98e7 --- /dev/null +++ b/research/r429-controller-accounting/VERIFY.json @@ -0,0 +1,84 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "owner" + ], + "timeout_seconds": 90, + "checks": "Complete original fixed-allocation restriction and full typed receipt; every 123552 retained role and 648 returned idle rank." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "controller" + ], + "timeout_seconds": 180, + "checks": "Original complete generic noncommuting code-controller word, all 111 native charts, preserved borrowing windows and omitted-sweep controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "independent-owner" + ], + "timeout_seconds": 120, + "checks": "Fresh independent physical owner/partition/histogram reconstruction, all-alpha premises and 111 exact original-input gauge witnesses." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "independent-sections" + ], + "timeout_seconds": 180, + "checks": "Fresh independent actual R,K,J reconstruction, all 70626 sections, complete 120-line census, all 511 binary support directions and written-proof controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/native_remainders.py" + ], + "timeout_seconds": 300, + "checks": "Recount actual published local frame/COPY histogram; check all 326784 native ADDRESS columns for 23 changed pending factorizations; wrong-axis and omitted-factor controls. Local VALUE identity remains inherited." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/controls.py", + "--package", + "{package}" + ], + "timeout_seconds": 60, + "checks": "Normal and optimized child tests: full real receipt equality/mutation, type/order/coverage, authenticated imports and executable timestamp/unchecked-hash poison controls; deleted-check sensitivity." + } + ] +} diff --git a/research/r429-controller-accounting/controls.py b/research/r429-controller-accounting/controls.py new file mode 100644 index 0000000000..a0196dfc86 --- /dev/null +++ b/research/r429-controller-accounting/controls.py @@ -0,0 +1,335 @@ +#!/usr/bin/env python3 +"""Compact authenticated-source and mathematical control audit. + +Run only disposable fixtures. No large owner census or complete native stage. +Prepared for Ross with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import copy +import gzip +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import py_compile +import subprocess +import sys +import tempfile +import types + + +HERE = Path(__file__).resolve().parent +DEFAULT_PACKAGE = HERE + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":")) + + +def module_from_bytes(path): + module = types.ModuleType("reviewed_portable") + module.__file__ = str(path) + raw = path.read_bytes() + exec(compile(raw, str(path), "exec", dont_inherit=True, optimize=0), module.__dict__) + return module, digest(raw) + + +def reject(name, action, marker, recorded): + try: + action() + except (ValueError, AssertionError, FileNotFoundError) as error: + need(marker in str(error), f"wrong rejection for {name}: {error}") + recorded.append({"name": name, "reason": str(error)}) + else: + raise ValueError("control accepted: " + name) + + +def fixture(directory, entries, adaptations=None): + root = Path(directory).resolve() + (root / "frozen/old/recursive").mkdir(parents=True, exist_ok=True) + hashes = {} + for name, raw in entries.items(): + target = root / name + target.parent.mkdir(parents=True, exist_ok=True) + target.write_bytes(raw) + hashes[name] = digest(raw) + (root / "FROZEN-SHA256.json").write_text(json.dumps(hashes)) + (root / "ADAPTATIONS.json").write_text(json.dumps(adaptations or {})) + return root + + +def lightweight_checks(v, work): + rejected = [] + old = "/Users/ross/git/math/integer-mult-bounds/" + entries = { + "frozen/source.py": b'assert False, "DIRECT_SOURCE_ASSERT"\n', + "frozen/data.json": b'{"n":1,"flag":true,"nested":{"all":[1,2,3]},"path":"' + + old.encode() + b'research/example.json"}\n', + "frozen/word.json.gz": gzip.compress(b'{"ordered":[1,2,3]}\n', mtime=0), + } + root = fixture(work / "basic", entries) + p = v.Portable(root) + p.check_all() + data = json.loads(entries["frozen/data.json"]) + need(p.equal(root / "frozen/data.json", data), "unchanged receipt") + relocated = dict(data, path=str(root / "frozen/upstream/research/example.json")) + need(p.equal(root / "frozen/data.json", relocated), "provenance relocation") + need(p.word_equal(root / "frozen/word.json.gz", b'{"ordered":[1,2,3]}\n'), + "unchanged complete word") + reject("boolean_for_integer", lambda: p.equal( + root / "frozen/data.json", dict(data, n=True)), "receipt mismatch", rejected) + reject("float_for_integer", lambda: p.equal( + root / "frozen/data.json", dict(data, n=1.0)), "receipt mismatch", rejected) + reject("integer_for_boolean", lambda: p.equal( + root / "frozen/data.json", dict(data, flag=1)), "receipt mismatch", rejected) + reject("omitted_nested_field", lambda: p.equal( + root / "frozen/data.json", dict(data, nested={})), "receipt mismatch", rejected) + reject("reordered_list", lambda: p.equal( + root / "frozen/data.json", dict(data, nested={"all": [3, 2, 1]})), + "receipt mismatch", rejected) + reject("missing_receipt", lambda: p.equal(root / "frozen/absent.json", data), + "unregistered frozen input", rejected) + reject("changed_word_bytes", lambda: p.word_equal( + root / "frozen/word.json.gz", b'{"ordered":[1,3,2]}\n'), + "complete word/geometry mismatch", rejected) + reject("normalized_key_collision", lambda: p.normalize({ + old + "research/example.json": 1, + str(root / "frozen/upstream/research/example.json"): 2}), + "normalized key collision", rejected) + reject("direct_assert_under_parent_flags", lambda: exec( + p.code(root / "frozen/source.py"), {}), + "DIRECT_SOURCE_ASSERT", rejected) + (root / "frozen/source.py").write_bytes(b"pass\n") + reject("source_changed", lambda: p.code(root / "frozen/source.py"), + "frozen input changed", rejected) + (root / "frozen/source.py").unlink() + reject("missing_registered_source", p.check_all, "source.py", rejected) + (root / "frozen/source.py").write_bytes(entries["frozen/source.py"]) + p.patches["frozen/source.py"] = [{"old": "absent", "new": "pass"}] + reject("adaptation_not_unique", p.check_all, "adaptation no longer unique", rejected) + p.patches = {"frozen/unbound.py": []} + reject("unbound_adaptation", p.check_all, "unbound adaptation", rejected) + p.patches = {} + + # Disable only the receipt equality gate. The rejection harness must now + # fail outside its caught-error branch; unrelated hashes still match. + original_need = v.need + try: + v.need = lambda ok, message: ( + None if message.startswith("receipt mismatch") else original_need(ok, message)) + try: + reject("removed_receipt_gate", lambda: p.equal( + root / "frozen/data.json", dict(data, n=True)), + "receipt mismatch", []) + except ValueError as error: + need(str(error) == "control accepted: removed_receipt_gate", + "receipt control sensitivity") + else: + raise ValueError("receipt control did not notice its deleted check") + finally: + v.need = original_need + return rejected + + +def nested_cache_check(v, work, mode): + name = "frozen_fixture_inner_" + mode + auth = b'assert False, "NESTED_SOURCE_ASSERT"\n' + poison = b"CACHE_RAN = True\n" + poison += b"#" + b"x" * (len(auth) - len(poison) - 2) + b"\n" + need(len(auth) == len(poison), "same-size poisoned source") + root = fixture(work / mode, { + f"frozen/old/recursive/{name}.py": auth, + "frozen/outer.py": f"import {name}\n".encode(), + }) + inner = root / f"frozen/old/recursive/{name}.py" + poison_path = root / "poison.py" + poison_path.write_bytes(poison) + stat = inner.stat() + os.utime(poison_path, ns=(stat.st_atime_ns, stat.st_mtime_ns)) + cache = Path(importlib.util.cache_from_source(str(inner))) + cache.parent.mkdir(parents=True, exist_ok=True) + invalidation = (py_compile.PycInvalidationMode.TIMESTAMP if mode == "timestamp" + else py_compile.PycInvalidationMode.UNCHECKED_HASH) + py_compile.compile(str(poison_path), cfile=str(cache), dfile=str(inner), + doraise=True, optimize=sys.flags.optimize, + invalidation_mode=invalidation) + # Establish that this is a usable poison, not a stale/inert .pyc. + spec = importlib.util.spec_from_file_location("poison_baseline_" + mode, inner) + baseline = importlib.util.module_from_spec(spec) + spec.loader.exec_module(baseline) + need(baseline.CACHE_RAN is True, "ordinary loader did not consume poison") + p = v.Portable(root) + p.check_all() + p.install() + rejected = [] + reject("nested_" + mode + "_pyc_bypass", lambda: p.load("frozen/outer.py"), + "NESTED_SOURCE_ASSERT", rejected) + need(f"frozen/old/recursive/{name}.py" in p.executed, "nested source not recorded") + return {"poison_was_executable": True, "rejection": rejected[0]} + + +def small_math_checks(v, package, work): + p = v.Portable(package) + p.check_all() + p.install() + m = p.load("frozen/upstream/research/r438-rehost-projectors/verify.py") + m.source_check() + q = [2, 0, 0, 0, 0, 0, 0, 0] + target = m.QPERP | (1 << 8) | (1 << 9) + parts = (m.QPERP, 1 << 8, 1 << 9) + m.factorization(parts, target) + m.factorization(tuple(reversed(parts)), target) + need(m.operator_check([q], {(target, parts), (target, tuple(reversed(parts)))}) == 256, + "equivalent factor order") + rejected = [] + reject("missing_pending_axis", lambda: m.factorization(parts[:-1], target), + "wrong pending operator", rejected) + reject("overlapping_factor", lambda: m.factorization(parts + (1 << 8,), target), + "overlapping factors", rejected) + wrong = (m.QPERP, 1 << 8, 1 << 10) + need(sum(x.bit_count() for x in wrong) == target.bit_count(), "equal-rank mutant") + reject("equal_rank_wrong_axis", lambda: m.operator_check([q], {(target, wrong)}), + "exterior address operator", rejected) + original = m.require + try: + m.require = lambda ok, message: ( + None if message == "exterior address operator" else original(ok, message)) + try: + reject("removed_axis_gate", lambda: m.operator_check([q], {(target, wrong)}), + "exterior address operator", []) + except ValueError as error: + need(str(error) == "control accepted: removed_axis_gate", + "mathematical control sensitivity") + else: + raise ValueError("mathematical control did not notice its deleted check") + finally: + m.require = original + # Exercise the actual extracted-function path with an authenticated assert + # fixture, so -O cannot turn the advertised AST preservation into a no-op. + ast_root = fixture(work / "ast", { + "frozen/upstream/probe.py": + b'def probe():\n assert False, "AST_SOURCE_ASSERT"\n', + }) + ast_portable = v.Portable(ast_root) + original_root, original_portable = m.ROOT, m.PORTABLE + try: + m.ROOT = ast_root / "frozen/upstream" + m.PORTABLE = ast_portable + reject("extracted_ast_assert", lambda: m.function("probe.py", "probe")(), + "AST_SOURCE_ASSERT", rejected) + (m.ROOT / "probe.py").write_bytes(b"def probe():\n return True\n") + reject("extracted_ast_changed_source", lambda: m.function("probe.py", "probe")(), + "frozen input changed", rejected) + finally: + m.ROOT, m.PORTABLE = original_root, original_portable + return {"equivalent_factor_columns": 256, "rejections": rejected, + "deleted_named_check_detected": True} + + +def real_receipt_checks(v, package): + """Exercise full equality on every registered stage receipt, without regeneration.""" + p = v.Portable(package) + names = {name for _, receipts in v.STAGES.values() for name in receipts} + if "NATIVE-REMAINDERS.json" in p.hashes: + names.add("NATIVE-REMAINDERS.json") + result = [] + + def leaves(value, prefix=()): + if isinstance(value, dict): + for key in sorted(value): + yield from leaves(value[key], prefix + (key,)) + elif isinstance(value, list): + for index, item in enumerate(value): + yield from leaves(item, prefix + (index,)) + else: + yield prefix, value + + for name in sorted(names): + raw = p.authenticate(package / name) + value = json.loads(raw) + need(p.equal(package / name, copy.deepcopy(value)), "complete real receipt") + path, old = max(leaves(value), key=lambda item: len(item[0])) + need(len(path) > 1, "real receipt has no nested coverage") + changed = copy.deepcopy(value) + parent = changed + for key in path[:-1]: + parent = parent[key] + if type(old) is bool: + parent[path[-1]] = not old + elif type(old) is int: + parent[path[-1]] = old + 1 + elif type(old) is str: + parent[path[-1]] = old + "-MUTATED" + else: + parent[path[-1]] = {"mutation": True} + rejected = [] + reject("nested_real_receipt_mutation", lambda: p.equal(package / name, changed), + "receipt mismatch", rejected) + omitted = copy.deepcopy(value) + parent = omitted + for key in path[:-1]: + parent = parent[key] + del parent[path[-1]] + reject("nested_real_receipt_omission", lambda: p.equal(package / name, omitted), + "receipt mismatch", rejected) + result.append({"receipt": name, "sha256": digest(raw), + "deep_path": list(path), "rejections": rejected}) + return result + + +def run_child(package): + v, source_hash = module_from_bytes(package / "verify.py") + with tempfile.TemporaryDirectory(prefix="b02-control-fixtures-") as temporary: + work = Path(temporary) + ordinary = lightweight_checks(v, work) + caches = {mode: nested_cache_check(v, work, mode) + for mode in ("timestamp", "unchecked_hash")} + math = small_math_checks(v, package, work) + receipts = real_receipt_checks(v, package) + return {"parent_optimization": sys.flags.optimize, "verifier_sha256": source_hash, + "compact_rejections": ordinary, "nested_cache_controls": caches, + "mathematical_controls": math, + "complete_real_receipt_controls": receipts, + "receipt_check_deletion_detected": True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--package", type=Path, default=DEFAULT_PACKAGE) + parser.add_argument("--child", action="store_true") + parser.add_argument("--output", type=Path) + args = parser.parse_args() + package = args.package.resolve() + if args.child: + print(canonical(run_child(package))) + return + runs = [] + for optimized in (False, True): + command = [sys.executable, "-I", "-B"] + if optimized: + command.append("-O") + command += [str(Path(__file__).resolve()), "--package", str(package), "--child"] + proc = subprocess.run(command, capture_output=True, text=True) + need(proc.returncode == 0, proc.stderr + proc.stdout) + runs.append(json.loads(proc.stdout)) + raw = (package / "FROZEN-SHA256.json").read_bytes() + result = {"status": "PASS_COMPACT_B02_SOURCE_AND_CONTROL_AUDIT", + "package": str(package), "frozen_manifest_sha256": digest(raw), + "runs": runs, "no_large_mathematical_replay": True, "no_new_kappa": True} + if args.output: + args.output.write_text(json.dumps(result, sort_keys=True, indent=2) + "\n") + print(canonical(result)) + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json new file mode 100644 index 0000000000..b91851a201 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json @@ -0,0 +1,766 @@ +{ + "credits": "Helper-boundary worker produced the local construction; recursive worker consumes the matrices for independent native/controller proof.", + "matrices": { + "H": [ + 1036415283661483055370725603511566, + 1070162718833860655252415705677972, + 913915497657147954176671388951646, + 576460752303423479, + 1674505857799009492785444438825909, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 1526540145583431110673909446000278, + 1040476903838139702513783528667801, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1070162880113253823957019113734294, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 1070162718833860655252414631936150, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 1529532302407315612232278352442624, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "J": [ + 10141204792381678636617894477822, + 2586086450219622122178300732227837, + 2596069203522677974138045681631483, + 576460752303423479, + 2596069508172130947062333349822703, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 2589398147263233519358262897489001, + 2592804859121274158248396097259625, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1734130175483521454113919338159274, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 2074858996396035948243032183350476, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 2442837275459972787867604775352560, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "K": [ + 496, + 22, + 511, + 25, + 21, + 499, + 26, + 508, + 118, + 488, + 415, + 491, + 117, + 412, + 217, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 179, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 445, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "L": [ + 404, + 441, + 155, + 250, + 60, + 495, + 156, + 284, + 480 + ], + "M": [ + 507, + 135, + 238, + 349, + 185, + 437, + 205, + 503, + 425 + ], + "Q": [ + 1042531700710895278146990364013296, + 1526540308279482042409494624157801, + 1682190989137900326552069994865829, + 0, + 921600791422035497542574462622554, + 0, + 0, + 0, + 1073178137525049858492988477770495, + 1553616728556518638350079291405040, + 0, + 0, + 0, + 0, + 1982335066357198573061492811291708, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1674506019365132786402062805607514, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1036431132679051517257484991041008, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "R": [ + 2589350794613531190557368506174057, + 2592804956806343667382164200032873, + 1038469893558777993237266185156761, + 1557652228689369648595160641472409, + 1042515851693473237291206096564751, + 2442767368115540430947582893869040, + 2441038363121116511671115291243110, + 915714330356837041509315611365683, + 610243267866258280493576590715221 + ], + "S": [ + 225, + 417, + 201, + 313, + 295, + 120, + 38, + 155, + 477 + ], + "Sinv": [ + 43, + 161, + 290, + 454, + 93, + 451, + 120, + 401, + 123 + ], + "T": [ + 27005497495235163711001915436751240971677696135583288063766105706741579349310975170977082948942593034384124170753551160675481188779711399536295168442368, + 99908190091605275632239339970067680019025367132750467940474644816037907458865055880235350688074091478051108014408377611232016771727974627469688832, + 1047485394135065443701623255477489686632900077964060675229960310755451710304162005590749808296242139432591743315085120421899491529363474656816214482878464, + 602682472698635789189888055095636197443107236501843914049228400711488945430140662080641369573760331853909812515739447229904791375442680104964156565834251437153072162671017925167165660673606252756992, + 303677223771925211869821961499258626139535698675484016411989774562373671494307716063921552388791132727552768090312503330786376453984345060603923931266689200009623174057113476304298929314687141019648, + 195194365245495944341481261648073133572272862542897794273962501187786691073452317586459236497369227146247256772850199570885305773971564910346240, + 153440575038873008775847884525688865377116183929077964643622146651043456106538639598586961160921726666127842979817829493558944440647077319627700699136, + 1190798115349103470973311495128572162797837538415636639484312584265092871256278683061697763835180016622930471255437754230992768369543986881336108577539859005763750014662387950455054490024674328576, + 149538558243127962978343484314617283296404579323300179069569778163640793172893178962494986617351731137183080863871478297665119566826946855470192458922019698658109399803249885175158439247145093562368 + ], + "U": [ + 404, + 441, + 155, + 0, + 250, + 0, + 0, + 0, + 60, + 495, + 0, + 0, + 0, + 0, + 156, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 284, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 480, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "W": [ + 100, + 431, + 356, + 25, + 239, + 499, + 26, + 508, + 74, + 7, + 415, + 491, + 117, + 412, + 69, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 431, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 93, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "selected": [ + 0, + 1, + 2, + 4, + 8, + 9, + 14, + 30, + 59 + ] + }, + "producer": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/helper-boundary/BIT-TRANSVECTION.json", + "producer_receipt_sha256_at_snapshot": "fcfa9a35ea971b8f2e5344e5ac21be412d5d60ccee7c24c6ee7faa9866ab859e", + "schema": "bit-code-matrix-input-v1", + "source_gzip_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "source_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "source_word": "/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz" +} diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json new file mode 100644 index 0000000000..19e4a9e5fa --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json @@ -0,0 +1,26017 @@ +{ + "inplace_code_CNOTs": [ + [ + 105, + 110 + ], + [ + 104, + 110 + ], + [ + 102, + 110 + ], + [ + 97, + 110 + ], + [ + 96, + 110 + ], + [ + 95, + 110 + ], + [ + 93, + 110 + ], + [ + 90, + 110 + ], + [ + 88, + 110 + ], + [ + 87, + 110 + ], + [ + 86, + 110 + ], + [ + 81, + 110 + ], + [ + 80, + 110 + ], + [ + 78, + 110 + ], + [ + 75, + 110 + ], + [ + 73, + 110 + ], + [ + 68, + 110 + ], + [ + 67, + 110 + ], + [ + 66, + 110 + ], + [ + 64, + 110 + ], + [ + 62, + 110 + ], + [ + 59, + 110 + ], + [ + 56, + 110 + ], + [ + 55, + 110 + ], + [ + 54, + 110 + ], + [ + 53, + 110 + ], + [ + 50, + 110 + ], + [ + 48, + 110 + ], + [ + 47, + 110 + ], + [ + 45, + 110 + ], + [ + 44, + 110 + ], + [ + 41, + 110 + ], + [ + 40, + 110 + ], + [ + 37, + 110 + ], + [ + 35, + 110 + ], + [ + 33, + 110 + ], + [ + 31, + 110 + ], + [ + 29, + 110 + ], + [ + 28, + 110 + ], + [ + 25, + 110 + ], + [ + 24, + 110 + ], + [ + 21, + 110 + ], + [ + 19, + 110 + ], + [ + 17, + 110 + ], + [ + 15, + 110 + ], + [ + 13, + 110 + ], + [ + 12, + 110 + ], + [ + 11, + 110 + ], + [ + 10, + 110 + ], + [ + 8, + 110 + ], + [ + 7, + 110 + ], + [ + 2, + 110 + ], + [ + 106, + 109 + ], + [ + 103, + 109 + ], + [ + 102, + 109 + ], + [ + 97, + 109 + ], + [ + 96, + 109 + ], + [ + 95, + 109 + ], + [ + 93, + 109 + ], + [ + 90, + 109 + ], + [ + 88, + 109 + ], + [ + 85, + 109 + ], + [ + 84, + 109 + ], + [ + 83, + 109 + ], + [ + 82, + 109 + ], + [ + 79, + 109 + ], + [ + 77, + 109 + ], + [ + 76, + 109 + ], + [ + 74, + 109 + ], + [ + 68, + 109 + ], + [ + 67, + 109 + ], + [ + 66, + 109 + ], + [ + 64, + 109 + ], + [ + 62, + 109 + ], + [ + 58, + 109 + ], + [ + 57, + 109 + ], + [ + 52, + 109 + ], + [ + 51, + 109 + ], + [ + 49, + 109 + ], + [ + 46, + 109 + ], + [ + 45, + 109 + ], + [ + 44, + 109 + ], + [ + 41, + 109 + ], + [ + 40, + 109 + ], + [ + 37, + 109 + ], + [ + 35, + 109 + ], + [ + 33, + 109 + ], + [ + 31, + 109 + ], + [ + 30, + 109 + ], + [ + 27, + 109 + ], + [ + 26, + 109 + ], + [ + 23, + 109 + ], + [ + 22, + 109 + ], + [ + 20, + 109 + ], + [ + 18, + 109 + ], + [ + 16, + 109 + ], + [ + 14, + 109 + ], + [ + 13, + 109 + ], + [ + 12, + 109 + ], + [ + 11, + 109 + ], + [ + 10, + 109 + ], + [ + 9, + 109 + ], + [ + 7, + 109 + ], + [ + 4, + 109 + ], + [ + 1, + 109 + ], + [ + 0, + 109 + ], + [ + 106, + 108 + ], + [ + 103, + 108 + ], + [ + 101, + 108 + ], + [ + 100, + 108 + ], + [ + 99, + 108 + ], + [ + 98, + 108 + ], + [ + 94, + 108 + ], + [ + 92, + 108 + ], + [ + 91, + 108 + ], + [ + 89, + 108 + ], + [ + 87, + 108 + ], + [ + 86, + 108 + ], + [ + 81, + 108 + ], + [ + 80, + 108 + ], + [ + 78, + 108 + ], + [ + 75, + 108 + ], + [ + 73, + 108 + ], + [ + 68, + 108 + ], + [ + 67, + 108 + ], + [ + 66, + 108 + ], + [ + 64, + 108 + ], + [ + 62, + 108 + ], + [ + 58, + 108 + ], + [ + 57, + 108 + ], + [ + 52, + 108 + ], + [ + 51, + 108 + ], + [ + 49, + 108 + ], + [ + 46, + 108 + ], + [ + 43, + 108 + ], + [ + 42, + 108 + ], + [ + 39, + 108 + ], + [ + 38, + 108 + ], + [ + 36, + 108 + ], + [ + 34, + 108 + ], + [ + 32, + 108 + ], + [ + 30, + 108 + ], + [ + 29, + 108 + ], + [ + 28, + 108 + ], + [ + 25, + 108 + ], + [ + 24, + 108 + ], + [ + 21, + 108 + ], + [ + 19, + 108 + ], + [ + 17, + 108 + ], + [ + 15, + 108 + ], + [ + 14, + 108 + ], + [ + 13, + 108 + ], + [ + 12, + 108 + ], + [ + 11, + 108 + ], + [ + 10, + 108 + ], + [ + 9, + 108 + ], + [ + 7, + 108 + ], + [ + 2, + 108 + ], + [ + 1, + 108 + ], + [ + 0, + 108 + ], + [ + 109, + 108 + ], + [ + 108, + 109 + ], + [ + 109, + 108 + ], + [ + 105, + 107 + ], + [ + 104, + 107 + ], + [ + 101, + 107 + ], + [ + 100, + 107 + ], + [ + 99, + 107 + ], + [ + 98, + 107 + ], + [ + 94, + 107 + ], + [ + 92, + 107 + ], + [ + 91, + 107 + ], + [ + 89, + 107 + ], + [ + 85, + 107 + ], + [ + 84, + 107 + ], + [ + 83, + 107 + ], + [ + 82, + 107 + ], + [ + 79, + 107 + ], + [ + 77, + 107 + ], + [ + 76, + 107 + ], + [ + 74, + 107 + ], + [ + 68, + 107 + ], + [ + 67, + 107 + ], + [ + 66, + 107 + ], + [ + 64, + 107 + ], + [ + 62, + 107 + ], + [ + 59, + 107 + ], + [ + 56, + 107 + ], + [ + 55, + 107 + ], + [ + 54, + 107 + ], + [ + 53, + 107 + ], + [ + 50, + 107 + ], + [ + 48, + 107 + ], + [ + 47, + 107 + ], + [ + 43, + 107 + ], + [ + 42, + 107 + ], + [ + 39, + 107 + ], + [ + 38, + 107 + ], + [ + 36, + 107 + ], + [ + 34, + 107 + ], + [ + 32, + 107 + ], + [ + 27, + 107 + ], + [ + 26, + 107 + ], + [ + 23, + 107 + ], + [ + 22, + 107 + ], + [ + 20, + 107 + ], + [ + 18, + 107 + ], + [ + 16, + 107 + ], + [ + 13, + 107 + ], + [ + 12, + 107 + ], + [ + 11, + 107 + ], + [ + 10, + 107 + ], + [ + 8, + 107 + ], + [ + 7, + 107 + ], + [ + 4, + 107 + ], + [ + 110, + 107 + ], + [ + 107, + 110 + ], + [ + 110, + 107 + ], + [ + 109, + 106 + ], + [ + 108, + 106 + ], + [ + 102, + 106 + ], + [ + 97, + 106 + ], + [ + 96, + 106 + ], + [ + 95, + 106 + ], + [ + 93, + 106 + ], + [ + 90, + 106 + ], + [ + 88, + 106 + ], + [ + 87, + 106 + ], + [ + 86, + 106 + ], + [ + 81, + 106 + ], + [ + 80, + 106 + ], + [ + 78, + 106 + ], + [ + 75, + 106 + ], + [ + 73, + 106 + ], + [ + 72, + 106 + ], + [ + 71, + 106 + ], + [ + 70, + 106 + ], + [ + 69, + 106 + ], + [ + 65, + 106 + ], + [ + 63, + 106 + ], + [ + 61, + 106 + ], + [ + 60, + 106 + ], + [ + 56, + 106 + ], + [ + 55, + 106 + ], + [ + 54, + 106 + ], + [ + 53, + 106 + ], + [ + 50, + 106 + ], + [ + 48, + 106 + ], + [ + 47, + 106 + ], + [ + 43, + 106 + ], + [ + 42, + 106 + ], + [ + 39, + 106 + ], + [ + 38, + 106 + ], + [ + 36, + 106 + ], + [ + 34, + 106 + ], + [ + 32, + 106 + ], + [ + 30, + 106 + ], + [ + 27, + 106 + ], + [ + 26, + 106 + ], + [ + 23, + 106 + ], + [ + 22, + 106 + ], + [ + 20, + 106 + ], + [ + 18, + 106 + ], + [ + 16, + 106 + ], + [ + 14, + 106 + ], + [ + 13, + 106 + ], + [ + 12, + 106 + ], + [ + 11, + 106 + ], + [ + 10, + 106 + ], + [ + 7, + 106 + ], + [ + 2, + 106 + ], + [ + 1, + 106 + ], + [ + 110, + 105 + ], + [ + 107, + 105 + ], + [ + 102, + 105 + ], + [ + 97, + 105 + ], + [ + 96, + 105 + ], + [ + 95, + 105 + ], + [ + 93, + 105 + ], + [ + 90, + 105 + ], + [ + 88, + 105 + ], + [ + 85, + 105 + ], + [ + 84, + 105 + ], + [ + 83, + 105 + ], + [ + 82, + 105 + ], + [ + 79, + 105 + ], + [ + 77, + 105 + ], + [ + 76, + 105 + ], + [ + 74, + 105 + ], + [ + 72, + 105 + ], + [ + 71, + 105 + ], + [ + 70, + 105 + ], + [ + 69, + 105 + ], + [ + 65, + 105 + ], + [ + 63, + 105 + ], + [ + 61, + 105 + ], + [ + 60, + 105 + ], + [ + 59, + 105 + ], + [ + 58, + 105 + ], + [ + 57, + 105 + ], + [ + 52, + 105 + ], + [ + 51, + 105 + ], + [ + 49, + 105 + ], + [ + 46, + 105 + ], + [ + 43, + 105 + ], + [ + 42, + 105 + ], + [ + 39, + 105 + ], + [ + 38, + 105 + ], + [ + 36, + 105 + ], + [ + 34, + 105 + ], + [ + 32, + 105 + ], + [ + 29, + 105 + ], + [ + 28, + 105 + ], + [ + 25, + 105 + ], + [ + 24, + 105 + ], + [ + 21, + 105 + ], + [ + 19, + 105 + ], + [ + 17, + 105 + ], + [ + 15, + 105 + ], + [ + 13, + 105 + ], + [ + 12, + 105 + ], + [ + 11, + 105 + ], + [ + 10, + 105 + ], + [ + 9, + 105 + ], + [ + 8, + 105 + ], + [ + 7, + 105 + ], + [ + 4, + 105 + ], + [ + 0, + 105 + ], + [ + 110, + 104 + ], + [ + 107, + 104 + ], + [ + 101, + 104 + ], + [ + 100, + 104 + ], + [ + 99, + 104 + ], + [ + 98, + 104 + ], + [ + 94, + 104 + ], + [ + 92, + 104 + ], + [ + 91, + 104 + ], + [ + 89, + 104 + ], + [ + 87, + 104 + ], + [ + 86, + 104 + ], + [ + 81, + 104 + ], + [ + 80, + 104 + ], + [ + 78, + 104 + ], + [ + 75, + 104 + ], + [ + 73, + 104 + ], + [ + 72, + 104 + ], + [ + 71, + 104 + ], + [ + 70, + 104 + ], + [ + 69, + 104 + ], + [ + 65, + 104 + ], + [ + 63, + 104 + ], + [ + 61, + 104 + ], + [ + 60, + 104 + ], + [ + 59, + 104 + ], + [ + 58, + 104 + ], + [ + 57, + 104 + ], + [ + 52, + 104 + ], + [ + 51, + 104 + ], + [ + 49, + 104 + ], + [ + 46, + 104 + ], + [ + 45, + 104 + ], + [ + 44, + 104 + ], + [ + 41, + 104 + ], + [ + 40, + 104 + ], + [ + 37, + 104 + ], + [ + 35, + 104 + ], + [ + 33, + 104 + ], + [ + 31, + 104 + ], + [ + 27, + 104 + ], + [ + 26, + 104 + ], + [ + 23, + 104 + ], + [ + 22, + 104 + ], + [ + 20, + 104 + ], + [ + 18, + 104 + ], + [ + 16, + 104 + ], + [ + 13, + 104 + ], + [ + 12, + 104 + ], + [ + 11, + 104 + ], + [ + 10, + 104 + ], + [ + 9, + 104 + ], + [ + 8, + 104 + ], + [ + 7, + 104 + ], + [ + 2, + 104 + ], + [ + 0, + 104 + ], + [ + 105, + 104 + ], + [ + 104, + 105 + ], + [ + 105, + 104 + ], + [ + 109, + 103 + ], + [ + 108, + 103 + ], + [ + 101, + 103 + ], + [ + 100, + 103 + ], + [ + 99, + 103 + ], + [ + 98, + 103 + ], + [ + 94, + 103 + ], + [ + 92, + 103 + ], + [ + 91, + 103 + ], + [ + 89, + 103 + ], + [ + 85, + 103 + ], + [ + 84, + 103 + ], + [ + 83, + 103 + ], + [ + 82, + 103 + ], + [ + 79, + 103 + ], + [ + 77, + 103 + ], + [ + 76, + 103 + ], + [ + 74, + 103 + ], + [ + 72, + 103 + ], + [ + 71, + 103 + ], + [ + 70, + 103 + ], + [ + 69, + 103 + ], + [ + 65, + 103 + ], + [ + 63, + 103 + ], + [ + 61, + 103 + ], + [ + 60, + 103 + ], + [ + 56, + 103 + ], + [ + 55, + 103 + ], + [ + 54, + 103 + ], + [ + 53, + 103 + ], + [ + 50, + 103 + ], + [ + 48, + 103 + ], + [ + 47, + 103 + ], + [ + 45, + 103 + ], + [ + 44, + 103 + ], + [ + 41, + 103 + ], + [ + 40, + 103 + ], + [ + 37, + 103 + ], + [ + 35, + 103 + ], + [ + 33, + 103 + ], + [ + 31, + 103 + ], + [ + 30, + 103 + ], + [ + 29, + 103 + ], + [ + 28, + 103 + ], + [ + 25, + 103 + ], + [ + 24, + 103 + ], + [ + 21, + 103 + ], + [ + 19, + 103 + ], + [ + 17, + 103 + ], + [ + 15, + 103 + ], + [ + 14, + 103 + ], + [ + 13, + 103 + ], + [ + 12, + 103 + ], + [ + 11, + 103 + ], + [ + 10, + 103 + ], + [ + 7, + 103 + ], + [ + 4, + 103 + ], + [ + 1, + 103 + ], + [ + 106, + 103 + ], + [ + 103, + 106 + ], + [ + 106, + 103 + ], + [ + 110, + 102 + ], + [ + 109, + 102 + ], + [ + 104, + 102 + ], + [ + 103, + 102 + ], + [ + 99, + 102 + ], + [ + 96, + 102 + ], + [ + 95, + 102 + ], + [ + 93, + 102 + ], + [ + 90, + 102 + ], + [ + 88, + 102 + ], + [ + 86, + 102 + ], + [ + 84, + 102 + ], + [ + 83, + 102 + ], + [ + 76, + 102 + ], + [ + 75, + 102 + ], + [ + 74, + 102 + ], + [ + 73, + 102 + ], + [ + 71, + 102 + ], + [ + 69, + 102 + ], + [ + 68, + 102 + ], + [ + 66, + 102 + ], + [ + 65, + 102 + ], + [ + 63, + 102 + ], + [ + 59, + 102 + ], + [ + 58, + 102 + ], + [ + 56, + 102 + ], + [ + 53, + 102 + ], + [ + 51, + 102 + ], + [ + 50, + 102 + ], + [ + 48, + 102 + ], + [ + 45, + 102 + ], + [ + 42, + 102 + ], + [ + 41, + 102 + ], + [ + 38, + 102 + ], + [ + 36, + 102 + ], + [ + 34, + 102 + ], + [ + 33, + 102 + ], + [ + 31, + 102 + ], + [ + 29, + 102 + ], + [ + 27, + 102 + ], + [ + 24, + 102 + ], + [ + 22, + 102 + ], + [ + 21, + 102 + ], + [ + 20, + 102 + ], + [ + 19, + 102 + ], + [ + 18, + 102 + ], + [ + 17, + 102 + ], + [ + 16, + 102 + ], + [ + 15, + 102 + ], + [ + 13, + 102 + ], + [ + 11, + 102 + ], + [ + 6, + 102 + ], + [ + 108, + 101 + ], + [ + 107, + 101 + ], + [ + 106, + 101 + ], + [ + 105, + 101 + ], + [ + 99, + 101 + ], + [ + 96, + 101 + ], + [ + 94, + 101 + ], + [ + 92, + 101 + ], + [ + 91, + 101 + ], + [ + 89, + 101 + ], + [ + 87, + 101 + ], + [ + 85, + 101 + ], + [ + 82, + 101 + ], + [ + 81, + 101 + ], + [ + 76, + 101 + ], + [ + 75, + 101 + ], + [ + 74, + 101 + ], + [ + 73, + 101 + ], + [ + 72, + 101 + ], + [ + 70, + 101 + ], + [ + 67, + 101 + ], + [ + 65, + 101 + ], + [ + 63, + 101 + ], + [ + 59, + 101 + ], + [ + 58, + 101 + ], + [ + 56, + 101 + ], + [ + 53, + 101 + ], + [ + 49, + 101 + ], + [ + 47, + 101 + ], + [ + 46, + 101 + ], + [ + 45, + 101 + ], + [ + 42, + 101 + ], + [ + 41, + 101 + ], + [ + 38, + 101 + ], + [ + 37, + 101 + ], + [ + 35, + 101 + ], + [ + 32, + 101 + ], + [ + 30, + 101 + ], + [ + 28, + 101 + ], + [ + 26, + 101 + ], + [ + 25, + 101 + ], + [ + 23, + 101 + ], + [ + 21, + 101 + ], + [ + 20, + 101 + ], + [ + 19, + 101 + ], + [ + 18, + 101 + ], + [ + 17, + 101 + ], + [ + 16, + 101 + ], + [ + 15, + 101 + ], + [ + 14, + 101 + ], + [ + 12, + 101 + ], + [ + 10, + 101 + ], + [ + 9, + 101 + ], + [ + 8, + 101 + ], + [ + 6, + 101 + ], + [ + 1, + 101 + ], + [ + 102, + 101 + ], + [ + 101, + 102 + ], + [ + 102, + 101 + ], + [ + 110, + 100 + ], + [ + 109, + 100 + ], + [ + 104, + 100 + ], + [ + 103, + 100 + ], + [ + 97, + 100 + ], + [ + 95, + 100 + ], + [ + 93, + 100 + ], + [ + 90, + 100 + ], + [ + 88, + 100 + ], + [ + 86, + 100 + ], + [ + 84, + 100 + ], + [ + 83, + 100 + ], + [ + 80, + 100 + ], + [ + 79, + 100 + ], + [ + 78, + 100 + ], + [ + 77, + 100 + ], + [ + 71, + 100 + ], + [ + 69, + 100 + ], + [ + 68, + 100 + ], + [ + 66, + 100 + ], + [ + 64, + 100 + ], + [ + 62, + 100 + ], + [ + 61, + 100 + ], + [ + 60, + 100 + ], + [ + 58, + 100 + ], + [ + 56, + 100 + ], + [ + 53, + 100 + ], + [ + 49, + 100 + ], + [ + 47, + 100 + ], + [ + 46, + 100 + ], + [ + 45, + 100 + ], + [ + 42, + 100 + ], + [ + 41, + 100 + ], + [ + 38, + 100 + ], + [ + 37, + 100 + ], + [ + 35, + 100 + ], + [ + 32, + 100 + ], + [ + 28, + 100 + ], + [ + 26, + 100 + ], + [ + 25, + 100 + ], + [ + 23, + 100 + ], + [ + 21, + 100 + ], + [ + 20, + 100 + ], + [ + 19, + 100 + ], + [ + 18, + 100 + ], + [ + 17, + 100 + ], + [ + 16, + 100 + ], + [ + 15, + 100 + ], + [ + 12, + 100 + ], + [ + 10, + 100 + ], + [ + 9, + 100 + ], + [ + 6, + 100 + ], + [ + 4, + 100 + ], + [ + 2, + 100 + ], + [ + 110, + 99 + ], + [ + 109, + 99 + ], + [ + 104, + 99 + ], + [ + 103, + 99 + ], + [ + 102, + 99 + ], + [ + 101, + 99 + ], + [ + 95, + 99 + ], + [ + 93, + 99 + ], + [ + 90, + 99 + ], + [ + 88, + 99 + ], + [ + 87, + 99 + ], + [ + 85, + 99 + ], + [ + 82, + 99 + ], + [ + 81, + 99 + ], + [ + 80, + 99 + ], + [ + 79, + 99 + ], + [ + 78, + 99 + ], + [ + 77, + 99 + ], + [ + 72, + 99 + ], + [ + 70, + 99 + ], + [ + 67, + 99 + ], + [ + 64, + 99 + ], + [ + 62, + 99 + ], + [ + 61, + 99 + ], + [ + 60, + 99 + ], + [ + 59, + 99 + ], + [ + 57, + 99 + ], + [ + 55, + 99 + ], + [ + 54, + 99 + ], + [ + 52, + 99 + ], + [ + 49, + 99 + ], + [ + 47, + 99 + ], + [ + 46, + 99 + ], + [ + 44, + 99 + ], + [ + 43, + 99 + ], + [ + 40, + 99 + ], + [ + 39, + 99 + ], + [ + 37, + 99 + ], + [ + 35, + 99 + ], + [ + 32, + 99 + ], + [ + 29, + 99 + ], + [ + 27, + 99 + ], + [ + 24, + 99 + ], + [ + 22, + 99 + ], + [ + 21, + 99 + ], + [ + 20, + 99 + ], + [ + 19, + 99 + ], + [ + 18, + 99 + ], + [ + 17, + 99 + ], + [ + 16, + 99 + ], + [ + 15, + 99 + ], + [ + 13, + 99 + ], + [ + 11, + 99 + ], + [ + 9, + 99 + ], + [ + 6, + 99 + ], + [ + 4, + 99 + ], + [ + 2, + 99 + ], + [ + 0, + 99 + ], + [ + 110, + 98 + ], + [ + 109, + 98 + ], + [ + 104, + 98 + ], + [ + 103, + 98 + ], + [ + 97, + 98 + ], + [ + 95, + 98 + ], + [ + 93, + 98 + ], + [ + 90, + 98 + ], + [ + 88, + 98 + ], + [ + 87, + 98 + ], + [ + 85, + 98 + ], + [ + 82, + 98 + ], + [ + 81, + 98 + ], + [ + 76, + 98 + ], + [ + 75, + 98 + ], + [ + 74, + 98 + ], + [ + 73, + 98 + ], + [ + 72, + 98 + ], + [ + 70, + 98 + ], + [ + 67, + 98 + ], + [ + 65, + 98 + ], + [ + 63, + 98 + ], + [ + 57, + 98 + ], + [ + 55, + 98 + ], + [ + 54, + 98 + ], + [ + 52, + 98 + ], + [ + 51, + 98 + ], + [ + 50, + 98 + ], + [ + 48, + 98 + ], + [ + 44, + 98 + ], + [ + 43, + 98 + ], + [ + 40, + 98 + ], + [ + 39, + 98 + ], + [ + 36, + 98 + ], + [ + 34, + 98 + ], + [ + 33, + 98 + ], + [ + 31, + 98 + ], + [ + 28, + 98 + ], + [ + 26, + 98 + ], + [ + 25, + 98 + ], + [ + 23, + 98 + ], + [ + 21, + 98 + ], + [ + 20, + 98 + ], + [ + 19, + 98 + ], + [ + 18, + 98 + ], + [ + 17, + 98 + ], + [ + 16, + 98 + ], + [ + 15, + 98 + ], + [ + 12, + 98 + ], + [ + 10, + 98 + ], + [ + 6, + 98 + ], + [ + 0, + 98 + ], + [ + 100, + 98 + ], + [ + 98, + 100 + ], + [ + 100, + 98 + ], + [ + 110, + 97 + ], + [ + 109, + 97 + ], + [ + 104, + 97 + ], + [ + 103, + 97 + ], + [ + 102, + 97 + ], + [ + 99, + 97 + ], + [ + 93, + 97 + ], + [ + 91, + 97 + ], + [ + 88, + 97 + ], + [ + 87, + 97 + ], + [ + 86, + 97 + ], + [ + 85, + 97 + ], + [ + 84, + 97 + ], + [ + 80, + 97 + ], + [ + 79, + 97 + ], + [ + 74, + 97 + ], + [ + 73, + 97 + ], + [ + 72, + 97 + ], + [ + 71, + 97 + ], + [ + 66, + 97 + ], + [ + 64, + 97 + ], + [ + 63, + 97 + ], + [ + 60, + 97 + ], + [ + 59, + 97 + ], + [ + 58, + 97 + ], + [ + 57, + 97 + ], + [ + 56, + 97 + ], + [ + 55, + 97 + ], + [ + 51, + 97 + ], + [ + 50, + 97 + ], + [ + 47, + 97 + ], + [ + 46, + 97 + ], + [ + 45, + 97 + ], + [ + 44, + 97 + ], + [ + 39, + 97 + ], + [ + 38, + 97 + ], + [ + 36, + 97 + ], + [ + 35, + 97 + ], + [ + 32, + 97 + ], + [ + 31, + 97 + ], + [ + 30, + 97 + ], + [ + 29, + 97 + ], + [ + 28, + 97 + ], + [ + 27, + 97 + ], + [ + 26, + 97 + ], + [ + 25, + 97 + ], + [ + 24, + 97 + ], + [ + 23, + 97 + ], + [ + 22, + 97 + ], + [ + 21, + 97 + ], + [ + 20, + 97 + ], + [ + 15, + 97 + ], + [ + 14, + 97 + ], + [ + 13, + 97 + ], + [ + 9, + 97 + ], + [ + 7, + 97 + ], + [ + 6, + 97 + ], + [ + 4, + 97 + ], + [ + 2, + 97 + ], + [ + 1, + 97 + ], + [ + 108, + 96 + ], + [ + 107, + 96 + ], + [ + 106, + 96 + ], + [ + 105, + 96 + ], + [ + 102, + 96 + ], + [ + 101, + 96 + ], + [ + 94, + 96 + ], + [ + 92, + 96 + ], + [ + 91, + 96 + ], + [ + 89, + 96 + ], + [ + 86, + 96 + ], + [ + 84, + 96 + ], + [ + 83, + 96 + ], + [ + 80, + 96 + ], + [ + 79, + 96 + ], + [ + 78, + 96 + ], + [ + 77, + 96 + ], + [ + 71, + 96 + ], + [ + 69, + 96 + ], + [ + 68, + 96 + ], + [ + 66, + 96 + ], + [ + 64, + 96 + ], + [ + 62, + 96 + ], + [ + 61, + 96 + ], + [ + 60, + 96 + ], + [ + 59, + 96 + ], + [ + 57, + 96 + ], + [ + 55, + 96 + ], + [ + 54, + 96 + ], + [ + 52, + 96 + ], + [ + 51, + 96 + ], + [ + 50, + 96 + ], + [ + 48, + 96 + ], + [ + 44, + 96 + ], + [ + 43, + 96 + ], + [ + 40, + 96 + ], + [ + 39, + 96 + ], + [ + 36, + 96 + ], + [ + 34, + 96 + ], + [ + 33, + 96 + ], + [ + 31, + 96 + ], + [ + 30, + 96 + ], + [ + 28, + 96 + ], + [ + 26, + 96 + ], + [ + 25, + 96 + ], + [ + 23, + 96 + ], + [ + 21, + 96 + ], + [ + 20, + 96 + ], + [ + 19, + 96 + ], + [ + 18, + 96 + ], + [ + 17, + 96 + ], + [ + 16, + 96 + ], + [ + 15, + 96 + ], + [ + 14, + 96 + ], + [ + 12, + 96 + ], + [ + 10, + 96 + ], + [ + 8, + 96 + ], + [ + 6, + 96 + ], + [ + 4, + 96 + ], + [ + 2, + 96 + ], + [ + 1, + 96 + ], + [ + 0, + 96 + ], + [ + 99, + 96 + ], + [ + 96, + 99 + ], + [ + 99, + 96 + ], + [ + 97, + 95 + ], + [ + 93, + 95 + ], + [ + 91, + 95 + ], + [ + 90, + 95 + ], + [ + 89, + 95 + ], + [ + 88, + 95 + ], + [ + 80, + 95 + ], + [ + 79, + 95 + ], + [ + 78, + 95 + ], + [ + 77, + 95 + ], + [ + 76, + 95 + ], + [ + 75, + 95 + ], + [ + 74, + 95 + ], + [ + 73, + 95 + ], + [ + 72, + 95 + ], + [ + 71, + 95 + ], + [ + 70, + 95 + ], + [ + 69, + 95 + ], + [ + 68, + 95 + ], + [ + 67, + 95 + ], + [ + 66, + 95 + ], + [ + 59, + 95 + ], + [ + 58, + 95 + ], + [ + 57, + 95 + ], + [ + 56, + 95 + ], + [ + 55, + 95 + ], + [ + 54, + 95 + ], + [ + 53, + 95 + ], + [ + 52, + 95 + ], + [ + 37, + 95 + ], + [ + 36, + 95 + ], + [ + 35, + 95 + ], + [ + 34, + 95 + ], + [ + 33, + 95 + ], + [ + 32, + 95 + ], + [ + 31, + 95 + ], + [ + 21, + 95 + ], + [ + 20, + 95 + ], + [ + 19, + 95 + ], + [ + 18, + 95 + ], + [ + 17, + 95 + ], + [ + 16, + 95 + ], + [ + 15, + 95 + ], + [ + 13, + 95 + ], + [ + 12, + 95 + ], + [ + 11, + 95 + ], + [ + 10, + 95 + ], + [ + 4, + 95 + ], + [ + 2, + 95 + ], + [ + 0, + 95 + ], + [ + 108, + 94 + ], + [ + 107, + 94 + ], + [ + 106, + 94 + ], + [ + 105, + 94 + ], + [ + 100, + 94 + ], + [ + 98, + 94 + ], + [ + 92, + 94 + ], + [ + 91, + 94 + ], + [ + 89, + 94 + ], + [ + 86, + 94 + ], + [ + 84, + 94 + ], + [ + 83, + 94 + ], + [ + 76, + 94 + ], + [ + 75, + 94 + ], + [ + 74, + 94 + ], + [ + 73, + 94 + ], + [ + 71, + 94 + ], + [ + 69, + 94 + ], + [ + 68, + 94 + ], + [ + 66, + 94 + ], + [ + 65, + 94 + ], + [ + 63, + 94 + ], + [ + 57, + 94 + ], + [ + 55, + 94 + ], + [ + 54, + 94 + ], + [ + 52, + 94 + ], + [ + 49, + 94 + ], + [ + 47, + 94 + ], + [ + 46, + 94 + ], + [ + 44, + 94 + ], + [ + 43, + 94 + ], + [ + 40, + 94 + ], + [ + 39, + 94 + ], + [ + 37, + 94 + ], + [ + 35, + 94 + ], + [ + 32, + 94 + ], + [ + 30, + 94 + ], + [ + 29, + 94 + ], + [ + 27, + 94 + ], + [ + 24, + 94 + ], + [ + 22, + 94 + ], + [ + 21, + 94 + ], + [ + 20, + 94 + ], + [ + 19, + 94 + ], + [ + 18, + 94 + ], + [ + 17, + 94 + ], + [ + 16, + 94 + ], + [ + 15, + 94 + ], + [ + 14, + 94 + ], + [ + 13, + 94 + ], + [ + 11, + 94 + ], + [ + 9, + 94 + ], + [ + 8, + 94 + ], + [ + 6, + 94 + ], + [ + 1, + 94 + ], + [ + 0, + 94 + ], + [ + 97, + 94 + ], + [ + 94, + 97 + ], + [ + 97, + 94 + ], + [ + 108, + 93 + ], + [ + 107, + 93 + ], + [ + 106, + 93 + ], + [ + 105, + 93 + ], + [ + 101, + 93 + ], + [ + 100, + 93 + ], + [ + 99, + 93 + ], + [ + 98, + 93 + ], + [ + 95, + 93 + ], + [ + 94, + 93 + ], + [ + 92, + 93 + ], + [ + 91, + 93 + ], + [ + 90, + 93 + ], + [ + 88, + 93 + ], + [ + 87, + 93 + ], + [ + 86, + 93 + ], + [ + 85, + 93 + ], + [ + 84, + 93 + ], + [ + 78, + 93 + ], + [ + 77, + 93 + ], + [ + 76, + 93 + ], + [ + 75, + 93 + ], + [ + 70, + 93 + ], + [ + 69, + 93 + ], + [ + 68, + 93 + ], + [ + 67, + 93 + ], + [ + 64, + 93 + ], + [ + 63, + 93 + ], + [ + 60, + 93 + ], + [ + 59, + 93 + ], + [ + 58, + 93 + ], + [ + 57, + 93 + ], + [ + 56, + 93 + ], + [ + 55, + 93 + ], + [ + 49, + 93 + ], + [ + 48, + 93 + ], + [ + 43, + 93 + ], + [ + 42, + 93 + ], + [ + 41, + 93 + ], + [ + 40, + 93 + ], + [ + 36, + 93 + ], + [ + 35, + 93 + ], + [ + 32, + 93 + ], + [ + 31, + 93 + ], + [ + 29, + 93 + ], + [ + 28, + 93 + ], + [ + 27, + 93 + ], + [ + 26, + 93 + ], + [ + 25, + 93 + ], + [ + 24, + 93 + ], + [ + 23, + 93 + ], + [ + 22, + 93 + ], + [ + 19, + 93 + ], + [ + 18, + 93 + ], + [ + 17, + 93 + ], + [ + 16, + 93 + ], + [ + 12, + 93 + ], + [ + 11, + 93 + ], + [ + 10, + 93 + ], + [ + 8, + 93 + ], + [ + 7, + 93 + ], + [ + 6, + 93 + ], + [ + 108, + 92 + ], + [ + 107, + 92 + ], + [ + 106, + 92 + ], + [ + 105, + 92 + ], + [ + 101, + 92 + ], + [ + 100, + 92 + ], + [ + 99, + 92 + ], + [ + 98, + 92 + ], + [ + 90, + 92 + ], + [ + 89, + 92 + ], + [ + 83, + 92 + ], + [ + 82, + 92 + ], + [ + 81, + 92 + ], + [ + 78, + 92 + ], + [ + 77, + 92 + ], + [ + 76, + 92 + ], + [ + 75, + 92 + ], + [ + 70, + 92 + ], + [ + 69, + 92 + ], + [ + 68, + 92 + ], + [ + 67, + 92 + ], + [ + 65, + 92 + ], + [ + 62, + 92 + ], + [ + 61, + 92 + ], + [ + 58, + 92 + ], + [ + 57, + 92 + ], + [ + 56, + 92 + ], + [ + 55, + 92 + ], + [ + 51, + 92 + ], + [ + 50, + 92 + ], + [ + 47, + 92 + ], + [ + 46, + 92 + ], + [ + 45, + 92 + ], + [ + 44, + 92 + ], + [ + 39, + 92 + ], + [ + 38, + 92 + ], + [ + 36, + 92 + ], + [ + 35, + 92 + ], + [ + 32, + 92 + ], + [ + 31, + 92 + ], + [ + 29, + 92 + ], + [ + 28, + 92 + ], + [ + 27, + 92 + ], + [ + 26, + 92 + ], + [ + 25, + 92 + ], + [ + 24, + 92 + ], + [ + 23, + 92 + ], + [ + 22, + 92 + ], + [ + 21, + 92 + ], + [ + 20, + 92 + ], + [ + 15, + 92 + ], + [ + 13, + 92 + ], + [ + 9, + 92 + ], + [ + 8, + 92 + ], + [ + 7, + 92 + ], + [ + 6, + 92 + ], + [ + 95, + 92 + ], + [ + 92, + 95 + ], + [ + 95, + 92 + ], + [ + 108, + 91 + ], + [ + 107, + 91 + ], + [ + 106, + 91 + ], + [ + 105, + 91 + ], + [ + 100, + 91 + ], + [ + 98, + 91 + ], + [ + 97, + 91 + ], + [ + 94, + 91 + ], + [ + 93, + 91 + ], + [ + 92, + 91 + ], + [ + 90, + 91 + ], + [ + 89, + 91 + ], + [ + 88, + 91 + ], + [ + 86, + 91 + ], + [ + 84, + 91 + ], + [ + 83, + 91 + ], + [ + 76, + 91 + ], + [ + 75, + 91 + ], + [ + 74, + 91 + ], + [ + 73, + 91 + ], + [ + 71, + 91 + ], + [ + 69, + 91 + ], + [ + 68, + 91 + ], + [ + 66, + 91 + ], + [ + 65, + 91 + ], + [ + 63, + 91 + ], + [ + 57, + 91 + ], + [ + 55, + 91 + ], + [ + 54, + 91 + ], + [ + 52, + 91 + ], + [ + 49, + 91 + ], + [ + 47, + 91 + ], + [ + 46, + 91 + ], + [ + 44, + 91 + ], + [ + 43, + 91 + ], + [ + 40, + 91 + ], + [ + 39, + 91 + ], + [ + 37, + 91 + ], + [ + 35, + 91 + ], + [ + 32, + 91 + ], + [ + 30, + 91 + ], + [ + 29, + 91 + ], + [ + 27, + 91 + ], + [ + 24, + 91 + ], + [ + 22, + 91 + ], + [ + 21, + 91 + ], + [ + 20, + 91 + ], + [ + 19, + 91 + ], + [ + 18, + 91 + ], + [ + 17, + 91 + ], + [ + 16, + 91 + ], + [ + 15, + 91 + ], + [ + 14, + 91 + ], + [ + 13, + 91 + ], + [ + 11, + 91 + ], + [ + 9, + 91 + ], + [ + 8, + 91 + ], + [ + 6, + 91 + ], + [ + 1, + 91 + ], + [ + 0, + 91 + ], + [ + 108, + 90 + ], + [ + 107, + 90 + ], + [ + 106, + 90 + ], + [ + 105, + 90 + ], + [ + 100, + 90 + ], + [ + 98, + 90 + ], + [ + 97, + 90 + ], + [ + 95, + 90 + ], + [ + 88, + 90 + ], + [ + 86, + 90 + ], + [ + 84, + 90 + ], + [ + 83, + 90 + ], + [ + 80, + 90 + ], + [ + 79, + 90 + ], + [ + 78, + 90 + ], + [ + 77, + 90 + ], + [ + 72, + 90 + ], + [ + 70, + 90 + ], + [ + 67, + 90 + ], + [ + 65, + 90 + ], + [ + 63, + 90 + ], + [ + 59, + 90 + ], + [ + 58, + 90 + ], + [ + 56, + 90 + ], + [ + 53, + 90 + ], + [ + 49, + 90 + ], + [ + 47, + 90 + ], + [ + 46, + 90 + ], + [ + 44, + 90 + ], + [ + 43, + 90 + ], + [ + 40, + 90 + ], + [ + 39, + 90 + ], + [ + 36, + 90 + ], + [ + 34, + 90 + ], + [ + 33, + 90 + ], + [ + 31, + 90 + ], + [ + 30, + 90 + ], + [ + 29, + 90 + ], + [ + 27, + 90 + ], + [ + 24, + 90 + ], + [ + 22, + 90 + ], + [ + 14, + 90 + ], + [ + 12, + 90 + ], + [ + 10, + 90 + ], + [ + 9, + 90 + ], + [ + 8, + 90 + ], + [ + 6, + 90 + ], + [ + 4, + 90 + ], + [ + 2, + 90 + ], + [ + 1, + 90 + ], + [ + 93, + 90 + ], + [ + 90, + 93 + ], + [ + 93, + 90 + ], + [ + 110, + 89 + ], + [ + 108, + 89 + ], + [ + 105, + 89 + ], + [ + 103, + 89 + ], + [ + 102, + 89 + ], + [ + 101, + 89 + ], + [ + 100, + 89 + ], + [ + 95, + 89 + ], + [ + 94, + 89 + ], + [ + 91, + 89 + ], + [ + 87, + 89 + ], + [ + 81, + 89 + ], + [ + 79, + 89 + ], + [ + 78, + 89 + ], + [ + 76, + 89 + ], + [ + 73, + 89 + ], + [ + 72, + 89 + ], + [ + 71, + 89 + ], + [ + 66, + 89 + ], + [ + 64, + 89 + ], + [ + 62, + 89 + ], + [ + 61, + 89 + ], + [ + 60, + 89 + ], + [ + 59, + 89 + ], + [ + 58, + 89 + ], + [ + 57, + 89 + ], + [ + 54, + 89 + ], + [ + 53, + 89 + ], + [ + 50, + 89 + ], + [ + 49, + 89 + ], + [ + 48, + 89 + ], + [ + 46, + 89 + ], + [ + 45, + 89 + ], + [ + 44, + 89 + ], + [ + 43, + 89 + ], + [ + 42, + 89 + ], + [ + 41, + 89 + ], + [ + 40, + 89 + ], + [ + 39, + 89 + ], + [ + 38, + 89 + ], + [ + 37, + 89 + ], + [ + 36, + 89 + ], + [ + 31, + 89 + ], + [ + 29, + 89 + ], + [ + 28, + 89 + ], + [ + 23, + 89 + ], + [ + 22, + 89 + ], + [ + 20, + 89 + ], + [ + 19, + 89 + ], + [ + 16, + 89 + ], + [ + 15, + 89 + ], + [ + 14, + 89 + ], + [ + 12, + 89 + ], + [ + 11, + 89 + ], + [ + 8, + 89 + ], + [ + 7, + 89 + ], + [ + 5, + 89 + ], + [ + 0, + 89 + ], + [ + 108, + 88 + ], + [ + 107, + 88 + ], + [ + 106, + 88 + ], + [ + 105, + 88 + ], + [ + 101, + 88 + ], + [ + 100, + 88 + ], + [ + 99, + 88 + ], + [ + 98, + 88 + ], + [ + 94, + 88 + ], + [ + 93, + 88 + ], + [ + 87, + 88 + ], + [ + 86, + 88 + ], + [ + 85, + 88 + ], + [ + 84, + 88 + ], + [ + 78, + 88 + ], + [ + 77, + 88 + ], + [ + 76, + 88 + ], + [ + 75, + 88 + ], + [ + 70, + 88 + ], + [ + 69, + 88 + ], + [ + 68, + 88 + ], + [ + 67, + 88 + ], + [ + 64, + 88 + ], + [ + 63, + 88 + ], + [ + 60, + 88 + ], + [ + 59, + 88 + ], + [ + 58, + 88 + ], + [ + 57, + 88 + ], + [ + 56, + 88 + ], + [ + 55, + 88 + ], + [ + 49, + 88 + ], + [ + 48, + 88 + ], + [ + 43, + 88 + ], + [ + 42, + 88 + ], + [ + 41, + 88 + ], + [ + 40, + 88 + ], + [ + 36, + 88 + ], + [ + 35, + 88 + ], + [ + 32, + 88 + ], + [ + 31, + 88 + ], + [ + 29, + 88 + ], + [ + 28, + 88 + ], + [ + 27, + 88 + ], + [ + 26, + 88 + ], + [ + 25, + 88 + ], + [ + 24, + 88 + ], + [ + 23, + 88 + ], + [ + 22, + 88 + ], + [ + 19, + 88 + ], + [ + 18, + 88 + ], + [ + 17, + 88 + ], + [ + 16, + 88 + ], + [ + 12, + 88 + ], + [ + 11, + 88 + ], + [ + 10, + 88 + ], + [ + 8, + 88 + ], + [ + 7, + 88 + ], + [ + 6, + 88 + ], + [ + 91, + 88 + ], + [ + 88, + 91 + ], + [ + 91, + 88 + ], + [ + 110, + 87 + ], + [ + 109, + 87 + ], + [ + 108, + 87 + ], + [ + 107, + 87 + ], + [ + 106, + 87 + ], + [ + 105, + 87 + ], + [ + 104, + 87 + ], + [ + 103, + 87 + ], + [ + 89, + 87 + ], + [ + 85, + 87 + ], + [ + 83, + 87 + ], + [ + 82, + 87 + ], + [ + 81, + 87 + ], + [ + 80, + 87 + ], + [ + 79, + 87 + ], + [ + 78, + 87 + ], + [ + 77, + 87 + ], + [ + 76, + 87 + ], + [ + 75, + 87 + ], + [ + 74, + 87 + ], + [ + 73, + 87 + ], + [ + 59, + 87 + ], + [ + 58, + 87 + ], + [ + 57, + 87 + ], + [ + 56, + 87 + ], + [ + 55, + 87 + ], + [ + 54, + 87 + ], + [ + 53, + 87 + ], + [ + 52, + 87 + ], + [ + 51, + 87 + ], + [ + 50, + 87 + ], + [ + 49, + 87 + ], + [ + 48, + 87 + ], + [ + 47, + 87 + ], + [ + 46, + 87 + ], + [ + 30, + 87 + ], + [ + 29, + 87 + ], + [ + 28, + 87 + ], + [ + 27, + 87 + ], + [ + 26, + 87 + ], + [ + 25, + 87 + ], + [ + 24, + 87 + ], + [ + 23, + 87 + ], + [ + 22, + 87 + ], + [ + 21, + 87 + ], + [ + 20, + 87 + ], + [ + 19, + 87 + ], + [ + 18, + 87 + ], + [ + 17, + 87 + ], + [ + 16, + 87 + ], + [ + 15, + 87 + ], + [ + 14, + 87 + ], + [ + 9, + 87 + ], + [ + 8, + 87 + ], + [ + 4, + 87 + ], + [ + 2, + 87 + ], + [ + 1, + 87 + ], + [ + 0, + 87 + ], + [ + 108, + 86 + ], + [ + 107, + 86 + ], + [ + 106, + 86 + ], + [ + 105, + 86 + ], + [ + 100, + 86 + ], + [ + 98, + 86 + ], + [ + 97, + 86 + ], + [ + 94, + 86 + ], + [ + 92, + 86 + ], + [ + 91, + 86 + ], + [ + 84, + 86 + ], + [ + 83, + 86 + ], + [ + 76, + 86 + ], + [ + 75, + 86 + ], + [ + 74, + 86 + ], + [ + 73, + 86 + ], + [ + 71, + 86 + ], + [ + 69, + 86 + ], + [ + 68, + 86 + ], + [ + 66, + 86 + ], + [ + 65, + 86 + ], + [ + 63, + 86 + ], + [ + 57, + 86 + ], + [ + 55, + 86 + ], + [ + 54, + 86 + ], + [ + 52, + 86 + ], + [ + 49, + 86 + ], + [ + 47, + 86 + ], + [ + 46, + 86 + ], + [ + 44, + 86 + ], + [ + 43, + 86 + ], + [ + 40, + 86 + ], + [ + 39, + 86 + ], + [ + 37, + 86 + ], + [ + 35, + 86 + ], + [ + 32, + 86 + ], + [ + 30, + 86 + ], + [ + 29, + 86 + ], + [ + 27, + 86 + ], + [ + 24, + 86 + ], + [ + 22, + 86 + ], + [ + 21, + 86 + ], + [ + 20, + 86 + ], + [ + 19, + 86 + ], + [ + 18, + 86 + ], + [ + 17, + 86 + ], + [ + 16, + 86 + ], + [ + 15, + 86 + ], + [ + 14, + 86 + ], + [ + 13, + 86 + ], + [ + 11, + 86 + ], + [ + 9, + 86 + ], + [ + 8, + 86 + ], + [ + 6, + 86 + ], + [ + 1, + 86 + ], + [ + 0, + 86 + ], + [ + 89, + 86 + ], + [ + 86, + 89 + ], + [ + 89, + 86 + ], + [ + 109, + 85 + ], + [ + 107, + 85 + ], + [ + 106, + 85 + ], + [ + 104, + 85 + ], + [ + 102, + 85 + ], + [ + 100, + 85 + ], + [ + 99, + 85 + ], + [ + 97, + 85 + ], + [ + 95, + 85 + ], + [ + 94, + 85 + ], + [ + 93, + 85 + ], + [ + 92, + 85 + ], + [ + 87, + 85 + ], + [ + 86, + 85 + ], + [ + 84, + 85 + ], + [ + 83, + 85 + ], + [ + 82, + 85 + ], + [ + 81, + 85 + ], + [ + 79, + 85 + ], + [ + 77, + 85 + ], + [ + 76, + 85 + ], + [ + 74, + 85 + ], + [ + 71, + 85 + ], + [ + 69, + 85 + ], + [ + 68, + 85 + ], + [ + 66, + 85 + ], + [ + 64, + 85 + ], + [ + 63, + 85 + ], + [ + 60, + 85 + ], + [ + 59, + 85 + ], + [ + 57, + 85 + ], + [ + 56, + 85 + ], + [ + 53, + 85 + ], + [ + 52, + 85 + ], + [ + 50, + 85 + ], + [ + 49, + 85 + ], + [ + 47, + 85 + ], + [ + 44, + 85 + ], + [ + 42, + 85 + ], + [ + 41, + 85 + ], + [ + 39, + 85 + ], + [ + 37, + 85 + ], + [ + 36, + 85 + ], + [ + 35, + 85 + ], + [ + 34, + 85 + ], + [ + 33, + 85 + ], + [ + 32, + 85 + ], + [ + 31, + 85 + ], + [ + 28, + 85 + ], + [ + 27, + 85 + ], + [ + 24, + 85 + ], + [ + 23, + 85 + ], + [ + 20, + 85 + ], + [ + 18, + 85 + ], + [ + 17, + 85 + ], + [ + 15, + 85 + ], + [ + 14, + 85 + ], + [ + 13, + 85 + ], + [ + 11, + 85 + ], + [ + 10, + 85 + ], + [ + 9, + 85 + ], + [ + 5, + 85 + ], + [ + 109, + 84 + ], + [ + 107, + 84 + ], + [ + 106, + 84 + ], + [ + 104, + 84 + ], + [ + 102, + 84 + ], + [ + 100, + 84 + ], + [ + 99, + 84 + ], + [ + 97, + 84 + ], + [ + 91, + 84 + ], + [ + 90, + 84 + ], + [ + 89, + 84 + ], + [ + 88, + 84 + ], + [ + 82, + 84 + ], + [ + 79, + 84 + ], + [ + 77, + 84 + ], + [ + 76, + 84 + ], + [ + 74, + 84 + ], + [ + 71, + 84 + ], + [ + 69, + 84 + ], + [ + 68, + 84 + ], + [ + 66, + 84 + ], + [ + 65, + 84 + ], + [ + 62, + 84 + ], + [ + 61, + 84 + ], + [ + 57, + 84 + ], + [ + 56, + 84 + ], + [ + 53, + 84 + ], + [ + 52, + 84 + ], + [ + 51, + 84 + ], + [ + 48, + 84 + ], + [ + 46, + 84 + ], + [ + 45, + 84 + ], + [ + 43, + 84 + ], + [ + 40, + 84 + ], + [ + 38, + 84 + ], + [ + 37, + 84 + ], + [ + 36, + 84 + ], + [ + 35, + 84 + ], + [ + 34, + 84 + ], + [ + 33, + 84 + ], + [ + 32, + 84 + ], + [ + 31, + 84 + ], + [ + 28, + 84 + ], + [ + 27, + 84 + ], + [ + 24, + 84 + ], + [ + 23, + 84 + ], + [ + 21, + 84 + ], + [ + 19, + 84 + ], + [ + 16, + 84 + ], + [ + 14, + 84 + ], + [ + 12, + 84 + ], + [ + 5, + 84 + ], + [ + 87, + 84 + ], + [ + 84, + 87 + ], + [ + 87, + 84 + ], + [ + 108, + 83 + ], + [ + 107, + 83 + ], + [ + 106, + 83 + ], + [ + 105, + 83 + ], + [ + 100, + 83 + ], + [ + 98, + 83 + ], + [ + 97, + 83 + ], + [ + 94, + 83 + ], + [ + 92, + 83 + ], + [ + 91, + 83 + ], + [ + 89, + 83 + ], + [ + 86, + 83 + ], + [ + 85, + 83 + ], + [ + 84, + 83 + ], + [ + 82, + 83 + ], + [ + 81, + 83 + ], + [ + 76, + 83 + ], + [ + 75, + 83 + ], + [ + 74, + 83 + ], + [ + 73, + 83 + ], + [ + 71, + 83 + ], + [ + 69, + 83 + ], + [ + 68, + 83 + ], + [ + 66, + 83 + ], + [ + 65, + 83 + ], + [ + 63, + 83 + ], + [ + 57, + 83 + ], + [ + 55, + 83 + ], + [ + 54, + 83 + ], + [ + 52, + 83 + ], + [ + 49, + 83 + ], + [ + 47, + 83 + ], + [ + 46, + 83 + ], + [ + 44, + 83 + ], + [ + 43, + 83 + ], + [ + 40, + 83 + ], + [ + 39, + 83 + ], + [ + 37, + 83 + ], + [ + 35, + 83 + ], + [ + 32, + 83 + ], + [ + 30, + 83 + ], + [ + 29, + 83 + ], + [ + 27, + 83 + ], + [ + 24, + 83 + ], + [ + 22, + 83 + ], + [ + 21, + 83 + ], + [ + 20, + 83 + ], + [ + 19, + 83 + ], + [ + 18, + 83 + ], + [ + 17, + 83 + ], + [ + 16, + 83 + ], + [ + 15, + 83 + ], + [ + 14, + 83 + ], + [ + 13, + 83 + ], + [ + 11, + 83 + ], + [ + 9, + 83 + ], + [ + 8, + 83 + ], + [ + 6, + 83 + ], + [ + 1, + 83 + ], + [ + 0, + 83 + ], + [ + 110, + 82 + ], + [ + 109, + 82 + ], + [ + 104, + 82 + ], + [ + 103, + 82 + ], + [ + 100, + 82 + ], + [ + 98, + 82 + ], + [ + 97, + 82 + ], + [ + 94, + 82 + ], + [ + 92, + 82 + ], + [ + 91, + 82 + ], + [ + 89, + 82 + ], + [ + 87, + 82 + ], + [ + 81, + 82 + ], + [ + 80, + 82 + ], + [ + 79, + 82 + ], + [ + 78, + 82 + ], + [ + 77, + 82 + ], + [ + 71, + 82 + ], + [ + 69, + 82 + ], + [ + 68, + 82 + ], + [ + 66, + 82 + ], + [ + 65, + 82 + ], + [ + 63, + 82 + ], + [ + 59, + 82 + ], + [ + 58, + 82 + ], + [ + 56, + 82 + ], + [ + 53, + 82 + ], + [ + 51, + 82 + ], + [ + 50, + 82 + ], + [ + 48, + 82 + ], + [ + 44, + 82 + ], + [ + 43, + 82 + ], + [ + 40, + 82 + ], + [ + 39, + 82 + ], + [ + 37, + 82 + ], + [ + 35, + 82 + ], + [ + 32, + 82 + ], + [ + 28, + 82 + ], + [ + 26, + 82 + ], + [ + 25, + 82 + ], + [ + 23, + 82 + ], + [ + 13, + 82 + ], + [ + 11, + 82 + ], + [ + 6, + 82 + ], + [ + 4, + 82 + ], + [ + 2, + 82 + ], + [ + 85, + 82 + ], + [ + 82, + 85 + ], + [ + 85, + 82 + ], + [ + 109, + 81 + ], + [ + 107, + 81 + ], + [ + 106, + 81 + ], + [ + 104, + 81 + ], + [ + 102, + 81 + ], + [ + 100, + 81 + ], + [ + 99, + 81 + ], + [ + 97, + 81 + ], + [ + 95, + 81 + ], + [ + 94, + 81 + ], + [ + 93, + 81 + ], + [ + 92, + 81 + ], + [ + 86, + 81 + ], + [ + 85, + 81 + ], + [ + 79, + 81 + ], + [ + 77, + 81 + ], + [ + 76, + 81 + ], + [ + 74, + 81 + ], + [ + 71, + 81 + ], + [ + 69, + 81 + ], + [ + 68, + 81 + ], + [ + 66, + 81 + ], + [ + 64, + 81 + ], + [ + 63, + 81 + ], + [ + 60, + 81 + ], + [ + 59, + 81 + ], + [ + 57, + 81 + ], + [ + 56, + 81 + ], + [ + 53, + 81 + ], + [ + 52, + 81 + ], + [ + 50, + 81 + ], + [ + 49, + 81 + ], + [ + 47, + 81 + ], + [ + 44, + 81 + ], + [ + 42, + 81 + ], + [ + 41, + 81 + ], + [ + 39, + 81 + ], + [ + 37, + 81 + ], + [ + 36, + 81 + ], + [ + 35, + 81 + ], + [ + 34, + 81 + ], + [ + 33, + 81 + ], + [ + 32, + 81 + ], + [ + 31, + 81 + ], + [ + 28, + 81 + ], + [ + 27, + 81 + ], + [ + 24, + 81 + ], + [ + 23, + 81 + ], + [ + 20, + 81 + ], + [ + 18, + 81 + ], + [ + 17, + 81 + ], + [ + 15, + 81 + ], + [ + 14, + 81 + ], + [ + 13, + 81 + ], + [ + 11, + 81 + ], + [ + 10, + 81 + ], + [ + 9, + 81 + ], + [ + 5, + 81 + ], + [ + 83, + 81 + ], + [ + 81, + 83 + ], + [ + 83, + 81 + ], + [ + 110, + 80 + ], + [ + 107, + 80 + ], + [ + 106, + 80 + ], + [ + 103, + 80 + ], + [ + 100, + 80 + ], + [ + 99, + 80 + ], + [ + 96, + 80 + ], + [ + 95, + 80 + ], + [ + 92, + 80 + ], + [ + 91, + 80 + ], + [ + 88, + 80 + ], + [ + 87, + 80 + ], + [ + 84, + 80 + ], + [ + 83, + 80 + ], + [ + 81, + 80 + ], + [ + 76, + 80 + ], + [ + 73, + 80 + ], + [ + 72, + 80 + ], + [ + 69, + 80 + ], + [ + 68, + 80 + ], + [ + 58, + 80 + ], + [ + 55, + 80 + ], + [ + 53, + 80 + ], + [ + 52, + 80 + ], + [ + 51, + 80 + ], + [ + 49, + 80 + ], + [ + 46, + 80 + ], + [ + 45, + 80 + ], + [ + 42, + 80 + ], + [ + 41, + 80 + ], + [ + 38, + 80 + ], + [ + 37, + 80 + ], + [ + 34, + 80 + ], + [ + 33, + 80 + ], + [ + 30, + 80 + ], + [ + 29, + 80 + ], + [ + 26, + 80 + ], + [ + 25, + 80 + ], + [ + 22, + 80 + ], + [ + 21, + 80 + ], + [ + 18, + 80 + ], + [ + 17, + 80 + ], + [ + 11, + 80 + ], + [ + 10, + 80 + ], + [ + 7, + 80 + ], + [ + 6, + 80 + ], + [ + 5, + 80 + ], + [ + 4, + 80 + ], + [ + 2, + 80 + ], + [ + 1, + 80 + ], + [ + 109, + 79 + ], + [ + 107, + 79 + ], + [ + 106, + 79 + ], + [ + 104, + 79 + ], + [ + 99, + 79 + ], + [ + 98, + 79 + ], + [ + 97, + 79 + ], + [ + 96, + 79 + ], + [ + 95, + 79 + ], + [ + 94, + 79 + ], + [ + 89, + 79 + ], + [ + 88, + 79 + ], + [ + 85, + 79 + ], + [ + 84, + 79 + ], + [ + 83, + 79 + ], + [ + 82, + 79 + ], + [ + 76, + 79 + ], + [ + 73, + 79 + ], + [ + 72, + 79 + ], + [ + 71, + 79 + ], + [ + 66, + 79 + ], + [ + 65, + 79 + ], + [ + 63, + 79 + ], + [ + 59, + 79 + ], + [ + 56, + 79 + ], + [ + 55, + 79 + ], + [ + 52, + 79 + ], + [ + 50, + 79 + ], + [ + 49, + 79 + ], + [ + 48, + 79 + ], + [ + 46, + 79 + ], + [ + 45, + 79 + ], + [ + 44, + 79 + ], + [ + 43, + 79 + ], + [ + 42, + 79 + ], + [ + 41, + 79 + ], + [ + 40, + 79 + ], + [ + 39, + 79 + ], + [ + 38, + 79 + ], + [ + 35, + 79 + ], + [ + 34, + 79 + ], + [ + 33, + 79 + ], + [ + 32, + 79 + ], + [ + 30, + 79 + ], + [ + 29, + 79 + ], + [ + 28, + 79 + ], + [ + 23, + 79 + ], + [ + 22, + 79 + ], + [ + 21, + 79 + ], + [ + 18, + 79 + ], + [ + 17, + 79 + ], + [ + 13, + 79 + ], + [ + 10, + 79 + ], + [ + 7, + 79 + ], + [ + 5, + 79 + ], + [ + 1, + 79 + ], + [ + 110, + 78 + ], + [ + 107, + 78 + ], + [ + 106, + 78 + ], + [ + 103, + 78 + ], + [ + 100, + 78 + ], + [ + 99, + 78 + ], + [ + 96, + 78 + ], + [ + 94, + 78 + ], + [ + 93, + 78 + ], + [ + 90, + 78 + ], + [ + 89, + 78 + ], + [ + 87, + 78 + ], + [ + 84, + 78 + ], + [ + 83, + 78 + ], + [ + 81, + 78 + ], + [ + 75, + 78 + ], + [ + 74, + 78 + ], + [ + 71, + 78 + ], + [ + 70, + 78 + ], + [ + 67, + 78 + ], + [ + 66, + 78 + ], + [ + 59, + 78 + ], + [ + 57, + 78 + ], + [ + 56, + 78 + ], + [ + 54, + 78 + ], + [ + 51, + 78 + ], + [ + 49, + 78 + ], + [ + 46, + 78 + ], + [ + 45, + 78 + ], + [ + 42, + 78 + ], + [ + 41, + 78 + ], + [ + 38, + 78 + ], + [ + 36, + 78 + ], + [ + 35, + 78 + ], + [ + 32, + 78 + ], + [ + 31, + 78 + ], + [ + 30, + 78 + ], + [ + 29, + 78 + ], + [ + 26, + 78 + ], + [ + 25, + 78 + ], + [ + 22, + 78 + ], + [ + 20, + 78 + ], + [ + 19, + 78 + ], + [ + 16, + 78 + ], + [ + 15, + 78 + ], + [ + 13, + 78 + ], + [ + 12, + 78 + ], + [ + 7, + 78 + ], + [ + 6, + 78 + ], + [ + 5, + 78 + ], + [ + 1, + 78 + ], + [ + 0, + 78 + ], + [ + 79, + 78 + ], + [ + 78, + 79 + ], + [ + 79, + 78 + ], + [ + 109, + 77 + ], + [ + 107, + 77 + ], + [ + 106, + 77 + ], + [ + 104, + 77 + ], + [ + 99, + 77 + ], + [ + 98, + 77 + ], + [ + 97, + 77 + ], + [ + 96, + 77 + ], + [ + 93, + 77 + ], + [ + 92, + 77 + ], + [ + 91, + 77 + ], + [ + 90, + 77 + ], + [ + 85, + 77 + ], + [ + 84, + 77 + ], + [ + 83, + 77 + ], + [ + 82, + 77 + ], + [ + 75, + 77 + ], + [ + 74, + 77 + ], + [ + 70, + 77 + ], + [ + 69, + 77 + ], + [ + 68, + 77 + ], + [ + 67, + 77 + ], + [ + 65, + 77 + ], + [ + 63, + 77 + ], + [ + 58, + 77 + ], + [ + 57, + 77 + ], + [ + 54, + 77 + ], + [ + 53, + 77 + ], + [ + 50, + 77 + ], + [ + 49, + 77 + ], + [ + 48, + 77 + ], + [ + 46, + 77 + ], + [ + 45, + 77 + ], + [ + 44, + 77 + ], + [ + 43, + 77 + ], + [ + 42, + 77 + ], + [ + 41, + 77 + ], + [ + 40, + 77 + ], + [ + 39, + 77 + ], + [ + 38, + 77 + ], + [ + 37, + 77 + ], + [ + 36, + 77 + ], + [ + 31, + 77 + ], + [ + 30, + 77 + ], + [ + 29, + 77 + ], + [ + 28, + 77 + ], + [ + 23, + 77 + ], + [ + 22, + 77 + ], + [ + 20, + 77 + ], + [ + 19, + 77 + ], + [ + 16, + 77 + ], + [ + 15, + 77 + ], + [ + 12, + 77 + ], + [ + 11, + 77 + ], + [ + 7, + 77 + ], + [ + 5, + 77 + ], + [ + 4, + 77 + ], + [ + 2, + 77 + ], + [ + 1, + 77 + ], + [ + 0, + 77 + ], + [ + 80, + 77 + ], + [ + 77, + 80 + ], + [ + 80, + 77 + ], + [ + 110, + 76 + ], + [ + 109, + 76 + ], + [ + 104, + 76 + ], + [ + 103, + 76 + ], + [ + 102, + 76 + ], + [ + 97, + 76 + ], + [ + 96, + 76 + ], + [ + 94, + 76 + ], + [ + 93, + 76 + ], + [ + 91, + 76 + ], + [ + 88, + 76 + ], + [ + 83, + 76 + ], + [ + 82, + 76 + ], + [ + 81, + 76 + ], + [ + 78, + 76 + ], + [ + 77, + 76 + ], + [ + 70, + 76 + ], + [ + 69, + 76 + ], + [ + 68, + 76 + ], + [ + 67, + 76 + ], + [ + 65, + 76 + ], + [ + 62, + 76 + ], + [ + 61, + 76 + ], + [ + 59, + 76 + ], + [ + 54, + 76 + ], + [ + 53, + 76 + ], + [ + 52, + 76 + ], + [ + 49, + 76 + ], + [ + 48, + 76 + ], + [ + 43, + 76 + ], + [ + 42, + 76 + ], + [ + 41, + 76 + ], + [ + 40, + 76 + ], + [ + 37, + 76 + ], + [ + 34, + 76 + ], + [ + 33, + 76 + ], + [ + 30, + 76 + ], + [ + 29, + 76 + ], + [ + 28, + 76 + ], + [ + 27, + 76 + ], + [ + 26, + 76 + ], + [ + 25, + 76 + ], + [ + 24, + 76 + ], + [ + 23, + 76 + ], + [ + 22, + 76 + ], + [ + 21, + 76 + ], + [ + 20, + 76 + ], + [ + 15, + 76 + ], + [ + 14, + 76 + ], + [ + 13, + 76 + ], + [ + 7, + 76 + ], + [ + 6, + 76 + ], + [ + 1, + 76 + ], + [ + 0, + 76 + ], + [ + 102, + 75 + ], + [ + 100, + 75 + ], + [ + 98, + 75 + ], + [ + 96, + 75 + ], + [ + 93, + 75 + ], + [ + 92, + 75 + ], + [ + 89, + 75 + ], + [ + 88, + 75 + ], + [ + 87, + 75 + ], + [ + 85, + 75 + ], + [ + 83, + 75 + ], + [ + 80, + 75 + ], + [ + 79, + 75 + ], + [ + 71, + 75 + ], + [ + 70, + 75 + ], + [ + 67, + 75 + ], + [ + 66, + 75 + ], + [ + 63, + 75 + ], + [ + 62, + 75 + ], + [ + 61, + 75 + ], + [ + 58, + 75 + ], + [ + 56, + 75 + ], + [ + 54, + 75 + ], + [ + 52, + 75 + ], + [ + 51, + 75 + ], + [ + 50, + 75 + ], + [ + 49, + 75 + ], + [ + 44, + 75 + ], + [ + 42, + 75 + ], + [ + 41, + 75 + ], + [ + 39, + 75 + ], + [ + 35, + 75 + ], + [ + 34, + 75 + ], + [ + 33, + 75 + ], + [ + 32, + 75 + ], + [ + 30, + 75 + ], + [ + 29, + 75 + ], + [ + 27, + 75 + ], + [ + 24, + 75 + ], + [ + 22, + 75 + ], + [ + 21, + 75 + ], + [ + 20, + 75 + ], + [ + 15, + 75 + ], + [ + 14, + 75 + ], + [ + 11, + 75 + ], + [ + 7, + 75 + ], + [ + 4, + 75 + ], + [ + 2, + 75 + ], + [ + 1, + 75 + ], + [ + 0, + 75 + ], + [ + 76, + 75 + ], + [ + 75, + 76 + ], + [ + 76, + 75 + ], + [ + 110, + 74 + ], + [ + 109, + 74 + ], + [ + 104, + 74 + ], + [ + 103, + 74 + ], + [ + 102, + 74 + ], + [ + 97, + 74 + ], + [ + 96, + 74 + ], + [ + 95, + 74 + ], + [ + 92, + 74 + ], + [ + 90, + 74 + ], + [ + 89, + 74 + ], + [ + 83, + 74 + ], + [ + 82, + 74 + ], + [ + 81, + 74 + ], + [ + 80, + 74 + ], + [ + 79, + 74 + ], + [ + 72, + 74 + ], + [ + 71, + 74 + ], + [ + 66, + 74 + ], + [ + 65, + 74 + ], + [ + 62, + 74 + ], + [ + 61, + 74 + ], + [ + 58, + 74 + ], + [ + 57, + 74 + ], + [ + 56, + 74 + ], + [ + 55, + 74 + ], + [ + 49, + 74 + ], + [ + 48, + 74 + ], + [ + 43, + 74 + ], + [ + 42, + 74 + ], + [ + 41, + 74 + ], + [ + 40, + 74 + ], + [ + 36, + 74 + ], + [ + 35, + 74 + ], + [ + 32, + 74 + ], + [ + 31, + 74 + ], + [ + 30, + 74 + ], + [ + 29, + 74 + ], + [ + 28, + 74 + ], + [ + 27, + 74 + ], + [ + 26, + 74 + ], + [ + 25, + 74 + ], + [ + 24, + 74 + ], + [ + 23, + 74 + ], + [ + 22, + 74 + ], + [ + 19, + 74 + ], + [ + 18, + 74 + ], + [ + 17, + 74 + ], + [ + 16, + 74 + ], + [ + 14, + 74 + ], + [ + 12, + 74 + ], + [ + 11, + 74 + ], + [ + 10, + 74 + ], + [ + 7, + 74 + ], + [ + 6, + 74 + ], + [ + 4, + 74 + ], + [ + 2, + 74 + ], + [ + 1, + 74 + ], + [ + 102, + 73 + ], + [ + 100, + 73 + ], + [ + 98, + 73 + ], + [ + 96, + 73 + ], + [ + 95, + 73 + ], + [ + 94, + 73 + ], + [ + 91, + 73 + ], + [ + 90, + 73 + ], + [ + 87, + 73 + ], + [ + 85, + 73 + ], + [ + 83, + 73 + ], + [ + 78, + 73 + ], + [ + 77, + 73 + ], + [ + 72, + 73 + ], + [ + 69, + 73 + ], + [ + 68, + 73 + ], + [ + 63, + 73 + ], + [ + 62, + 73 + ], + [ + 61, + 73 + ], + [ + 59, + 73 + ], + [ + 57, + 73 + ], + [ + 55, + 73 + ], + [ + 53, + 73 + ], + [ + 51, + 73 + ], + [ + 50, + 73 + ], + [ + 49, + 73 + ], + [ + 44, + 73 + ], + [ + 42, + 73 + ], + [ + 41, + 73 + ], + [ + 39, + 73 + ], + [ + 37, + 73 + ], + [ + 36, + 73 + ], + [ + 31, + 73 + ], + [ + 30, + 73 + ], + [ + 29, + 73 + ], + [ + 27, + 73 + ], + [ + 24, + 73 + ], + [ + 22, + 73 + ], + [ + 19, + 73 + ], + [ + 18, + 73 + ], + [ + 17, + 73 + ], + [ + 16, + 73 + ], + [ + 14, + 73 + ], + [ + 13, + 73 + ], + [ + 12, + 73 + ], + [ + 10, + 73 + ], + [ + 7, + 73 + ], + [ + 1, + 73 + ], + [ + 74, + 73 + ], + [ + 73, + 74 + ], + [ + 74, + 73 + ], + [ + 109, + 72 + ], + [ + 107, + 72 + ], + [ + 105, + 72 + ], + [ + 103, + 72 + ], + [ + 95, + 72 + ], + [ + 94, + 72 + ], + [ + 91, + 72 + ], + [ + 90, + 72 + ], + [ + 85, + 72 + ], + [ + 84, + 72 + ], + [ + 81, + 72 + ], + [ + 79, + 72 + ], + [ + 78, + 72 + ], + [ + 75, + 72 + ], + [ + 74, + 72 + ], + [ + 68, + 72 + ], + [ + 67, + 72 + ], + [ + 63, + 72 + ], + [ + 62, + 72 + ], + [ + 60, + 72 + ], + [ + 58, + 72 + ], + [ + 57, + 72 + ], + [ + 54, + 72 + ], + [ + 53, + 72 + ], + [ + 51, + 72 + ], + [ + 48, + 72 + ], + [ + 46, + 72 + ], + [ + 41, + 72 + ], + [ + 40, + 72 + ], + [ + 39, + 72 + ], + [ + 38, + 72 + ], + [ + 37, + 72 + ], + [ + 36, + 72 + ], + [ + 33, + 72 + ], + [ + 32, + 72 + ], + [ + 30, + 72 + ], + [ + 27, + 72 + ], + [ + 26, + 72 + ], + [ + 23, + 72 + ], + [ + 22, + 72 + ], + [ + 20, + 72 + ], + [ + 19, + 72 + ], + [ + 17, + 72 + ], + [ + 14, + 72 + ], + [ + 12, + 72 + ], + [ + 11, + 72 + ], + [ + 10, + 72 + ], + [ + 9, + 72 + ], + [ + 8, + 72 + ], + [ + 6, + 72 + ], + [ + 4, + 72 + ], + [ + 1, + 72 + ], + [ + 108, + 71 + ], + [ + 107, + 71 + ], + [ + 104, + 71 + ], + [ + 103, + 71 + ], + [ + 102, + 71 + ], + [ + 99, + 71 + ], + [ + 98, + 71 + ], + [ + 94, + 71 + ], + [ + 93, + 71 + ], + [ + 90, + 71 + ], + [ + 89, + 71 + ], + [ + 78, + 71 + ], + [ + 77, + 71 + ], + [ + 74, + 71 + ], + [ + 73, + 71 + ], + [ + 68, + 71 + ], + [ + 67, + 71 + ], + [ + 65, + 71 + ], + [ + 64, + 71 + ], + [ + 63, + 71 + ], + [ + 62, + 71 + ], + [ + 59, + 71 + ], + [ + 58, + 71 + ], + [ + 57, + 71 + ], + [ + 56, + 71 + ], + [ + 55, + 71 + ], + [ + 51, + 71 + ], + [ + 50, + 71 + ], + [ + 48, + 71 + ], + [ + 43, + 71 + ], + [ + 42, + 71 + ], + [ + 39, + 71 + ], + [ + 38, + 71 + ], + [ + 37, + 71 + ], + [ + 34, + 71 + ], + [ + 32, + 71 + ], + [ + 31, + 71 + ], + [ + 29, + 71 + ], + [ + 28, + 71 + ], + [ + 27, + 71 + ], + [ + 26, + 71 + ], + [ + 21, + 71 + ], + [ + 20, + 71 + ], + [ + 17, + 71 + ], + [ + 16, + 71 + ], + [ + 14, + 71 + ], + [ + 12, + 71 + ], + [ + 11, + 71 + ], + [ + 9, + 71 + ], + [ + 5, + 71 + ], + [ + 4, + 71 + ], + [ + 0, + 71 + ], + [ + 72, + 71 + ], + [ + 71, + 72 + ], + [ + 72, + 71 + ], + [ + 109, + 70 + ], + [ + 107, + 70 + ], + [ + 105, + 70 + ], + [ + 103, + 70 + ], + [ + 93, + 70 + ], + [ + 92, + 70 + ], + [ + 89, + 70 + ], + [ + 88, + 70 + ], + [ + 85, + 70 + ], + [ + 84, + 70 + ], + [ + 81, + 70 + ], + [ + 80, + 70 + ], + [ + 77, + 70 + ], + [ + 76, + 70 + ], + [ + 73, + 70 + ], + [ + 66, + 70 + ], + [ + 63, + 70 + ], + [ + 62, + 70 + ], + [ + 60, + 70 + ], + [ + 59, + 70 + ], + [ + 56, + 70 + ], + [ + 55, + 70 + ], + [ + 52, + 70 + ], + [ + 51, + 70 + ], + [ + 48, + 70 + ], + [ + 46, + 70 + ], + [ + 41, + 70 + ], + [ + 40, + 70 + ], + [ + 39, + 70 + ], + [ + 38, + 70 + ], + [ + 35, + 70 + ], + [ + 34, + 70 + ], + [ + 31, + 70 + ], + [ + 30, + 70 + ], + [ + 27, + 70 + ], + [ + 26, + 70 + ], + [ + 23, + 70 + ], + [ + 22, + 70 + ], + [ + 21, + 70 + ], + [ + 18, + 70 + ], + [ + 16, + 70 + ], + [ + 15, + 70 + ], + [ + 14, + 70 + ], + [ + 13, + 70 + ], + [ + 9, + 70 + ], + [ + 8, + 70 + ], + [ + 6, + 70 + ], + [ + 2, + 70 + ], + [ + 1, + 70 + ], + [ + 0, + 70 + ], + [ + 108, + 69 + ], + [ + 107, + 69 + ], + [ + 104, + 69 + ], + [ + 103, + 69 + ], + [ + 102, + 69 + ], + [ + 99, + 69 + ], + [ + 98, + 69 + ], + [ + 95, + 69 + ], + [ + 92, + 69 + ], + [ + 91, + 69 + ], + [ + 88, + 69 + ], + [ + 80, + 69 + ], + [ + 79, + 69 + ], + [ + 76, + 69 + ], + [ + 75, + 69 + ], + [ + 66, + 69 + ], + [ + 65, + 69 + ], + [ + 64, + 69 + ], + [ + 63, + 69 + ], + [ + 62, + 69 + ], + [ + 54, + 69 + ], + [ + 53, + 69 + ], + [ + 52, + 69 + ], + [ + 51, + 69 + ], + [ + 50, + 69 + ], + [ + 48, + 69 + ], + [ + 43, + 69 + ], + [ + 42, + 69 + ], + [ + 39, + 69 + ], + [ + 38, + 69 + ], + [ + 36, + 69 + ], + [ + 35, + 69 + ], + [ + 33, + 69 + ], + [ + 29, + 69 + ], + [ + 28, + 69 + ], + [ + 27, + 69 + ], + [ + 26, + 69 + ], + [ + 19, + 69 + ], + [ + 18, + 69 + ], + [ + 15, + 69 + ], + [ + 14, + 69 + ], + [ + 13, + 69 + ], + [ + 10, + 69 + ], + [ + 9, + 69 + ], + [ + 5, + 69 + ], + [ + 2, + 69 + ], + [ + 70, + 69 + ], + [ + 69, + 70 + ], + [ + 70, + 69 + ], + [ + 110, + 68 + ], + [ + 108, + 68 + ], + [ + 106, + 68 + ], + [ + 104, + 68 + ], + [ + 93, + 68 + ], + [ + 92, + 68 + ], + [ + 89, + 68 + ], + [ + 88, + 68 + ], + [ + 85, + 68 + ], + [ + 84, + 68 + ], + [ + 81, + 68 + ], + [ + 80, + 68 + ], + [ + 77, + 68 + ], + [ + 76, + 68 + ], + [ + 73, + 68 + ], + [ + 72, + 68 + ], + [ + 71, + 68 + ], + [ + 65, + 68 + ], + [ + 64, + 68 + ], + [ + 61, + 68 + ], + [ + 56, + 68 + ], + [ + 55, + 68 + ], + [ + 52, + 68 + ], + [ + 51, + 68 + ], + [ + 48, + 68 + ], + [ + 46, + 68 + ], + [ + 45, + 68 + ], + [ + 44, + 68 + ], + [ + 43, + 68 + ], + [ + 42, + 68 + ], + [ + 37, + 68 + ], + [ + 36, + 68 + ], + [ + 33, + 68 + ], + [ + 32, + 68 + ], + [ + 29, + 68 + ], + [ + 28, + 68 + ], + [ + 25, + 68 + ], + [ + 24, + 68 + ], + [ + 20, + 68 + ], + [ + 19, + 68 + ], + [ + 17, + 68 + ], + [ + 13, + 68 + ], + [ + 9, + 68 + ], + [ + 6, + 68 + ], + [ + 2, + 68 + ], + [ + 0, + 68 + ], + [ + 110, + 67 + ], + [ + 109, + 67 + ], + [ + 106, + 67 + ], + [ + 105, + 67 + ], + [ + 102, + 67 + ], + [ + 99, + 67 + ], + [ + 98, + 67 + ], + [ + 95, + 67 + ], + [ + 92, + 67 + ], + [ + 91, + 67 + ], + [ + 88, + 67 + ], + [ + 80, + 67 + ], + [ + 79, + 67 + ], + [ + 76, + 67 + ], + [ + 75, + 67 + ], + [ + 72, + 67 + ], + [ + 71, + 67 + ], + [ + 61, + 67 + ], + [ + 60, + 67 + ], + [ + 59, + 67 + ], + [ + 54, + 67 + ], + [ + 53, + 67 + ], + [ + 52, + 67 + ], + [ + 51, + 67 + ], + [ + 50, + 67 + ], + [ + 48, + 67 + ], + [ + 45, + 67 + ], + [ + 44, + 67 + ], + [ + 41, + 67 + ], + [ + 40, + 67 + ], + [ + 37, + 67 + ], + [ + 34, + 67 + ], + [ + 32, + 67 + ], + [ + 31, + 67 + ], + [ + 30, + 67 + ], + [ + 25, + 67 + ], + [ + 24, + 67 + ], + [ + 23, + 67 + ], + [ + 22, + 67 + ], + [ + 21, + 67 + ], + [ + 20, + 67 + ], + [ + 17, + 67 + ], + [ + 16, + 67 + ], + [ + 13, + 67 + ], + [ + 10, + 67 + ], + [ + 9, + 67 + ], + [ + 8, + 67 + ], + [ + 5, + 67 + ], + [ + 2, + 67 + ], + [ + 1, + 67 + ], + [ + 68, + 67 + ], + [ + 67, + 68 + ], + [ + 68, + 67 + ], + [ + 109, + 66 + ], + [ + 108, + 66 + ], + [ + 106, + 66 + ], + [ + 103, + 66 + ], + [ + 102, + 66 + ], + [ + 97, + 66 + ], + [ + 96, + 66 + ], + [ + 94, + 66 + ], + [ + 92, + 66 + ], + [ + 91, + 66 + ], + [ + 89, + 66 + ], + [ + 87, + 66 + ], + [ + 86, + 66 + ], + [ + 81, + 66 + ], + [ + 79, + 66 + ], + [ + 77, + 66 + ], + [ + 76, + 66 + ], + [ + 74, + 66 + ], + [ + 68, + 66 + ], + [ + 67, + 66 + ], + [ + 65, + 66 + ], + [ + 63, + 66 + ], + [ + 60, + 66 + ], + [ + 59, + 66 + ], + [ + 58, + 66 + ], + [ + 57, + 66 + ], + [ + 52, + 66 + ], + [ + 50, + 66 + ], + [ + 48, + 66 + ], + [ + 47, + 66 + ], + [ + 43, + 66 + ], + [ + 42, + 66 + ], + [ + 39, + 66 + ], + [ + 38, + 66 + ], + [ + 37, + 66 + ], + [ + 35, + 66 + ], + [ + 33, + 66 + ], + [ + 31, + 66 + ], + [ + 30, + 66 + ], + [ + 27, + 66 + ], + [ + 26, + 66 + ], + [ + 23, + 66 + ], + [ + 22, + 66 + ], + [ + 21, + 66 + ], + [ + 19, + 66 + ], + [ + 17, + 66 + ], + [ + 15, + 66 + ], + [ + 14, + 66 + ], + [ + 7, + 66 + ], + [ + 4, + 66 + ], + [ + 1, + 66 + ], + [ + 0, + 66 + ], + [ + 102, + 65 + ], + [ + 100, + 65 + ], + [ + 98, + 65 + ], + [ + 96, + 65 + ], + [ + 93, + 65 + ], + [ + 92, + 65 + ], + [ + 89, + 65 + ], + [ + 88, + 65 + ], + [ + 86, + 65 + ], + [ + 84, + 65 + ], + [ + 82, + 65 + ], + [ + 81, + 65 + ], + [ + 78, + 65 + ], + [ + 77, + 65 + ], + [ + 74, + 65 + ], + [ + 73, + 65 + ], + [ + 72, + 65 + ], + [ + 69, + 65 + ], + [ + 68, + 65 + ], + [ + 60, + 65 + ], + [ + 57, + 65 + ], + [ + 55, + 65 + ], + [ + 53, + 65 + ], + [ + 48, + 65 + ], + [ + 47, + 65 + ], + [ + 46, + 65 + ], + [ + 45, + 65 + ], + [ + 43, + 65 + ], + [ + 40, + 65 + ], + [ + 38, + 65 + ], + [ + 37, + 65 + ], + [ + 36, + 65 + ], + [ + 31, + 65 + ], + [ + 30, + 65 + ], + [ + 29, + 65 + ], + [ + 27, + 65 + ], + [ + 24, + 65 + ], + [ + 22, + 65 + ], + [ + 21, + 65 + ], + [ + 20, + 65 + ], + [ + 15, + 65 + ], + [ + 14, + 65 + ], + [ + 11, + 65 + ], + [ + 9, + 65 + ], + [ + 7, + 65 + ], + [ + 1, + 65 + ], + [ + 110, + 64 + ], + [ + 107, + 64 + ], + [ + 106, + 64 + ], + [ + 103, + 64 + ], + [ + 100, + 64 + ], + [ + 99, + 64 + ], + [ + 96, + 64 + ], + [ + 94, + 64 + ], + [ + 93, + 64 + ], + [ + 90, + 64 + ], + [ + 89, + 64 + ], + [ + 86, + 64 + ], + [ + 85, + 64 + ], + [ + 82, + 64 + ], + [ + 80, + 64 + ], + [ + 77, + 64 + ], + [ + 76, + 64 + ], + [ + 73, + 64 + ], + [ + 72, + 64 + ], + [ + 69, + 64 + ], + [ + 68, + 64 + ], + [ + 63, + 64 + ], + [ + 62, + 64 + ], + [ + 61, + 64 + ], + [ + 60, + 64 + ], + [ + 59, + 64 + ], + [ + 58, + 64 + ], + [ + 55, + 64 + ], + [ + 53, + 64 + ], + [ + 52, + 64 + ], + [ + 50, + 64 + ], + [ + 48, + 64 + ], + [ + 47, + 64 + ], + [ + 44, + 64 + ], + [ + 43, + 64 + ], + [ + 40, + 64 + ], + [ + 39, + 64 + ], + [ + 37, + 64 + ], + [ + 34, + 64 + ], + [ + 33, + 64 + ], + [ + 30, + 64 + ], + [ + 29, + 64 + ], + [ + 26, + 64 + ], + [ + 25, + 64 + ], + [ + 22, + 64 + ], + [ + 20, + 64 + ], + [ + 19, + 64 + ], + [ + 16, + 64 + ], + [ + 15, + 64 + ], + [ + 13, + 64 + ], + [ + 12, + 64 + ], + [ + 9, + 64 + ], + [ + 7, + 64 + ], + [ + 6, + 64 + ], + [ + 5, + 64 + ], + [ + 4, + 64 + ], + [ + 2, + 64 + ], + [ + 1, + 64 + ], + [ + 65, + 64 + ], + [ + 64, + 65 + ], + [ + 65, + 64 + ], + [ + 109, + 63 + ], + [ + 108, + 63 + ], + [ + 106, + 63 + ], + [ + 103, + 63 + ], + [ + 102, + 63 + ], + [ + 97, + 63 + ], + [ + 96, + 63 + ], + [ + 95, + 63 + ], + [ + 93, + 63 + ], + [ + 90, + 63 + ], + [ + 88, + 63 + ], + [ + 87, + 63 + ], + [ + 86, + 63 + ], + [ + 81, + 63 + ], + [ + 80, + 63 + ], + [ + 78, + 63 + ], + [ + 75, + 63 + ], + [ + 73, + 63 + ], + [ + 72, + 63 + ], + [ + 71, + 63 + ], + [ + 70, + 63 + ], + [ + 69, + 63 + ], + [ + 66, + 63 + ], + [ + 65, + 63 + ], + [ + 56, + 63 + ], + [ + 55, + 63 + ], + [ + 54, + 63 + ], + [ + 53, + 63 + ], + [ + 50, + 63 + ], + [ + 48, + 63 + ], + [ + 47, + 63 + ], + [ + 43, + 63 + ], + [ + 42, + 63 + ], + [ + 39, + 63 + ], + [ + 38, + 63 + ], + [ + 36, + 63 + ], + [ + 34, + 63 + ], + [ + 32, + 63 + ], + [ + 30, + 63 + ], + [ + 27, + 63 + ], + [ + 26, + 63 + ], + [ + 23, + 63 + ], + [ + 22, + 63 + ], + [ + 20, + 63 + ], + [ + 18, + 63 + ], + [ + 16, + 63 + ], + [ + 14, + 63 + ], + [ + 13, + 63 + ], + [ + 12, + 63 + ], + [ + 11, + 63 + ], + [ + 10, + 63 + ], + [ + 7, + 63 + ], + [ + 2, + 63 + ], + [ + 1, + 63 + ], + [ + 110, + 62 + ], + [ + 109, + 62 + ], + [ + 108, + 62 + ], + [ + 107, + 62 + ], + [ + 99, + 62 + ], + [ + 98, + 62 + ], + [ + 97, + 62 + ], + [ + 96, + 62 + ], + [ + 95, + 62 + ], + [ + 94, + 62 + ], + [ + 93, + 62 + ], + [ + 92, + 62 + ], + [ + 87, + 62 + ], + [ + 86, + 62 + ], + [ + 85, + 62 + ], + [ + 84, + 62 + ], + [ + 76, + 62 + ], + [ + 75, + 62 + ], + [ + 74, + 62 + ], + [ + 73, + 62 + ], + [ + 72, + 62 + ], + [ + 71, + 62 + ], + [ + 70, + 62 + ], + [ + 69, + 62 + ], + [ + 66, + 62 + ], + [ + 65, + 62 + ], + [ + 61, + 62 + ], + [ + 60, + 62 + ], + [ + 58, + 62 + ], + [ + 57, + 62 + ], + [ + 56, + 62 + ], + [ + 55, + 62 + ], + [ + 54, + 62 + ], + [ + 53, + 62 + ], + [ + 52, + 62 + ], + [ + 48, + 62 + ], + [ + 47, + 62 + ], + [ + 46, + 62 + ], + [ + 45, + 62 + ], + [ + 44, + 62 + ], + [ + 43, + 62 + ], + [ + 42, + 62 + ], + [ + 33, + 62 + ], + [ + 32, + 62 + ], + [ + 31, + 62 + ], + [ + 30, + 62 + ], + [ + 25, + 62 + ], + [ + 24, + 62 + ], + [ + 23, + 62 + ], + [ + 22, + 62 + ], + [ + 21, + 62 + ], + [ + 20, + 62 + ], + [ + 19, + 62 + ], + [ + 18, + 62 + ], + [ + 10, + 62 + ], + [ + 7, + 62 + ], + [ + 6, + 62 + ], + [ + 5, + 62 + ], + [ + 4, + 62 + ], + [ + 1, + 62 + ], + [ + 110, + 61 + ], + [ + 109, + 61 + ], + [ + 106, + 61 + ], + [ + 105, + 61 + ], + [ + 102, + 61 + ], + [ + 99, + 61 + ], + [ + 98, + 61 + ], + [ + 94, + 61 + ], + [ + 93, + 61 + ], + [ + 90, + 61 + ], + [ + 89, + 61 + ], + [ + 78, + 61 + ], + [ + 77, + 61 + ], + [ + 74, + 61 + ], + [ + 73, + 61 + ], + [ + 70, + 61 + ], + [ + 69, + 61 + ], + [ + 60, + 61 + ], + [ + 58, + 61 + ], + [ + 57, + 61 + ], + [ + 56, + 61 + ], + [ + 55, + 61 + ], + [ + 51, + 61 + ], + [ + 50, + 61 + ], + [ + 48, + 61 + ], + [ + 45, + 61 + ], + [ + 44, + 61 + ], + [ + 41, + 61 + ], + [ + 40, + 61 + ], + [ + 36, + 61 + ], + [ + 35, + 61 + ], + [ + 33, + 61 + ], + [ + 30, + 61 + ], + [ + 25, + 61 + ], + [ + 24, + 61 + ], + [ + 23, + 61 + ], + [ + 22, + 61 + ], + [ + 19, + 61 + ], + [ + 18, + 61 + ], + [ + 15, + 61 + ], + [ + 12, + 61 + ], + [ + 11, + 61 + ], + [ + 9, + 61 + ], + [ + 8, + 61 + ], + [ + 5, + 61 + ], + [ + 4, + 61 + ], + [ + 1, + 61 + ], + [ + 0, + 61 + ], + [ + 66, + 61 + ], + [ + 61, + 66 + ], + [ + 66, + 61 + ], + [ + 110, + 60 + ], + [ + 108, + 60 + ], + [ + 105, + 60 + ], + [ + 103, + 60 + ], + [ + 102, + 60 + ], + [ + 100, + 60 + ], + [ + 99, + 60 + ], + [ + 97, + 60 + ], + [ + 95, + 60 + ], + [ + 94, + 60 + ], + [ + 93, + 60 + ], + [ + 92, + 60 + ], + [ + 87, + 60 + ], + [ + 84, + 60 + ], + [ + 82, + 60 + ], + [ + 80, + 60 + ], + [ + 78, + 60 + ], + [ + 75, + 60 + ], + [ + 73, + 60 + ], + [ + 71, + 60 + ], + [ + 69, + 60 + ], + [ + 68, + 60 + ], + [ + 66, + 60 + ], + [ + 64, + 60 + ], + [ + 58, + 60 + ], + [ + 55, + 60 + ], + [ + 54, + 60 + ], + [ + 51, + 60 + ], + [ + 48, + 60 + ], + [ + 46, + 60 + ], + [ + 44, + 60 + ], + [ + 42, + 60 + ], + [ + 41, + 60 + ], + [ + 39, + 60 + ], + [ + 37, + 60 + ], + [ + 36, + 60 + ], + [ + 35, + 60 + ], + [ + 34, + 60 + ], + [ + 33, + 60 + ], + [ + 32, + 60 + ], + [ + 31, + 60 + ], + [ + 30, + 60 + ], + [ + 29, + 60 + ], + [ + 26, + 60 + ], + [ + 25, + 60 + ], + [ + 22, + 60 + ], + [ + 21, + 60 + ], + [ + 19, + 60 + ], + [ + 16, + 60 + ], + [ + 13, + 60 + ], + [ + 11, + 60 + ], + [ + 10, + 60 + ], + [ + 8, + 60 + ], + [ + 5, + 60 + ], + [ + 4, + 60 + ], + [ + 2, + 60 + ], + [ + 1, + 60 + ], + [ + 0, + 60 + ], + [ + 63, + 60 + ], + [ + 60, + 63 + ], + [ + 63, + 60 + ], + [ + 110, + 59 + ], + [ + 109, + 59 + ], + [ + 108, + 59 + ], + [ + 107, + 59 + ], + [ + 102, + 59 + ], + [ + 100, + 59 + ], + [ + 99, + 59 + ], + [ + 97, + 59 + ], + [ + 95, + 59 + ], + [ + 94, + 59 + ], + [ + 89, + 59 + ], + [ + 88, + 59 + ], + [ + 87, + 59 + ], + [ + 85, + 59 + ], + [ + 82, + 59 + ], + [ + 81, + 59 + ], + [ + 78, + 59 + ], + [ + 77, + 59 + ], + [ + 76, + 59 + ], + [ + 75, + 59 + ], + [ + 71, + 59 + ], + [ + 70, + 59 + ], + [ + 68, + 59 + ], + [ + 64, + 59 + ], + [ + 58, + 59 + ], + [ + 56, + 59 + ], + [ + 54, + 59 + ], + [ + 52, + 59 + ], + [ + 44, + 59 + ], + [ + 42, + 59 + ], + [ + 40, + 59 + ], + [ + 38, + 59 + ], + [ + 37, + 59 + ], + [ + 36, + 59 + ], + [ + 33, + 59 + ], + [ + 32, + 59 + ], + [ + 29, + 59 + ], + [ + 27, + 59 + ], + [ + 25, + 59 + ], + [ + 23, + 59 + ], + [ + 19, + 59 + ], + [ + 18, + 59 + ], + [ + 15, + 59 + ], + [ + 14, + 59 + ], + [ + 11, + 59 + ], + [ + 10, + 59 + ], + [ + 9, + 59 + ], + [ + 6, + 59 + ], + [ + 5, + 59 + ], + [ + 4, + 59 + ], + [ + 62, + 59 + ], + [ + 59, + 62 + ], + [ + 62, + 59 + ], + [ + 110, + 58 + ], + [ + 108, + 58 + ], + [ + 106, + 58 + ], + [ + 104, + 58 + ], + [ + 102, + 58 + ], + [ + 101, + 58 + ], + [ + 100, + 58 + ], + [ + 99, + 58 + ], + [ + 98, + 58 + ], + [ + 97, + 58 + ], + [ + 96, + 58 + ], + [ + 95, + 58 + ], + [ + 94, + 58 + ], + [ + 91, + 58 + ], + [ + 90, + 58 + ], + [ + 87, + 58 + ], + [ + 86, + 58 + ], + [ + 83, + 58 + ], + [ + 82, + 58 + ], + [ + 79, + 58 + ], + [ + 78, + 58 + ], + [ + 75, + 58 + ], + [ + 74, + 58 + ], + [ + 72, + 58 + ], + [ + 71, + 58 + ], + [ + 68, + 58 + ], + [ + 67, + 58 + ], + [ + 65, + 58 + ], + [ + 64, + 58 + ], + [ + 61, + 58 + ], + [ + 54, + 58 + ], + [ + 53, + 58 + ], + [ + 50, + 58 + ], + [ + 49, + 58 + ], + [ + 47, + 58 + ], + [ + 45, + 58 + ], + [ + 44, + 58 + ], + [ + 43, + 58 + ], + [ + 42, + 58 + ], + [ + 37, + 58 + ], + [ + 36, + 58 + ], + [ + 33, + 58 + ], + [ + 32, + 58 + ], + [ + 29, + 58 + ], + [ + 28, + 58 + ], + [ + 25, + 58 + ], + [ + 24, + 58 + ], + [ + 20, + 58 + ], + [ + 19, + 58 + ], + [ + 17, + 58 + ], + [ + 12, + 58 + ], + [ + 11, + 58 + ], + [ + 10, + 58 + ], + [ + 7, + 58 + ], + [ + 5, + 58 + ], + [ + 4, + 58 + ], + [ + 3, + 58 + ], + [ + 2, + 58 + ], + [ + 110, + 57 + ], + [ + 109, + 57 + ], + [ + 106, + 57 + ], + [ + 105, + 57 + ], + [ + 101, + 57 + ], + [ + 100, + 57 + ], + [ + 97, + 57 + ], + [ + 96, + 57 + ], + [ + 94, + 57 + ], + [ + 93, + 57 + ], + [ + 90, + 57 + ], + [ + 89, + 57 + ], + [ + 87, + 57 + ], + [ + 86, + 57 + ], + [ + 85, + 57 + ], + [ + 84, + 57 + ], + [ + 83, + 57 + ], + [ + 82, + 57 + ], + [ + 81, + 57 + ], + [ + 78, + 57 + ], + [ + 77, + 57 + ], + [ + 74, + 57 + ], + [ + 73, + 57 + ], + [ + 72, + 57 + ], + [ + 71, + 57 + ], + [ + 68, + 57 + ], + [ + 67, + 57 + ], + [ + 61, + 57 + ], + [ + 60, + 57 + ], + [ + 59, + 57 + ], + [ + 56, + 57 + ], + [ + 55, + 57 + ], + [ + 49, + 57 + ], + [ + 47, + 57 + ], + [ + 46, + 57 + ], + [ + 45, + 57 + ], + [ + 44, + 57 + ], + [ + 41, + 57 + ], + [ + 40, + 57 + ], + [ + 37, + 57 + ], + [ + 34, + 57 + ], + [ + 32, + 57 + ], + [ + 31, + 57 + ], + [ + 30, + 57 + ], + [ + 25, + 57 + ], + [ + 24, + 57 + ], + [ + 23, + 57 + ], + [ + 22, + 57 + ], + [ + 21, + 57 + ], + [ + 20, + 57 + ], + [ + 17, + 57 + ], + [ + 16, + 57 + ], + [ + 12, + 57 + ], + [ + 11, + 57 + ], + [ + 8, + 57 + ], + [ + 7, + 57 + ], + [ + 6, + 57 + ], + [ + 4, + 57 + ], + [ + 3, + 57 + ], + [ + 2, + 57 + ], + [ + 1, + 57 + ], + [ + 0, + 57 + ], + [ + 58, + 57 + ], + [ + 57, + 58 + ], + [ + 58, + 57 + ], + [ + 108, + 56 + ], + [ + 107, + 56 + ], + [ + 104, + 56 + ], + [ + 103, + 56 + ], + [ + 101, + 56 + ], + [ + 100, + 56 + ], + [ + 97, + 56 + ], + [ + 96, + 56 + ], + [ + 95, + 56 + ], + [ + 92, + 56 + ], + [ + 91, + 56 + ], + [ + 88, + 56 + ], + [ + 87, + 56 + ], + [ + 86, + 56 + ], + [ + 85, + 56 + ], + [ + 84, + 56 + ], + [ + 83, + 56 + ], + [ + 82, + 56 + ], + [ + 81, + 56 + ], + [ + 80, + 56 + ], + [ + 79, + 56 + ], + [ + 76, + 56 + ], + [ + 75, + 56 + ], + [ + 72, + 56 + ], + [ + 71, + 56 + ], + [ + 68, + 56 + ], + [ + 67, + 56 + ], + [ + 65, + 56 + ], + [ + 64, + 56 + ], + [ + 63, + 56 + ], + [ + 62, + 56 + ], + [ + 59, + 56 + ], + [ + 54, + 56 + ], + [ + 53, + 56 + ], + [ + 52, + 56 + ], + [ + 49, + 56 + ], + [ + 47, + 56 + ], + [ + 46, + 56 + ], + [ + 43, + 56 + ], + [ + 42, + 56 + ], + [ + 39, + 56 + ], + [ + 38, + 56 + ], + [ + 37, + 56 + ], + [ + 34, + 56 + ], + [ + 32, + 56 + ], + [ + 31, + 56 + ], + [ + 29, + 56 + ], + [ + 28, + 56 + ], + [ + 27, + 56 + ], + [ + 26, + 56 + ], + [ + 21, + 56 + ], + [ + 20, + 56 + ], + [ + 17, + 56 + ], + [ + 16, + 56 + ], + [ + 14, + 56 + ], + [ + 13, + 56 + ], + [ + 10, + 56 + ], + [ + 7, + 56 + ], + [ + 6, + 56 + ], + [ + 3, + 56 + ], + [ + 110, + 55 + ], + [ + 107, + 55 + ], + [ + 106, + 55 + ], + [ + 103, + 55 + ], + [ + 100, + 55 + ], + [ + 99, + 55 + ], + [ + 96, + 55 + ], + [ + 94, + 55 + ], + [ + 93, + 55 + ], + [ + 90, + 55 + ], + [ + 89, + 55 + ], + [ + 86, + 55 + ], + [ + 85, + 55 + ], + [ + 82, + 55 + ], + [ + 80, + 55 + ], + [ + 77, + 55 + ], + [ + 76, + 55 + ], + [ + 73, + 55 + ], + [ + 72, + 55 + ], + [ + 69, + 55 + ], + [ + 68, + 55 + ], + [ + 65, + 55 + ], + [ + 64, + 55 + ], + [ + 63, + 55 + ], + [ + 62, + 55 + ], + [ + 61, + 55 + ], + [ + 60, + 55 + ], + [ + 59, + 55 + ], + [ + 58, + 55 + ], + [ + 52, + 55 + ], + [ + 50, + 55 + ], + [ + 48, + 55 + ], + [ + 47, + 55 + ], + [ + 44, + 55 + ], + [ + 43, + 55 + ], + [ + 40, + 55 + ], + [ + 39, + 55 + ], + [ + 37, + 55 + ], + [ + 34, + 55 + ], + [ + 33, + 55 + ], + [ + 30, + 55 + ], + [ + 29, + 55 + ], + [ + 26, + 55 + ], + [ + 25, + 55 + ], + [ + 22, + 55 + ], + [ + 20, + 55 + ], + [ + 19, + 55 + ], + [ + 16, + 55 + ], + [ + 15, + 55 + ], + [ + 13, + 55 + ], + [ + 12, + 55 + ], + [ + 9, + 55 + ], + [ + 7, + 55 + ], + [ + 6, + 55 + ], + [ + 5, + 55 + ], + [ + 4, + 55 + ], + [ + 2, + 55 + ], + [ + 1, + 55 + ], + [ + 109, + 54 + ], + [ + 108, + 54 + ], + [ + 105, + 54 + ], + [ + 104, + 54 + ], + [ + 102, + 54 + ], + [ + 99, + 54 + ], + [ + 98, + 54 + ], + [ + 95, + 54 + ], + [ + 93, + 54 + ], + [ + 91, + 54 + ], + [ + 89, + 54 + ], + [ + 85, + 54 + ], + [ + 84, + 54 + ], + [ + 81, + 54 + ], + [ + 79, + 54 + ], + [ + 77, + 54 + ], + [ + 75, + 54 + ], + [ + 73, + 54 + ], + [ + 65, + 54 + ], + [ + 64, + 54 + ], + [ + 60, + 54 + ], + [ + 59, + 54 + ], + [ + 56, + 54 + ], + [ + 53, + 54 + ], + [ + 50, + 54 + ], + [ + 46, + 54 + ], + [ + 43, + 54 + ], + [ + 42, + 54 + ], + [ + 41, + 54 + ], + [ + 40, + 54 + ], + [ + 36, + 54 + ], + [ + 34, + 54 + ], + [ + 33, + 54 + ], + [ + 31, + 54 + ], + [ + 30, + 54 + ], + [ + 29, + 54 + ], + [ + 28, + 54 + ], + [ + 23, + 54 + ], + [ + 22, + 54 + ], + [ + 21, + 54 + ], + [ + 19, + 54 + ], + [ + 16, + 54 + ], + [ + 10, + 54 + ], + [ + 8, + 54 + ], + [ + 6, + 54 + ], + [ + 5, + 54 + ], + [ + 1, + 54 + ], + [ + 0, + 54 + ], + [ + 55, + 54 + ], + [ + 54, + 55 + ], + [ + 55, + 54 + ], + [ + 109, + 53 + ], + [ + 108, + 53 + ], + [ + 105, + 53 + ], + [ + 104, + 53 + ], + [ + 102, + 53 + ], + [ + 101, + 53 + ], + [ + 98, + 53 + ], + [ + 97, + 53 + ], + [ + 94, + 53 + ], + [ + 93, + 53 + ], + [ + 90, + 53 + ], + [ + 89, + 53 + ], + [ + 87, + 53 + ], + [ + 84, + 53 + ], + [ + 83, + 53 + ], + [ + 81, + 53 + ], + [ + 80, + 53 + ], + [ + 77, + 53 + ], + [ + 76, + 53 + ], + [ + 73, + 53 + ], + [ + 72, + 53 + ], + [ + 69, + 53 + ], + [ + 68, + 53 + ], + [ + 59, + 53 + ], + [ + 58, + 53 + ], + [ + 55, + 53 + ], + [ + 52, + 53 + ], + [ + 51, + 53 + ], + [ + 50, + 53 + ], + [ + 49, + 53 + ], + [ + 46, + 53 + ], + [ + 45, + 53 + ], + [ + 42, + 53 + ], + [ + 41, + 53 + ], + [ + 38, + 53 + ], + [ + 37, + 53 + ], + [ + 34, + 53 + ], + [ + 33, + 53 + ], + [ + 28, + 53 + ], + [ + 27, + 53 + ], + [ + 24, + 53 + ], + [ + 23, + 53 + ], + [ + 20, + 53 + ], + [ + 19, + 53 + ], + [ + 16, + 53 + ], + [ + 15, + 53 + ], + [ + 14, + 53 + ], + [ + 13, + 53 + ], + [ + 12, + 53 + ], + [ + 8, + 53 + ], + [ + 4, + 53 + ], + [ + 3, + 53 + ], + [ + 54, + 53 + ], + [ + 53, + 54 + ], + [ + 54, + 53 + ], + [ + 108, + 52 + ], + [ + 107, + 52 + ], + [ + 104, + 52 + ], + [ + 103, + 52 + ], + [ + 102, + 52 + ], + [ + 99, + 52 + ], + [ + 98, + 52 + ], + [ + 94, + 52 + ], + [ + 93, + 52 + ], + [ + 90, + 52 + ], + [ + 89, + 52 + ], + [ + 78, + 52 + ], + [ + 77, + 52 + ], + [ + 74, + 52 + ], + [ + 73, + 52 + ], + [ + 72, + 52 + ], + [ + 71, + 52 + ], + [ + 68, + 52 + ], + [ + 67, + 52 + ], + [ + 65, + 52 + ], + [ + 64, + 52 + ], + [ + 63, + 52 + ], + [ + 62, + 52 + ], + [ + 59, + 52 + ], + [ + 58, + 52 + ], + [ + 57, + 52 + ], + [ + 56, + 52 + ], + [ + 55, + 52 + ], + [ + 54, + 52 + ], + [ + 51, + 52 + ], + [ + 48, + 52 + ], + [ + 43, + 52 + ], + [ + 42, + 52 + ], + [ + 39, + 52 + ], + [ + 38, + 52 + ], + [ + 37, + 52 + ], + [ + 34, + 52 + ], + [ + 32, + 52 + ], + [ + 31, + 52 + ], + [ + 29, + 52 + ], + [ + 28, + 52 + ], + [ + 27, + 52 + ], + [ + 26, + 52 + ], + [ + 21, + 52 + ], + [ + 20, + 52 + ], + [ + 17, + 52 + ], + [ + 16, + 52 + ], + [ + 14, + 52 + ], + [ + 12, + 52 + ], + [ + 11, + 52 + ], + [ + 9, + 52 + ], + [ + 5, + 52 + ], + [ + 4, + 52 + ], + [ + 0, + 52 + ], + [ + 110, + 51 + ], + [ + 109, + 51 + ], + [ + 106, + 51 + ], + [ + 105, + 51 + ], + [ + 102, + 51 + ], + [ + 99, + 51 + ], + [ + 98, + 51 + ], + [ + 94, + 51 + ], + [ + 93, + 51 + ], + [ + 90, + 51 + ], + [ + 89, + 51 + ], + [ + 78, + 51 + ], + [ + 77, + 51 + ], + [ + 74, + 51 + ], + [ + 73, + 51 + ], + [ + 70, + 51 + ], + [ + 69, + 51 + ], + [ + 66, + 51 + ], + [ + 61, + 51 + ], + [ + 60, + 51 + ], + [ + 58, + 51 + ], + [ + 57, + 51 + ], + [ + 56, + 51 + ], + [ + 55, + 51 + ], + [ + 54, + 51 + ], + [ + 45, + 51 + ], + [ + 44, + 51 + ], + [ + 41, + 51 + ], + [ + 40, + 51 + ], + [ + 36, + 51 + ], + [ + 35, + 51 + ], + [ + 33, + 51 + ], + [ + 30, + 51 + ], + [ + 25, + 51 + ], + [ + 24, + 51 + ], + [ + 23, + 51 + ], + [ + 22, + 51 + ], + [ + 19, + 51 + ], + [ + 18, + 51 + ], + [ + 15, + 51 + ], + [ + 12, + 51 + ], + [ + 11, + 51 + ], + [ + 9, + 51 + ], + [ + 8, + 51 + ], + [ + 5, + 51 + ], + [ + 4, + 51 + ], + [ + 1, + 51 + ], + [ + 0, + 51 + ], + [ + 110, + 50 + ], + [ + 108, + 50 + ], + [ + 106, + 50 + ], + [ + 104, + 50 + ], + [ + 101, + 50 + ], + [ + 99, + 50 + ], + [ + 97, + 50 + ], + [ + 95, + 50 + ], + [ + 94, + 50 + ], + [ + 93, + 50 + ], + [ + 92, + 50 + ], + [ + 91, + 50 + ], + [ + 90, + 50 + ], + [ + 89, + 50 + ], + [ + 88, + 50 + ], + [ + 87, + 50 + ], + [ + 84, + 50 + ], + [ + 83, + 50 + ], + [ + 81, + 50 + ], + [ + 79, + 50 + ], + [ + 77, + 50 + ], + [ + 75, + 50 + ], + [ + 73, + 50 + ], + [ + 71, + 50 + ], + [ + 69, + 50 + ], + [ + 67, + 50 + ], + [ + 61, + 50 + ], + [ + 60, + 50 + ], + [ + 58, + 50 + ], + [ + 55, + 50 + ], + [ + 49, + 50 + ], + [ + 48, + 50 + ], + [ + 46, + 50 + ], + [ + 44, + 50 + ], + [ + 42, + 50 + ], + [ + 40, + 50 + ], + [ + 38, + 50 + ], + [ + 33, + 50 + ], + [ + 32, + 50 + ], + [ + 31, + 50 + ], + [ + 30, + 50 + ], + [ + 28, + 50 + ], + [ + 27, + 50 + ], + [ + 25, + 50 + ], + [ + 22, + 50 + ], + [ + 21, + 50 + ], + [ + 19, + 50 + ], + [ + 17, + 50 + ], + [ + 15, + 50 + ], + [ + 14, + 50 + ], + [ + 12, + 50 + ], + [ + 10, + 50 + ], + [ + 9, + 50 + ], + [ + 5, + 50 + ], + [ + 4, + 50 + ], + [ + 3, + 50 + ], + [ + 2, + 50 + ], + [ + 1, + 50 + ], + [ + 54, + 50 + ], + [ + 50, + 54 + ], + [ + 54, + 50 + ], + [ + 108, + 49 + ], + [ + 107, + 49 + ], + [ + 104, + 49 + ], + [ + 103, + 49 + ], + [ + 101, + 49 + ], + [ + 100, + 49 + ], + [ + 97, + 49 + ], + [ + 96, + 49 + ], + [ + 94, + 49 + ], + [ + 93, + 49 + ], + [ + 90, + 49 + ], + [ + 89, + 49 + ], + [ + 87, + 49 + ], + [ + 86, + 49 + ], + [ + 85, + 49 + ], + [ + 84, + 49 + ], + [ + 83, + 49 + ], + [ + 82, + 49 + ], + [ + 81, + 49 + ], + [ + 78, + 49 + ], + [ + 77, + 49 + ], + [ + 74, + 49 + ], + [ + 73, + 49 + ], + [ + 70, + 49 + ], + [ + 69, + 49 + ], + [ + 66, + 49 + ], + [ + 65, + 49 + ], + [ + 64, + 49 + ], + [ + 63, + 49 + ], + [ + 62, + 49 + ], + [ + 58, + 49 + ], + [ + 57, + 49 + ], + [ + 56, + 49 + ], + [ + 55, + 49 + ], + [ + 46, + 49 + ], + [ + 43, + 49 + ], + [ + 42, + 49 + ], + [ + 39, + 49 + ], + [ + 38, + 49 + ], + [ + 36, + 49 + ], + [ + 35, + 49 + ], + [ + 33, + 49 + ], + [ + 29, + 49 + ], + [ + 28, + 49 + ], + [ + 27, + 49 + ], + [ + 26, + 49 + ], + [ + 19, + 49 + ], + [ + 18, + 49 + ], + [ + 15, + 49 + ], + [ + 14, + 49 + ], + [ + 12, + 49 + ], + [ + 11, + 49 + ], + [ + 7, + 49 + ], + [ + 6, + 49 + ], + [ + 4, + 49 + ], + [ + 3, + 49 + ], + [ + 2, + 49 + ], + [ + 0, + 49 + ], + [ + 110, + 48 + ], + [ + 108, + 48 + ], + [ + 106, + 48 + ], + [ + 104, + 48 + ], + [ + 93, + 48 + ], + [ + 92, + 48 + ], + [ + 89, + 48 + ], + [ + 88, + 48 + ], + [ + 85, + 48 + ], + [ + 84, + 48 + ], + [ + 81, + 48 + ], + [ + 80, + 48 + ], + [ + 77, + 48 + ], + [ + 76, + 48 + ], + [ + 73, + 48 + ], + [ + 72, + 48 + ], + [ + 71, + 48 + ], + [ + 68, + 48 + ], + [ + 67, + 48 + ], + [ + 65, + 48 + ], + [ + 64, + 48 + ], + [ + 61, + 48 + ], + [ + 56, + 48 + ], + [ + 55, + 48 + ], + [ + 52, + 48 + ], + [ + 46, + 48 + ], + [ + 45, + 48 + ], + [ + 44, + 48 + ], + [ + 43, + 48 + ], + [ + 42, + 48 + ], + [ + 37, + 48 + ], + [ + 36, + 48 + ], + [ + 33, + 48 + ], + [ + 32, + 48 + ], + [ + 29, + 48 + ], + [ + 28, + 48 + ], + [ + 25, + 48 + ], + [ + 24, + 48 + ], + [ + 20, + 48 + ], + [ + 19, + 48 + ], + [ + 17, + 48 + ], + [ + 13, + 48 + ], + [ + 9, + 48 + ], + [ + 6, + 48 + ], + [ + 2, + 48 + ], + [ + 0, + 48 + ], + [ + 51, + 48 + ], + [ + 48, + 51 + ], + [ + 51, + 48 + ], + [ + 109, + 47 + ], + [ + 107, + 47 + ], + [ + 105, + 47 + ], + [ + 103, + 47 + ], + [ + 102, + 47 + ], + [ + 101, + 47 + ], + [ + 100, + 47 + ], + [ + 99, + 47 + ], + [ + 98, + 47 + ], + [ + 97, + 47 + ], + [ + 96, + 47 + ], + [ + 93, + 47 + ], + [ + 92, + 47 + ], + [ + 89, + 47 + ], + [ + 88, + 47 + ], + [ + 87, + 47 + ], + [ + 86, + 47 + ], + [ + 83, + 47 + ], + [ + 82, + 47 + ], + [ + 80, + 47 + ], + [ + 77, + 47 + ], + [ + 76, + 47 + ], + [ + 73, + 47 + ], + [ + 72, + 47 + ], + [ + 71, + 47 + ], + [ + 68, + 47 + ], + [ + 67, + 47 + ], + [ + 63, + 47 + ], + [ + 62, + 47 + ], + [ + 60, + 47 + ], + [ + 56, + 47 + ], + [ + 55, + 47 + ], + [ + 52, + 47 + ], + [ + 50, + 47 + ], + [ + 41, + 47 + ], + [ + 40, + 47 + ], + [ + 39, + 47 + ], + [ + 38, + 47 + ], + [ + 37, + 47 + ], + [ + 36, + 47 + ], + [ + 33, + 47 + ], + [ + 32, + 47 + ], + [ + 30, + 47 + ], + [ + 27, + 47 + ], + [ + 26, + 47 + ], + [ + 23, + 47 + ], + [ + 22, + 47 + ], + [ + 20, + 47 + ], + [ + 19, + 47 + ], + [ + 17, + 47 + ], + [ + 14, + 47 + ], + [ + 13, + 47 + ], + [ + 8, + 47 + ], + [ + 7, + 47 + ], + [ + 5, + 47 + ], + [ + 3, + 47 + ], + [ + 1, + 47 + ], + [ + 0, + 47 + ], + [ + 49, + 47 + ], + [ + 47, + 49 + ], + [ + 49, + 47 + ], + [ + 110, + 46 + ], + [ + 108, + 46 + ], + [ + 106, + 46 + ], + [ + 104, + 46 + ], + [ + 102, + 46 + ], + [ + 101, + 46 + ], + [ + 100, + 46 + ], + [ + 99, + 46 + ], + [ + 98, + 46 + ], + [ + 97, + 46 + ], + [ + 96, + 46 + ], + [ + 93, + 46 + ], + [ + 92, + 46 + ], + [ + 89, + 46 + ], + [ + 88, + 46 + ], + [ + 85, + 46 + ], + [ + 84, + 46 + ], + [ + 81, + 46 + ], + [ + 79, + 46 + ], + [ + 78, + 46 + ], + [ + 75, + 46 + ], + [ + 74, + 46 + ], + [ + 72, + 46 + ], + [ + 71, + 46 + ], + [ + 68, + 46 + ], + [ + 67, + 46 + ], + [ + 63, + 46 + ], + [ + 62, + 46 + ], + [ + 60, + 46 + ], + [ + 59, + 46 + ], + [ + 58, + 46 + ], + [ + 57, + 46 + ], + [ + 54, + 46 + ], + [ + 53, + 46 + ], + [ + 51, + 46 + ], + [ + 48, + 46 + ], + [ + 41, + 46 + ], + [ + 40, + 46 + ], + [ + 39, + 46 + ], + [ + 38, + 46 + ], + [ + 36, + 46 + ], + [ + 33, + 46 + ], + [ + 32, + 46 + ], + [ + 29, + 46 + ], + [ + 28, + 46 + ], + [ + 25, + 46 + ], + [ + 24, + 46 + ], + [ + 21, + 46 + ], + [ + 18, + 46 + ], + [ + 16, + 46 + ], + [ + 15, + 46 + ], + [ + 13, + 46 + ], + [ + 9, + 46 + ], + [ + 7, + 46 + ], + [ + 5, + 46 + ], + [ + 4, + 46 + ], + [ + 3, + 46 + ], + [ + 2, + 46 + ], + [ + 109, + 45 + ], + [ + 108, + 45 + ], + [ + 105, + 45 + ], + [ + 104, + 45 + ], + [ + 102, + 45 + ], + [ + 99, + 45 + ], + [ + 98, + 45 + ], + [ + 95, + 45 + ], + [ + 93, + 45 + ], + [ + 91, + 45 + ], + [ + 89, + 45 + ], + [ + 87, + 45 + ], + [ + 86, + 45 + ], + [ + 83, + 45 + ], + [ + 82, + 45 + ], + [ + 80, + 45 + ], + [ + 78, + 45 + ], + [ + 76, + 45 + ], + [ + 74, + 45 + ], + [ + 72, + 45 + ], + [ + 71, + 45 + ], + [ + 70, + 45 + ], + [ + 69, + 45 + ], + [ + 68, + 45 + ], + [ + 67, + 45 + ], + [ + 66, + 45 + ], + [ + 63, + 45 + ], + [ + 62, + 45 + ], + [ + 61, + 45 + ], + [ + 59, + 45 + ], + [ + 58, + 45 + ], + [ + 57, + 45 + ], + [ + 52, + 45 + ], + [ + 51, + 45 + ], + [ + 49, + 45 + ], + [ + 48, + 45 + ], + [ + 47, + 45 + ], + [ + 44, + 45 + ], + [ + 42, + 45 + ], + [ + 39, + 45 + ], + [ + 38, + 45 + ], + [ + 37, + 45 + ], + [ + 35, + 45 + ], + [ + 32, + 45 + ], + [ + 30, + 45 + ], + [ + 29, + 45 + ], + [ + 28, + 45 + ], + [ + 23, + 45 + ], + [ + 22, + 45 + ], + [ + 21, + 45 + ], + [ + 19, + 45 + ], + [ + 16, + 45 + ], + [ + 10, + 45 + ], + [ + 9, + 45 + ], + [ + 8, + 45 + ], + [ + 6, + 45 + ], + [ + 5, + 45 + ], + [ + 4, + 45 + ], + [ + 2, + 45 + ], + [ + 1, + 45 + ], + [ + 110, + 44 + ], + [ + 108, + 44 + ], + [ + 106, + 44 + ], + [ + 104, + 44 + ], + [ + 101, + 44 + ], + [ + 99, + 44 + ], + [ + 97, + 44 + ], + [ + 95, + 44 + ], + [ + 94, + 44 + ], + [ + 93, + 44 + ], + [ + 92, + 44 + ], + [ + 91, + 44 + ], + [ + 90, + 44 + ], + [ + 89, + 44 + ], + [ + 88, + 44 + ], + [ + 87, + 44 + ], + [ + 84, + 44 + ], + [ + 83, + 44 + ], + [ + 81, + 44 + ], + [ + 79, + 44 + ], + [ + 77, + 44 + ], + [ + 75, + 44 + ], + [ + 73, + 44 + ], + [ + 71, + 44 + ], + [ + 69, + 44 + ], + [ + 67, + 44 + ], + [ + 61, + 44 + ], + [ + 60, + 44 + ], + [ + 58, + 44 + ], + [ + 55, + 44 + ], + [ + 54, + 44 + ], + [ + 50, + 44 + ], + [ + 49, + 44 + ], + [ + 48, + 44 + ], + [ + 42, + 44 + ], + [ + 40, + 44 + ], + [ + 38, + 44 + ], + [ + 33, + 44 + ], + [ + 32, + 44 + ], + [ + 31, + 44 + ], + [ + 30, + 44 + ], + [ + 28, + 44 + ], + [ + 27, + 44 + ], + [ + 25, + 44 + ], + [ + 22, + 44 + ], + [ + 21, + 44 + ], + [ + 19, + 44 + ], + [ + 17, + 44 + ], + [ + 15, + 44 + ], + [ + 14, + 44 + ], + [ + 12, + 44 + ], + [ + 10, + 44 + ], + [ + 9, + 44 + ], + [ + 5, + 44 + ], + [ + 4, + 44 + ], + [ + 3, + 44 + ], + [ + 2, + 44 + ], + [ + 1, + 44 + ], + [ + 46, + 44 + ], + [ + 44, + 46 + ], + [ + 46, + 44 + ], + [ + 109, + 43 + ], + [ + 108, + 43 + ], + [ + 105, + 43 + ], + [ + 104, + 43 + ], + [ + 102, + 43 + ], + [ + 101, + 43 + ], + [ + 98, + 43 + ], + [ + 97, + 43 + ], + [ + 94, + 43 + ], + [ + 93, + 43 + ], + [ + 90, + 43 + ], + [ + 89, + 43 + ], + [ + 86, + 43 + ], + [ + 85, + 43 + ], + [ + 82, + 43 + ], + [ + 79, + 43 + ], + [ + 78, + 43 + ], + [ + 75, + 43 + ], + [ + 74, + 43 + ], + [ + 71, + 43 + ], + [ + 70, + 43 + ], + [ + 67, + 43 + ], + [ + 66, + 43 + ], + [ + 65, + 43 + ], + [ + 64, + 43 + ], + [ + 63, + 43 + ], + [ + 62, + 43 + ], + [ + 61, + 43 + ], + [ + 60, + 43 + ], + [ + 59, + 43 + ], + [ + 57, + 43 + ], + [ + 56, + 43 + ], + [ + 54, + 43 + ], + [ + 50, + 43 + ], + [ + 48, + 43 + ], + [ + 47, + 43 + ], + [ + 40, + 43 + ], + [ + 39, + 43 + ], + [ + 36, + 43 + ], + [ + 35, + 43 + ], + [ + 32, + 43 + ], + [ + 31, + 43 + ], + [ + 28, + 43 + ], + [ + 27, + 43 + ], + [ + 24, + 43 + ], + [ + 23, + 43 + ], + [ + 20, + 43 + ], + [ + 19, + 43 + ], + [ + 16, + 43 + ], + [ + 15, + 43 + ], + [ + 14, + 43 + ], + [ + 13, + 43 + ], + [ + 12, + 43 + ], + [ + 9, + 43 + ], + [ + 8, + 43 + ], + [ + 3, + 43 + ], + [ + 2, + 43 + ], + [ + 0, + 43 + ], + [ + 44, + 43 + ], + [ + 43, + 44 + ], + [ + 44, + 43 + ], + [ + 110, + 42 + ], + [ + 107, + 42 + ], + [ + 106, + 42 + ], + [ + 103, + 42 + ], + [ + 100, + 42 + ], + [ + 99, + 42 + ], + [ + 96, + 42 + ], + [ + 95, + 42 + ], + [ + 92, + 42 + ], + [ + 91, + 42 + ], + [ + 88, + 42 + ], + [ + 87, + 42 + ], + [ + 84, + 42 + ], + [ + 83, + 42 + ], + [ + 81, + 42 + ], + [ + 80, + 42 + ], + [ + 77, + 42 + ], + [ + 76, + 42 + ], + [ + 73, + 42 + ], + [ + 72, + 42 + ], + [ + 69, + 42 + ], + [ + 68, + 42 + ], + [ + 58, + 42 + ], + [ + 55, + 42 + ], + [ + 53, + 42 + ], + [ + 52, + 42 + ], + [ + 51, + 42 + ], + [ + 49, + 42 + ], + [ + 46, + 42 + ], + [ + 41, + 42 + ], + [ + 38, + 42 + ], + [ + 37, + 42 + ], + [ + 34, + 42 + ], + [ + 33, + 42 + ], + [ + 30, + 42 + ], + [ + 29, + 42 + ], + [ + 26, + 42 + ], + [ + 25, + 42 + ], + [ + 22, + 42 + ], + [ + 21, + 42 + ], + [ + 18, + 42 + ], + [ + 17, + 42 + ], + [ + 11, + 42 + ], + [ + 10, + 42 + ], + [ + 7, + 42 + ], + [ + 6, + 42 + ], + [ + 5, + 42 + ], + [ + 4, + 42 + ], + [ + 2, + 42 + ], + [ + 1, + 42 + ], + [ + 45, + 42 + ], + [ + 42, + 45 + ], + [ + 45, + 42 + ], + [ + 110, + 41 + ], + [ + 108, + 41 + ], + [ + 106, + 41 + ], + [ + 104, + 41 + ], + [ + 93, + 41 + ], + [ + 92, + 41 + ], + [ + 89, + 41 + ], + [ + 88, + 41 + ], + [ + 87, + 41 + ], + [ + 86, + 41 + ], + [ + 83, + 41 + ], + [ + 82, + 41 + ], + [ + 79, + 41 + ], + [ + 78, + 41 + ], + [ + 75, + 41 + ], + [ + 74, + 41 + ], + [ + 70, + 41 + ], + [ + 69, + 41 + ], + [ + 66, + 41 + ], + [ + 63, + 41 + ], + [ + 62, + 41 + ], + [ + 60, + 41 + ], + [ + 58, + 41 + ], + [ + 57, + 41 + ], + [ + 54, + 41 + ], + [ + 53, + 41 + ], + [ + 50, + 41 + ], + [ + 49, + 41 + ], + [ + 47, + 41 + ], + [ + 40, + 41 + ], + [ + 38, + 41 + ], + [ + 35, + 41 + ], + [ + 34, + 41 + ], + [ + 31, + 41 + ], + [ + 29, + 41 + ], + [ + 28, + 41 + ], + [ + 25, + 41 + ], + [ + 24, + 41 + ], + [ + 20, + 41 + ], + [ + 19, + 41 + ], + [ + 17, + 41 + ], + [ + 13, + 41 + ], + [ + 6, + 41 + ], + [ + 4, + 41 + ], + [ + 101, + 40 + ], + [ + 99, + 40 + ], + [ + 97, + 40 + ], + [ + 95, + 40 + ], + [ + 94, + 40 + ], + [ + 91, + 40 + ], + [ + 90, + 40 + ], + [ + 87, + 40 + ], + [ + 85, + 40 + ], + [ + 83, + 40 + ], + [ + 80, + 40 + ], + [ + 79, + 40 + ], + [ + 76, + 40 + ], + [ + 75, + 40 + ], + [ + 72, + 40 + ], + [ + 69, + 40 + ], + [ + 68, + 40 + ], + [ + 65, + 40 + ], + [ + 64, + 40 + ], + [ + 60, + 40 + ], + [ + 58, + 40 + ], + [ + 56, + 40 + ], + [ + 54, + 40 + ], + [ + 52, + 40 + ], + [ + 51, + 40 + ], + [ + 50, + 40 + ], + [ + 49, + 40 + ], + [ + 45, + 40 + ], + [ + 38, + 40 + ], + [ + 37, + 40 + ], + [ + 36, + 40 + ], + [ + 31, + 40 + ], + [ + 30, + 40 + ], + [ + 29, + 40 + ], + [ + 27, + 40 + ], + [ + 24, + 40 + ], + [ + 22, + 40 + ], + [ + 21, + 40 + ], + [ + 20, + 40 + ], + [ + 15, + 40 + ], + [ + 14, + 40 + ], + [ + 13, + 40 + ], + [ + 12, + 40 + ], + [ + 10, + 40 + ], + [ + 6, + 40 + ], + [ + 5, + 40 + ], + [ + 4, + 40 + ], + [ + 3, + 40 + ], + [ + 1, + 40 + ], + [ + 0, + 40 + ], + [ + 43, + 40 + ], + [ + 40, + 43 + ], + [ + 43, + 40 + ], + [ + 101, + 39 + ], + [ + 99, + 39 + ], + [ + 97, + 39 + ], + [ + 95, + 39 + ], + [ + 94, + 39 + ], + [ + 91, + 39 + ], + [ + 90, + 39 + ], + [ + 86, + 39 + ], + [ + 84, + 39 + ], + [ + 82, + 39 + ], + [ + 81, + 39 + ], + [ + 78, + 39 + ], + [ + 77, + 39 + ], + [ + 74, + 39 + ], + [ + 73, + 39 + ], + [ + 71, + 39 + ], + [ + 70, + 39 + ], + [ + 67, + 39 + ], + [ + 66, + 39 + ], + [ + 63, + 39 + ], + [ + 62, + 39 + ], + [ + 61, + 39 + ], + [ + 57, + 39 + ], + [ + 55, + 39 + ], + [ + 53, + 39 + ], + [ + 48, + 39 + ], + [ + 47, + 39 + ], + [ + 46, + 39 + ], + [ + 44, + 39 + ], + [ + 42, + 39 + ], + [ + 35, + 39 + ], + [ + 34, + 39 + ], + [ + 33, + 39 + ], + [ + 32, + 39 + ], + [ + 30, + 39 + ], + [ + 29, + 39 + ], + [ + 27, + 39 + ], + [ + 24, + 39 + ], + [ + 22, + 39 + ], + [ + 21, + 39 + ], + [ + 20, + 39 + ], + [ + 15, + 39 + ], + [ + 14, + 39 + ], + [ + 13, + 39 + ], + [ + 12, + 39 + ], + [ + 10, + 39 + ], + [ + 9, + 39 + ], + [ + 6, + 39 + ], + [ + 5, + 39 + ], + [ + 3, + 39 + ], + [ + 2, + 39 + ], + [ + 1, + 39 + ], + [ + 41, + 39 + ], + [ + 39, + 41 + ], + [ + 41, + 39 + ], + [ + 110, + 38 + ], + [ + 109, + 38 + ], + [ + 108, + 38 + ], + [ + 107, + 38 + ], + [ + 106, + 38 + ], + [ + 105, + 38 + ], + [ + 104, + 38 + ], + [ + 103, + 38 + ], + [ + 102, + 38 + ], + [ + 100, + 38 + ], + [ + 98, + 38 + ], + [ + 96, + 38 + ], + [ + 93, + 38 + ], + [ + 92, + 38 + ], + [ + 89, + 38 + ], + [ + 88, + 38 + ], + [ + 87, + 38 + ], + [ + 85, + 38 + ], + [ + 83, + 38 + ], + [ + 80, + 38 + ], + [ + 79, + 38 + ], + [ + 76, + 38 + ], + [ + 75, + 38 + ], + [ + 72, + 38 + ], + [ + 69, + 38 + ], + [ + 68, + 38 + ], + [ + 65, + 38 + ], + [ + 64, + 38 + ], + [ + 60, + 38 + ], + [ + 59, + 38 + ], + [ + 58, + 38 + ], + [ + 56, + 38 + ], + [ + 54, + 38 + ], + [ + 52, + 38 + ], + [ + 51, + 38 + ], + [ + 50, + 38 + ], + [ + 49, + 38 + ], + [ + 45, + 38 + ], + [ + 43, + 38 + ], + [ + 37, + 38 + ], + [ + 36, + 38 + ], + [ + 31, + 38 + ], + [ + 28, + 38 + ], + [ + 26, + 38 + ], + [ + 25, + 38 + ], + [ + 23, + 38 + ], + [ + 19, + 38 + ], + [ + 18, + 38 + ], + [ + 17, + 38 + ], + [ + 16, + 38 + ], + [ + 11, + 38 + ], + [ + 8, + 38 + ], + [ + 7, + 38 + ], + [ + 4, + 38 + ], + [ + 2, + 38 + ], + [ + 0, + 38 + ], + [ + 40, + 38 + ], + [ + 38, + 40 + ], + [ + 40, + 38 + ], + [ + 110, + 37 + ], + [ + 109, + 37 + ], + [ + 106, + 37 + ], + [ + 105, + 37 + ], + [ + 100, + 37 + ], + [ + 99, + 37 + ], + [ + 96, + 37 + ], + [ + 95, + 37 + ], + [ + 93, + 37 + ], + [ + 91, + 37 + ], + [ + 89, + 37 + ], + [ + 87, + 37 + ], + [ + 85, + 37 + ], + [ + 83, + 37 + ], + [ + 72, + 37 + ], + [ + 70, + 37 + ], + [ + 68, + 37 + ], + [ + 66, + 37 + ], + [ + 63, + 37 + ], + [ + 62, + 37 + ], + [ + 60, + 37 + ], + [ + 59, + 37 + ], + [ + 58, + 37 + ], + [ + 56, + 37 + ], + [ + 53, + 37 + ], + [ + 49, + 37 + ], + [ + 48, + 37 + ], + [ + 45, + 37 + ], + [ + 42, + 37 + ], + [ + 40, + 37 + ], + [ + 39, + 37 + ], + [ + 35, + 37 + ], + [ + 31, + 37 + ], + [ + 29, + 37 + ], + [ + 27, + 37 + ], + [ + 25, + 37 + ], + [ + 23, + 37 + ], + [ + 17, + 37 + ], + [ + 16, + 37 + ], + [ + 15, + 37 + ], + [ + 14, + 37 + ], + [ + 13, + 37 + ], + [ + 11, + 37 + ], + [ + 10, + 37 + ], + [ + 9, + 37 + ], + [ + 8, + 37 + ], + [ + 7, + 37 + ], + [ + 5, + 37 + ], + [ + 4, + 37 + ], + [ + 0, + 37 + ], + [ + 38, + 37 + ], + [ + 37, + 38 + ], + [ + 38, + 37 + ], + [ + 109, + 36 + ], + [ + 108, + 36 + ], + [ + 105, + 36 + ], + [ + 104, + 36 + ], + [ + 102, + 36 + ], + [ + 99, + 36 + ], + [ + 98, + 36 + ], + [ + 95, + 36 + ], + [ + 93, + 36 + ], + [ + 91, + 36 + ], + [ + 89, + 36 + ], + [ + 85, + 36 + ], + [ + 84, + 36 + ], + [ + 81, + 36 + ], + [ + 79, + 36 + ], + [ + 77, + 36 + ], + [ + 75, + 36 + ], + [ + 73, + 36 + ], + [ + 65, + 36 + ], + [ + 64, + 36 + ], + [ + 60, + 36 + ], + [ + 59, + 36 + ], + [ + 56, + 36 + ], + [ + 55, + 36 + ], + [ + 54, + 36 + ], + [ + 53, + 36 + ], + [ + 50, + 36 + ], + [ + 46, + 36 + ], + [ + 43, + 36 + ], + [ + 42, + 36 + ], + [ + 41, + 36 + ], + [ + 40, + 36 + ], + [ + 38, + 36 + ], + [ + 31, + 36 + ], + [ + 30, + 36 + ], + [ + 29, + 36 + ], + [ + 28, + 36 + ], + [ + 23, + 36 + ], + [ + 22, + 36 + ], + [ + 21, + 36 + ], + [ + 19, + 36 + ], + [ + 16, + 36 + ], + [ + 10, + 36 + ], + [ + 8, + 36 + ], + [ + 6, + 36 + ], + [ + 5, + 36 + ], + [ + 1, + 36 + ], + [ + 0, + 36 + ], + [ + 102, + 35 + ], + [ + 100, + 35 + ], + [ + 98, + 35 + ], + [ + 96, + 35 + ], + [ + 93, + 35 + ], + [ + 92, + 35 + ], + [ + 89, + 35 + ], + [ + 88, + 35 + ], + [ + 87, + 35 + ], + [ + 85, + 35 + ], + [ + 83, + 35 + ], + [ + 80, + 35 + ], + [ + 79, + 35 + ], + [ + 76, + 35 + ], + [ + 75, + 35 + ], + [ + 71, + 35 + ], + [ + 70, + 35 + ], + [ + 67, + 35 + ], + [ + 66, + 35 + ], + [ + 63, + 35 + ], + [ + 62, + 35 + ], + [ + 61, + 35 + ], + [ + 58, + 35 + ], + [ + 56, + 35 + ], + [ + 54, + 35 + ], + [ + 52, + 35 + ], + [ + 51, + 35 + ], + [ + 50, + 35 + ], + [ + 49, + 35 + ], + [ + 44, + 35 + ], + [ + 42, + 35 + ], + [ + 41, + 35 + ], + [ + 39, + 35 + ], + [ + 38, + 35 + ], + [ + 36, + 35 + ], + [ + 30, + 35 + ], + [ + 29, + 35 + ], + [ + 27, + 35 + ], + [ + 24, + 35 + ], + [ + 22, + 35 + ], + [ + 21, + 35 + ], + [ + 20, + 35 + ], + [ + 15, + 35 + ], + [ + 14, + 35 + ], + [ + 11, + 35 + ], + [ + 7, + 35 + ], + [ + 4, + 35 + ], + [ + 2, + 35 + ], + [ + 1, + 35 + ], + [ + 0, + 35 + ], + [ + 110, + 34 + ], + [ + 109, + 34 + ], + [ + 106, + 34 + ], + [ + 105, + 34 + ], + [ + 102, + 34 + ], + [ + 99, + 34 + ], + [ + 98, + 34 + ], + [ + 95, + 34 + ], + [ + 92, + 34 + ], + [ + 91, + 34 + ], + [ + 88, + 34 + ], + [ + 80, + 34 + ], + [ + 79, + 34 + ], + [ + 76, + 34 + ], + [ + 75, + 34 + ], + [ + 72, + 34 + ], + [ + 71, + 34 + ], + [ + 68, + 34 + ], + [ + 67, + 34 + ], + [ + 61, + 34 + ], + [ + 60, + 34 + ], + [ + 59, + 34 + ], + [ + 54, + 34 + ], + [ + 53, + 34 + ], + [ + 52, + 34 + ], + [ + 51, + 34 + ], + [ + 50, + 34 + ], + [ + 48, + 34 + ], + [ + 45, + 34 + ], + [ + 44, + 34 + ], + [ + 41, + 34 + ], + [ + 40, + 34 + ], + [ + 37, + 34 + ], + [ + 32, + 34 + ], + [ + 30, + 34 + ], + [ + 25, + 34 + ], + [ + 24, + 34 + ], + [ + 23, + 34 + ], + [ + 22, + 34 + ], + [ + 21, + 34 + ], + [ + 20, + 34 + ], + [ + 17, + 34 + ], + [ + 16, + 34 + ], + [ + 13, + 34 + ], + [ + 10, + 34 + ], + [ + 9, + 34 + ], + [ + 8, + 34 + ], + [ + 5, + 34 + ], + [ + 2, + 34 + ], + [ + 1, + 34 + ], + [ + 36, + 34 + ], + [ + 34, + 36 + ], + [ + 36, + 34 + ], + [ + 110, + 33 + ], + [ + 108, + 33 + ], + [ + 106, + 33 + ], + [ + 104, + 33 + ], + [ + 101, + 33 + ], + [ + 99, + 33 + ], + [ + 97, + 33 + ], + [ + 95, + 33 + ], + [ + 94, + 33 + ], + [ + 93, + 33 + ], + [ + 92, + 33 + ], + [ + 91, + 33 + ], + [ + 90, + 33 + ], + [ + 89, + 33 + ], + [ + 88, + 33 + ], + [ + 87, + 33 + ], + [ + 84, + 33 + ], + [ + 83, + 33 + ], + [ + 81, + 33 + ], + [ + 79, + 33 + ], + [ + 77, + 33 + ], + [ + 75, + 33 + ], + [ + 73, + 33 + ], + [ + 71, + 33 + ], + [ + 69, + 33 + ], + [ + 67, + 33 + ], + [ + 61, + 33 + ], + [ + 60, + 33 + ], + [ + 58, + 33 + ], + [ + 55, + 33 + ], + [ + 54, + 33 + ], + [ + 50, + 33 + ], + [ + 49, + 33 + ], + [ + 48, + 33 + ], + [ + 46, + 33 + ], + [ + 44, + 33 + ], + [ + 42, + 33 + ], + [ + 40, + 33 + ], + [ + 32, + 33 + ], + [ + 31, + 33 + ], + [ + 30, + 33 + ], + [ + 28, + 33 + ], + [ + 27, + 33 + ], + [ + 25, + 33 + ], + [ + 22, + 33 + ], + [ + 21, + 33 + ], + [ + 19, + 33 + ], + [ + 17, + 33 + ], + [ + 15, + 33 + ], + [ + 14, + 33 + ], + [ + 12, + 33 + ], + [ + 10, + 33 + ], + [ + 9, + 33 + ], + [ + 5, + 33 + ], + [ + 4, + 33 + ], + [ + 3, + 33 + ], + [ + 2, + 33 + ], + [ + 1, + 33 + ], + [ + 38, + 33 + ], + [ + 33, + 38 + ], + [ + 38, + 33 + ], + [ + 109, + 32 + ], + [ + 108, + 32 + ], + [ + 105, + 32 + ], + [ + 104, + 32 + ], + [ + 101, + 32 + ], + [ + 100, + 32 + ], + [ + 97, + 32 + ], + [ + 96, + 32 + ], + [ + 94, + 32 + ], + [ + 92, + 32 + ], + [ + 90, + 32 + ], + [ + 88, + 32 + ], + [ + 85, + 32 + ], + [ + 84, + 32 + ], + [ + 81, + 32 + ], + [ + 79, + 32 + ], + [ + 77, + 32 + ], + [ + 75, + 32 + ], + [ + 73, + 32 + ], + [ + 72, + 32 + ], + [ + 71, + 32 + ], + [ + 70, + 32 + ], + [ + 69, + 32 + ], + [ + 68, + 32 + ], + [ + 67, + 32 + ], + [ + 66, + 32 + ], + [ + 63, + 32 + ], + [ + 62, + 32 + ], + [ + 61, + 32 + ], + [ + 59, + 32 + ], + [ + 56, + 32 + ], + [ + 55, + 32 + ], + [ + 54, + 32 + ], + [ + 53, + 32 + ], + [ + 50, + 32 + ], + [ + 46, + 32 + ], + [ + 45, + 32 + ], + [ + 44, + 32 + ], + [ + 39, + 32 + ], + [ + 38, + 32 + ], + [ + 37, + 32 + ], + [ + 36, + 32 + ], + [ + 31, + 32 + ], + [ + 30, + 32 + ], + [ + 29, + 32 + ], + [ + 28, + 32 + ], + [ + 23, + 32 + ], + [ + 22, + 32 + ], + [ + 21, + 32 + ], + [ + 19, + 32 + ], + [ + 16, + 32 + ], + [ + 13, + 32 + ], + [ + 12, + 32 + ], + [ + 11, + 32 + ], + [ + 8, + 32 + ], + [ + 7, + 32 + ], + [ + 3, + 32 + ], + [ + 2, + 32 + ], + [ + 1, + 32 + ], + [ + 0, + 32 + ], + [ + 35, + 32 + ], + [ + 32, + 35 + ], + [ + 35, + 32 + ], + [ + 101, + 31 + ], + [ + 99, + 31 + ], + [ + 97, + 31 + ], + [ + 95, + 31 + ], + [ + 94, + 31 + ], + [ + 91, + 31 + ], + [ + 90, + 31 + ], + [ + 87, + 31 + ], + [ + 85, + 31 + ], + [ + 83, + 31 + ], + [ + 80, + 31 + ], + [ + 79, + 31 + ], + [ + 76, + 31 + ], + [ + 75, + 31 + ], + [ + 72, + 31 + ], + [ + 69, + 31 + ], + [ + 68, + 31 + ], + [ + 65, + 31 + ], + [ + 64, + 31 + ], + [ + 60, + 31 + ], + [ + 58, + 31 + ], + [ + 56, + 31 + ], + [ + 54, + 31 + ], + [ + 52, + 31 + ], + [ + 51, + 31 + ], + [ + 50, + 31 + ], + [ + 49, + 31 + ], + [ + 45, + 31 + ], + [ + 43, + 31 + ], + [ + 40, + 31 + ], + [ + 38, + 31 + ], + [ + 37, + 31 + ], + [ + 30, + 31 + ], + [ + 29, + 31 + ], + [ + 27, + 31 + ], + [ + 24, + 31 + ], + [ + 22, + 31 + ], + [ + 21, + 31 + ], + [ + 20, + 31 + ], + [ + 15, + 31 + ], + [ + 14, + 31 + ], + [ + 13, + 31 + ], + [ + 12, + 31 + ], + [ + 10, + 31 + ], + [ + 6, + 31 + ], + [ + 5, + 31 + ], + [ + 4, + 31 + ], + [ + 3, + 31 + ], + [ + 1, + 31 + ], + [ + 0, + 31 + ], + [ + 36, + 31 + ], + [ + 31, + 36 + ], + [ + 36, + 31 + ], + [ + 110, + 30 + ], + [ + 109, + 30 + ], + [ + 106, + 30 + ], + [ + 105, + 30 + ], + [ + 102, + 30 + ], + [ + 99, + 30 + ], + [ + 98, + 30 + ], + [ + 95, + 30 + ], + [ + 92, + 30 + ], + [ + 91, + 30 + ], + [ + 88, + 30 + ], + [ + 80, + 30 + ], + [ + 79, + 30 + ], + [ + 76, + 30 + ], + [ + 75, + 30 + ], + [ + 72, + 30 + ], + [ + 71, + 30 + ], + [ + 68, + 30 + ], + [ + 67, + 30 + ], + [ + 61, + 30 + ], + [ + 60, + 30 + ], + [ + 59, + 30 + ], + [ + 58, + 30 + ], + [ + 57, + 30 + ], + [ + 56, + 30 + ], + [ + 55, + 30 + ], + [ + 49, + 30 + ], + [ + 47, + 30 + ], + [ + 46, + 30 + ], + [ + 43, + 30 + ], + [ + 42, + 30 + ], + [ + 39, + 30 + ], + [ + 38, + 30 + ], + [ + 36, + 30 + ], + [ + 35, + 30 + ], + [ + 33, + 30 + ], + [ + 28, + 30 + ], + [ + 27, + 30 + ], + [ + 26, + 30 + ], + [ + 19, + 30 + ], + [ + 18, + 30 + ], + [ + 15, + 30 + ], + [ + 12, + 30 + ], + [ + 11, + 30 + ], + [ + 8, + 30 + ], + [ + 7, + 30 + ], + [ + 6, + 30 + ], + [ + 3, + 30 + ], + [ + 1, + 30 + ], + [ + 0, + 30 + ], + [ + 110, + 29 + ], + [ + 109, + 29 + ], + [ + 108, + 29 + ], + [ + 107, + 29 + ], + [ + 106, + 29 + ], + [ + 105, + 29 + ], + [ + 104, + 29 + ], + [ + 103, + 29 + ], + [ + 101, + 29 + ], + [ + 99, + 29 + ], + [ + 97, + 29 + ], + [ + 95, + 29 + ], + [ + 94, + 29 + ], + [ + 91, + 29 + ], + [ + 90, + 29 + ], + [ + 86, + 29 + ], + [ + 84, + 29 + ], + [ + 82, + 29 + ], + [ + 81, + 29 + ], + [ + 78, + 29 + ], + [ + 77, + 29 + ], + [ + 74, + 29 + ], + [ + 73, + 29 + ], + [ + 72, + 29 + ], + [ + 69, + 29 + ], + [ + 68, + 29 + ], + [ + 65, + 29 + ], + [ + 64, + 29 + ], + [ + 60, + 29 + ], + [ + 59, + 29 + ], + [ + 58, + 29 + ], + [ + 56, + 29 + ], + [ + 54, + 29 + ], + [ + 52, + 29 + ], + [ + 51, + 29 + ], + [ + 50, + 29 + ], + [ + 49, + 29 + ], + [ + 44, + 29 + ], + [ + 42, + 29 + ], + [ + 41, + 29 + ], + [ + 39, + 29 + ], + [ + 35, + 29 + ], + [ + 34, + 29 + ], + [ + 33, + 29 + ], + [ + 32, + 29 + ], + [ + 24, + 29 + ], + [ + 22, + 29 + ], + [ + 21, + 29 + ], + [ + 20, + 29 + ], + [ + 15, + 29 + ], + [ + 11, + 29 + ], + [ + 8, + 29 + ], + [ + 7, + 29 + ], + [ + 0, + 29 + ], + [ + 30, + 29 + ], + [ + 29, + 30 + ], + [ + 30, + 29 + ], + [ + 110, + 28 + ], + [ + 108, + 28 + ], + [ + 106, + 28 + ], + [ + 104, + 28 + ], + [ + 101, + 28 + ], + [ + 99, + 28 + ], + [ + 97, + 28 + ], + [ + 95, + 28 + ], + [ + 94, + 28 + ], + [ + 93, + 28 + ], + [ + 92, + 28 + ], + [ + 91, + 28 + ], + [ + 90, + 28 + ], + [ + 89, + 28 + ], + [ + 88, + 28 + ], + [ + 87, + 28 + ], + [ + 84, + 28 + ], + [ + 83, + 28 + ], + [ + 81, + 28 + ], + [ + 79, + 28 + ], + [ + 77, + 28 + ], + [ + 75, + 28 + ], + [ + 73, + 28 + ], + [ + 71, + 28 + ], + [ + 69, + 28 + ], + [ + 67, + 28 + ], + [ + 61, + 28 + ], + [ + 60, + 28 + ], + [ + 58, + 28 + ], + [ + 55, + 28 + ], + [ + 54, + 28 + ], + [ + 50, + 28 + ], + [ + 49, + 28 + ], + [ + 48, + 28 + ], + [ + 46, + 28 + ], + [ + 44, + 28 + ], + [ + 42, + 28 + ], + [ + 40, + 28 + ], + [ + 38, + 28 + ], + [ + 33, + 28 + ], + [ + 32, + 28 + ], + [ + 31, + 28 + ], + [ + 27, + 28 + ], + [ + 25, + 28 + ], + [ + 22, + 28 + ], + [ + 21, + 28 + ], + [ + 19, + 28 + ], + [ + 17, + 28 + ], + [ + 15, + 28 + ], + [ + 14, + 28 + ], + [ + 12, + 28 + ], + [ + 10, + 28 + ], + [ + 9, + 28 + ], + [ + 5, + 28 + ], + [ + 4, + 28 + ], + [ + 3, + 28 + ], + [ + 2, + 28 + ], + [ + 1, + 28 + ], + [ + 30, + 28 + ], + [ + 28, + 30 + ], + [ + 30, + 28 + ], + [ + 110, + 27 + ], + [ + 109, + 27 + ], + [ + 108, + 27 + ], + [ + 107, + 27 + ], + [ + 106, + 27 + ], + [ + 105, + 27 + ], + [ + 104, + 27 + ], + [ + 103, + 27 + ], + [ + 102, + 27 + ], + [ + 101, + 27 + ], + [ + 100, + 27 + ], + [ + 99, + 27 + ], + [ + 98, + 27 + ], + [ + 97, + 27 + ], + [ + 96, + 27 + ], + [ + 95, + 27 + ], + [ + 94, + 27 + ], + [ + 93, + 27 + ], + [ + 92, + 27 + ], + [ + 91, + 27 + ], + [ + 90, + 27 + ], + [ + 89, + 27 + ], + [ + 88, + 27 + ], + [ + 87, + 27 + ], + [ + 86, + 27 + ], + [ + 85, + 27 + ], + [ + 84, + 27 + ], + [ + 83, + 27 + ], + [ + 82, + 27 + ], + [ + 81, + 27 + ], + [ + 80, + 27 + ], + [ + 79, + 27 + ], + [ + 78, + 27 + ], + [ + 77, + 27 + ], + [ + 76, + 27 + ], + [ + 75, + 27 + ], + [ + 74, + 27 + ], + [ + 73, + 27 + ], + [ + 72, + 27 + ], + [ + 71, + 27 + ], + [ + 70, + 27 + ], + [ + 69, + 27 + ], + [ + 68, + 27 + ], + [ + 67, + 27 + ], + [ + 66, + 27 + ], + [ + 65, + 27 + ], + [ + 64, + 27 + ], + [ + 63, + 27 + ], + [ + 62, + 27 + ], + [ + 61, + 27 + ], + [ + 60, + 27 + ], + [ + 59, + 27 + ], + [ + 58, + 27 + ], + [ + 57, + 27 + ], + [ + 56, + 27 + ], + [ + 55, + 27 + ], + [ + 54, + 27 + ], + [ + 53, + 27 + ], + [ + 52, + 27 + ], + [ + 51, + 27 + ], + [ + 50, + 27 + ], + [ + 49, + 27 + ], + [ + 48, + 27 + ], + [ + 47, + 27 + ], + [ + 46, + 27 + ], + [ + 45, + 27 + ], + [ + 44, + 27 + ], + [ + 43, + 27 + ], + [ + 42, + 27 + ], + [ + 41, + 27 + ], + [ + 40, + 27 + ], + [ + 39, + 27 + ], + [ + 38, + 27 + ], + [ + 37, + 27 + ], + [ + 36, + 27 + ], + [ + 35, + 27 + ], + [ + 34, + 27 + ], + [ + 33, + 27 + ], + [ + 32, + 27 + ], + [ + 31, + 27 + ], + [ + 30, + 27 + ], + [ + 29, + 27 + ], + [ + 26, + 27 + ], + [ + 25, + 27 + ], + [ + 24, + 27 + ], + [ + 23, + 27 + ], + [ + 22, + 27 + ], + [ + 21, + 27 + ], + [ + 20, + 27 + ], + [ + 19, + 27 + ], + [ + 18, + 27 + ], + [ + 17, + 27 + ], + [ + 16, + 27 + ], + [ + 15, + 27 + ], + [ + 14, + 27 + ], + [ + 13, + 27 + ], + [ + 12, + 27 + ], + [ + 11, + 27 + ], + [ + 10, + 27 + ], + [ + 9, + 27 + ], + [ + 8, + 27 + ], + [ + 7, + 27 + ], + [ + 6, + 27 + ], + [ + 5, + 27 + ], + [ + 4, + 27 + ], + [ + 3, + 27 + ], + [ + 1, + 27 + ], + [ + 0, + 27 + ], + [ + 28, + 27 + ], + [ + 27, + 28 + ], + [ + 28, + 27 + ], + [ + 109, + 26 + ], + [ + 107, + 26 + ], + [ + 105, + 26 + ], + [ + 103, + 26 + ], + [ + 93, + 26 + ], + [ + 92, + 26 + ], + [ + 89, + 26 + ], + [ + 88, + 26 + ], + [ + 87, + 26 + ], + [ + 86, + 26 + ], + [ + 83, + 26 + ], + [ + 82, + 26 + ], + [ + 79, + 26 + ], + [ + 78, + 26 + ], + [ + 75, + 26 + ], + [ + 74, + 26 + ], + [ + 72, + 26 + ], + [ + 71, + 26 + ], + [ + 68, + 26 + ], + [ + 67, + 26 + ], + [ + 65, + 26 + ], + [ + 64, + 26 + ], + [ + 61, + 26 + ], + [ + 59, + 26 + ], + [ + 56, + 26 + ], + [ + 55, + 26 + ], + [ + 52, + 26 + ], + [ + 51, + 26 + ], + [ + 48, + 26 + ], + [ + 46, + 26 + ], + [ + 41, + 26 + ], + [ + 40, + 26 + ], + [ + 39, + 26 + ], + [ + 38, + 26 + ], + [ + 35, + 26 + ], + [ + 34, + 26 + ], + [ + 31, + 26 + ], + [ + 30, + 26 + ], + [ + 29, + 26 + ], + [ + 28, + 26 + ], + [ + 25, + 26 + ], + [ + 24, + 26 + ], + [ + 20, + 26 + ], + [ + 19, + 26 + ], + [ + 17, + 26 + ], + [ + 14, + 26 + ], + [ + 12, + 26 + ], + [ + 11, + 26 + ], + [ + 10, + 26 + ], + [ + 9, + 26 + ], + [ + 8, + 26 + ], + [ + 7, + 26 + ], + [ + 5, + 26 + ], + [ + 4, + 26 + ], + [ + 3, + 26 + ], + [ + 2, + 26 + ], + [ + 1, + 26 + ], + [ + 0, + 26 + ], + [ + 110, + 25 + ], + [ + 109, + 25 + ], + [ + 108, + 25 + ], + [ + 107, + 25 + ], + [ + 106, + 25 + ], + [ + 105, + 25 + ], + [ + 104, + 25 + ], + [ + 103, + 25 + ], + [ + 102, + 25 + ], + [ + 100, + 25 + ], + [ + 98, + 25 + ], + [ + 96, + 25 + ], + [ + 93, + 25 + ], + [ + 92, + 25 + ], + [ + 89, + 25 + ], + [ + 88, + 25 + ], + [ + 86, + 25 + ], + [ + 84, + 25 + ], + [ + 82, + 25 + ], + [ + 81, + 25 + ], + [ + 78, + 25 + ], + [ + 77, + 25 + ], + [ + 74, + 25 + ], + [ + 73, + 25 + ], + [ + 71, + 25 + ], + [ + 70, + 25 + ], + [ + 67, + 25 + ], + [ + 66, + 25 + ], + [ + 63, + 25 + ], + [ + 62, + 25 + ], + [ + 61, + 25 + ], + [ + 59, + 25 + ], + [ + 58, + 25 + ], + [ + 56, + 25 + ], + [ + 54, + 25 + ], + [ + 52, + 25 + ], + [ + 51, + 25 + ], + [ + 50, + 25 + ], + [ + 49, + 25 + ], + [ + 45, + 25 + ], + [ + 43, + 25 + ], + [ + 40, + 25 + ], + [ + 38, + 25 + ], + [ + 37, + 25 + ], + [ + 36, + 25 + ], + [ + 31, + 25 + ], + [ + 29, + 25 + ], + [ + 27, + 25 + ], + [ + 24, + 25 + ], + [ + 22, + 25 + ], + [ + 21, + 25 + ], + [ + 20, + 25 + ], + [ + 15, + 25 + ], + [ + 13, + 25 + ], + [ + 12, + 25 + ], + [ + 10, + 25 + ], + [ + 8, + 25 + ], + [ + 6, + 25 + ], + [ + 5, + 25 + ], + [ + 3, + 25 + ], + [ + 2, + 25 + ], + [ + 0, + 25 + ], + [ + 110, + 24 + ], + [ + 108, + 24 + ], + [ + 106, + 24 + ], + [ + 104, + 24 + ], + [ + 93, + 24 + ], + [ + 92, + 24 + ], + [ + 89, + 24 + ], + [ + 88, + 24 + ], + [ + 87, + 24 + ], + [ + 86, + 24 + ], + [ + 83, + 24 + ], + [ + 82, + 24 + ], + [ + 79, + 24 + ], + [ + 78, + 24 + ], + [ + 75, + 24 + ], + [ + 74, + 24 + ], + [ + 70, + 24 + ], + [ + 69, + 24 + ], + [ + 66, + 24 + ], + [ + 63, + 24 + ], + [ + 62, + 24 + ], + [ + 60, + 24 + ], + [ + 58, + 24 + ], + [ + 57, + 24 + ], + [ + 54, + 24 + ], + [ + 53, + 24 + ], + [ + 50, + 24 + ], + [ + 49, + 24 + ], + [ + 47, + 24 + ], + [ + 41, + 24 + ], + [ + 40, + 24 + ], + [ + 39, + 24 + ], + [ + 38, + 24 + ], + [ + 35, + 24 + ], + [ + 34, + 24 + ], + [ + 31, + 24 + ], + [ + 29, + 24 + ], + [ + 28, + 24 + ], + [ + 25, + 24 + ], + [ + 20, + 24 + ], + [ + 19, + 24 + ], + [ + 13, + 24 + ], + [ + 6, + 24 + ], + [ + 4, + 24 + ], + [ + 110, + 23 + ], + [ + 109, + 23 + ], + [ + 108, + 23 + ], + [ + 107, + 23 + ], + [ + 106, + 23 + ], + [ + 105, + 23 + ], + [ + 104, + 23 + ], + [ + 103, + 23 + ], + [ + 102, + 23 + ], + [ + 101, + 23 + ], + [ + 100, + 23 + ], + [ + 99, + 23 + ], + [ + 98, + 23 + ], + [ + 97, + 23 + ], + [ + 96, + 23 + ], + [ + 95, + 23 + ], + [ + 94, + 23 + ], + [ + 93, + 23 + ], + [ + 92, + 23 + ], + [ + 91, + 23 + ], + [ + 90, + 23 + ], + [ + 89, + 23 + ], + [ + 88, + 23 + ], + [ + 87, + 23 + ], + [ + 86, + 23 + ], + [ + 85, + 23 + ], + [ + 84, + 23 + ], + [ + 83, + 23 + ], + [ + 82, + 23 + ], + [ + 81, + 23 + ], + [ + 80, + 23 + ], + [ + 79, + 23 + ], + [ + 78, + 23 + ], + [ + 77, + 23 + ], + [ + 76, + 23 + ], + [ + 75, + 23 + ], + [ + 74, + 23 + ], + [ + 73, + 23 + ], + [ + 72, + 23 + ], + [ + 71, + 23 + ], + [ + 70, + 23 + ], + [ + 69, + 23 + ], + [ + 68, + 23 + ], + [ + 67, + 23 + ], + [ + 66, + 23 + ], + [ + 65, + 23 + ], + [ + 64, + 23 + ], + [ + 63, + 23 + ], + [ + 62, + 23 + ], + [ + 61, + 23 + ], + [ + 60, + 23 + ], + [ + 59, + 23 + ], + [ + 58, + 23 + ], + [ + 57, + 23 + ], + [ + 56, + 23 + ], + [ + 55, + 23 + ], + [ + 54, + 23 + ], + [ + 53, + 23 + ], + [ + 52, + 23 + ], + [ + 51, + 23 + ], + [ + 50, + 23 + ], + [ + 49, + 23 + ], + [ + 48, + 23 + ], + [ + 47, + 23 + ], + [ + 46, + 23 + ], + [ + 45, + 23 + ], + [ + 44, + 23 + ], + [ + 43, + 23 + ], + [ + 42, + 23 + ], + [ + 41, + 23 + ], + [ + 40, + 23 + ], + [ + 39, + 23 + ], + [ + 38, + 23 + ], + [ + 37, + 23 + ], + [ + 36, + 23 + ], + [ + 35, + 23 + ], + [ + 34, + 23 + ], + [ + 33, + 23 + ], + [ + 32, + 23 + ], + [ + 31, + 23 + ], + [ + 30, + 23 + ], + [ + 29, + 23 + ], + [ + 28, + 23 + ], + [ + 27, + 23 + ], + [ + 26, + 23 + ], + [ + 25, + 23 + ], + [ + 22, + 23 + ], + [ + 21, + 23 + ], + [ + 20, + 23 + ], + [ + 19, + 23 + ], + [ + 18, + 23 + ], + [ + 17, + 23 + ], + [ + 16, + 23 + ], + [ + 15, + 23 + ], + [ + 14, + 23 + ], + [ + 13, + 23 + ], + [ + 12, + 23 + ], + [ + 11, + 23 + ], + [ + 10, + 23 + ], + [ + 9, + 23 + ], + [ + 8, + 23 + ], + [ + 7, + 23 + ], + [ + 6, + 23 + ], + [ + 5, + 23 + ], + [ + 4, + 23 + ], + [ + 3, + 23 + ], + [ + 1, + 23 + ], + [ + 0, + 23 + ], + [ + 24, + 23 + ], + [ + 23, + 24 + ], + [ + 24, + 23 + ], + [ + 110, + 22 + ], + [ + 108, + 22 + ], + [ + 106, + 22 + ], + [ + 104, + 22 + ], + [ + 93, + 22 + ], + [ + 92, + 22 + ], + [ + 89, + 22 + ], + [ + 88, + 22 + ], + [ + 85, + 22 + ], + [ + 84, + 22 + ], + [ + 81, + 22 + ], + [ + 80, + 22 + ], + [ + 77, + 22 + ], + [ + 76, + 22 + ], + [ + 73, + 22 + ], + [ + 72, + 22 + ], + [ + 71, + 22 + ], + [ + 68, + 22 + ], + [ + 67, + 22 + ], + [ + 65, + 22 + ], + [ + 64, + 22 + ], + [ + 61, + 22 + ], + [ + 58, + 22 + ], + [ + 57, + 22 + ], + [ + 54, + 22 + ], + [ + 53, + 22 + ], + [ + 50, + 22 + ], + [ + 49, + 22 + ], + [ + 47, + 22 + ], + [ + 41, + 22 + ], + [ + 40, + 22 + ], + [ + 39, + 22 + ], + [ + 38, + 22 + ], + [ + 35, + 22 + ], + [ + 34, + 22 + ], + [ + 31, + 22 + ], + [ + 27, + 22 + ], + [ + 26, + 22 + ], + [ + 21, + 22 + ], + [ + 18, + 22 + ], + [ + 16, + 22 + ], + [ + 15, + 22 + ], + [ + 12, + 22 + ], + [ + 11, + 22 + ], + [ + 10, + 22 + ], + [ + 7, + 22 + ], + [ + 5, + 22 + ], + [ + 3, + 22 + ], + [ + 23, + 22 + ], + [ + 22, + 23 + ], + [ + 23, + 22 + ], + [ + 110, + 21 + ], + [ + 108, + 21 + ], + [ + 106, + 21 + ], + [ + 104, + 21 + ], + [ + 101, + 21 + ], + [ + 99, + 21 + ], + [ + 97, + 21 + ], + [ + 95, + 21 + ], + [ + 94, + 21 + ], + [ + 93, + 21 + ], + [ + 92, + 21 + ], + [ + 91, + 21 + ], + [ + 90, + 21 + ], + [ + 89, + 21 + ], + [ + 88, + 21 + ], + [ + 87, + 21 + ], + [ + 84, + 21 + ], + [ + 83, + 21 + ], + [ + 81, + 21 + ], + [ + 79, + 21 + ], + [ + 77, + 21 + ], + [ + 75, + 21 + ], + [ + 73, + 21 + ], + [ + 71, + 21 + ], + [ + 69, + 21 + ], + [ + 67, + 21 + ], + [ + 61, + 21 + ], + [ + 60, + 21 + ], + [ + 58, + 21 + ], + [ + 55, + 21 + ], + [ + 54, + 21 + ], + [ + 50, + 21 + ], + [ + 49, + 21 + ], + [ + 48, + 21 + ], + [ + 46, + 21 + ], + [ + 44, + 21 + ], + [ + 42, + 21 + ], + [ + 40, + 21 + ], + [ + 38, + 21 + ], + [ + 33, + 21 + ], + [ + 32, + 21 + ], + [ + 31, + 21 + ], + [ + 30, + 21 + ], + [ + 28, + 21 + ], + [ + 27, + 21 + ], + [ + 25, + 21 + ], + [ + 19, + 21 + ], + [ + 17, + 21 + ], + [ + 15, + 21 + ], + [ + 14, + 21 + ], + [ + 12, + 21 + ], + [ + 10, + 21 + ], + [ + 9, + 21 + ], + [ + 5, + 21 + ], + [ + 4, + 21 + ], + [ + 3, + 21 + ], + [ + 2, + 21 + ], + [ + 1, + 21 + ], + [ + 22, + 21 + ], + [ + 21, + 22 + ], + [ + 22, + 21 + ], + [ + 109, + 20 + ], + [ + 107, + 20 + ], + [ + 105, + 20 + ], + [ + 103, + 20 + ], + [ + 101, + 20 + ], + [ + 99, + 20 + ], + [ + 97, + 20 + ], + [ + 95, + 20 + ], + [ + 94, + 20 + ], + [ + 93, + 20 + ], + [ + 92, + 20 + ], + [ + 91, + 20 + ], + [ + 90, + 20 + ], + [ + 89, + 20 + ], + [ + 88, + 20 + ], + [ + 86, + 20 + ], + [ + 85, + 20 + ], + [ + 82, + 20 + ], + [ + 80, + 20 + ], + [ + 78, + 20 + ], + [ + 76, + 20 + ], + [ + 74, + 20 + ], + [ + 71, + 20 + ], + [ + 69, + 20 + ], + [ + 67, + 20 + ], + [ + 61, + 20 + ], + [ + 60, + 20 + ], + [ + 59, + 20 + ], + [ + 57, + 20 + ], + [ + 56, + 20 + ], + [ + 53, + 20 + ], + [ + 52, + 20 + ], + [ + 51, + 20 + ], + [ + 47, + 20 + ], + [ + 44, + 20 + ], + [ + 42, + 20 + ], + [ + 40, + 20 + ], + [ + 38, + 20 + ], + [ + 33, + 20 + ], + [ + 32, + 20 + ], + [ + 31, + 20 + ], + [ + 29, + 20 + ], + [ + 26, + 20 + ], + [ + 24, + 20 + ], + [ + 23, + 20 + ], + [ + 21, + 20 + ], + [ + 19, + 20 + ], + [ + 18, + 20 + ], + [ + 17, + 20 + ], + [ + 16, + 20 + ], + [ + 12, + 20 + ], + [ + 10, + 20 + ], + [ + 8, + 20 + ], + [ + 5, + 20 + ], + [ + 3, + 20 + ], + [ + 0, + 20 + ], + [ + 110, + 19 + ], + [ + 108, + 19 + ], + [ + 106, + 19 + ], + [ + 104, + 19 + ], + [ + 102, + 19 + ], + [ + 101, + 19 + ], + [ + 100, + 19 + ], + [ + 99, + 19 + ], + [ + 98, + 19 + ], + [ + 97, + 19 + ], + [ + 96, + 19 + ], + [ + 95, + 19 + ], + [ + 94, + 19 + ], + [ + 91, + 19 + ], + [ + 90, + 19 + ], + [ + 85, + 19 + ], + [ + 84, + 19 + ], + [ + 81, + 19 + ], + [ + 80, + 19 + ], + [ + 77, + 19 + ], + [ + 76, + 19 + ], + [ + 73, + 19 + ], + [ + 70, + 19 + ], + [ + 69, + 19 + ], + [ + 66, + 19 + ], + [ + 63, + 19 + ], + [ + 62, + 19 + ], + [ + 60, + 19 + ], + [ + 56, + 19 + ], + [ + 55, + 19 + ], + [ + 52, + 19 + ], + [ + 51, + 19 + ], + [ + 48, + 19 + ], + [ + 46, + 19 + ], + [ + 41, + 19 + ], + [ + 40, + 19 + ], + [ + 39, + 19 + ], + [ + 38, + 19 + ], + [ + 35, + 19 + ], + [ + 34, + 19 + ], + [ + 31, + 19 + ], + [ + 29, + 19 + ], + [ + 28, + 19 + ], + [ + 25, + 19 + ], + [ + 24, + 19 + ], + [ + 21, + 19 + ], + [ + 12, + 19 + ], + [ + 11, + 19 + ], + [ + 10, + 19 + ], + [ + 9, + 19 + ], + [ + 7, + 19 + ], + [ + 5, + 19 + ], + [ + 3, + 19 + ], + [ + 0, + 19 + ], + [ + 20, + 19 + ], + [ + 19, + 20 + ], + [ + 20, + 19 + ], + [ + 110, + 18 + ], + [ + 108, + 18 + ], + [ + 106, + 18 + ], + [ + 104, + 18 + ], + [ + 102, + 18 + ], + [ + 101, + 18 + ], + [ + 100, + 18 + ], + [ + 99, + 18 + ], + [ + 98, + 18 + ], + [ + 97, + 18 + ], + [ + 96, + 18 + ], + [ + 95, + 18 + ], + [ + 94, + 18 + ], + [ + 91, + 18 + ], + [ + 90, + 18 + ], + [ + 87, + 18 + ], + [ + 86, + 18 + ], + [ + 83, + 18 + ], + [ + 82, + 18 + ], + [ + 79, + 18 + ], + [ + 78, + 18 + ], + [ + 75, + 18 + ], + [ + 74, + 18 + ], + [ + 72, + 18 + ], + [ + 71, + 18 + ], + [ + 68, + 18 + ], + [ + 67, + 18 + ], + [ + 65, + 18 + ], + [ + 64, + 18 + ], + [ + 61, + 18 + ], + [ + 56, + 18 + ], + [ + 55, + 18 + ], + [ + 52, + 18 + ], + [ + 51, + 18 + ], + [ + 48, + 18 + ], + [ + 46, + 18 + ], + [ + 41, + 18 + ], + [ + 40, + 18 + ], + [ + 39, + 18 + ], + [ + 38, + 18 + ], + [ + 35, + 18 + ], + [ + 34, + 18 + ], + [ + 31, + 18 + ], + [ + 27, + 18 + ], + [ + 26, + 18 + ], + [ + 23, + 18 + ], + [ + 22, + 18 + ], + [ + 16, + 18 + ], + [ + 15, + 18 + ], + [ + 13, + 18 + ], + [ + 9, + 18 + ], + [ + 6, + 18 + ], + [ + 4, + 18 + ], + [ + 0, + 18 + ], + [ + 21, + 18 + ], + [ + 18, + 21 + ], + [ + 21, + 18 + ], + [ + 109, + 17 + ], + [ + 107, + 17 + ], + [ + 105, + 17 + ], + [ + 103, + 17 + ], + [ + 102, + 17 + ], + [ + 101, + 17 + ], + [ + 100, + 17 + ], + [ + 99, + 17 + ], + [ + 98, + 17 + ], + [ + 97, + 17 + ], + [ + 96, + 17 + ], + [ + 95, + 17 + ], + [ + 94, + 17 + ], + [ + 91, + 17 + ], + [ + 90, + 17 + ], + [ + 85, + 17 + ], + [ + 84, + 17 + ], + [ + 81, + 17 + ], + [ + 80, + 17 + ], + [ + 77, + 17 + ], + [ + 76, + 17 + ], + [ + 73, + 17 + ], + [ + 72, + 17 + ], + [ + 71, + 17 + ], + [ + 68, + 17 + ], + [ + 67, + 17 + ], + [ + 65, + 17 + ], + [ + 64, + 17 + ], + [ + 61, + 17 + ], + [ + 59, + 17 + ], + [ + 58, + 17 + ], + [ + 57, + 17 + ], + [ + 54, + 17 + ], + [ + 53, + 17 + ], + [ + 50, + 17 + ], + [ + 49, + 17 + ], + [ + 47, + 17 + ], + [ + 41, + 17 + ], + [ + 40, + 17 + ], + [ + 39, + 17 + ], + [ + 38, + 17 + ], + [ + 35, + 17 + ], + [ + 34, + 17 + ], + [ + 31, + 17 + ], + [ + 30, + 17 + ], + [ + 29, + 17 + ], + [ + 28, + 17 + ], + [ + 25, + 17 + ], + [ + 24, + 17 + ], + [ + 20, + 17 + ], + [ + 19, + 17 + ], + [ + 16, + 17 + ], + [ + 14, + 17 + ], + [ + 13, + 17 + ], + [ + 8, + 17 + ], + [ + 6, + 17 + ], + [ + 2, + 17 + ], + [ + 1, + 17 + ], + [ + 18, + 17 + ], + [ + 17, + 18 + ], + [ + 18, + 17 + ], + [ + 109, + 16 + ], + [ + 107, + 16 + ], + [ + 105, + 16 + ], + [ + 103, + 16 + ], + [ + 102, + 16 + ], + [ + 101, + 16 + ], + [ + 100, + 16 + ], + [ + 99, + 16 + ], + [ + 98, + 16 + ], + [ + 97, + 16 + ], + [ + 96, + 16 + ], + [ + 95, + 16 + ], + [ + 94, + 16 + ], + [ + 91, + 16 + ], + [ + 90, + 16 + ], + [ + 87, + 16 + ], + [ + 86, + 16 + ], + [ + 83, + 16 + ], + [ + 82, + 16 + ], + [ + 79, + 16 + ], + [ + 78, + 16 + ], + [ + 75, + 16 + ], + [ + 74, + 16 + ], + [ + 70, + 16 + ], + [ + 69, + 16 + ], + [ + 66, + 16 + ], + [ + 63, + 16 + ], + [ + 62, + 16 + ], + [ + 60, + 16 + ], + [ + 59, + 16 + ], + [ + 58, + 16 + ], + [ + 57, + 16 + ], + [ + 54, + 16 + ], + [ + 53, + 16 + ], + [ + 50, + 16 + ], + [ + 49, + 16 + ], + [ + 47, + 16 + ], + [ + 41, + 16 + ], + [ + 40, + 16 + ], + [ + 39, + 16 + ], + [ + 38, + 16 + ], + [ + 35, + 16 + ], + [ + 34, + 16 + ], + [ + 31, + 16 + ], + [ + 30, + 16 + ], + [ + 27, + 16 + ], + [ + 26, + 16 + ], + [ + 23, + 16 + ], + [ + 22, + 16 + ], + [ + 21, + 16 + ], + [ + 15, + 16 + ], + [ + 14, + 16 + ], + [ + 12, + 16 + ], + [ + 11, + 16 + ], + [ + 10, + 16 + ], + [ + 8, + 16 + ], + [ + 7, + 16 + ], + [ + 5, + 16 + ], + [ + 4, + 16 + ], + [ + 3, + 16 + ], + [ + 2, + 16 + ], + [ + 1, + 16 + ], + [ + 18, + 16 + ], + [ + 16, + 18 + ], + [ + 18, + 16 + ], + [ + 110, + 15 + ], + [ + 109, + 15 + ], + [ + 108, + 15 + ], + [ + 107, + 15 + ], + [ + 106, + 15 + ], + [ + 105, + 15 + ], + [ + 104, + 15 + ], + [ + 103, + 15 + ], + [ + 102, + 15 + ], + [ + 100, + 15 + ], + [ + 98, + 15 + ], + [ + 96, + 15 + ], + [ + 93, + 15 + ], + [ + 92, + 15 + ], + [ + 89, + 15 + ], + [ + 88, + 15 + ], + [ + 87, + 15 + ], + [ + 85, + 15 + ], + [ + 83, + 15 + ], + [ + 80, + 15 + ], + [ + 79, + 15 + ], + [ + 76, + 15 + ], + [ + 75, + 15 + ], + [ + 72, + 15 + ], + [ + 69, + 15 + ], + [ + 68, + 15 + ], + [ + 65, + 15 + ], + [ + 64, + 15 + ], + [ + 60, + 15 + ], + [ + 59, + 15 + ], + [ + 57, + 15 + ], + [ + 55, + 15 + ], + [ + 53, + 15 + ], + [ + 48, + 15 + ], + [ + 47, + 15 + ], + [ + 46, + 15 + ], + [ + 44, + 15 + ], + [ + 42, + 15 + ], + [ + 41, + 15 + ], + [ + 39, + 15 + ], + [ + 35, + 15 + ], + [ + 34, + 15 + ], + [ + 33, + 15 + ], + [ + 32, + 15 + ], + [ + 29, + 15 + ], + [ + 27, + 15 + ], + [ + 24, + 15 + ], + [ + 22, + 15 + ], + [ + 21, + 15 + ], + [ + 20, + 15 + ], + [ + 14, + 15 + ], + [ + 13, + 15 + ], + [ + 12, + 15 + ], + [ + 10, + 15 + ], + [ + 9, + 15 + ], + [ + 8, + 15 + ], + [ + 6, + 15 + ], + [ + 5, + 15 + ], + [ + 4, + 15 + ], + [ + 3, + 15 + ], + [ + 110, + 14 + ], + [ + 108, + 14 + ], + [ + 106, + 14 + ], + [ + 104, + 14 + ], + [ + 101, + 14 + ], + [ + 99, + 14 + ], + [ + 97, + 14 + ], + [ + 95, + 14 + ], + [ + 94, + 14 + ], + [ + 93, + 14 + ], + [ + 92, + 14 + ], + [ + 91, + 14 + ], + [ + 90, + 14 + ], + [ + 89, + 14 + ], + [ + 88, + 14 + ], + [ + 87, + 14 + ], + [ + 84, + 14 + ], + [ + 83, + 14 + ], + [ + 81, + 14 + ], + [ + 79, + 14 + ], + [ + 77, + 14 + ], + [ + 75, + 14 + ], + [ + 73, + 14 + ], + [ + 71, + 14 + ], + [ + 69, + 14 + ], + [ + 67, + 14 + ], + [ + 61, + 14 + ], + [ + 60, + 14 + ], + [ + 58, + 14 + ], + [ + 55, + 14 + ], + [ + 54, + 14 + ], + [ + 50, + 14 + ], + [ + 49, + 14 + ], + [ + 48, + 14 + ], + [ + 46, + 14 + ], + [ + 44, + 14 + ], + [ + 42, + 14 + ], + [ + 40, + 14 + ], + [ + 38, + 14 + ], + [ + 33, + 14 + ], + [ + 32, + 14 + ], + [ + 31, + 14 + ], + [ + 30, + 14 + ], + [ + 28, + 14 + ], + [ + 27, + 14 + ], + [ + 25, + 14 + ], + [ + 22, + 14 + ], + [ + 21, + 14 + ], + [ + 19, + 14 + ], + [ + 17, + 14 + ], + [ + 12, + 14 + ], + [ + 10, + 14 + ], + [ + 9, + 14 + ], + [ + 5, + 14 + ], + [ + 4, + 14 + ], + [ + 3, + 14 + ], + [ + 2, + 14 + ], + [ + 1, + 14 + ], + [ + 15, + 14 + ], + [ + 14, + 15 + ], + [ + 15, + 14 + ], + [ + 102, + 13 + ], + [ + 101, + 13 + ], + [ + 100, + 13 + ], + [ + 99, + 13 + ], + [ + 98, + 13 + ], + [ + 97, + 13 + ], + [ + 96, + 13 + ], + [ + 87, + 13 + ], + [ + 86, + 13 + ], + [ + 85, + 13 + ], + [ + 84, + 13 + ], + [ + 83, + 13 + ], + [ + 82, + 13 + ], + [ + 81, + 13 + ], + [ + 72, + 13 + ], + [ + 71, + 13 + ], + [ + 70, + 13 + ], + [ + 69, + 13 + ], + [ + 68, + 13 + ], + [ + 67, + 13 + ], + [ + 66, + 13 + ], + [ + 59, + 13 + ], + [ + 51, + 13 + ], + [ + 50, + 13 + ], + [ + 49, + 13 + ], + [ + 48, + 13 + ], + [ + 47, + 13 + ], + [ + 46, + 13 + ], + [ + 37, + 13 + ], + [ + 36, + 13 + ], + [ + 35, + 13 + ], + [ + 34, + 13 + ], + [ + 33, + 13 + ], + [ + 32, + 13 + ], + [ + 31, + 13 + ], + [ + 21, + 13 + ], + [ + 20, + 13 + ], + [ + 19, + 13 + ], + [ + 18, + 13 + ], + [ + 17, + 13 + ], + [ + 16, + 13 + ], + [ + 15, + 13 + ], + [ + 9, + 13 + ], + [ + 7, + 13 + ], + [ + 6, + 13 + ], + [ + 5, + 13 + ], + [ + 3, + 13 + ], + [ + 2, + 13 + ], + [ + 110, + 12 + ], + [ + 109, + 12 + ], + [ + 108, + 12 + ], + [ + 107, + 12 + ], + [ + 106, + 12 + ], + [ + 105, + 12 + ], + [ + 104, + 12 + ], + [ + 103, + 12 + ], + [ + 95, + 12 + ], + [ + 94, + 12 + ], + [ + 93, + 12 + ], + [ + 92, + 12 + ], + [ + 91, + 12 + ], + [ + 90, + 12 + ], + [ + 89, + 12 + ], + [ + 88, + 12 + ], + [ + 87, + 12 + ], + [ + 86, + 12 + ], + [ + 85, + 12 + ], + [ + 84, + 12 + ], + [ + 83, + 12 + ], + [ + 82, + 12 + ], + [ + 81, + 12 + ], + [ + 72, + 12 + ], + [ + 71, + 12 + ], + [ + 70, + 12 + ], + [ + 69, + 12 + ], + [ + 68, + 12 + ], + [ + 67, + 12 + ], + [ + 66, + 12 + ], + [ + 58, + 12 + ], + [ + 57, + 12 + ], + [ + 56, + 12 + ], + [ + 55, + 12 + ], + [ + 54, + 12 + ], + [ + 53, + 12 + ], + [ + 52, + 12 + ], + [ + 45, + 12 + ], + [ + 44, + 12 + ], + [ + 43, + 12 + ], + [ + 42, + 12 + ], + [ + 41, + 12 + ], + [ + 40, + 12 + ], + [ + 39, + 12 + ], + [ + 38, + 12 + ], + [ + 30, + 12 + ], + [ + 21, + 12 + ], + [ + 20, + 12 + ], + [ + 19, + 12 + ], + [ + 18, + 12 + ], + [ + 17, + 12 + ], + [ + 16, + 12 + ], + [ + 15, + 12 + ], + [ + 14, + 12 + ], + [ + 8, + 12 + ], + [ + 7, + 12 + ], + [ + 6, + 12 + ], + [ + 5, + 12 + ], + [ + 3, + 12 + ], + [ + 2, + 12 + ], + [ + 1, + 12 + ], + [ + 0, + 12 + ], + [ + 110, + 11 + ], + [ + 109, + 11 + ], + [ + 108, + 11 + ], + [ + 107, + 11 + ], + [ + 106, + 11 + ], + [ + 105, + 11 + ], + [ + 104, + 11 + ], + [ + 103, + 11 + ], + [ + 102, + 11 + ], + [ + 101, + 11 + ], + [ + 100, + 11 + ], + [ + 99, + 11 + ], + [ + 98, + 11 + ], + [ + 97, + 11 + ], + [ + 96, + 11 + ], + [ + 87, + 11 + ], + [ + 86, + 11 + ], + [ + 85, + 11 + ], + [ + 84, + 11 + ], + [ + 83, + 11 + ], + [ + 82, + 11 + ], + [ + 81, + 11 + ], + [ + 65, + 11 + ], + [ + 64, + 11 + ], + [ + 63, + 11 + ], + [ + 62, + 11 + ], + [ + 61, + 11 + ], + [ + 60, + 11 + ], + [ + 58, + 11 + ], + [ + 57, + 11 + ], + [ + 56, + 11 + ], + [ + 55, + 11 + ], + [ + 54, + 11 + ], + [ + 53, + 11 + ], + [ + 52, + 11 + ], + [ + 37, + 11 + ], + [ + 36, + 11 + ], + [ + 35, + 11 + ], + [ + 34, + 11 + ], + [ + 33, + 11 + ], + [ + 32, + 11 + ], + [ + 31, + 11 + ], + [ + 30, + 11 + ], + [ + 21, + 11 + ], + [ + 20, + 11 + ], + [ + 19, + 11 + ], + [ + 18, + 11 + ], + [ + 17, + 11 + ], + [ + 16, + 11 + ], + [ + 15, + 11 + ], + [ + 14, + 11 + ], + [ + 13, + 11 + ], + [ + 12, + 11 + ], + [ + 10, + 11 + ], + [ + 9, + 11 + ], + [ + 8, + 11 + ], + [ + 1, + 11 + ], + [ + 0, + 11 + ], + [ + 110, + 10 + ], + [ + 109, + 10 + ], + [ + 108, + 10 + ], + [ + 107, + 10 + ], + [ + 106, + 10 + ], + [ + 105, + 10 + ], + [ + 104, + 10 + ], + [ + 103, + 10 + ], + [ + 95, + 10 + ], + [ + 94, + 10 + ], + [ + 93, + 10 + ], + [ + 92, + 10 + ], + [ + 91, + 10 + ], + [ + 90, + 10 + ], + [ + 89, + 10 + ], + [ + 88, + 10 + ], + [ + 80, + 10 + ], + [ + 79, + 10 + ], + [ + 78, + 10 + ], + [ + 77, + 10 + ], + [ + 76, + 10 + ], + [ + 75, + 10 + ], + [ + 74, + 10 + ], + [ + 73, + 10 + ], + [ + 65, + 10 + ], + [ + 64, + 10 + ], + [ + 63, + 10 + ], + [ + 62, + 10 + ], + [ + 61, + 10 + ], + [ + 60, + 10 + ], + [ + 58, + 10 + ], + [ + 57, + 10 + ], + [ + 56, + 10 + ], + [ + 55, + 10 + ], + [ + 54, + 10 + ], + [ + 53, + 10 + ], + [ + 52, + 10 + ], + [ + 45, + 10 + ], + [ + 44, + 10 + ], + [ + 43, + 10 + ], + [ + 42, + 10 + ], + [ + 41, + 10 + ], + [ + 40, + 10 + ], + [ + 39, + 10 + ], + [ + 38, + 10 + ], + [ + 30, + 10 + ], + [ + 29, + 10 + ], + [ + 28, + 10 + ], + [ + 27, + 10 + ], + [ + 26, + 10 + ], + [ + 25, + 10 + ], + [ + 24, + 10 + ], + [ + 23, + 10 + ], + [ + 22, + 10 + ], + [ + 14, + 10 + ], + [ + 13, + 10 + ], + [ + 12, + 10 + ], + [ + 8, + 10 + ], + [ + 4, + 10 + ], + [ + 2, + 10 + ], + [ + 1, + 10 + ], + [ + 0, + 10 + ], + [ + 11, + 10 + ], + [ + 10, + 11 + ], + [ + 11, + 10 + ], + [ + 110, + 9 + ], + [ + 109, + 9 + ], + [ + 108, + 9 + ], + [ + 107, + 9 + ], + [ + 106, + 9 + ], + [ + 105, + 9 + ], + [ + 104, + 9 + ], + [ + 103, + 9 + ], + [ + 72, + 9 + ], + [ + 71, + 9 + ], + [ + 70, + 9 + ], + [ + 69, + 9 + ], + [ + 68, + 9 + ], + [ + 67, + 9 + ], + [ + 66, + 9 + ], + [ + 65, + 9 + ], + [ + 64, + 9 + ], + [ + 63, + 9 + ], + [ + 62, + 9 + ], + [ + 61, + 9 + ], + [ + 60, + 9 + ], + [ + 59, + 9 + ], + [ + 58, + 9 + ], + [ + 57, + 9 + ], + [ + 56, + 9 + ], + [ + 55, + 9 + ], + [ + 54, + 9 + ], + [ + 53, + 9 + ], + [ + 52, + 9 + ], + [ + 51, + 9 + ], + [ + 50, + 9 + ], + [ + 49, + 9 + ], + [ + 48, + 9 + ], + [ + 47, + 9 + ], + [ + 46, + 9 + ], + [ + 30, + 9 + ], + [ + 14, + 9 + ], + [ + 13, + 9 + ], + [ + 12, + 9 + ], + [ + 11, + 9 + ], + [ + 8, + 9 + ], + [ + 7, + 9 + ], + [ + 6, + 9 + ], + [ + 5, + 9 + ], + [ + 3, + 9 + ], + [ + 2, + 9 + ], + [ + 1, + 9 + ], + [ + 0, + 9 + ], + [ + 10, + 9 + ], + [ + 9, + 10 + ], + [ + 10, + 9 + ], + [ + 110, + 8 + ], + [ + 109, + 8 + ], + [ + 108, + 8 + ], + [ + 107, + 8 + ], + [ + 106, + 8 + ], + [ + 105, + 8 + ], + [ + 104, + 8 + ], + [ + 103, + 8 + ], + [ + 102, + 8 + ], + [ + 100, + 8 + ], + [ + 98, + 8 + ], + [ + 96, + 8 + ], + [ + 93, + 8 + ], + [ + 92, + 8 + ], + [ + 89, + 8 + ], + [ + 88, + 8 + ], + [ + 87, + 8 + ], + [ + 85, + 8 + ], + [ + 83, + 8 + ], + [ + 80, + 8 + ], + [ + 79, + 8 + ], + [ + 76, + 8 + ], + [ + 75, + 8 + ], + [ + 72, + 8 + ], + [ + 69, + 8 + ], + [ + 68, + 8 + ], + [ + 65, + 8 + ], + [ + 64, + 8 + ], + [ + 60, + 8 + ], + [ + 59, + 8 + ], + [ + 58, + 8 + ], + [ + 56, + 8 + ], + [ + 54, + 8 + ], + [ + 52, + 8 + ], + [ + 51, + 8 + ], + [ + 50, + 8 + ], + [ + 49, + 8 + ], + [ + 45, + 8 + ], + [ + 43, + 8 + ], + [ + 40, + 8 + ], + [ + 38, + 8 + ], + [ + 37, + 8 + ], + [ + 36, + 8 + ], + [ + 31, + 8 + ], + [ + 28, + 8 + ], + [ + 26, + 8 + ], + [ + 25, + 8 + ], + [ + 23, + 8 + ], + [ + 19, + 8 + ], + [ + 18, + 8 + ], + [ + 17, + 8 + ], + [ + 16, + 8 + ], + [ + 11, + 8 + ], + [ + 4, + 8 + ], + [ + 2, + 8 + ], + [ + 0, + 8 + ], + [ + 110, + 7 + ], + [ + 109, + 7 + ], + [ + 108, + 7 + ], + [ + 107, + 7 + ], + [ + 106, + 7 + ], + [ + 105, + 7 + ], + [ + 104, + 7 + ], + [ + 103, + 7 + ], + [ + 102, + 7 + ], + [ + 101, + 7 + ], + [ + 100, + 7 + ], + [ + 99, + 7 + ], + [ + 98, + 7 + ], + [ + 97, + 7 + ], + [ + 96, + 7 + ], + [ + 80, + 7 + ], + [ + 79, + 7 + ], + [ + 78, + 7 + ], + [ + 77, + 7 + ], + [ + 76, + 7 + ], + [ + 75, + 7 + ], + [ + 74, + 7 + ], + [ + 73, + 7 + ], + [ + 72, + 7 + ], + [ + 71, + 7 + ], + [ + 70, + 7 + ], + [ + 69, + 7 + ], + [ + 68, + 7 + ], + [ + 67, + 7 + ], + [ + 66, + 7 + ], + [ + 58, + 7 + ], + [ + 57, + 7 + ], + [ + 56, + 7 + ], + [ + 55, + 7 + ], + [ + 54, + 7 + ], + [ + 53, + 7 + ], + [ + 52, + 7 + ], + [ + 37, + 7 + ], + [ + 36, + 7 + ], + [ + 35, + 7 + ], + [ + 34, + 7 + ], + [ + 33, + 7 + ], + [ + 32, + 7 + ], + [ + 31, + 7 + ], + [ + 30, + 7 + ], + [ + 29, + 7 + ], + [ + 28, + 7 + ], + [ + 27, + 7 + ], + [ + 26, + 7 + ], + [ + 25, + 7 + ], + [ + 24, + 7 + ], + [ + 23, + 7 + ], + [ + 22, + 7 + ], + [ + 14, + 7 + ], + [ + 6, + 7 + ], + [ + 5, + 7 + ], + [ + 4, + 7 + ], + [ + 3, + 7 + ], + [ + 1, + 7 + ], + [ + 0, + 7 + ], + [ + 8, + 7 + ], + [ + 7, + 8 + ], + [ + 8, + 7 + ], + [ + 110, + 6 + ], + [ + 109, + 6 + ], + [ + 108, + 6 + ], + [ + 107, + 6 + ], + [ + 106, + 6 + ], + [ + 105, + 6 + ], + [ + 104, + 6 + ], + [ + 103, + 6 + ], + [ + 102, + 6 + ], + [ + 101, + 6 + ], + [ + 100, + 6 + ], + [ + 99, + 6 + ], + [ + 98, + 6 + ], + [ + 97, + 6 + ], + [ + 96, + 6 + ], + [ + 80, + 6 + ], + [ + 79, + 6 + ], + [ + 78, + 6 + ], + [ + 77, + 6 + ], + [ + 76, + 6 + ], + [ + 75, + 6 + ], + [ + 74, + 6 + ], + [ + 73, + 6 + ], + [ + 72, + 6 + ], + [ + 71, + 6 + ], + [ + 70, + 6 + ], + [ + 69, + 6 + ], + [ + 68, + 6 + ], + [ + 67, + 6 + ], + [ + 66, + 6 + ], + [ + 51, + 6 + ], + [ + 50, + 6 + ], + [ + 49, + 6 + ], + [ + 48, + 6 + ], + [ + 47, + 6 + ], + [ + 46, + 6 + ], + [ + 45, + 6 + ], + [ + 44, + 6 + ], + [ + 43, + 6 + ], + [ + 42, + 6 + ], + [ + 41, + 6 + ], + [ + 40, + 6 + ], + [ + 39, + 6 + ], + [ + 38, + 6 + ], + [ + 30, + 6 + ], + [ + 21, + 6 + ], + [ + 20, + 6 + ], + [ + 19, + 6 + ], + [ + 18, + 6 + ], + [ + 17, + 6 + ], + [ + 16, + 6 + ], + [ + 15, + 6 + ], + [ + 14, + 6 + ], + [ + 13, + 6 + ], + [ + 12, + 6 + ], + [ + 11, + 6 + ], + [ + 10, + 6 + ], + [ + 9, + 6 + ], + [ + 8, + 6 + ], + [ + 4, + 6 + ], + [ + 2, + 6 + ], + [ + 1, + 6 + ], + [ + 102, + 5 + ], + [ + 101, + 5 + ], + [ + 100, + 5 + ], + [ + 99, + 5 + ], + [ + 98, + 5 + ], + [ + 97, + 5 + ], + [ + 96, + 5 + ], + [ + 95, + 5 + ], + [ + 94, + 5 + ], + [ + 93, + 5 + ], + [ + 92, + 5 + ], + [ + 91, + 5 + ], + [ + 90, + 5 + ], + [ + 89, + 5 + ], + [ + 88, + 5 + ], + [ + 72, + 5 + ], + [ + 71, + 5 + ], + [ + 70, + 5 + ], + [ + 69, + 5 + ], + [ + 68, + 5 + ], + [ + 67, + 5 + ], + [ + 66, + 5 + ], + [ + 65, + 5 + ], + [ + 64, + 5 + ], + [ + 63, + 5 + ], + [ + 62, + 5 + ], + [ + 61, + 5 + ], + [ + 60, + 5 + ], + [ + 58, + 5 + ], + [ + 57, + 5 + ], + [ + 56, + 5 + ], + [ + 55, + 5 + ], + [ + 54, + 5 + ], + [ + 53, + 5 + ], + [ + 52, + 5 + ], + [ + 51, + 5 + ], + [ + 50, + 5 + ], + [ + 49, + 5 + ], + [ + 48, + 5 + ], + [ + 47, + 5 + ], + [ + 46, + 5 + ], + [ + 29, + 5 + ], + [ + 28, + 5 + ], + [ + 27, + 5 + ], + [ + 26, + 5 + ], + [ + 25, + 5 + ], + [ + 24, + 5 + ], + [ + 23, + 5 + ], + [ + 22, + 5 + ], + [ + 21, + 5 + ], + [ + 20, + 5 + ], + [ + 19, + 5 + ], + [ + 18, + 5 + ], + [ + 17, + 5 + ], + [ + 16, + 5 + ], + [ + 15, + 5 + ], + [ + 9, + 5 + ], + [ + 0, + 5 + ], + [ + 87, + 4 + ], + [ + 86, + 4 + ], + [ + 85, + 4 + ], + [ + 84, + 4 + ], + [ + 83, + 4 + ], + [ + 82, + 4 + ], + [ + 81, + 4 + ], + [ + 80, + 4 + ], + [ + 79, + 4 + ], + [ + 78, + 4 + ], + [ + 77, + 4 + ], + [ + 76, + 4 + ], + [ + 75, + 4 + ], + [ + 74, + 4 + ], + [ + 73, + 4 + ], + [ + 72, + 4 + ], + [ + 71, + 4 + ], + [ + 70, + 4 + ], + [ + 69, + 4 + ], + [ + 68, + 4 + ], + [ + 67, + 4 + ], + [ + 66, + 4 + ], + [ + 65, + 4 + ], + [ + 64, + 4 + ], + [ + 63, + 4 + ], + [ + 62, + 4 + ], + [ + 61, + 4 + ], + [ + 60, + 4 + ], + [ + 58, + 4 + ], + [ + 57, + 4 + ], + [ + 56, + 4 + ], + [ + 55, + 4 + ], + [ + 54, + 4 + ], + [ + 53, + 4 + ], + [ + 52, + 4 + ], + [ + 51, + 4 + ], + [ + 50, + 4 + ], + [ + 49, + 4 + ], + [ + 48, + 4 + ], + [ + 47, + 4 + ], + [ + 46, + 4 + ], + [ + 45, + 4 + ], + [ + 44, + 4 + ], + [ + 43, + 4 + ], + [ + 42, + 4 + ], + [ + 41, + 4 + ], + [ + 40, + 4 + ], + [ + 39, + 4 + ], + [ + 38, + 4 + ], + [ + 37, + 4 + ], + [ + 36, + 4 + ], + [ + 35, + 4 + ], + [ + 34, + 4 + ], + [ + 33, + 4 + ], + [ + 32, + 4 + ], + [ + 31, + 4 + ], + [ + 9, + 4 + ], + [ + 2, + 4 + ], + [ + 110, + 3 + ], + [ + 109, + 3 + ], + [ + 108, + 3 + ], + [ + 107, + 3 + ], + [ + 106, + 3 + ], + [ + 105, + 3 + ], + [ + 104, + 3 + ], + [ + 103, + 3 + ], + [ + 102, + 3 + ], + [ + 101, + 3 + ], + [ + 100, + 3 + ], + [ + 99, + 3 + ], + [ + 98, + 3 + ], + [ + 97, + 3 + ], + [ + 96, + 3 + ], + [ + 80, + 3 + ], + [ + 79, + 3 + ], + [ + 78, + 3 + ], + [ + 77, + 3 + ], + [ + 76, + 3 + ], + [ + 75, + 3 + ], + [ + 74, + 3 + ], + [ + 73, + 3 + ], + [ + 72, + 3 + ], + [ + 71, + 3 + ], + [ + 70, + 3 + ], + [ + 69, + 3 + ], + [ + 68, + 3 + ], + [ + 67, + 3 + ], + [ + 66, + 3 + ], + [ + 58, + 3 + ], + [ + 57, + 3 + ], + [ + 56, + 3 + ], + [ + 55, + 3 + ], + [ + 54, + 3 + ], + [ + 53, + 3 + ], + [ + 52, + 3 + ], + [ + 37, + 3 + ], + [ + 36, + 3 + ], + [ + 35, + 3 + ], + [ + 34, + 3 + ], + [ + 33, + 3 + ], + [ + 32, + 3 + ], + [ + 31, + 3 + ], + [ + 30, + 3 + ], + [ + 29, + 3 + ], + [ + 28, + 3 + ], + [ + 27, + 3 + ], + [ + 26, + 3 + ], + [ + 25, + 3 + ], + [ + 24, + 3 + ], + [ + 23, + 3 + ], + [ + 22, + 3 + ], + [ + 14, + 3 + ], + [ + 8, + 3 + ], + [ + 7, + 3 + ], + [ + 6, + 3 + ], + [ + 5, + 3 + ], + [ + 1, + 3 + ], + [ + 0, + 3 + ], + [ + 4, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 3 + ], + [ + 102, + 2 + ], + [ + 101, + 2 + ], + [ + 100, + 2 + ], + [ + 99, + 2 + ], + [ + 98, + 2 + ], + [ + 97, + 2 + ], + [ + 96, + 2 + ], + [ + 95, + 2 + ], + [ + 94, + 2 + ], + [ + 93, + 2 + ], + [ + 92, + 2 + ], + [ + 91, + 2 + ], + [ + 90, + 2 + ], + [ + 89, + 2 + ], + [ + 88, + 2 + ], + [ + 87, + 2 + ], + [ + 86, + 2 + ], + [ + 85, + 2 + ], + [ + 84, + 2 + ], + [ + 83, + 2 + ], + [ + 82, + 2 + ], + [ + 81, + 2 + ], + [ + 80, + 2 + ], + [ + 79, + 2 + ], + [ + 78, + 2 + ], + [ + 77, + 2 + ], + [ + 76, + 2 + ], + [ + 75, + 2 + ], + [ + 74, + 2 + ], + [ + 73, + 2 + ], + [ + 45, + 2 + ], + [ + 44, + 2 + ], + [ + 43, + 2 + ], + [ + 42, + 2 + ], + [ + 41, + 2 + ], + [ + 40, + 2 + ], + [ + 39, + 2 + ], + [ + 38, + 2 + ], + [ + 37, + 2 + ], + [ + 36, + 2 + ], + [ + 35, + 2 + ], + [ + 34, + 2 + ], + [ + 33, + 2 + ], + [ + 32, + 2 + ], + [ + 31, + 2 + ], + [ + 29, + 2 + ], + [ + 28, + 2 + ], + [ + 27, + 2 + ], + [ + 26, + 2 + ], + [ + 25, + 2 + ], + [ + 24, + 2 + ], + [ + 23, + 2 + ], + [ + 22, + 2 + ], + [ + 21, + 2 + ], + [ + 20, + 2 + ], + [ + 19, + 2 + ], + [ + 18, + 2 + ], + [ + 17, + 2 + ], + [ + 16, + 2 + ], + [ + 15, + 2 + ], + [ + 4, + 2 + ], + [ + 1, + 2 + ], + [ + 110, + 1 + ], + [ + 109, + 1 + ], + [ + 108, + 1 + ], + [ + 107, + 1 + ], + [ + 106, + 1 + ], + [ + 105, + 1 + ], + [ + 104, + 1 + ], + [ + 103, + 1 + ], + [ + 102, + 1 + ], + [ + 101, + 1 + ], + [ + 100, + 1 + ], + [ + 99, + 1 + ], + [ + 98, + 1 + ], + [ + 97, + 1 + ], + [ + 96, + 1 + ], + [ + 80, + 1 + ], + [ + 79, + 1 + ], + [ + 78, + 1 + ], + [ + 77, + 1 + ], + [ + 76, + 1 + ], + [ + 75, + 1 + ], + [ + 74, + 1 + ], + [ + 73, + 1 + ], + [ + 72, + 1 + ], + [ + 71, + 1 + ], + [ + 70, + 1 + ], + [ + 69, + 1 + ], + [ + 68, + 1 + ], + [ + 67, + 1 + ], + [ + 66, + 1 + ], + [ + 51, + 1 + ], + [ + 50, + 1 + ], + [ + 49, + 1 + ], + [ + 48, + 1 + ], + [ + 47, + 1 + ], + [ + 46, + 1 + ], + [ + 45, + 1 + ], + [ + 44, + 1 + ], + [ + 43, + 1 + ], + [ + 42, + 1 + ], + [ + 41, + 1 + ], + [ + 40, + 1 + ], + [ + 39, + 1 + ], + [ + 38, + 1 + ], + [ + 30, + 1 + ], + [ + 21, + 1 + ], + [ + 20, + 1 + ], + [ + 19, + 1 + ], + [ + 18, + 1 + ], + [ + 17, + 1 + ], + [ + 16, + 1 + ], + [ + 15, + 1 + ], + [ + 14, + 1 + ], + [ + 13, + 1 + ], + [ + 12, + 1 + ], + [ + 11, + 1 + ], + [ + 10, + 1 + ], + [ + 9, + 1 + ], + [ + 8, + 1 + ], + [ + 4, + 1 + ], + [ + 3, + 1 + ], + [ + 0, + 1 + ], + [ + 2, + 1 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 102, + 0 + ], + [ + 101, + 0 + ], + [ + 100, + 0 + ], + [ + 99, + 0 + ], + [ + 98, + 0 + ], + [ + 97, + 0 + ], + [ + 96, + 0 + ], + [ + 95, + 0 + ], + [ + 94, + 0 + ], + [ + 93, + 0 + ], + [ + 92, + 0 + ], + [ + 91, + 0 + ], + [ + 90, + 0 + ], + [ + 89, + 0 + ], + [ + 88, + 0 + ], + [ + 87, + 0 + ], + [ + 86, + 0 + ], + [ + 85, + 0 + ], + [ + 84, + 0 + ], + [ + 83, + 0 + ], + [ + 82, + 0 + ], + [ + 81, + 0 + ], + [ + 80, + 0 + ], + [ + 79, + 0 + ], + [ + 78, + 0 + ], + [ + 77, + 0 + ], + [ + 76, + 0 + ], + [ + 75, + 0 + ], + [ + 74, + 0 + ], + [ + 73, + 0 + ], + [ + 58, + 0 + ], + [ + 57, + 0 + ], + [ + 56, + 0 + ], + [ + 55, + 0 + ], + [ + 54, + 0 + ], + [ + 53, + 0 + ], + [ + 52, + 0 + ], + [ + 51, + 0 + ], + [ + 50, + 0 + ], + [ + 49, + 0 + ], + [ + 48, + 0 + ], + [ + 47, + 0 + ], + [ + 46, + 0 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 7, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 3 + ], + [ + 3, + 0 + ] + ], + "ordered_controller": [ + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1 + ] + }, + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": -1, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": false, + "stage": 0 + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": true, + "stage": 1 + }, + { + "cut": "immediately after active reverse call", + "native_level": 1, + "op": "code sweep", + "pair": 0, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 1 + ] + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 14, + "source_level": -1, + "target_level": 1 + }, + { + "cut": "original idle-window exit", + "native_level": 1, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1 + ] + }, + { + "coefficient": 1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 1, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 2 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 1, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 2 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": false, + "stage": 2 + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 7, + "source_level": 1, + "target_level": 2 + }, + { + "cut": "original idle-window exit", + "native_level": 2, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 2 + ] + }, + { + "coefficient": -1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 2, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 1, + "reverse": true, + "stage": 3 + }, + { + "cut": "immediately after active reverse call", + "native_level": 3, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 3 + ] + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 28, + "source_level": -1, + "target_level": 3 + }, + { + "cut": "original idle-window exit", + "native_level": 3, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 3, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 4 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 3, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 4 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 1, + "reverse": false, + "stage": 4 + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 7, + "source_level": 3, + "target_level": 4 + }, + { + "cut": "original idle-window exit", + "native_level": 4, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 4 + ] + }, + { + "coefficient": -1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 4, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 2, + "reverse": true, + "stage": 5 + }, + { + "cut": "immediately after active reverse call", + "native_level": 5, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 5 + ] + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 42, + "source_level": -1, + "target_level": 5 + }, + { + "cut": "original idle-window exit", + "native_level": 5, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 5, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 6 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 5, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 6 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 2, + "reverse": false, + "stage": 6 + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 7, + "source_level": 5, + "target_level": 6 + }, + { + "cut": "original idle-window exit", + "native_level": 6, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 6 + ] + }, + { + "coefficient": -1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 6, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 3, + "reverse": true, + "stage": 7 + }, + { + "cut": "immediately after active reverse call", + "native_level": 7, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 7 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 7, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 3, + "reverse": false, + "stage": 8 + }, + { + "op": "unchanged idle child", + "pair": 0, + "rank": 42, + "source_level": 2, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 0, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 28, + "source_level": 4, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 14, + "source_level": 6, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 0, + "source_level": 8, + "target_level": 8 + }, + { + "coefficient": 1, + "dst": 3, + "kind": "bridge", + "src": 2 + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 1 + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 0 + }, + { + "kind": "exchange" + } + ] +} diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json new file mode 100644 index 0000000000..a97e78e06e --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json @@ -0,0 +1,598 @@ +{ + "algebra": { + "all_scatter_rows_nonzero": true, + "same_code_odd_nine_stage_augmentation": "E_aug=H; rank(E_aug-I)=9", + "scatter_rank": 9, + "selected_row_repair_identity_obstruction": { + "max_repair_rows_per_stage": 9, + "nonzero_K_rows": 111, + "scope": "fixed R,K at augmentation; W_s=K+U_s, RW_s=0; each U_s has at most9 nonzero rows", + "stage_count": 9, + "uncovered_K_rows_at_least": 30, + "union_support_at_most": 81 + }, + "source_code_defect_rank": 9, + "source_rank": 9 + }, + "canonical_recipe_source_sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "chronological_owner_windows": { + "late_terminal_Y_mutation": { + "eligible_stages_if_touch_at_child": [], + "late_touch_after_stage": 8, + "pair": 0, + "rejection": "later preload invalidates existing strict owner-window stages", + "retained_eligible_stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "retained_windows_source_sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "windows": [ + { + "eligible_helper_stages_old": [ + 0, + 1 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1 + ], + "idle_child_index": 7, + "idle_index": 0, + "new_last_pair_touch_index": 0, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 7, + "original_rank": 14, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 2 + ], + "eligible_helper_stages_with_all_code_touches": [ + 2 + ], + "idle_child_index": 13, + "idle_index": 1, + "new_last_pair_touch_index": 10, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 9, + "original_idle_child_index": 13, + "original_rank": 7, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 0, + 1, + 2, + 3 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1, + 2, + 3 + ], + "idle_child_index": 19, + "idle_index": 2, + "new_last_pair_touch_index": 1, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 19, + "original_rank": 28, + "pair": 2 + }, + { + "eligible_helper_stages_old": [ + 4 + ], + "eligible_helper_stages_with_all_code_touches": [ + 4 + ], + "idle_child_index": 25, + "idle_index": 3, + "new_last_pair_touch_index": 22, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 21, + "original_idle_child_index": 25, + "original_rank": 7, + "pair": 2 + }, + { + "eligible_helper_stages_old": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "idle_child_index": 31, + "idle_index": 4, + "new_last_pair_touch_index": 2, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 31, + "original_rank": 42, + "pair": 3 + }, + { + "eligible_helper_stages_old": [ + 6 + ], + "eligible_helper_stages_with_all_code_touches": [ + 6 + ], + "idle_child_index": 37, + "idle_index": 5, + "new_last_pair_touch_index": 34, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 33, + "original_idle_child_index": 37, + "original_rank": 7, + "pair": 3 + }, + { + "eligible_helper_stages_old": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "idle_child_index": 45, + "idle_index": 6, + "new_last_pair_touch_index": 16, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 15, + "original_idle_child_index": 45, + "original_rank": 42, + "pair": 0 + }, + { + "eligible_helper_stages_old": [ + 5, + 6, + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 5, + 6, + 7, + 8 + ], + "idle_child_index": 47, + "idle_index": 7, + "new_last_pair_touch_index": 28, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 27, + "original_idle_child_index": 47, + "original_rank": 28, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 7, + 8 + ], + "idle_child_index": 49, + "idle_index": 8, + "new_last_pair_touch_index": 40, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 39, + "original_idle_child_index": 49, + "original_rank": 14, + "pair": 2 + }, + { + "eligible_helper_stages_old": [], + "eligible_helper_stages_with_all_code_touches": [], + "idle_child_index": 51, + "idle_index": 9, + "new_last_pair_touch_index": 44, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 44, + "original_idle_child_index": 51, + "original_rank": 0, + "pair": 3 + } + ] + }, + "code_scalar_invoice": { + "arbitrary_dirty_helpers_needed": 0, + "binary_scalar_CNOTs": 6372, + "integer_lift_inverse": "reverse the exact word and negate ADD coefficients; H squared identity is asserted only over F2", + "new_private_fields": 0, + "signed_integer_forward_positive_bound": "708422432847326742", + "signed_integer_reverse_positive_bound": "2129470886225876682614879837849", + "source_access": "each CNOT reads and writes the listed actual bank families with rho_s owner-address reindexing; scans, coordinate arithmetic and head return remain paid" + }, + "controller": { + "all_arbitrary_bank_columns": 8, + "code_sweeps": 27, + "endpoint": "diag(E8,...,E8), E8=G8...G0; arbitrary invertible noncommuting G_s", + "extra_code_factors": 63, + "extra_rank_zero_code_work_needs_full_access_invoice": true, + "local_orientation": "G_s=A_s for forward, G_s=A_s^-1 for reverse", + "original_bridge_checks": [ + { + "common_code": [ + 1, + 0 + ], + "dst": 0, + "level": 1, + "src": 1 + }, + { + "common_code": [ + 2, + 1, + 0 + ], + "dst": 0, + "level": 2, + "src": 1 + }, + { + "common_code": [ + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 3, + "src": 2 + }, + { + "common_code": [ + 4, + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 4, + "src": 2 + }, + { + "common_code": [ + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 5, + "src": 3 + }, + { + "common_code": [ + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 6, + "src": 3 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 3, + "level": 8, + "src": 2 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 8, + "src": 1 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 8, + "src": 0 + } + ], + "original_idle_profile_per_replica": { + "7": 666, + "14": 444, + "28": 444, + "42": 444 + }, + "original_idle_rank_mass_per_replica": 41958, + "original_long_idle_windows_preserved": true, + "owner_condition": "all new Y preloads before borrowing begins; X code after all owners restore. Restored arbitrary correlated dirt remains admissible under a globally invertible preload." + }, + "limits": [ + "shared-label mutable-source native realization remains inherited", + "nine-stage integer-lift precision not re-admitted", + "no complete rank-zero source-access/tape invoice", + "owner windows preserved structurally, changed whole program not emitted or owner-replayed", + "no restored endpoint or supplier or new conditional kappa" + ], + "matrix_input_sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a", + "native_geometry": { + "actual_R438_entrance_and_cap_frames_bound": 222, + "actual_stage_routes": 999, + "all_stage_admission_law": { + "X_after_progress_to_level_t_at_least_s": "rho_s (I+E_<=t) rho_s = I+E_<=t, independent of port", + "Y_hole_at_level_t_less_than_s": "rho_s (K_p+E_<=t) rho_s = E_s+E_<=t, independent of port", + "initial_Y": "zero remains zero under every actual rho_s", + "invalid_late_X_before_progress": "rho_s (I+E_<=t) rho_s = P_p+E_s+E_<=t for t=1 be the number of hole banks, n the number of physical ports and +L=2B+1 the odd alternating stage count. In this construction, the complete +ordinary-coverage rank deficit before the three-copy local repairs is +`(L-1)n`. Three local rank-one copies at each stage cost `3L`. Two endpoint +normalizations on each hole bank cost `2Bn=(L-1)n`. Consequently the complete +rank deficit after that terminal construction is + +``` +D=(L-1)n-3L-2Bn=-3L<0. +``` + +This already fails at exponent zero before fallback, new precision/tape +work or terminal allocation. For B=4,L=9 and T=32 replicated copies the +excess rank mass is `3*9*32=864`, agreeing with `BIT-OWNER-PRUNE.json`. +Changing B while retaining these same coverage and terminal contracts cannot +repair the deficit. A changed coverage, stock, endpoint or controller is +outside this calculation. + +## Why the tempting288-child scalar terminal invoice is not admitted + +At scalar augmentation, all address operators are set to identity. The +common-E schedule then has rank(E-I)<=9 because its five forward and four +inverse factors collapse to the same scalar code A. On actual native data +the stage source codes have different owner/address charts. They are +operator-valued and need not commute or collapse. The preserved raw ordered +word supplies81 channels (nine stages times nine local defect channels), +not a demonstrated nine-channel native endpoint factor. + +The tempting `4 hole banks *9 channels *rank8 descent=288` therefore uses +an unproved native factorization. It also omits access at the actual hole +cut. In the existing all-bank FULL-gather implementation, each hole bank +has111 ordinary fields at its own rank-seven caps. Raising those fields to +the required common rank-eight FULL frame costs111 rank-one ascents per +bank,444 globally. Those visits must be paid before a FULL-frame source +query can be formed. Even granting a hypothetical nine-channel factor, +this access plus288 would already cost732, before output alignment and +cleanup. Normalizing and returning all fields gives the known888 terminal +children, with rank-zero code arithmetic between the two sweeps. + +The444 figure is the cost of this particular FULL-gather construction, not +a universal lower bound on native observers. A new copied-query network, +shared legal cut, wider observer or other readout may change that invoice; +it must provide its own ordered arbitrary-input word and actual source, +output, dirt and restoration access. Scalar augmentation rank alone cannot +provide those interfaces. diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py b/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py new file mode 100644 index 0000000000..679be90ff9 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +"""Local-only exact native cap-copy audit, independent of any controller. + +Inputs are the pinned R438 word and frozen signed six-copy local word. The +16-column ADDRESS identities hold over every odd field where dyadic entries +are interpreted. Scalar integer cleanup and rounded child errors are separate. +Apache-2.0; substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +RAW = Path('/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz') +RAW_SHA = 'a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022' + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def rank(rows): + basis = {} + for row in rows: + row = list(map(Q, row)) + for j, old in sorted(basis.items()): + c = row[j] + row = [x-c*y for x,y in zip(row,old)] + j = next((j for j,x in enumerate(row) if x), None) + if j is not None: + c = row[j] + basis[j] = [x/c for x in row] + return len(basis) + + +def identity(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def multiply(a, b): + return [[sum(x*y for x,y in zip(row,col)) for col in zip(*b)] for row in a] + + +def exchange(u): + c = [[Q(i == j)-u[i][j] for j in range(8)] for i in range(8)] + return [c[i]+u[i] for i in range(8)]+[u[i]+c[i] for i in range(8)] + + +def address_identities(word): + ident = identity(8) + out = [] + for p, q in enumerate(word['lines']): + need(sum(x*x for x in q) == 4, 'actual E8 root norm') + start = [word['lines'][j] for j in word['frames'][word['start'][p]]] + cap = [word['lines'][j] for j in word['frames'][word['final'][111+p]]] + need(rank(start) == 1 and all(all(4*x == sum(a*b for a,b in zip(row,q))*y + for x,y in zip(row,q)) for row in start), 'actual entrance is not P_p') + need(rank(cap) == 7 and all(sum(x*y for x,y in zip(row,q)) == 0 for row in cap), + 'actual target cap is not K_p') + proj = [[Q(x*y,4) for y in q] for x in q] + complement = [[ident[i][j]-proj[i][j] for j in range(8)] for i in range(8)] + need(multiply(proj,proj) == proj and rank(proj) == 1, 'actual P_p projector') + need(multiply(exchange(ident),exchange(proj)) == exchange(complement), + 'D_I D_P differs from D_K') + need(multiply(exchange(proj),exchange(proj)) == identity(16), 'D_P squared differs from I') + encoded = [[[v.numerator,v.denominator] for v in row] for row in proj] + out.append(sha256(canonical(encoded)).hexdigest()) + need(len(out) == 111, 'actual punctured root count') + return out + + +def frame_replay(word, program, backward=False, fault=None): + dims = [rank(word['lines'][j] for j in f) for f in word['frames']] + masks = [sum(1 << j for j in f) for f in word['frames']] + need(dims[1] == 8, 'named FULL is not full') + frames = (word['final'] if backward else word['start'])[:]+[None] + open_source, copies, erases = None, [], 0 + paid = Counter() + rows = list(reversed(program['records'])) if backward else program['records'] + for raw in rows: + op,x,y,c,f,phase = raw + if op == 0: + old,new = (c,y) if backward else (y,c) + lo,hi = (new,old) if backward else (old,new) + need(frames[x] == old, 'MOVE source frame') + need(not masks[lo] & ~masks[hi] and dims[hi]-dims[lo] == f > 0, 'MOVE rank or containment') + frames[x] = new + paid[f] += 1 + elif op == 1: + need(x < 660 and x != y and frames[x] == frames[y] == f, 'ADD common frame') + need(open_source != x, 'immutable copied source changed') + elif op == (3 if backward else 2): + need(open_source is None and y == 660 and frames[660] is None, 'COPY fresh private field') + if fault == 'copy_to_full': + f = 1 + need(frames[x] == c == 1 and not masks[f] & ~masks[c], 'COPY source FULL and target nested') + need(dims[c]-dims[f] == 1, 'COPY does not use rank-one cap descent') + frames[660],open_source = f,x + copies.append({'source':x,'source_frame':c,'private_frame':f,'rank':1}) + paid[1] += 1 + else: + need(op == (2 if backward else 3), 'unknown native opcode') + need(open_source == x and y == 660 and frames[x] == c and frames[660] == f, + 'ERASE original snapshot source/frame') + frames[660],open_source = None,None + erases += 1 + need(open_source is None and frames[:660] == (word['start'] if backward else word['final']), 'native endpoint') + need(len(copies) == erases == 6, 'six closed immutable snapshots') + return {'copies':copies,'literal_erases':erases,'paid_profile':dict(sorted(paid.items())), + 'maximum_simultaneous_private_snapshots':1} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--write', action='store_true') + args = parser.parse_args() + raw = RAW.read_bytes() + need(sha256(raw).hexdigest() == RAW_SHA, 'R438 source pin') + word = json.loads(gzip.decompress(raw)) + meta = json.loads((HERE/'BIT-SIGNED-INPUT.json').read_bytes()) + packed = (HERE/'BIT-SIGNED-INPUT-WORD.json.gz').read_bytes() + decoded = gzip.decompress(packed) + need(sha256(packed).hexdigest() == meta['word_gzip_sha256'] and + sha256(decoded).hexdigest() == meta['word_canonical_sha256'], 'frozen signed word pin') + program = json.loads(decoded) + need(program['start'] == word['start'] and program['final'] == word['final'], 'retained native boundaries') + projectors = address_identities(word) + forward,backward = frame_replay(word,program),frame_replay(word,program,True) + try: + frame_replay(word,program,fault='copy_to_full') + except ValueError as error: + negative = str(error) + else: + raise ValueError('rank-zero FULL copy mutation escaped') + receipt = {'status':'PASS_LOCAL_SIX_CAP_COPY_NATIVE_CONTRACT', + 'raw_R438_gzip_sha256':RAW_SHA,'signed_word_canonical_sha256':meta['word_canonical_sha256'], + 'actual_port_count':111,'actual_entrance_and_target_frames':222, + 'projector_sha256':projectors,'address_identity_columns':3552, + 'forward':forward,'literal_inverse':backward,'negative_control':negative, + 'domain':'Exact dyadic projectors and ADDRESS matrices; every odd modulus where their dyadic coefficients are interpreted. VALUE scalar identity and native recursive child errors are separate.', + 'source_role_rule':'COPY may read an actual source field or an arbitrary helper, provided the physical source stays unchanged until ERASE. No helper-only restriction is used.', + 'limits':['local native/frame contract only','no global controller, endpoint decoder, owner allocation, precision theorem, tape bound or kappa claim']} + path = HERE/'BIT-CAP-COPY-LOCAL.json' + if args.write: + path.write_text(json.dumps(receipt,sort_keys=True,indent=2)+'\n') + else: + need(json.loads(path.read_bytes()) == json.loads(canonical(receipt)), 'complete cap-copy receipt differs') + print(receipt['status']) + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py b/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py new file mode 100644 index 0000000000..786a39551b --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py @@ -0,0 +1,520 @@ +#!/usr/bin/env python3 +"""Independent BIT cap-copy and retimed common-code controller witnesses. + +Local scalar construction belongs to helper-boundary/bit_transvection.py. +This file consumes its matrix snapshot and the frozen R438 geometry. It proves +native chart admission of the added code sweeps at unchanged idle-window +boundaries, not a restored endpoint or a complete physical supplier. + +Apache-2.0. Prepared with substantial OpenAI Codex assistance. +""" + +import argparse +import ast +from collections import Counter +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +import json +from pathlib import Path + + +HERE = Path(__file__).resolve().parent +REPO = Path('/Users/ross/git/math/integer-mult-bounds') +RECIPE_SOURCE = REPO / ('research/e8-bit-p111-tuned/vendor/pr510/' + 'e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py') + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def bits(value): + while value: + low = value & -value + yield low.bit_length() - 1 + value ^= low + + +def xor_all(values): + result = 0 + for value in values: + result ^= value + return result + + +def binary_product(a, b): + return [xor_all(b[j] for j in bits(row)) for row in a] + + +def binary_rank(a): + pivots = {} + for row in a: + while row: + pivot = row.bit_length() - 1 + if pivot in pivots: + row ^= pivots[pivot] + else: + pivots[pivot] = row + break + return len(pivots) + + +def eye(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def transpose(a): + return [list(row) for row in zip(*a)] + + +def mm(a, b): + bt = transpose(b) + return [[sum(x * y for x, y in zip(row, col)) for col in bt] for row in a] + + +def plus(a, b, scale=1): + return [[x + scale * y for x, y in zip(r, s)] for r, s in zip(a, b)] + + +def serial(a): + return [[[x.numerator, x.denominator] for x in row] for row in a] + + +def rational_rank(rows): + pivots = {} + for row in rows: + row = list(map(Q, row)) + for j, old in sorted(pivots.items()): + c = row[j] + row = [x - c * y for x,y in zip(row,old)] + j = next((j for j,x in enumerate(row) if x), None) + if j is not None: + c = row[j] + pivots[j] = [x / c for x in row] + return len(pivots) + + +def source_matrices(word, frozen): + v, n = word['v'], 2 * word['v'] + word['R'] + rows = [1 << i for i in range(n)] + for name in ('D', 'A'): + for _, dst, sources in word[name]: + for source in sources: + rows[dst] ^= rows[source] + r = [rows[p] & ((1 << v) - 1) for p in word['ret']] + k = [sum(1 << j for j in row) for row in word['scatter']] + need(r == frozen['R'] and k == frozen['K'], 'producer R/K not actual R438') + w, h = frozen['W'], frozen['H'] + need(binary_product(r, w) == [0] * 9, 'R W not zero') + need(binary_product(r, h) == r, 'R H not R') + need(binary_product(h, h) == [1 << j for j in range(v)], 'H not involutive') + delta = [row ^ (1 << j) for j, row in enumerate(h)] + need(binary_rank(r) == binary_rank(w) == binary_rank(delta) == 9, + 'actual transvection ranks') + need(all(k), 'a physical scatter row is zero') + return {'source_rank': 9, 'scatter_rank': binary_rank(k), + 'source_code_defect_rank': 9, 'all_scatter_rows_nonzero': True, + 'same_code_odd_nine_stage_augmentation': 'E_aug=H; rank(E_aug-I)=9', + 'selected_row_repair_identity_obstruction': { + 'stage_count': 9, 'max_repair_rows_per_stage': 9, + 'union_support_at_most': 81, 'nonzero_K_rows': v, + 'uncovered_K_rows_at_least': v - 81, + 'scope': 'fixed R,K at augmentation; W_s=K+U_s, RW_s=0; each U_s has at most9 nonzero rows'}} + + +def inplace_code(h): + """Explicit no-helper CNOT synthesis; no assumed clean private values.""" + a = h[:] + elimination = [] + n = len(a) + def add(dst, src): + need(dst != src, 'self code gate') + a[dst] ^= a[src] + elimination.append([dst, src]) + for j in range(n): + p = next((p for p in range(j, n) if a[p] >> j & 1), None) + need(p is not None, 'singular source code') + if p != j: + add(p, j) + add(j, p) + add(p, j) + for p in range(n): + if p != j and a[p] >> j & 1: + add(p, j) + need(a == [1 << j for j in range(n)], 'code elimination') + gates = list(reversed(elimination)) + for reverse in (False, True): + rows = [1 << j for j in range(n)] + positive = [1] * n + for dst, src in reversed(gates) if reverse else gates: + rows[dst] ^= rows[src] + positive[dst] += positive[src] + # This particular matrix is involutive over F2, not necessarily over Z. + need(rows == h, 'explicit code synthesis/inverse') + bounds = [] + for order in (gates, list(reversed(gates))): + positive = [1] * n + for dst, src in order: + positive[dst] += positive[src] + bounds.append(max(positive)) + return gates, {'binary_scalar_CNOTs': len(gates), 'new_private_fields': 0, + 'arbitrary_dirty_helpers_needed': 0, + 'signed_integer_forward_positive_bound': str(bounds[0]), + 'signed_integer_reverse_positive_bound': str(bounds[1]), + 'integer_lift_inverse': 'reverse the exact word and negate ADD coefficients; H squared identity is asserted only over F2', + 'source_access': 'each CNOT reads and writes the listed actual bank families with rho_s owner-address reindexing; scans, coordinate arithmetic and head return remain paid'} + + +def geometry(word): + """Reconstruct the same exact E8 reflection BFS as the pinned geometry.""" + path = REPO / 'research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz' + all_word = json.loads(gzip.decompress(path.read_bytes())) + lines = all_word['lines'] + ident = eye(8) + gs, todo = {0: ident}, [0] + while todo: + more = [] + for i in todo: + for j in range(120): + ip = sum(x * y for x, y in zip(lines[i], lines[j])) // 2 + if j in gs or abs(ip) != 1: + continue + d = [Q(x - y if ip == 1 else x + y) + for x, y in zip(lines[i], lines[j])] + norm = sum(x * x for x in d) + reflection = [[Q(a == b) - 2 * d[a] * d[b] / norm + for b in range(8)] for a in range(8)] + gs[j] = mm(reflection, gs[i]) + more.append(j) + todo = more + need(len(gs) == 120, 'actual E8 route BFS incomplete') + digests = [] + caps = [] + denominators = set() + for p, old_label in enumerate(word['ports_geom']): + q, g = word['lines'][p], gs[old_label] + need(q == lines[old_label], 'actual punctured port ordering') + need(mm(transpose(g), g) == ident, 'nonorthogonal E8 chart') + first = [row[0] * 2 for row in g] + need(first == q or first == [-x for x in q], 'route root image') + entrance = [word['lines'][j] for j in word['frames'][word['start'][p]]] + cap = [word['lines'][j] for j in word['frames'][word['final'][111+p]]] + need(rational_rank(entrance) == 1 and all( + all(4*x == sum(a*b for a,b in zip(row,q))*y for x,y in zip(row,q)) + for row in entrance), 'actual source initial frame not P_p') + need(rational_rank(cap) == 7 and all(sum(x*y for x,y in zip(row,q)) == 0 for row in cap), + 'actual target final frame not K_p') + projector = [[Q(x * y, 4) for y in q] for x in q] + complement = plus(ident, projector, -1) + a = [row[1:] for row in g] + need(mm(a, transpose(a)) == complement, 'A A* not K') + need(mm(transpose(a), a) == eye(7), 'A* A not I7') + need(mm(projector, a) == [[Q(0)] * 7 for _ in range(8)], 'P A not zero') + rho = [projector[i] + a[i] for i in range(8)] + rho += [row + [Q(0)] * 7 for row in transpose(a)] + need(mm(rho, rho) == eye(15), 'actual rho15 not involutive') + p15 = [row + [Q(0)] * 7 for row in projector] + [[Q(0)] * 15 for _ in range(7)] + k15 = [row + [Q(0)] * 7 for row in complement] + [[Q(0)] * 15 for _ in range(7)] + e15 = [[Q(i == j and i >= 8) for j in range(15)] for i in range(15)] + need(mm(mm(rho, p15), rho) == p15, 'rho does not fix P') + need(mm(mm(rho, k15), rho) == e15, 'rho K rho not exterior E') + need(mm(mm(rho, e15), rho) == k15, 'rho E rho not K') + # Exact native address exchange law on both address halves. + def exchange(u): + c = plus(ident, u, -1) + return [c[i] + u[i] for i in range(8)] + [u[i] + c[i] for i in range(8)] + need(mm(exchange(ident), exchange(projector)) == exchange(complement), + 'D_I D_P not D_K') + need(mm(exchange(projector), exchange(projector)) == eye(16), 'D_P not involutive') + if p in (0, 1, 2, 4, 8, 9, 14, 30, 59): + caps.append({'port': p, 'rank': 1, + 'literal_copy': 'D_P takes a fresh copy from FULL to K_p, source unchanged; ERASE sees its original snapshot', + 'complementary_inverse': 'same rank-one projector, literal reverse snapshot lifecycle'}) + denominators.update(x.denominator for row in rho for x in row) + digests.append(sha256(canonical(serial(rho))).hexdigest()) + return {'ports': len(digests), 'actual_stage_routes': 9 * len(digests), + 'rho15_digests': digests, 'route_denominators': sorted(denominators), + 'native_D_identity_columns': 2 * 16 * len(digests), + 'actual_R438_entrance_and_cap_frames_bound': 2 * len(digests), + 'rank_one_FULL_to_cap_copy_witnesses': caps, + 'all_stage_admission_law': { + 'Y_hole_at_level_t_less_than_s': 'rho_s (K_p+E_<=t) rho_s = E_s+E_<=t, independent of port', + 'X_after_progress_to_level_t_at_least_s': 'rho_s (I+E_<=t) rho_s = I+E_<=t, independent of port', + 'initial_Y': 'zero remains zero under every actual rho_s', + 's0': 'rho_0=I; initial Y zero and completed X I are common', + 'invalid_late_X_before_progress': 'rho_s (I+E_<=t) rho_s = P_p+E_s+E_<=t for t level) or + side == 0 and level >= s, + 'code chart not admitted at actual native cut') + key = len(extra) + event = dict(op='code sweep', pair=pair, side='Y' if side else 'X', + stages=stages, native_level=level, cut=cut, + source_cut='before all borrowing in this idle window' if side else + 'after all borrowed helpers have restored and the idle child completed') + extra.append(event) + word.append(event) + if key != omit: + banks[pair][side] = code_apply(banks[pair][side], stages) + # These banks are untouched by the data controller until their first + # retained idle child. Their arbitrary preloaded dirt may be borrowed and + # restored while waiting; it need not be independently clean. + for p in range(1, 4): + sweep(p, 1, list(range(2 * p)), 'original first idle-window entrance') + for event in events: + if event['kind'] == 'local': + s, p, rev = event['stage'], event['pair'], event['reverse'] + need(levels[p] == s - 1, 'active local level') + if not rev: + sweep(p, 1, [s], 'immediately before active forward call') + x, y = banks[p] + banks[p] = [xor_dict(x, y), code_apply(y, [s])] if rev else [ + code_apply(x, [s]), xor_dict(y, code_apply(x, [s]))] + levels[p] = s + word.append({'op': 'complete local coded call', **event}) + if rev: + sweep(p, 0, [s], 'immediately after active reverse call') + idles = [] + if s % 2 and s <= 5: + j = (s + 1) // 2 + idles.append((j, -1, s)) + elif s % 2 == 0 and 2 <= s <= 6: + j = s // 2 + idles.append((j, s - 1, s)) + elif s == 8: + for j in range(4): + old = levels[j] + idles.append((j, old, 8)) + for j, old, new in idles: + need(levels[j] == old, 'original idle entry level') + rank = 7 * (new - old) + rank_profile[rank] += 2 * 111 if rank else 0 + word.append(dict(op='unchanged idle child', pair=j, + source_level=old, target_level=new, rank=rank)) + levels[j] = new + stages = list(range(new + 1)) if old == -1 else list(range(old + 1, new + 1)) + sweep(j, 0, stages, 'original idle-window exit') + elif event['kind'] == 'bridge': + d, s = event['dst'], event['src'] + need(levels[d] == levels[s], 'original bridge frame level') + def factors(row): + return {key[0] for key in row} + codes = [factors(banks[p][side]) for p in (d, s) for side in (0, 1)] + need(all(value == codes[0] for value in codes), 'actual bridge code mismatch') + banks[d][0] ^= banks[s][0] + banks[s][1] ^= banks[d][1] + word.append(event) + bridge_checks.append(dict(dst=d, src=s, level=levels[d], + common_code=list(next(iter(codes[0]))))) + # Apply a Y preload at the actual entrance of its idle window, + # before any intervening call borrows cells from that window. + last_stage = next( + entry['stage'] for entry in reversed(word) + if entry.get('op') == 'complete local coded call') + if last_stage in (1, 3, 5): + j = (last_stage + 1) // 2 + sweep(j, 1, [last_stage + 1], 'immediately after preceding bridge; short idle-window entrance') + elif last_stage in (2, 4, 6): + retired = (last_stage - 2) // 2 + sweep(retired, 1, list(range(last_stage + 1, 9)), + 'immediately after last bridge; terminal idle-window entrance') + else: + need(levels == [8] * 4, 'terminal level') + banks = [[y, x] for x, y in banks] + word.append(event) + expected = [[{(tuple(range(8, -1, -1)), 2 * p)}, + {(tuple(range(8, -1, -1)), 2 * p + 1)}] for p in range(4)] + need(banks == expected, 'all arbitrary bank columns coded endpoint') + rank_profile.pop(0, None) + need(rank_profile == Counter({14: 444, 7: 666, 28: 444, 42: 444}), + 'original unhosted idle profile changed') + return word, {'extra_code_factors': sum(len(e['stages']) for e in extra), + 'code_sweeps': len(extra), 'original_idle_profile_per_replica': dict(sorted(rank_profile.items())), + 'original_idle_rank_mass_per_replica': sum(r * n for r, n in rank_profile.items()), + 'original_bridge_checks': bridge_checks, + 'original_long_idle_windows_preserved': True, + 'all_arbitrary_bank_columns': 8, + 'extra_rank_zero_code_work_needs_full_access_invoice': True, + 'endpoint': 'diag(E8,...,E8), E8=G8...G0; arbitrary invertible noncommuting G_s', + 'local_orientation': 'G_s=A_s for forward, G_s=A_s^-1 for reverse', + 'owner_condition': 'all new Y preloads before borrowing begins; X code after all owners restore. Restored arbitrary correlated dirt remains admissible under a globally invertible preload.'} + + +def owner_windows(word): + """Compare chronological eligible stages with the actual retained rule.""" + source = REPO / ('research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/' + 'vendor/idle-axis-hosting/hosting_core.py') + tree = ast.parse(source.read_bytes()) + fn = next(x for x in tree.body if isinstance(x, ast.FunctionDef) and x.name == 'windows') + env = {} + exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec'), env) + schedule = [] + original_positions = [] + idle = 0 + for pos, event in enumerate(word): + if event.get('op') == 'complete local coded call': + schedule.append({'kind': 'local', 'stage': event['stage'], 'pair': event['pair']}) + elif event.get('op') == 'unchanged idle child': + schedule.append({'kind': 'idle', 'pair': event['pair'], 'rank': event['rank'], 'idx': idle}) + idle += 1 + elif event.get('kind') in ('bridge', 'exchange'): + schedule.append(event) + else: + continue + original_positions.append(pos) + old = env['windows'](schedule) + old_with_positions = {} + last, locals_ = {}, [] + for i, event in enumerate(schedule): + pos = original_positions[i] + if event['kind'] == 'local': + locals_.append((pos, event['stage'], event['pair'])) + last[event['pair']] = pos + elif event['kind'] == 'bridge': + last[event['dst']] = last[event['src']] = pos + elif event['kind'] == 'idle': + p = event['pair'] + old_with_positions[event['idx']] = (last.get(p, -1), pos) + # The enlarged physical touch alphabet counts each code sweep as a touch + # of its actual pair, conservatively even when only one member changes. + last, locals_, receipts = {}, [], [] + for pos, event in enumerate(word): + op = event.get('op') + if op == 'complete local coded call': + locals_.append((pos, event['stage'], event['pair'])) + last[event['pair']] = pos + elif op == 'code sweep': + last[event['pair']] = pos + elif event.get('kind') == 'bridge': + last[event['dst']] = last[event['src']] = pos + elif op == 'unchanged idle child': + idx = len(receipts) + p, r, expected = old[idx] + lo = last.get(p, -1) + actual = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + need(actual == expected, 'a new code touch destroys an old helper owner window') + old_lo, old_hi = old_with_positions[idx] + receipts.append({'idle_index': idx, 'pair': p, 'original_rank': r, + 'old_last_pair_touch_index': old_lo, 'new_last_pair_touch_index': lo, + 'idle_child_index': pos, 'original_idle_child_index': old_hi, + 'eligible_helper_stages_old': sorted(expected), + 'eligible_helper_stages_with_all_code_touches': sorted(actual), + 'no_added_code_between_first_eligible_stage_and_child': + not any(e.get('op') == 'code sweep' and e['pair'] == p and + (min((q for q,s,pp in locals_ if s in expected), default=pos) < q2 < pos) + for q2,e in enumerate(word))}) + need(receipts[-1]['no_added_code_between_first_eligible_stage_and_child'], + 'code sweep interrupts a pending owner interval') + # Cheap diagnosis of the superseded late-terminal-Y placement. Moving + # that touch behind an eligible call would strictly shrink the window. + terminal = next(r for r in receipts if r['pair'] == 0 and r['original_rank'] == 42) + need(terminal['eligible_helper_stages_old'] == [3,4,5,6,7,8], 'terminal window control') + return {'retained_windows_source_sha256': sha256(source.read_bytes()).hexdigest(), + 'windows': receipts, + 'late_terminal_Y_mutation': {'pair': 0, 'late_touch_after_stage': 8, + 'retained_eligible_stages': [3,4,5,6,7,8], 'eligible_stages_if_touch_at_child': [], + 'rejection': 'later preload invalidates existing strict owner-window stages'}} + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--write', action='store_true') + args = ap.parse_args() + frozen_path = HERE / 'BIT-CODE-INPUT.json' + frozen = json.loads(frozen_path.read_bytes()) + path = Path(frozen['source_word']) + need(sha256(path.read_bytes()).hexdigest() == frozen['source_gzip_sha256'], 'raw R438 word pin') + word = json.loads(gzip.decompress(path.read_bytes())) + algebra = source_matrices(word, frozen['matrices']) + gates, invoice = inplace_code(frozen['matrices']['H']) + geo = geometry(word) + events, recipe_pin = recipe() + controller_word, result = controller(events) + ownership = owner_windows(controller_word) + need(result['extra_code_factors'] == 63, 'whole common-code extra count') + controls = [] + for skip in (0, 3, 9, 15): + try: + controller(events, omit=skip) + except ValueError as error: + controls.append({'omitted_code_sweep': skip, 'rejection': str(error)}) + else: + raise ValueError('omitted code sweep escaped') + complete = {'status': 'PASS_BIT_NATIVE_CAP_COPY_AND_IDLE_BOUNDARY_CODE_CONTROLLER_ENDPOINT_OPEN', + 'source_pin': frozen['source_pin'], 'raw_word_sha256': frozen['source_gzip_sha256'], + 'matrix_input_sha256': sha256(frozen_path.read_bytes()).hexdigest(), + 'canonical_recipe_source_sha256': recipe_pin, + 'ordered_controller_sha256': sha256(canonical(controller_word)).hexdigest(), + 'algebra': algebra, 'native_geometry': geo, 'code_scalar_invoice': invoice, + 'controller': result, 'chronological_owner_windows': ownership, + 'negative_controls': controls, + 'terminal_debt': {'completed_fields': 'past-chart inverse code at common FULL', + 'hole_fields': 'N E8^-1 N on original physical input, N=diag(D_Pp); both gauges remain', + 'conservative_rank_one_upper': 2 * 4 * 111, + 'rank_one_upper_is_not_a_lower_bound': True}, + 'limits': ['shared-label mutable-source native realization remains inherited', + 'nine-stage integer-lift precision not re-admitted', + 'no complete rank-zero source-access/tape invoice', + 'owner windows preserved structurally, changed whole program not emitted or owner-replayed', + 'no restored endpoint or supplier or new conditional kappa']} + output = canonical(complete) + if args.write: + (HERE / 'BIT-NATIVE-CONTROLLER.json').write_text(json.dumps(complete, sort_keys=True, indent=2) + '\n') + (HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').write_text(json.dumps( + {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word}, sort_keys=True, indent=2) + '\n') + else: + need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER.json').read_bytes()) == json.loads(output), + 'full BIT native/controller receipt differs') + need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').read_bytes()) == + {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word}, + 'full ordered BIT native/controller word differs') + print(complete['status']) + print('63 extra code factors; original long idle windows retained; terminal N E^-1 N unresolved') + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py b/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py new file mode 100644 index 0000000000..501d3dc2c0 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +"""Restrict the actual R438 owner allocation and return deleted helper work. + +No new hosting optimum or terminal-child scratch allocation is asserted. The +old pending-projector audit is rerun on every surviving physical owner role. +Apache-2.0; substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from hashlib import sha256 +import importlib.util +import json +from pathlib import Path +import sys + +sys.dont_write_bytecode = True +sys.path.insert(0,str(Path(__file__).resolve().parent)) +import bit_cap_copy_local as cap + +HERE = Path(__file__).resolve().parent +REPO = Path('/Users/ross/git/math/integer-mult-bounds') +PROJECTOR = REPO/'research/r438-rehost-projectors/verify.py' +LAYOUT = REPO/'research/bit-r438-transport-rehost/verify_rehost.receipt.json' +CERTIFICATE = REPO/'research/r438-native-rehost/CERTIFICATE.json' +need = cap.need + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--write',action='store_true') + args = parser.parse_args() + spec = importlib.util.spec_from_file_location('retained_r438_projector',PROJECTOR) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + module.source_check() + _,children,windows = module.chronology() + layout = json.loads(LAYOUT.read_bytes())['placement'] + slots,old_remaining = module.expand(layout['selection'],children,windows,438) + old,_,_ = module.audit(slots,children,windows,438) + removed = [slot for slot in slots if 249 <= slot[5] <= 257] + need(len(removed) == 81 and Counter(s[4] for s in removed) == Counter({s:9 for s in range(9)}),'removed owner-role coverage') + new_slots = [slot[:5]+(slot[5]-(9 if slot[5] > 257 else 0),) + for slot in slots if not 249 <= slot[5] <= 257] + new,_,complement = module.audit(new_slots,children,windows,429) + old_hist = Counter(old['idle_per_replica_including_zero']) + new_hist = Counter(new['idle_per_replica_including_zero']) + need(sum(r*n for r,n in new_hist.items())-sum(r*n for r,n in old_hist.items()) == 648, + 'deleted helper work not returned') + # Every removed whole helper contributes exactly eight previously hosted + # axes to its same physical deadline remainder. Gaps are retained exactly; + # no free repacking or changed owner coordinates are assumed. + for c in children: + for copy in range(222): + freed = sum(slot[3] for slot in removed if slot[0] == c['idx'] and slot[1] == copy) + need(complement[c['idx'],copy].bit_count() == old_remaining[c['idx'],copy]+freed, + 'physical deadline remainder differs from removed slot width') + certificate = json.loads(CERTIFICATE.read_bytes()) + baseline = Counter({int(r):n for r,n in certificate['pipeline']['candidate']['hosted']['invoice']['bit_profile'].items()}) + old_local = Counter({int(r):n for r,n in certificate['local']['candidate']['profile'].items()}) + new_local = Counter({1:1298,2:1342,3:79,4:44,5:93,6:11,7:9}) + full = Counter(baseline) + full.subtract({r:288*n for r,n in old_local.items()}) + full.update({r:288*n for r,n in new_local.items()}) + full.subtract({r:32*n for r,n in old_hist.items() if r}) + full.update({r:32*n for r,n in new_hist.items() if r}) + need(all(n >= 0 for n in full.values()),'complete pruned profile negative') + full = +full + mass = lambda h:sum(r*n for r,n in h.items()) + need(mass(baseline)-mass(full) == 60*288,'global saving must include returned owner work') + terminal = Counter(full) + terminal[1] += 888*32 + need(mass(terminal)-mass(baseline) == (888-9*60)*32,'two-N wrapper mass invoice') + data = {'status':'PASS_RESTRICTED429_OWNER_ALLOCATION_WITH648_RETURNED_IDLE_RANK', + 'sources':{str(p.relative_to(REPO)):sha256(p.read_bytes()).hexdigest() + for p in (PROJECTOR,LAYOUT,CERTIFICATE)}, + 'discarded_local_helper_numbers':list(range(249,258)), + 'discarded_old_physical_registers':list(range(471,480)), + 'deleted_slots_per_replica':[list(s) for s in removed], + 'retained_slots_per_replica':len(new_slots), + 'retained_slots_sha256':sha256(cap.canonical(new_slots)).hexdigest(), + 'old_projector_audit':old,'new_projector_audit':new, + 'old_idle_profile_per_replica':dict(sorted(old_hist.items())), + 'new_idle_profile_per_replica':dict(sorted(new_hist.items())), + 'returned_idle_rank_per_replica':648, + 'all32_replicas_owner_occurrences':32*9*429, + 'complete_pruned_local_and_idle_profile':dict(sorted(full.items())), + 'complete_pruned_mass':mass(full), + 'net_rank_mass_saving_per_local_call':60, + 'two_N_wrapper_extra_rank1_children_per_replica':888, + 'pruned_plus_two_N_profile':dict(sorted(terminal.items())), + 'pruned_plus_two_N_mass':mass(terminal), + 'zero_exponent_two_N_excess_over_baseline':mass(terminal)-mass(baseline), + 'omitted_return_control':'Omitting the648 returned idle rank per replica would falsely claim132 net units per local call; exact physical complements reject it.', + 'limits':['retained owner offsets and pending masks only; no free repacking or new hosting optimum', + 'previous native early-preload/late-X code-window proof applies structurally to this restricted assignment', + 'the terminal888 rank1 calls still need their own recursive scratch/owner/tape/precision admission', + 'neither complete profile nor terminal addition alone is a restored supplier or kappa claim']} + path = HERE/'BIT-OWNER-PRUNE.json' + if args.write: + path.write_text(json.dumps(data,sort_keys=True,indent=2)+'\n') + else: + need(json.loads(path.read_bytes()) == json.loads(cap.canonical(data)),'complete owner restriction receipt differs') + print(data['status']) + print('returned648 per replica; netlocalmasssaving60; terminalextra888') + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json b/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json new file mode 100644 index 0000000000..84a910495f --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json @@ -0,0 +1,2695 @@ +{ + "all_alpha_completion_obstruction": "For every alpha>=0, sum Hterminal[r]*r*(64/r)^alpha >= 1819488 > 64*28416.", + "all_odd_identity_sanity_cases": 2048, + "all_odd_written_proof": "(L-1)n-3L-2Bn=-3L for L=2B+1; a conditional ledger identity, not an emitted all-B construction.", + "ambient": 64, + "baseline_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "complete_mass_before_after_terminal": [ + 1808352, + 1791072, + 1819488 + ], + "deleted_slots_per_replica": [ + [ + 2, + 9, + 0, + 8, + 0, + 249 + ], + [ + 2, + 9, + 8, + 8, + 0, + 250 + ], + [ + 2, + 9, + 16, + 8, + 0, + 251 + ], + [ + 2, + 10, + 0, + 8, + 0, + 252 + ], + [ + 2, + 10, + 8, + 8, + 0, + 253 + ], + [ + 2, + 10, + 16, + 8, + 0, + 254 + ], + [ + 2, + 11, + 0, + 8, + 0, + 255 + ], + [ + 2, + 11, + 8, + 8, + 0, + 256 + ], + [ + 2, + 11, + 16, + 8, + 0, + 257 + ], + [ + 2, + 155, + 0, + 8, + 1, + 249 + ], + [ + 2, + 155, + 8, + 8, + 1, + 250 + ], + [ + 2, + 155, + 16, + 8, + 1, + 251 + ], + [ + 2, + 156, + 0, + 8, + 1, + 252 + ], + [ + 2, + 156, + 8, + 8, + 1, + 253 + ], + [ + 2, + 156, + 16, + 8, + 1, + 254 + ], + [ + 2, + 157, + 0, + 8, + 1, + 255 + ], + [ + 2, + 157, + 8, + 8, + 1, + 256 + ], + [ + 2, + 157, + 16, + 8, + 1, + 257 + ], + [ + 4, + 47, + 16, + 8, + 2, + 249 + ], + [ + 4, + 47, + 24, + 8, + 2, + 250 + ], + [ + 4, + 47, + 32, + 8, + 2, + 251 + ], + [ + 4, + 48, + 0, + 8, + 2, + 252 + ], + [ + 4, + 48, + 8, + 8, + 2, + 253 + ], + [ + 4, + 48, + 16, + 8, + 2, + 254 + ], + [ + 4, + 48, + 24, + 8, + 2, + 255 + ], + [ + 4, + 48, + 32, + 8, + 2, + 256 + ], + [ + 4, + 49, + 0, + 8, + 2, + 257 + ], + [ + 4, + 135, + 0, + 8, + 3, + 249 + ], + [ + 4, + 135, + 8, + 8, + 3, + 250 + ], + [ + 4, + 135, + 16, + 8, + 3, + 251 + ], + [ + 4, + 135, + 24, + 8, + 3, + 252 + ], + [ + 4, + 135, + 32, + 8, + 3, + 253 + ], + [ + 4, + 136, + 0, + 8, + 3, + 254 + ], + [ + 4, + 136, + 8, + 8, + 3, + 255 + ], + [ + 4, + 136, + 16, + 8, + 3, + 256 + ], + [ + 4, + 136, + 24, + 8, + 3, + 257 + ], + [ + 6, + 0, + 24, + 8, + 4, + 249 + ], + [ + 6, + 0, + 32, + 8, + 4, + 250 + ], + [ + 6, + 1, + 0, + 8, + 4, + 251 + ], + [ + 6, + 1, + 8, + 8, + 4, + 252 + ], + [ + 6, + 1, + 16, + 8, + 4, + 253 + ], + [ + 6, + 1, + 24, + 8, + 4, + 254 + ], + [ + 6, + 1, + 32, + 8, + 4, + 255 + ], + [ + 6, + 2, + 0, + 8, + 4, + 256 + ], + [ + 6, + 2, + 8, + 8, + 4, + 257 + ], + [ + 6, + 88, + 8, + 8, + 5, + 249 + ], + [ + 6, + 88, + 16, + 8, + 5, + 250 + ], + [ + 6, + 88, + 24, + 8, + 5, + 251 + ], + [ + 6, + 88, + 32, + 8, + 5, + 252 + ], + [ + 6, + 89, + 0, + 8, + 5, + 253 + ], + [ + 6, + 89, + 8, + 8, + 5, + 254 + ], + [ + 6, + 89, + 16, + 8, + 5, + 255 + ], + [ + 6, + 89, + 24, + 8, + 5, + 256 + ], + [ + 6, + 89, + 32, + 8, + 5, + 257 + ], + [ + 6, + 175, + 32, + 8, + 6, + 249 + ], + [ + 6, + 176, + 0, + 8, + 6, + 250 + ], + [ + 6, + 176, + 8, + 8, + 6, + 251 + ], + [ + 6, + 176, + 16, + 8, + 6, + 252 + ], + [ + 6, + 176, + 24, + 8, + 6, + 253 + ], + [ + 6, + 176, + 32, + 8, + 6, + 254 + ], + [ + 6, + 177, + 0, + 8, + 6, + 255 + ], + [ + 6, + 177, + 8, + 8, + 6, + 256 + ], + [ + 6, + 177, + 16, + 8, + 6, + 257 + ], + [ + 7, + 87, + 0, + 8, + 7, + 249 + ], + [ + 7, + 87, + 8, + 8, + 7, + 250 + ], + [ + 7, + 87, + 16, + 8, + 7, + 251 + ], + [ + 7, + 88, + 0, + 8, + 7, + 252 + ], + [ + 7, + 88, + 8, + 8, + 7, + 253 + ], + [ + 7, + 88, + 16, + 8, + 7, + 254 + ], + [ + 7, + 89, + 0, + 8, + 7, + 255 + ], + [ + 7, + 89, + 8, + 8, + 7, + 256 + ], + [ + 7, + 89, + 16, + 8, + 7, + 257 + ], + [ + 8, + 33, + 0, + 8, + 8, + 249 + ], + [ + 8, + 34, + 0, + 8, + 8, + 250 + ], + [ + 8, + 35, + 0, + 8, + 8, + 251 + ], + [ + 8, + 36, + 0, + 8, + 8, + 252 + ], + [ + 8, + 37, + 0, + 8, + 8, + 253 + ], + [ + 8, + 38, + 0, + 8, + 8, + 254 + ], + [ + 8, + 39, + 0, + 8, + 8, + 255 + ], + [ + 8, + 40, + 0, + 8, + 8, + 256 + ], + [ + 8, + 41, + 0, + 8, + 8, + 257 + ] + ], + "limits": [ + "Native arbitrary-input projector factorization is justified by exact set partitions and the written orthogonal-projector law; no whole program is emitted.", + "The 651-column integer/F2 local operator identity is inherited from published PR3645 and is not re-executed here; the pinned BIT-PRUNE-AUDIT receipt supplies the local paid profiles. The separate native_remainders.py binds the published word's frame events, ranks, COPY lifecycle and changed owner remainder operators, not its full integer/value identity.", + "888 is the known construction's rank-one bill, not a universal terminal lower bound.", + "444 is the fixed FULL-gather access bill, not a universal observer lower bound.", + "No terminal recursive owner allocation, rounding, precision, physical tape or new kappa admission." + ], + "local_mass_before_after": [ + 5121, + 4989 + ], + "method": "No producer imports or function execution; independent chronology, set partitions, owner rows, complete histograms and exact address actions.", + "native_gauge_involution_basis_columns": 1776, + "native_one_gauge_omission_witnesses": [ + { + "one_gauge_swaps_root_halves": true, + "port": 0, + "q": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 1, + "q": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 2, + "q": [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 3, + "q": [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 4, + "q": [ + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 5, + "q": [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 6, + "q": [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 7, + "q": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 8, + "q": [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 9, + "q": [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 10, + "q": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 11, + "q": [ + 0, + 1, + -1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 12, + "q": [ + 0, + 1, + -1, + 0, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 13, + "q": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 14, + "q": [ + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 15, + "q": [ + 1, + 0, + 1, + 0, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 16, + "q": [ + 1, + 0, + 1, + 0, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 17, + "q": [ + 1, + 0, + 1, + 0, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 18, + "q": [ + 1, + 0, + -1, + 0, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 19, + "q": [ + 1, + 0, + -1, + 0, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 20, + "q": [ + 1, + 0, + -1, + 0, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 21, + "q": [ + 1, + 0, + -1, + 0, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 22, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 23, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 24, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 25, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 26, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 27, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 28, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 29, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 30, + "q": [ + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 31, + "q": [ + 1, + 1, + 0, + 0, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 32, + "q": [ + 1, + 1, + 0, + 0, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 33, + "q": [ + 1, + 1, + 0, + 0, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 34, + "q": [ + 1, + -1, + 0, + 0, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 35, + "q": [ + 1, + -1, + 0, + 0, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 36, + "q": [ + 1, + -1, + 0, + 0, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 37, + "q": [ + 1, + -1, + 0, + 0, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 38, + "q": [ + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 39, + "q": [ + 1, + 0, + 1, + 0, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 40, + "q": [ + 1, + 0, + 1, + 0, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 41, + "q": [ + 1, + 0, + 1, + 0, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 42, + "q": [ + 1, + 0, + -1, + 0, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 43, + "q": [ + 1, + 0, + -1, + 0, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 44, + "q": [ + 1, + 0, + -1, + 0, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 45, + "q": [ + 1, + 0, + -1, + 0, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 46, + "q": [ + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 47, + "q": [ + 0, + 1, + 1, + 0, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 48, + "q": [ + 0, + 1, + 1, + 0, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 49, + "q": [ + 0, + 1, + -1, + 0, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 50, + "q": [ + 0, + 1, + -1, + 0, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 51, + "q": [ + 0, + 1, + -1, + 0, + 0, + -1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 52, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 53, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 54, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 55, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 56, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 57, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 58, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 59, + "q": [ + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 60, + "q": [ + 1, + 1, + 1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 61, + "q": [ + 1, + 1, + -1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 62, + "q": [ + 1, + -1, + 1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 63, + "q": [ + 1, + -1, + 1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 64, + "q": [ + 1, + -1, + -1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 65, + "q": [ + 1, + -1, + -1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 66, + "q": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 67, + "q": [ + 1, + 0, + 0, + 1, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 68, + "q": [ + 1, + 0, + 0, + 1, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 69, + "q": [ + 1, + 0, + 0, + -1, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 70, + "q": [ + 1, + 0, + 0, + -1, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 71, + "q": [ + 1, + 0, + 0, + -1, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 72, + "q": [ + 1, + 0, + 0, + -1, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 73, + "q": [ + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 74, + "q": [ + 0, + 1, + 0, + 1, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 75, + "q": [ + 0, + 1, + 0, + 1, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 76, + "q": [ + 0, + 1, + 0, + 1, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 77, + "q": [ + 0, + 1, + 0, + -1, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 78, + "q": [ + 0, + 1, + 0, + -1, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 79, + "q": [ + 0, + 1, + 0, + -1, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 80, + "q": [ + 0, + 1, + 0, + -1, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 81, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 82, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 83, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 84, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 85, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 86, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 87, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 88, + "q": [ + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 89, + "q": [ + 0, + 0, + 1, + 1, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 90, + "q": [ + 0, + 0, + 1, + 1, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 91, + "q": [ + 0, + 0, + 1, + 1, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 92, + "q": [ + 0, + 0, + 1, + -1, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 93, + "q": [ + 0, + 0, + 1, + -1, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 94, + "q": [ + 0, + 0, + 1, + -1, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 95, + "q": [ + 0, + 0, + 1, + -1, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 96, + "q": [ + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 97, + "q": [ + 0, + 1, + 0, + 1, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 98, + "q": [ + 0, + 1, + 0, + 1, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 99, + "q": [ + 0, + 1, + 0, + 1, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 100, + "q": [ + 0, + 1, + 0, + -1, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 101, + "q": [ + 0, + 1, + 0, + -1, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 102, + "q": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 103, + "q": [ + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 104, + "q": [ + 1, + 0, + 0, + 1, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 105, + "q": [ + 1, + 0, + 0, + 1, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 106, + "q": [ + 1, + 0, + 0, + 1, + 0, + -1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 107, + "q": [ + 1, + 0, + 0, + -1, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 108, + "q": [ + 1, + 0, + 0, + -1, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 109, + "q": [ + 1, + 0, + 0, + -1, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 110, + "q": [ + 1, + 0, + 0, + -1, + 0, + -1, + -1, + 0 + ] + } + ], + "negative_controls": [ + { + "name": "omit_returned_idle_axes", + "reason": "complete pending partition" + }, + { + "name": "claim_132_net_saving", + "reason": "returned idle rank omitted" + }, + { + "name": "omit_terminal_input_gauge_cost", + "reason": "one gauge cost omitted" + }, + { + "name": "allow_child_above_ambient", + "reason": "moment domain violated" + } + ], + "new_owner": { + "factorization_sha256": "d69c821a951a8439737107f24b1df89bbf349df941acaf18fb9f70175b41ae8b", + "idle": { + "0": 222, + "2": 420, + "4": 435, + "6": 435, + "7": 666, + "10": 2, + "14": 9, + "18": 2, + "26": 2, + "28": 9, + "34": 3, + "42": 15 + }, + "owner_sha256": "14a74b706f16cded0daac85f134d5336bcd91ed4834149b297b36974b3822fea", + "physical_roles": 123552 + }, + "old_owner": { + "factorization_sha256": "7983d077edcf50376dc0f85ae48b1015a1b4e8077d0ba0770973a79451305798", + "idle": { + "0": 222, + "2": 433, + "4": 444, + "6": 444, + "7": 666, + "34": 1, + "42": 10 + }, + "owner_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "physical_roles": 126144 + }, + "pruned_plus_two_N_profile": { + "1": 402240, + "2": 399936, + "3": 22752, + "4": 26592, + "5": 26784, + "6": 17088, + "7": 23904, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 96, + "42": 480 + }, + "pruned_profile": { + "1": 373824, + "2": 399936, + "3": 22752, + "4": 26592, + "5": 26784, + "6": 17088, + "7": 23904, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 96, + "42": 480 + }, + "returned_idle_rank_per_replica": 648, + "signed_pruned_minus_baseline_profile": { + "1": -6912, + "2": -416, + "3": 0, + "4": -288, + "5": -2592, + "6": -288, + "7": -2592, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 64, + "42": 160 + }, + "source_children": [ + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "deadline": 2, + "eligible_stages": [ + 0, + 1 + ], + "idx": 0, + "pair": 1, + "rank": 14, + "source_level": -1, + "target_level": 1 + }, + { + "axes": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ], + "deadline": 5, + "eligible_stages": [ + 2 + ], + "idx": 1, + "pair": 1, + "rank": 7, + "source_level": 1, + "target_level": 2 + }, + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ], + "deadline": 8, + "eligible_stages": [ + 0, + 1, + 2, + 3 + ], + "idx": 2, + "pair": 2, + "rank": 28, + "source_level": -1, + "target_level": 3 + }, + { + "axes": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ], + "deadline": 11, + "eligible_stages": [ + 4 + ], + "idx": 3, + "pair": 2, + "rank": 7, + "source_level": 3, + "target_level": 4 + }, + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ], + "deadline": 14, + "eligible_stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "idx": 4, + "pair": 3, + "rank": 42, + "source_level": -1, + "target_level": 5 + }, + { + "axes": [ + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ], + "deadline": 17, + "eligible_stages": [ + 6 + ], + "idx": 5, + "pair": 3, + "rank": 7, + "source_level": 5, + "target_level": 6 + }, + { + "axes": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 21, + "eligible_stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "idx": 6, + "pair": 0, + "rank": 42, + "source_level": 2, + "target_level": 8 + }, + { + "axes": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 22, + "eligible_stages": [ + 5, + 6, + 7, + 8 + ], + "idx": 7, + "pair": 1, + "rank": 28, + "source_level": 4, + "target_level": 8 + }, + { + "axes": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 23, + "eligible_stages": [ + 7, + 8 + ], + "idx": 8, + "pair": 2, + "rank": 14, + "source_level": 6, + "target_level": 8 + }, + { + "axes": [], + "deadline": 24, + "eligible_stages": [], + "idx": 9, + "pair": 3, + "rank": 0, + "source_level": 8, + "target_level": 8 + } + ], + "sources": { + "repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "repo/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "repo/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "repo/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "source/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "source/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "source/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "source/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "status": "PASS_INDEPENDENT_B02_OWNER_RETURN_AND_TWO_N_MOMENT_BOUNDARY", + "stock": 28416, + "stock_rank_budget": 1818624, + "terminal_excess_over_old_baseline": 11136, + "terminal_excess_over_stock_budget": 864, + "uniform_prefix_comparison": "For every alpha>=0, sum deltaH[r]*r*(64/r)^alpha <= -17280*8^alpha < 0.", + "zero_exponent_terminal_integer_budget_for_strict_pass": 860 +} diff --git a/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py b/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py new file mode 100644 index 0000000000..ced73298c7 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py @@ -0,0 +1,373 @@ +#!/usr/bin/env python3 +"""Independent fixed-placement arithmetic audit; no producer module imports. + +Apache-2.0. Prepared for Ross with substantial OpenAI Codex assistance. +The owner selection and source geometry remain credited to PR1043/2423/2653. +""" +import argparse +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +import gzip +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +DEFAULT_REPO = Path("/Users/ross/git/math/integer-mult-bounds") +DEFAULT_SOURCE = Path("/Users/ross/git/math/.research-automation/runs/" + "kappa-3605-successor-20261018T0940Z/major-frontier/recursive") +PINS = { + "source/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "source/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "source/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "source/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b", + "repo/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "repo/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "repo/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", +} + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def canonical(obj): + return json.dumps(obj, sort_keys=True, separators=(",", ":")).encode() + + +def hist(obj): + return Counter({int(r): n for r, n in obj.items()}) + + +def mass(profile): + return sum(r*n for r, n in profile.items()) + + +def source_chronology(): + # Literal recipe in the pinned global_k.py, reconstructed here without exec. + events = [("local", 0, 0)] + for j in range(4): + events.append(("local", 2*j+1, j)) + if j < 3: + events.append(("bridge", j, j+1)) + events.append(("local", 2*j+2, j)) + if j < 3: + events.append(("bridge", j, j+1)) + events.extend(("bridge", j+1, j) for j in (2, 1, 0)) + events.append(("exchange",)) + augmented, children = [], [] + levels = [-1]*4 + + def advance(pair, target): + level = levels[pair] + axes = set(range(1 if level == -1 else 8+7*level, 8+7*target)) + child = {"idx": len(children), "pair": pair, "source_level": level, + "target_level": target, "rank": 7*(target-level), + "axes": sorted(axes), "deadline": len(augmented)} + need(len(axes) == child["rank"], "pending rank") + children.append(child) + augmented.append(("idle", child["idx"], pair)) + levels[pair] = target + + for event in events: + augmented.append(event) + if event[0] == "local": + _, stage, pair = event + need(levels[pair] == stage-1, "source chronology") + levels[pair] = stage + if 1 <= stage <= 6: + advance((stage+1)//2, stage) + if stage == 8: + for pair in range(4): + advance(pair, 8) + elif event[0] == "bridge": + need(levels[event[1]] == levels[event[2]], "bridge level") + else: + need(levels == [8]*4, "exchange level") + need(len(augmented) == 29 and len(children) == 10, "chronology size") + for child in children: + eligible = [] + for begin, event in enumerate(augmented[:child["deadline"]]): + if event[0] != "local" or event[2] == child["pair"]: + continue + touched = False + for middle in augmented[begin+1:child["deadline"]]: + if middle[0] == "local" and middle[2] == child["pair"]: + touched = True + if middle[0] == "bridge" and child["pair"] in middle[1:]: + touched = True + if not touched: + eligible.append(event[1]) + child["eligible_stages"] = eligible + return children + + +def expand_fixed_selection(selection, children): + demands = defaultdict(list) + seen = set() + for child, width, stage, count in sorted(selection["stages"]): + need((child, width, stage) not in seen, "duplicate demand") + seen.add((child, width, stage)) + need(width == 8 and stage in children[child]["eligible_stages"] + and type(count) is int and count > 0, "demand domain") + demands[child].extend([stage]*count) + counters = Counter() + slots = [] + for child in children: + identifier = child["idx"] + patterns = sorted((widths, count) for c, widths, count in selection["patterns"] + if c == identifier) + patterns.sort(key=lambda p: (-sum(p[0]), p[0])) + copy = used = 0 + for widths, count in patterns: + need(all(w == 8 for w in widths) and sum(widths) <= child["rank"], + "pattern domain") + for _ in range(count): + need(copy < 222, "copy count") + for offset in range(0, sum(widths), 8): + stage = demands[identifier][used] + used += 1 + slots.append((identifier, copy, offset, 8, stage, counters[stage])) + counters[stage] += 1 + copy += 1 + need(used == len(demands[identifier]), "unconsumed demand") + need(counters == Counter({s: 438 for s in range(9)}), "all old helper roles") + return slots + + +def audit_slots(slots, children, helpers, forced_rest=None): + by_deadline = defaultdict(list) + seen = set() + for child, copy, offset, width, stage, helper in slots: + need((stage, helper) not in seen, "duplicate helper role") + seen.add((stage, helper)) + need(0 <= copy < 222 and width == 8 + and stage in children[child]["eligible_stages"], "owner domain") + axes = set(children[child]["axes"][offset:offset+width]) + need(len(axes) == width, "slice extent") + by_deadline[child, copy].append((axes, stage, helper)) + need(seen == {(s, h) for s in range(9) for h in range(helpers)}, "role coverage") + remainders, signatures, rest_by_deadline = Counter(), set(), {} + mask = lambda axes: sum(1 << x for x in axes) + for child in children: + target = set(child["axes"]) + for copy in range(222): + parts = [axes for axes, _, _ in by_deadline[child["idx"], copy]] + used = set() + for axes in parts: + need(axes <= target and not axes & used, "disjoint hosted factors") + used |= axes + rest = target-used + if forced_rest and (child["idx"], copy) in forced_rest: + rest = forced_rest[child["idx"], copy] + need(not rest & used and rest | used == target, "complete pending partition") + for part in parts+[rest]: + need(part & set(range(1, 8)) in (set(), set(range(1, 8))), + "q-perp split") + rest_by_deadline[child["idx"], copy] = rest + remainders[len(rest)] += 1 + signatures.add((mask(target), tuple(mask(p) for p in parts+[rest]))) + rows = [] + occupied = {} + for replica in range(32): + for (child, copy), pieces in sorted(by_deadline.items()): + side, port = divmod(copy, 111) + family = replica*888+(2*children[child]["pair"]+side)*111+port + for axes, stage, helper in pieces: + need(not axes & occupied.get(family, set()), "physical cross-child overlap") + occupied.setdefault(family, set()).update(axes) + rows.append((replica, stage, helper, family, child, mask(axes))) + need(len(rows) == 32*9*helpers, "physical role count") + return { + "idle": dict(sorted(remainders.items())), + "owner_sha256": sha256(canonical(rows)).hexdigest(), + "factorization_sha256": sha256(canonical(sorted(signatures))).hexdigest(), + "physical_roles": len(rows), + }, rest_by_deadline + + +def native_gauge_checks(lines): + columns = 0 + witnesses = [] + for port, q in enumerate(lines): + need(sum(x*x for x in q) == 4, "port norm") + + def address(vector): + delta = sum(Q(q[i], 4)*(vector[8+i]-vector[i]) for i in range(8)) + shift = [q[i]*delta for i in range(8)] + return tuple(vector[i]+shift[i] for i in range(8)) + \ + tuple(vector[8+i]-shift[i] for i in range(8)) + + for j in range(16): + vector = tuple(Q(i == j) for i in range(16)) + need(address(address(vector)) == vector, "two-gauge identity") + columns += 1 + # E=I is a concrete invertible instance: N E^-1 N=I, while one N is not I. + initial = tuple(Q(x, 2) for x in q)+(Q(0),)*8 + need(address(initial) != initial, "missing input gauge escaped") + witnesses.append({"port": port, "q": q, "one_gauge_swaps_root_halves": True}) + need(len(lines) == 111, "actual punctured root count") + return columns, witnesses + + +def run(repository, source): + roots = {"repo": repository, "source": source} + raw = {} + for key, expected in PINS.items(): + prefix, name = key.split("/", 1) + raw[key] = (roots[prefix]/name).read_bytes() + need(sha256(raw[key]).hexdigest() == expected, "source pin: "+key) + load = lambda key: json.loads(raw[key]) + old = load("source/BIT-OWNER-PRUNE.json") + local = load("source/BIT-PRUNE-AUDIT.json") + controller = load("source/BIT-NATIVE-CONTROLLER.json") + upstream = load("repo/research/r438-rehost-projectors/SOURCES.json") + for pin in upstream["files"]: + if pin["usage"] == "input": + need(sha256((repository/pin["path"]).read_bytes()).hexdigest() == pin["sha256"], + "upstream input pin: "+pin["path"]) + layout = load("repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json")["placement"] + certificate = load("repo/research/r438-native-rehost/CERTIFICATE.json") + children = source_chronology() + slots = expand_fixed_selection(layout["selection"], children) + need(sha256(canonical(slots)).hexdigest() == layout["slot_list_sha256"], "old slot digest") + before, old_rest = audit_slots(slots, children, 438) + removed = [s for s in slots if 249 <= s[5] <= 257] + retained = [s[:5]+(s[5]-(9 if s[5] > 257 else 0),) + for s in slots if not 249 <= s[5] <= 257] + after, new_rest = audit_slots(retained, children, 429) + need(Counter(s[4] for s in removed) == Counter({s: 9 for s in range(9)}), + "nine removed helpers at every stage") + need([list(s) for s in removed] == old["deleted_slots_per_replica"], "deleted slot lineage") + need(sha256(canonical(retained)).hexdigest() == old["retained_slots_sha256"], + "retained slot digest") + for data, name in ((before, "old_projector_audit"), (after, "new_projector_audit")): + need(data["owner_sha256"] == old[name]["owner_projector_sha256"], "owner digest") + need(data["factorization_sha256"] == old[name]["factorization_sha256"], "factor digest") + need(hist(data["idle"]) == hist(old[name]["idle_per_replica_including_zero"]), + "full idle histogram") + freed = defaultdict(set) + for child, copy, offset, width, _, _ in removed: + freed[child, copy].update(children[child]["axes"][offset:offset+width]) + for key in old_rest: + need(not old_rest[key] & freed[key] and new_rest[key] == old_rest[key] | freed[key], + "returned physical complement") + need(sum(len(x) for x in freed.values()) == 9*9*8 == 648, "returned idle rank") + invoice = certificate["pipeline"]["candidate"]["hosted"]["invoice"] + baseline = hist(invoice["bit_profile"]) + old_local = hist(certificate["local"]["candidate"]["profile"]) + new_local = hist(local["forward"]["profile"]) + need(new_local == hist(local["literal_inverse"]["profile"]), "local orientation profile") + # Rebuild from the complete local and idle profiles, without subtracting a presumed total. + complete = Counter({r: 288*n for r, n in new_local.items()}) + complete.update({r: 32*n for r, n in hist(after["idle"]).items() if r}) + baseline_rebuilt = Counter({r: 288*n for r, n in old_local.items()}) + baseline_rebuilt.update({r: 32*n for r, n in hist(before["idle"]).items() if r}) + need(baseline_rebuilt == baseline, "complete old profile") + need(complete == hist(old["complete_pruned_local_and_idle_profile"]), "complete pruned profile") + need(mass(old_local)-mass(new_local) == 132, "local saving") + need(mass(baseline)-mass(complete) == 60*288, "net complete saving") + need(controller["terminal_debt"]["conservative_rank_one_upper"] == 2*4*111 == 888, + "fixed two-N terminal count") + terminal = Counter(complete) + terminal[1] += 888*32 + need(terminal == hist(old["pruned_plus_two_N_profile"]), "complete terminal profile") + need(invoice["bit"]["live"] == 28416 and max(terminal) == 42, "stock and maximum child") + m, stock = 64, 28416 + need(mass(terminal) == 1819488 and mass(terminal)-m*stock == 864, "terminal stock failure") + need(all(type(r) is int and 0 < r <= m and n > 0 for r, n in terminal.items()), + "all-alpha monotonicity domain") + delta = Counter(complete) + delta.subtract(baseline) + need(all((r <= 7 and n <= 0) or n == 0 or (r >= 10 and n >= 0) + for r, n in delta.items()), "rank-separated signed profile") + need(mass(delta) == -17280, "uniform comparison mass") + controls = [] + + def rejects(name, action, required): + try: + action() + except ValueError as error: + need(required in str(error), "unrelated control failure: "+name) + controls.append({"name": name, "reason": str(error)}) + else: + raise ValueError("control accepted: "+name) + + changed = next(key for key in old_rest if new_rest[key] != old_rest[key]) + rejects("omit_returned_idle_axes", + lambda: audit_slots(retained, children, 429, {changed: old_rest[changed]}), + "complete pending partition") + rejects("claim_132_net_saving", + lambda: need(mass(baseline)-mass(complete) == 132*288, "returned idle rank omitted"), + "returned idle rank omitted") + rejects("omit_terminal_input_gauge_cost", + lambda: need(mass(complete)+444*32 == mass(terminal), "one gauge cost omitted"), + "one gauge cost omitted") + rejects("allow_child_above_ambient", + lambda: need(all(0 < r <= m for r in list(terminal)+[m+1]), + "moment domain violated"), "moment domain violated") + word = json.loads(gzip.decompress(raw[ + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz"])) + gauge_columns, gauge_witnesses = native_gauge_checks(word["lines"]) + for banks in range(1, 1025): + stages = 2*banks+1 + for ports in (1, 111): + need((stages-1)*ports-3*stages-2*banks*ports == -3*stages, + "all-odd ledger identity") + return { + "status": "PASS_INDEPENDENT_B02_OWNER_RETURN_AND_TWO_N_MOMENT_BOUNDARY", + "sources": PINS, + "method": "No producer imports or function execution; independent chronology, set partitions, owner rows, complete histograms and exact address actions.", + "source_children": children, + "old_owner": before, "new_owner": after, + "deleted_slots_per_replica": removed, + "returned_idle_rank_per_replica": 648, + "baseline_profile": dict(sorted(baseline.items())), + "pruned_profile": dict(sorted(complete.items())), + "pruned_plus_two_N_profile": dict(sorted(terminal.items())), + "signed_pruned_minus_baseline_profile": dict(sorted(delta.items())), + "local_mass_before_after": [mass(old_local), mass(new_local)], + "complete_mass_before_after_terminal": [mass(baseline), mass(complete), mass(terminal)], + "stock": stock, "ambient": m, "stock_rank_budget": m*stock, + "terminal_excess_over_old_baseline": mass(terminal)-mass(baseline), + "terminal_excess_over_stock_budget": mass(terminal)-m*stock, + "zero_exponent_terminal_integer_budget_for_strict_pass": 860, + "uniform_prefix_comparison": "For every alpha>=0, sum deltaH[r]*r*(64/r)^alpha <= -17280*8^alpha < 0.", + "all_alpha_completion_obstruction": "For every alpha>=0, sum Hterminal[r]*r*(64/r)^alpha >= 1819488 > 64*28416.", + "all_odd_identity_sanity_cases": 2048, + "all_odd_written_proof": "(L-1)n-3L-2Bn=-3L for L=2B+1; a conditional ledger identity, not an emitted all-B construction.", + "negative_controls": controls, + "native_gauge_involution_basis_columns": gauge_columns, + "native_one_gauge_omission_witnesses": gauge_witnesses, + "limits": [ + "Native arbitrary-input projector factorization is justified by exact set partitions and the written orthogonal-projector law; no whole program is emitted.", + "The 651-column integer/F2 local operator identity is inherited from published PR3645 and is not re-executed here; the pinned BIT-PRUNE-AUDIT receipt supplies the local paid profiles. The separate native_remainders.py binds the published word's frame events, ranks, COPY lifecycle and changed owner remainder operators, not its full integer/value identity.", + "888 is the known construction's rank-one bill, not a universal terminal lower bound.", + "444 is the fixed FULL-gather access bill, not a universal observer lower bound.", + "No terminal recursive owner allocation, rounding, precision, physical tape or new kappa admission." + ], + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--repository", type=Path, default=DEFAULT_REPO) + parser.add_argument("--source", type=Path, default=DEFAULT_SOURCE) + parser.add_argument("--write", action="store_true") + args = parser.parse_args() + result = run(args.repository, args.source) + path = HERE/"OWNER-REVIEW.json" + if args.write: + need(not path.exists(), "refuse to overwrite review receipt") + path.write_text(json.dumps(result, sort_keys=True, indent=2)+"\n") + else: + need(json.loads(path.read_bytes()) == json.loads(canonical(result)), "review receipt differs") + print(result["status"]) + print("returned=648 mass=1791072 terminal=1819488 stock_excess=864 controls=4 gauge_witnesses=111") + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json b/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json new file mode 100644 index 0000000000..ae11170fd3 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json @@ -0,0 +1,25076 @@ +{ + "inputs": { + "full120_geometry_sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "r438_word_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "nine_three_row_stage_consequences": { + "conditional_common_reader_defect_rank": 9, + "conditional_premise": "Each A_s-I = W_s R for the same actual R.", + "defect_rank_lower": 9, + "defect_rank_upper": 36, + "maximum_repair_union": 27, + "minimum_diagonal_mismatches": 84, + "necessary_odd_stage_count_at_three_rows_per_stage": 37, + "stage_count_sufficiency_claimed": false + }, + "root_line_census": { + "actual_retained_cap_frame_ids": [ + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518 + ], + "candidate_return_lines": 120, + "classification": "Exactly sections containing row80; only block mask32, size1.", + "eligible_direction_rank_histogram": { + "3": 70626 + }, + "eligible_direction_templates": [ + { + "a": 3, + "allowed_ret_mask": 3, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 42 + ] + }, + { + "a": 11, + "allowed_ret_mask": 11, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 103 + ] + }, + { + "a": 23, + "allowed_ret_mask": 23, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 85 + ] + }, + { + "a": 31, + "allowed_ret_mask": 31, + "normal": [ + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 3 + ] + }, + { + "a": 32, + "allowed_ret_mask": 32, + "normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 80 + ] + }, + { + "a": 36, + "allowed_ret_mask": 36, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 81 + ] + }, + { + "a": 37, + "allowed_ret_mask": 37, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "-1", + "1" + ], + "required_deleted_rows": [ + 53 + ] + }, + { + "a": 40, + "allowed_ret_mask": 40, + "normal": [ + "0", + "1", + "1", + "0", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 10 + ] + }, + { + "a": 44, + "allowed_ret_mask": 44, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 7 + ] + }, + { + "a": 45, + "allowed_ret_mask": 45, + "normal": [ + "0", + "0", + "1", + "1", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 88 + ] + }, + { + "a": 53, + "allowed_ret_mask": 53, + "normal": [ + "1", + "-1", + "1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 62 + ] + }, + { + "a": 61, + "allowed_ret_mask": 61, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 28 + ] + }, + { + "a": 65, + "allowed_ret_mask": 65, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 51 + ] + }, + { + "a": 73, + "allowed_ret_mask": 73, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 99 + ] + }, + { + "a": 85, + "allowed_ret_mask": 85, + "normal": [ + "1", + "1", + "-1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 61 + ] + }, + { + "a": 93, + "allowed_ret_mask": 93, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 23 + ] + }, + { + "a": 99, + "allowed_ret_mask": 99, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 41 + ] + }, + { + "a": 107, + "allowed_ret_mask": 107, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 110 + ] + }, + { + "a": 114, + "allowed_ret_mask": 114, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 48 + ] + }, + { + "a": 115, + "allowed_ret_mask": 115, + "normal": [ + "0", + "1", + "0", + "-1", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 78 + ] + }, + { + "a": 118, + "allowed_ret_mask": 118, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1" + ], + "required_deleted_rows": [ + 56 + ] + }, + { + "a": 122, + "allowed_ret_mask": 122, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 102 + ] + }, + { + "a": 123, + "allowed_ret_mask": 123, + "normal": [ + "0", + "1", + "1", + "0", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 9 + ] + }, + { + "a": 126, + "allowed_ret_mask": 126, + "normal": [ + "0", + "0", + "1", + "1", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 90 + ] + }, + { + "a": 130, + "allowed_ret_mask": 130, + "normal": [ + "0", + "0", + "1", + "-1", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 95 + ] + }, + { + "a": 134, + "allowed_ret_mask": 134, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 96 + ] + }, + { + "a": 139, + "allowed_ret_mask": 139, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 87 + ] + }, + { + "a": 151, + "allowed_ret_mask": 151, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 104 + ] + }, + { + "a": 154, + "allowed_ret_mask": 154, + "normal": [ + "1", + "-1", + "-1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 64 + ] + }, + { + "a": 155, + "allowed_ret_mask": 155, + "normal": [ + "1", + "1", + "0", + "0", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 31 + ] + }, + { + "a": 158, + "allowed_ret_mask": 158, + "normal": [ + "1", + "0", + "0", + "1", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 67 + ] + }, + { + "a": 161, + "allowed_ret_mask": 161, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 26 + ] + }, + { + "a": 168, + "allowed_ret_mask": 168, + "normal": [ + "1", + "-1", + "0", + "0", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 34 + ] + }, + { + "a": 172, + "allowed_ret_mask": 172, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 38 + ] + }, + { + "a": 173, + "allowed_ret_mask": 173, + "normal": [ + "1", + "0", + "0", + "-1", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 72 + ] + }, + { + "a": 181, + "allowed_ret_mask": 181, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 101 + ] + }, + { + "a": 184, + "allowed_ret_mask": 184, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 82 + ] + }, + { + "a": 188, + "allowed_ret_mask": 188, + "normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 79 + ] + }, + { + "a": 193, + "allowed_ret_mask": 193, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 25 + ] + }, + { + "a": 200, + "allowed_ret_mask": 200, + "normal": [ + "1", + "1", + "0", + "0", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 33 + ] + }, + { + "a": 204, + "allowed_ret_mask": 204, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 45 + ] + }, + { + "a": 208, + "allowed_ret_mask": 208, + "normal": [ + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 1 + ] + }, + { + "a": 209, + "allowed_ret_mask": 209, + "normal": [ + "0", + "0", + "1", + "-1", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 93 + ] + }, + { + "a": 212, + "allowed_ret_mask": 212, + "normal": [ + "0", + "1", + "-1", + "0", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 12 + ] + }, + { + "a": 221, + "allowed_ret_mask": 221, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 50 + ] + }, + { + "a": 227, + "allowed_ret_mask": 227, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 5 + ] + }, + { + "a": 234, + "allowed_ret_mask": 234, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "-1", + "-1" + ], + "required_deleted_rows": [ + 58 + ] + }, + { + "a": 239, + "allowed_ret_mask": 239, + "normal": [ + "0", + "1", + "0", + "-1", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 77 + ] + }, + { + "a": 247, + "allowed_ret_mask": 247, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 109 + ] + }, + { + "a": 250, + "allowed_ret_mask": 250, + "normal": [ + "1", + "1", + "1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 60 + ] + }, + { + "a": 251, + "allowed_ret_mask": 251, + "normal": [ + "1", + "-1", + "0", + "0", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 36 + ] + }, + { + "a": 254, + "allowed_ret_mask": 254, + "normal": [ + "1", + "0", + "0", + "-1", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 70 + ] + }, + { + "a": 263, + "allowed_ret_mask": 263, + "normal": [ + "0", + "1", + "-1", + "0", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 11 + ] + }, + { + "a": 271, + "allowed_ret_mask": 271, + "normal": [ + "0", + "1", + "0", + "1", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 73 + ] + }, + { + "a": 274, + "allowed_ret_mask": 274, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 24 + ] + }, + { + "a": 278, + "allowed_ret_mask": 278, + "normal": [ + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 19 + ] + }, + { + "a": 279, + "allowed_ret_mask": 279, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 105 + ] + }, + { + "a": 282, + "allowed_ret_mask": 282, + "normal": [ + "1", + "1", + "1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 59 + ] + }, + { + "a": 286, + "allowed_ret_mask": 286, + "normal": [ + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 66 + ] + }, + { + "a": 287, + "allowed_ret_mask": 287, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 44 + ] + }, + { + "a": 293, + "allowed_ret_mask": 293, + "normal": [ + "1", + "0", + "1", + "0", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 14 + ] + }, + { + "a": 301, + "allowed_ret_mask": 301, + "normal": [ + "1", + "0", + "0", + "-1", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 69 + ] + }, + { + "a": 305, + "allowed_ret_mask": 305, + "normal": [ + "0", + "0", + "1", + "1", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 89 + ] + }, + { + "a": 313, + "allowed_ret_mask": 313, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "-1", + "1" + ], + "required_deleted_rows": [ + 57 + ] + }, + { + "a": 325, + "allowed_ret_mask": 325, + "normal": [ + "1", + "0", + "-1", + "0", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 21 + ] + }, + { + "a": 333, + "allowed_ret_mask": 333, + "normal": [ + "1", + "0", + "0", + "1", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 68 + ] + }, + { + "a": 336, + "allowed_ret_mask": 336, + "normal": [ + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 2 + ] + }, + { + "a": 340, + "allowed_ret_mask": 340, + "normal": [ + "0", + "1", + "-1", + "0", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 13 + ] + }, + { + "a": 341, + "allowed_ret_mask": 341, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 97 + ] + }, + { + "a": 344, + "allowed_ret_mask": 344, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 86 + ] + }, + { + "a": 348, + "allowed_ret_mask": 348, + "normal": [ + "0", + "1", + "0", + "1", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 75 + ] + }, + { + "a": 354, + "allowed_ret_mask": 354, + "normal": [ + "0", + "0", + "1", + "1", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 91 + ] + }, + { + "a": 355, + "allowed_ret_mask": 355, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 6 + ] + }, + { + "a": 358, + "allowed_ret_mask": 358, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 100 + ] + }, + { + "a": 362, + "allowed_ret_mask": 362, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "1", + "-1" + ], + "required_deleted_rows": [ + 52 + ] + }, + { + "a": 363, + "allowed_ret_mask": 363, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 83 + ] + }, + { + "a": 366, + "allowed_ret_mask": 366, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 46 + ] + }, + { + "a": 370, + "allowed_ret_mask": 370, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 27 + ] + }, + { + "a": 374, + "allowed_ret_mask": 374, + "normal": [ + "1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 16 + ] + }, + { + "a": 375, + "allowed_ret_mask": 375, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 108 + ] + }, + { + "a": 378, + "allowed_ret_mask": 378, + "normal": [ + "1", + "-1", + "-1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 65 + ] + }, + { + "a": 382, + "allowed_ret_mask": 382, + "normal": [ + "1", + "0", + "0", + "-1", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 71 + ] + }, + { + "a": 383, + "allowed_ret_mask": 383, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 39 + ] + }, + { + "a": 391, + "allowed_ret_mask": 391, + "normal": [ + "1", + "1", + "0", + "0", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 30 + ] + }, + { + "a": 394, + "allowed_ret_mask": 394, + "normal": [ + "1", + "0", + "-1", + "0", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 18 + ] + }, + { + "a": 395, + "allowed_ret_mask": 395, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 106 + ] + }, + { + "a": 398, + "allowed_ret_mask": 398, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 22 + ] + }, + { + "a": 403, + "allowed_ret_mask": 403, + "normal": [ + "0", + "1", + "0", + "1", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 74 + ] + }, + { + "a": 410, + "allowed_ret_mask": 410, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 98 + ] + }, + { + "a": 414, + "allowed_ret_mask": 414, + "normal": [ + "0", + "0", + "1", + "-1", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 94 + ] + }, + { + "a": 415, + "allowed_ret_mask": 415, + "normal": [ + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 0 + ] + }, + { + "a": 421, + "allowed_ret_mask": 421, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "1" + ], + "required_deleted_rows": [ + 55 + ] + }, + { + "a": 424, + "allowed_ret_mask": 424, + "normal": [ + "0", + "1", + "1", + "0", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 8 + ] + }, + { + "a": 428, + "allowed_ret_mask": 428, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 4 + ] + }, + { + "a": 432, + "allowed_ret_mask": 432, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 40 + ] + }, + { + "a": 436, + "allowed_ret_mask": 436, + "normal": [ + "1", + "-1", + "0", + "0", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 35 + ] + }, + { + "a": 441, + "allowed_ret_mask": 441, + "normal": [ + "1", + "0", + "1", + "0", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 15 + ] + }, + { + "a": 448, + "allowed_ret_mask": 448, + "normal": [ + "0", + "1", + "0", + "1", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 76 + ] + }, + { + "a": 449, + "allowed_ret_mask": 449, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 49 + ] + }, + { + "a": 452, + "allowed_ret_mask": 452, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 84 + ] + }, + { + "a": 461, + "allowed_ret_mask": 461, + "normal": [ + "0", + "0", + "1", + "-1", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 92 + ] + }, + { + "a": 464, + "allowed_ret_mask": 464, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 43 + ] + }, + { + "a": 468, + "allowed_ret_mask": 468, + "normal": [ + "1", + "1", + "0", + "0", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 32 + ] + }, + { + "a": 469, + "allowed_ret_mask": 469, + "normal": [ + "1", + "-1", + "1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 63 + ] + }, + { + "a": 473, + "allowed_ret_mask": 473, + "normal": [ + "1", + "0", + "-1", + "0", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 20 + ] + }, + { + "a": 487, + "allowed_ret_mask": 487, + "normal": [ + "1", + "-1", + "0", + "0", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 37 + ] + }, + { + "a": 490, + "allowed_ret_mask": 490, + "normal": [ + "1", + "0", + "1", + "0", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 17 + ] + }, + { + "a": 491, + "allowed_ret_mask": 491, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 107 + ] + }, + { + "a": 494, + "allowed_ret_mask": 494, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 29 + ] + }, + { + "a": 498, + "allowed_ret_mask": 498, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 47 + ] + }, + { + "a": 502, + "allowed_ret_mask": 502, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "-1", + "-1" + ], + "required_deleted_rows": [ + 54 + ] + } + ], + "explicit_singleton": { + "block_mask": 32, + "labels_on_selected_rows": [ + 4, + 2, + 1 + ], + "required_deleted_row": 80, + "return_normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "-1", + "0" + ], + "selected": [ + 1, + 2, + 80 + ], + "support_size_before_deletion": 63 + }, + "old_ret_cap_normals": [ + [ + "0", + "1", + "1", + "0", + "-1", + "0", + "0", + "1" + ], + [ + "0", + "1", + "-1", + "0", + "-1", + "0", + "0", + "-1" + ], + [ + "0", + "1", + "1", + "0", + "0", + "-1", + "-1", + "0" + ], + [ + "0", + "1", + "-1", + "0", + "0", + "1", + "-1", + "0" + ], + [ + "0", + "0", + "0", + "0", + "1", + "1", + "1", + "1" + ], + [ + "1", + "1", + "-1", + "1", + "0", + "0", + "0", + "0" + ], + [ + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "1" + ], + [ + "0", + "0", + "1", + "1", + "0", + "0", + "1", + "-1" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "-1", + "0", + "-1" + ] + ], + "positive_count": 2270, + "sections": 70626, + "sections_with_feasible_blocks": [ + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 2, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 3, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 4, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 3, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 4, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 106, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 106, + 109 + ] + } + ] + }, + "scalar_matrices": { + "J_rows": [ + 10141204792381678636617894477822, + 2586086450219622122178300732227837, + 2596069203522677974138045681631483, + 576460752303423479, + 2596069508172130947062333349822703, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 2589398147263233519358262897489001, + 2592804859121274158248396097259625, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1734130175483521454113919338159274, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 2074858996396035948243032183350476, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 2442837275459972787867604775352560, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "K_nonzero_direction_weight_histogram": { + "48": 4, + "49": 12, + "50": 32, + "51": 50, + "52": 76, + "53": 52, + "54": 24, + "55": 5, + "56": 5, + "57": 24, + "58": 52, + "59": 76, + "60": 50, + "61": 32, + "62": 12, + "63": 4, + "111": 1 + }, + "K_rows": [ + 496, + 22, + 511, + 25, + 21, + 499, + 26, + 508, + 118, + 488, + 415, + 491, + 117, + 412, + 217, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 179, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 445, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "R_rows": [ + 2589350794613531190557368506174057, + 2592804956806343667382164200032873, + 1038469893558777993237266185156761, + 1557652228689369648595160641472409, + 1042515851693473237291206096564751, + 2442767368115540430947582893869040, + 2441038363121116511671115291243110, + 915714330356837041509315611365683, + 610243267866258280493576590715221 + ], + "minimum_K_direction_support": 48, + "rank_J": 108, + "rank_K": 9, + "rank_R": 9, + "zero_diagonal_entries_J": 111 + }, + "scope": [ + "General row-section theorem is a written proof, not established by finite tests.", + "Actual matrix rank claims concern F2 scalar augmentation.", + "Census covers only three-row invertible sections and the 120-root-line two-tier alphabet.", + "No native decoder tariff, restored supplier, precision, owner or new kappa conclusion." + ], + "status": "PASS_INDEPENDENT_ROW_SECTIONS_AND_ROOT_LINE_CENSUS", + "theorem_finite_checks": { + "GL2_F2_cases": 127968, + "cases_with_an_uncovered_row": 990, + "premise_controls": { + "even_two_stage_endpoint": [ + 1, + 2 + ], + "omitted_inverse_endpoint": [ + 1, + 2 + ], + "singular_inverse_rejected": true, + "wrong_factor_order": { + "J": [ + 1, + 3 + ], + "stages": [ + [ + 1, + 3 + ], + [ + 1, + 3 + ], + [ + 2, + 3 + ] + ], + "untouched_rows": [ + 1 + ], + "wrong_endpoint": [ + 3, + 1 + ] + } + }, + "rank_counterexample": { + "E_minus_I": [ + 3, + 3 + ], + "J": [ + 2, + 1 + ], + "defect_rank": 1, + "diagonal_mismatches": 2, + "field": "F2", + "repair_union": [], + "stages": 9 + }, + "stage_counts": [ + 1, + 3, + 5 + ] + } +} diff --git a/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py b/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py new file mode 100644 index 0000000000..5a16e0e0e1 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py @@ -0,0 +1,407 @@ +#!/usr/bin/env python3 +"""Independent row-section checks from two authenticated data files. + +No historical producer, checker, or third-party package is imported. The +general theorem is proved in REVIEW.md; these are finite premise/witness checks. +Apache-2.0. Ross Richardson, with substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from fractions import Fraction +import gzip +from hashlib import sha256 +from itertools import combinations, product +import json +from pathlib import Path + + +WORD_SHA = "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" +GEOMETRY_SHA = "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def load_pinned(path, expected): + raw = path.read_bytes() + require(sha256(raw).hexdigest() == expected, f"input digest mismatch: {path.name}") + return json.loads(gzip.decompress(raw)) + + +def gf2_rank(rows): + pivots = {} + for row in rows: + while row: + p = row.bit_length() - 1 + if p not in pivots: + pivots[p] = row + break + row ^= pivots[p] + return len(pivots) + + +def gf2_mul(left, right): + result = [] + for row in left: + value, j = 0, 0 + while row: + if row & 1: + value ^= right[j] + row >>= 1 + j += 1 + result.append(value) + return result + + +def gf2_inverse(matrix): + n = len(matrix) + rows = [r | (1 << (n+i)) for i, r in enumerate(matrix)] + for j in range(n): + p = next((i for i in range(j, n) if rows[i] >> j & 1), None) + require(p is not None, "singular matrix") + rows[j], rows[p] = rows[p], rows[j] + for i in range(n): + if i != j and rows[i] >> j & 1: + rows[i] ^= rows[j] + require([r & ((1 << n)-1) for r in rows] == [1 << i for i in range(n)], + "inverse elimination") + return [r >> n for r in rows] + + +def transpose(matrix, columns): + return [sum(((r >> j) & 1) << i for i, r in enumerate(matrix)) + for j in range(columns)] + + +def gf2_kernel(matrix, columns): + rows, pivots = matrix[:], [] + for j in range(columns): + i = len(pivots) + p = next((p for p in range(i, len(rows)) if rows[p] >> j & 1), None) + if p is None: + continue + rows[i], rows[p] = rows[p], rows[i] + for q in range(len(rows)): + if q != i and rows[q] >> j & 1: + rows[q] ^= rows[i] + pivots.append(j) + result = [] + for j in range(columns): + if j not in pivots: + vector = 1 << j + for i, p in enumerate(pivots): + vector |= ((rows[i] >> j) & 1) << p + result.append(vector) + require(all((row & v).bit_count() % 2 == 0 for row in matrix for v in result), + "kernel equations") + return result + + +def rational_kernel(matrix, columns): + rows = [list(map(Fraction, row)) for row in matrix] + pivots = [] + for j in range(columns): + i = len(pivots) + p = next((p for p in range(i, len(rows)) if rows[p][j]), None) + if p is None: + continue + rows[i], rows[p] = rows[p], rows[i] + divisor = rows[i][j] + rows[i] = [v/divisor for v in rows[i]] + for q in range(len(rows)): + if q != i and rows[q][j]: + scale = rows[q][j] + rows[q] = [a-scale*b for a, b in zip(rows[q], rows[i])] + pivots.append(j) + result = [] + for j in range(columns): + if j not in pivots: + vector = [Fraction(0)] * columns + vector[j] = 1 + for i, p in enumerate(pivots): + vector[p] = -rows[i][j] + result.append(tuple(vector)) + require(all(sum(a*b for a, b in zip(row, v)) == 0 + for row in matrix for v in result), "rational kernel equations") + return result + + +def normalized(vector): + first = next(x for x in vector if x) + return tuple(Fraction(x)/first for x in vector) + + +def alternating(stages): + require(len(stages) % 2 == 1, "odd stage count required") + out = stages[0] + for i in range(1, len(stages), 2): + out = gf2_mul(gf2_mul(stages[i+1], gf2_inverse(stages[i])), out) + return out + + +def finite_theorem_tests(): + matrices = [list(x) for x in product(range(4), repeat=2)] + invertible = [x for x in matrices if gf2_rank(x) == 2] + require(len(invertible) == 6, "GL(2,2) census") + cases, uncovered_cases = 0, 0 + for length in (1, 3, 5): + for stages in product(invertible, repeat=length): + endpoint = alternating(stages) + for baseline in matrices: + untouched = [p for p in range(2) + if all(a[p] == baseline[p] for a in stages)] + require(all(endpoint[p] == baseline[p] for p in untouched), + "alternating row-support theorem failed") + cases += 1 + uncovered_cases += bool(untouched) + swap = [2, 1] + identity = [1, 2] + endpoint = alternating([swap] * 9) + defect = [a ^ b for a, b in zip(endpoint, identity)] + require(endpoint == swap and gf2_rank(defect) == 1, "rank counterexample") + require(sum((row >> p) & 1 for p, row in enumerate(defect)) == 2, + "two diagonal discrepancies") + + # These are concrete counterexamples to deliberately strengthened claims. + # The rejection predicate is the theorem conclusion, not a status string. + even_endpoint = gf2_mul(gf2_inverse(swap), swap) + require(even_endpoint == identity and even_endpoint != swap, + "omitted odd-stage premise did not change the conclusion") + cycle = [2, 3] # Order three, so A A A differs from A A^-1 A. + missing_inverse_endpoint = gf2_mul(gf2_mul(cycle, cycle), cycle) + require(missing_inverse_endpoint == identity and alternating([cycle]*3) == cycle, + "omitted inverse control") + + order_witness = None + for baseline, a0, a1, a2 in product(invertible, repeat=4): + untouched = [p for p in range(2) + if a0[p] == a1[p] == a2[p] == baseline[p]] + if not untouched: + continue + wrong = gf2_mul(gf2_mul(gf2_inverse(a1), a2), a0) + if any(wrong[p] != baseline[p] for p in untouched): + order_witness = dict(J=baseline, stages=[a0, a1, a2], + untouched_rows=untouched, wrong_endpoint=wrong) + break + require(order_witness is not None, "factor-order control") + singular_rejected = False + try: + alternating([identity, [0, 2], identity]) + except ValueError: + singular_rejected = True + require(singular_rejected, "singular inverse admitted") + + return { + "GL2_F2_cases": cases, + "cases_with_an_uncovered_row": uncovered_cases, + "stage_counts": [1, 3, 5], + "rank_counterexample": {"field": "F2", "J": swap, "stages": 9, + "repair_union": [], "E_minus_I": defect, + "diagonal_mismatches": 2, "defect_rank": 1}, + "premise_controls": { + "even_two_stage_endpoint": even_endpoint, + "omitted_inverse_endpoint": missing_inverse_endpoint, + "wrong_factor_order": order_witness, + "singular_inverse_rejected": singular_rejected, + }, + } + + +def reconstruct(word): + require((word["v"], word["R"], word["h"]) == (111, 438, 8), "R438 dimensions") + rows = [1 << j for j in range(660)] + for phase in ("D", "A"): + for frame, dst, srcs in word[phase]: + require(0 <= frame < len(word["frames"]), "bad frame identifier") + require(0 <= dst < 660 and all(0 <= s < 660 for s in srcs), "bad register") + for src in srcs: + rows[dst] ^= rows[src] + require(rows[:111] == [1 << p for p in range(111)], "prepared source changed") + retained = [rows[j] for j in word["ret"]] + require(len(retained) == 9, "retained query count") + source_mask = (1 << 111)-1 + target_mask = source_mask << 111 + require(all(not row & target_mask for row in retained), "retained target dirt") + readers = [row & source_mask for row in retained] + output = [] + for subset in word["scatter"]: + require(len(set(subset)) == len(subset) and all(0 <= j < 9 for j in subset), + "invalid scatter subset") + output.append(sum(1 << j for j in subset)) + require(len(output) == 111, "output row count") + jr = [r ^ (1 << p) for p, r in enumerate(gf2_mul(output, readers))] + require(gf2_rank(readers) == gf2_rank(output) == 9, "R/K rank") + require(gf2_rank(jr) == 108, "rank J") + require(all(not row >> p & 1 for p, row in enumerate(jr)), "zero diagonal of J") + weights = Counter(sum((a & row).bit_count() % 2 for row in output) + for a in range(1, 512)) + require(min(weights) == 48 and sum(weights.values()) == 511, "K minimum support") + return readers, output, jr, weights + + +def geometry_and_census(word, geometry, readers, output, jr): + roots = [tuple(map(Fraction, row)) for row in word["lines"]] + full = [tuple(map(Fraction, row)) for row in geometry["lines"]] + require(len(roots) == 111 and len(full) == 120, "root inventory dimensions") + require(all(len(r) == 8 and sum(x*x for x in r) == 4 for r in roots+full), + "E8 vector norms") + candidates = sorted(set(map(normalized, full))) + require(len(candidates) == 120, "120 distinct full root lines") + normals = [] + frame_ids = [] + for h in word["ret"]: + frame = next(f for f, dst, _ in reversed(word["A"]) if dst == h) + basis = rational_kernel([roots[p] for p in word["frames"][frame]], 8) + require(len(basis) == 1, "retained source cap is not a hyperplane") + normals.append(normalized(basis[0])) + frame_ids.append(frame) + require(set(candidates) == set(map(normalized, roots+normals)), + "full root lines do not match physical roots plus old cap normals") + line_data = [] + for normal in candidates: + bad = sum(bool(sum(x*y for x, y in zip(normal, r))) << p + for p, r in enumerate(roots)) + allowed = sum((not sum(x*y for x, y in zip(normal, r))) << j + for j, r in enumerate(normals)) + line_data.append((normal, bad, allowed)) + templates = [] + for a in range(1, 512): + support = sum(((a & row).bit_count() % 2) << p for p, row in enumerate(output)) + for normal, bad, allowed in line_data: + if a & ~allowed: + continue + removed = support & bad + if removed.bit_count() <= 3: + templates.append({ + "a": a, + "required_deleted_rows": [p for p in range(111) if removed >> p & 1], + "allowed_ret_mask": allowed, + "normal": [str(x) for x in normal], + }) + require(len(templates) == 111, "eligible template count") + require(all(e["a"] == e["allowed_ret_mask"] for e in templates), + "template input/output masks differ") + require(all(len(e["required_deleted_rows"]) == 1 for e in templates), + "a template requires a different deletion count") + require(len({e["required_deleted_rows"][0] for e in templates}) == 111, + "templates do not biject physical rows") + singletons = [e for e in templates if e["a"].bit_count() == 1] + require(len(singletons) == 1 and singletons[0]["a"] == 32 + and singletons[0]["required_deleted_rows"] == [80], "singleton template") + + # A block S must obey a subset S subset allowed for each emitted direction. + # Here a == allowed, so the only possible direction in block S is a=S. + # Its span has rank one; invertibility then forces |S|=1. + by_deleted = {e["required_deleted_rows"][0]: e for e in templates} + small = [(1 << j) ^ row for j, row in enumerate(gf2_mul(readers, output))] + left_null = gf2_kernel(transpose(small, 9), 9) + require(len(left_null) == 3, "quotient left-nullity") + constraints = gf2_mul(left_null, readers) + require(gf2_rank(constraints) == 3 and gf2_mul(constraints, jr) == [0, 0, 0], + "complete left kernel of J") + labels = transpose(constraints, 111) + sections, positive, rank_histogram = 0, [], Counter() + for chosen in combinations(range(111), 3): + if gf2_rank([labels[p] for p in chosen]) != 3: + continue + sections += 1 + eligible = [by_deleted[p] for p in chosen] + rank_histogram[gf2_rank([e["a"] for e in eligible])] += 1 + # Evaluate the original criterion rather than only its simplification. + block_candidates = set() + for e in eligible: + a, allowed = e["a"], e["allowed_ret_mask"] + for block in range(1, 512): + if not a & ~block and not block & ~allowed: + block_candidates.add(block) + feasible = [] + for block in sorted(block_candidates): + vectors = [e["a"] for e in eligible + if not e["a"] & ~block and not block & ~e["allowed_ret_mask"]] + if gf2_rank(vectors) == block.bit_count(): + feasible.append(block) + require(feasible == ([32] if 80 in chosen else []), "singleton classification") + if feasible: + positive.append({"selected": list(chosen), "feasible_blocks": feasible}) + require(sections == 70626, "invertible-section census") + require(len(positive) == 2270 and dict(rank_histogram) == {3: 70626}, + "positive-section census") + chosen = [1, 2, 80] + require(gf2_rank([labels[p] for p in chosen]) == 3, "explicit section is singular") + normal = tuple(Fraction(x) for x in singletons[0]["normal"]) + supported = [p for p, row in enumerate(output) if row >> 5 & 1] + violations = [p for p in supported if sum(a*b for a, b in zip(roots[p], normal))] + require(violations == [80], "singleton deletion does not remove exact obstruction") + require(sum(a*b for a, b in zip(normals[5], normal)) == 0, + "singleton output line is outside source cap") + # Removing 80 from the repair set reintroduces a real output incompatibility. + require(80 not in [0, 1, 2] and violations == [80], "omitted deletion control") + require(not any(e["a"].bit_count() == 1 for e in [by_deleted[p] for p in (0, 1, 2)]), + "historical P012 unexpectedly admits a singleton") + return { + "candidate_return_lines": len(candidates), + "actual_retained_cap_frame_ids": frame_ids, + "old_ret_cap_normals": [[str(x) for x in row] for row in normals], + "eligible_direction_templates": templates, + "eligible_direction_rank_histogram": dict(sorted(rank_histogram.items())), + "sections": sections, + "sections_with_feasible_blocks": positive, + "positive_count": len(positive), + "classification": "Exactly sections containing row80; only block mask32, size1.", + "explicit_singleton": { + "selected": chosen, "block_mask": 32, "return_normal": list(map(str, normal)), + "required_deleted_row": 80, "support_size_before_deletion": len(supported), + "labels_on_selected_rows": [labels[p] for p in chosen], + }, + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--word", type=Path, required=True) + parser.add_argument("--geometry", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + require(not args.output.exists(), "output must be fresh") + word = load_pinned(args.word, WORD_SHA) + geometry = load_pinned(args.geometry, GEOMETRY_SHA) + readers, output, jr, weights = reconstruct(word) + tests = finite_theorem_tests() + census = geometry_and_census(word, geometry, readers, output, jr) + result = { + "status": "PASS_INDEPENDENT_ROW_SECTIONS_AND_ROOT_LINE_CENSUS", + "inputs": {"r438_word_sha256": WORD_SHA, "full120_geometry_sha256": GEOMETRY_SHA}, + "scalar_matrices": { + "R_rows": readers, "K_rows": output, "J_rows": jr, + "rank_R": 9, "rank_K": 9, "rank_J": 108, "zero_diagonal_entries_J": 111, + "K_nonzero_direction_weight_histogram": dict(sorted(weights.items())), + "minimum_K_direction_support": 48, + }, + "nine_three_row_stage_consequences": { + "maximum_repair_union": 27, "minimum_diagonal_mismatches": 84, + "defect_rank_lower": 9, "defect_rank_upper": 36, + "conditional_common_reader_defect_rank": 9, + "conditional_premise": "Each A_s-I = W_s R for the same actual R.", + "necessary_odd_stage_count_at_three_rows_per_stage": 37, + "stage_count_sufficiency_claimed": False, + }, + "theorem_finite_checks": tests, + "root_line_census": census, + "scope": [ + "General row-section theorem is a written proof, not established by finite tests.", + "Actual matrix rank claims concern F2 scalar augmentation.", + "Census covers only three-row invertible sections and the 120-root-line two-tier alphabet.", + "No native decoder tariff, restored supplier, precision, owner or new kappa conclusion.", + ], + } + args.output.write_text(json.dumps(result, indent=2, sort_keys=True) + "\n") + print(json.dumps({"status": result["status"], "sections": census["sections"], + "positive_sections": census["positive_count"], + "result_sha256": sha256(args.output.read_bytes()).hexdigest()})) + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz new file mode 100644 index 0000000000..672c415346 Binary files /dev/null and b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz differ diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json new file mode 100644 index 0000000000..c2fb443f44 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json @@ -0,0 +1,726 @@ +{ + "claims": { + "c_pr1043_inplace": "0.001734176288479865766692", + "c_pr589": "0.001733427039589844234749", + "c_window_optimum_local_a": "0.001734802047828389852783", + "c_window_optimum_local_b": "0.001734846264120199151475", + "certificate": "moment(opt, c+1e-24) > 1 by both engines; every other no-bank R438 slot layout has a certified larger idle sum at c+1e-24 with the same child count and local profile, hence a larger moment; so no layout in the slot model reaches c+1e-24", + "kappa": "unchanged; the bit side does not bind", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + } + }, + "dp": { + "S45_positive_control": { + "c_star": "0.001733427039589844234750", + "exhaustive_layouts_covered": 3160688, + "optimum": "9x(42,5)", + "optimum_idle_per_replica": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "pr1023_width8_optimality": { + "margin_lower_bound": "0.0025867731454302305368", + "runner_up_per_unit": "capacity 42, u = 4" + }, + "runner_up": "8x(42,5) + 1x(14,1) + 1x(42,4)", + "runner_up_gap_moment": [ + "0.0000003322715521960530587537556494937834", + "0.0000003322715521960530587537556494937835" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.018883656854406087435093441072030701", + "0.018883656854406087435093441072030702" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 435, + "34": 1, + "4": 444, + "42": 8, + "6": 443, + "7": 666 + }, + "slack_units": 45, + "third": "8x(42,5) + 1x(28,1) + 1x(42,4)" + }, + "S54_at_c_a_next": { + "c_star": "0.001734802047828389852784", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390420665268048703185105882609695", + "0.0000001390420665268048703185105882609696" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902038724851374389941593752047420", + "0.007902038724851374389941593752047421" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "S54_at_c_b_next": { + "c_star": "0.001734846264120199151476", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390456087131328961495995128689269", + "0.0000001390456087131328961495995128689270" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902240034384768753974039515366855", + "0.007902240034384768753974039515366856" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "pr1043_inplace_layout": { + "gap_moment_at_c_a_next": [ + "0.0000020441334240402170287422093671650918", + "0.0000020441334240402170287422093671650919" + ], + "gap_sum_g_per_replica_at_c_a_next": [ + "0.116172190755053614177477242754726502", + "0.116172190755053614177477242754726503" + ], + "idle_per_replica": { + "10": 5, + "12": 3, + "14": 1, + "2": 430, + "4": 441, + "42": 9, + "6": 443, + "7": 666 + }, + "layout": "9x(42,5) + 5x(42,1) + 3x(28,1) + 1x(14,1)" + } + }, + "endpoints": { + "pr1043_r438_inplace_local_a": { + "children": 904320, + "endpoint": "0.001734176288479865766692", + "profile": { + "1": 380448, + "10": 160, + "12": 96, + "14": 32, + "2": 400832, + "3": 22464, + "4": 26784, + "42": 288, + "5": 29376, + "6": 17344, + "7": 26496 + } + }, + "pr1043_r438_inplace_local_b": { + "endpoint": "0.001734220472884893243548", + "gain_vs_pr1043_percent": "0.00254786", + "gain_vs_pr589_percent": "0.04577252" + }, + "pr589_r439_selected": { + "endpoint": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + } + }, + "r438_runner_up_layout_local_a": { + "endpoint": "0.001734759469354358444809", + "gain_vs_pr1043_percent": "0.03362869", + "gain_vs_pr589_percent": "0.07686679", + "layout": "10x(42,5) + 1x(14,1) + 1x(28,3)" + }, + "r438_window_optimum_local_a": { + "children": 904320, + "endpoint": "0.001734802047828389852783", + "endpoint_fraction": "1734802047828389852783/1000000000000000000000000", + "gain_vs_pr1043_percent": "0.03608395", + "gain_vs_pr589_percent": "0.07932311", + "profile": { + "1": 380448, + "2": 400928, + "3": 22464, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + }, + "r438_window_optimum_local_b": { + "children": 904320, + "endpoint": "0.001734846264120199151475", + "endpoint_fraction": "69393850564807966059/40000000000000000000000", + "gain_vs_pr1043_percent": "0.03863365", + "gain_vs_pr589_percent": "0.08187391", + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + } + }, + "inputs": { + "main_tree": { + "research/bit-helper470-window-placement-seed14/verify.py": { + "git_blob": "c716a44e3b920f91918903d3480560e3882fbe80", + "sha256": "9cceeb610eccd6171585b056020ab6c44d7428de403a9ed035be1df9ae63f55b" + }, + "research/bit589-width-packing/SOURCES.json": { + "git_blob": "f6a97de32691a1d426ac4819aad24c0c8414d97e", + "sha256": "53fe98c8f01de7e32e3110e591d62e60292abb38cc11ecde4839f2eebd3b5fbc" + }, + "research/bit589-width-packing/packing.py": { + "git_blob": "a6079ee0dd4d8037be477a3c4497f472348bde07", + "sha256": "2bb5515807714807961289e4ee6958c3ad7e0c27bbec4d9212b138c662a6cc7b" + }, + "research/bit589-width7-windows-seed72/verify.py": { + "git_blob": "7f79a47146b150c9446e5f45e401d70b5cd12427", + "sha256": "a5341ed222af84b51cd18645dd6b23e4613c0275cbf2663c94b07a9f916e9e60" + }, + "research/bit589-width7-windows-seed72/windows.py": { + "git_blob": "4bb4f075ad5c1a49b4af310094bde6b2a4ea0c2e", + "sha256": "a24295a51333b168ab73215f8a4bbb5bf831be829f572d1cde15fc322049c635" + }, + "research/bit589-width7-windows-seed72/wopt.py": { + "git_blob": "4e0bd3704d1a2be460ed25b363e95918119e8d42", + "sha256": "a72daf1c7cff422543371a220fd391fe3b33552ac6ed52763f50b0c2f93d9532" + }, + "research/e8-bit-p111-tuned/data/selection9-p111.json": { + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/audit_hosted_k.py": { + "git_blob": "8864ca9b942a3507171edca0cf6cbaaf10fcf434", + "sha256": "57e558c80a2fea6e291587b04afd76dfaee3550729997798b61f33daf90b8ec9" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "research/native-complex-moment552/engines/base_two_moment.py": { + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + "research/native-complex-moment552/engines/moment.py": { + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + "research/native-complex-moment552/engines/outer.py": { + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "vendored": { + "vendor/pr1043/CERTIFICATE.json": { + "git_blob": "56400920050c523e6e399f2455137b36c35cf528", + "origin": "PR1043 (Ali Romman, @aliromman) head e309e17f83f5759b1ea1fa24a76f24838784cb4d, research/bit-boundary-persistence/CERTIFICATE.json", + "sha256": "32c6cd6103006d627909cabdaf5083238c661a6582016a8b21075bd01c892eff" + } + } + }, + "negative_controls": [ + { + "name": "vendored_pr1043_certificate_tampered", + "reason": "Fail: sha256 pin: vendor/pr1043/CERTIFICATE.json", + "rejected": true + }, + { + "name": "pr1023_width8_optimality_hardcoded_45_rejects_R438", + "reason": "ValueError: slack per replica", + "rejected": true + }, + { + "name": "dp_with_move_42_4_dropped_vs_exhaustive", + "reason": "Fail: exhaustive enumeration disagrees with the DP (values)", + "rejected": true + }, + { + "name": "runner_up_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "pr1043_inplace_layout_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "optimum_profile_with_partial_slot_dropped", + "reason": "Fail: hosted rank mass (bad)", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_a", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_b", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "window_child4_tightened_to_stages_0_1", + "reason": "Fail: infeasible: Hall violated by children [4]", + "rejected": true + }, + { + "name": "window_child6_tightened_to_stages_7_8", + "reason": "Fail: infeasible: Hall violated by children [6]", + "rejected": true + }, + { + "name": "r439_supply_into_r438_optimum", + "reason": "Fail: infeasible: 439 helpers per stage do not fit the R438 optimum", + "rejected": true + }, + { + "name": "placement_stage_outside_window/seed14", + "reason": "Reject: outside untouched window", + "rejected": true + }, + { + "name": "placement_stage_outside_window/independent", + "reason": "Fail: stage outside window", + "rejected": true + }, + { + "name": "placement_cell_collision/seed14", + "reason": "Reject: coordinate collision", + "rejected": true + }, + { + "name": "placement_cell_collision/independent", + "reason": "Fail: cell collision", + "rejected": true + }, + { + "name": "placement_duplicate_helper/seed14", + "reason": "Reject: duplicate helper", + "rejected": true + }, + { + "name": "placement_duplicate_helper/independent", + "reason": "Fail: duplicate (stage, helper)", + "rejected": true + }, + { + "name": "placement_missing_helper/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_missing_helper/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + }, + { + "name": "placement_slot_extent/seed14", + "reason": "Reject: slot extent", + "rejected": true + }, + { + "name": "placement_slot_extent/independent", + "reason": "Fail: slot extent", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/seed14", + "reason": "Reject: owner domain", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/independent", + "reason": "Fail: index domain", + "rejected": true + }, + { + "name": "placement_width7_residual/seed14", + "reason": "Reject: helper residual width", + "rejected": true + }, + { + "name": "placement_width7_residual/independent", + "reason": "Fail: residual width", + "rejected": true + }, + { + "name": "placement_host_pair_active/seed14", + "reason": "Reject: host is active data", + "rejected": true + }, + { + "name": "placement_host_pair_active/independent", + "reason": "Fail: host pair active at stage", + "rejected": true + }, + { + "name": "placement_audited_as_R439/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_audited_as_R439/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + } + ], + "placement": { + "audits": "seed14 placement_audit, independent audit_slots, seed14 owners_for_replicas", + "builders_agree": "seed14 allocate == PR442 hosting_core.expand", + "hosted_residual_roles": 126144, + "idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "occurrences_per_replica": 3942, + "selection": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 10 + ], + [ + 6, + [ + 8 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 211 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "stages": [ + [ + 0, + 8, + 0, + 222 + ], + [ + 2, + 8, + 0, + 216 + ], + [ + 2, + 8, + 1, + 438 + ], + [ + 2, + 8, + 2, + 12 + ], + [ + 4, + 8, + 2, + 426 + ], + [ + 4, + 8, + 3, + 438 + ], + [ + 4, + 8, + 4, + 246 + ], + [ + 6, + 8, + 4, + 192 + ], + [ + 6, + 8, + 5, + 438 + ], + [ + 6, + 8, + 6, + 426 + ], + [ + 7, + 8, + 6, + 12 + ], + [ + 7, + 8, + 7, + 438 + ], + [ + 7, + 8, + 8, + 216 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + }, + "slot_list_sha256": "1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e", + "split": "all 10 idle 42-copies and the one-residual copy in child 6" + }, + "scope": "bit headroom only; no new kappa; the selected record is complex-bound; every R438 row is conditional on PR1043 (open, not admitted); row (b) also on the transported word of verify_transport.py", + "slots_per_replica": { + "14": 444, + "28": 444, + "42": 444, + "7": 666 + }, + "status": "PASS_R438_WINDOW_REHOST", + "width8_units_per_replica": { + "capacity": 3996, + "slack_R438": 54, + "slack_R439": 45 + }, + "windows": { + "0": { + "capacity": 14, + "pair": 1, + "stages": [ + 0, + 1 + ] + }, + "1": { + "capacity": 7, + "pair": 1, + "stages": [ + 2 + ] + }, + "2": { + "capacity": 28, + "pair": 2, + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + "3": { + "capacity": 7, + "pair": 2, + "stages": [ + 4 + ] + }, + "4": { + "capacity": 42, + "pair": 3, + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + "5": { + "capacity": 7, + "pair": 3, + "stages": [ + 6 + ] + }, + "6": { + "capacity": 42, + "pair": 0, + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "7": { + "capacity": 28, + "pair": 1, + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + "8": { + "capacity": 14, + "pair": 2, + "stages": [ + 7, + 8 + ] + } + }, + "windows_feasibility": { + "configs_checked": 22, + "feasible": 22, + "note": "x4 idle 42-copies in child 4, 10-x4 in child 6, one-residual copy in child 4 or 6; children 0,2,7,8 full; capacity-7 children host nothing" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz new file mode 100644 index 0000000000..e12a566658 Binary files /dev/null and b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz differ diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py new file mode 100644 index 0000000000..91594e0223 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py @@ -0,0 +1,121 @@ +"""Exact compressed nine-stage E8 bit geometry; no external research fetches. + +Prepared by Zhihao Chen with OpenAI Codex assistance, Apache-2.0. +Uses the E8 root data and port-reflection construction credited to PR #370. +""" +import argparse, gzip, hashlib, json, time +from pathlib import Path +import sympy as S + +def dump(p, x): p.write_text(json.dumps(x,indent=2,default=str)+'\n') +def digest(p): return hashlib.sha256(p.read_bytes()).hexdigest() + +def factor(a): + """Exact elementary factorization, reconstructed from the identity.""" + n=a.rows; z=a.copy(); ops=[] + for j in range(n): + p=next(i for i in range(j,n) if z[i,j]) + if p!=j: z.row_swap(p,j); ops.append(['swap',p,j,None]) + if z[j,j]!=1: + c=1/z[j,j]; z[j,:]=c*z[j,:]; ops.append(['scale',j,None,c]) + for i in range(n): + if i!=j and z[i,j]: + c=-z[i,j]; z[i,:]=z[i,:]+c*z[j,:]; ops.append(['add',i,j,c]) + assert z==S.eye(n) + def replay(skip=-1): + z=S.eye(n) + for k in reversed(range(len(ops))): + if k==skip: continue + typ,i,j,c=ops[k] + if typ=='swap': z.row_swap(i,j) + elif typ=='scale': z[i,:]=z[i,:]/c + else: z[i,:]=z[i,:]-c*z[j,:] + return z + assert replay()==a + assert ops and replay(0)!=a + return [[t,i,j,None if c is None else str(c)] for t,i,j,c in ops] + +def main(): + ap=argparse.ArgumentParser(); ap.add_argument('--source',type=Path,required=True) + ap.add_argument('--out',type=Path,required=True); a=ap.parse_args(); t0=time.monotonic() + a.out.mkdir(parents=True,exist_ok=True) + p=a.source/'data/bit/bitE8-r865.json.gz'; w=json.loads(gzip.decompress(p.read_bytes())) + assert (w['h'],w['v'],w['R'],w['form'])==(8,120,865,'/2') + lines=[S.Matrix(x) for x in w['lines']]; I=S.eye(8); Z=S.zeros(8) + assert lines[0]==S.Matrix([2,0,0,0,0,0,0,0]) + ip=lambda u,v:(u.T*v)[0]/2 + gs={0:I}; todo=[0] + while todo: + more=[] + for i in todo: + for j in range(120): + if j in gs or abs(ip(lines[i],lines[j]))!=1: continue + d=lines[i]-lines[j] if ip(lines[i],lines[j])==1 else lines[i]+lines[j] + r=I-d*d.T/(d.T*d)[0]*2 + gs[j]=r*gs[i]; more.append(j) + todo=more + assert len(gs)==120 + recipes=[]; denoms=set(); max_factors=0 + for t,q in enumerate(lines): + g=gs[t]; assert g.T*g==I and g*lines[0] in (q,-q) + P=q*q.T/4; K=I-P; A=g[:,1:] + assert A.T*A==S.eye(7) and A*A.T==K and P*A==S.zeros(8,7) + rho=P.row_join(A).col_join(A.T.row_join(S.zeros(7))) + assert rho.T==rho and rho*rho==S.eye(15) + expected={'P':S.diag(I,S.zeros(7)), 'H':S.eye(15), + '0':S.diag(K,S.zeros(7)), 'K':S.diag(K,S.eye(7))} + for name,U in [('P',P),('H',I),('0',Z),('K',K)]: + assert rho*S.diag(U,S.eye(7))*rho==expected[name] + # Exact bit address operators D_U: head/tail exchange on U. + # Unlike complex C_U, they carry no omitted scalar/translation phase. + def D(U): return (I-U).row_join(U).col_join(U.row_join(I-U)) + assert D(I)*D(P)==D(K) and D(P)*D(P)==S.eye(16) + ops=factor(rho); max_factors=max(max_factors,len(ops)) + for typ,i,j,c in ops: + if c is not None: denoms.add(int(S.Rational(c).q)) + # Compact exact global matrices: these 15 axes are the first eight + # local coordinates and exterior block s. All other axes are fixed. + routes=[dict(stage=0,axes=list(range(8)),identity=True)] + for s in range(1,9): + axes=list(range(8))+list(range(8+7*(s-1),8+7*s)) + assert len(set(axes))==15 and max(axes)<64 + routes.append(dict(stage=s,axes=axes,elementary_inverse_replay=ops)) + recipes.append(dict(port=t,q=list(map(int,q)),complement_columns=[[str(x) for x in row] for row in A.tolist()], + rho15=[[str(x) for x in row] for row in rho.tolist()],routes=routes)) + if t%30==0: print('compressed geometry',t+1,flush=True) + # Exact nested data levels: local I (or K_q) plus s exterior rank-7 + # blocks. Width 64=8+8*7; each bridge sees identical complete operators. + idle=[] + for j in range(1,4): + idle += [dict(pair=j,source_level=-1,target_level=2*j-1,rank=14*j,phase='before_positive_bridge'), + dict(pair=j,source_level=2*j-1,target_level=2*j,rank=7,phase='before_negative_bridge')] + for j in range(4): + idle.append(dict(pair=j,source_level=2*j+2,target_level=8,rank=14*(3-j),phase='terminal')) + assert sum(z['rank'] for z in idle)==189 + # Whole h=8 residual blocks are mutually perpendicular and fill Q^64. + slots=[list(range(8*s,8*(s+1))) for s in range(8)] + assert sorted(sum(slots,[]))==list(range(64)) + perms=[] + for s in range(8): + perm=list(range(64)) + if s: + for j in range(8): perm[j],perm[8*s+j]=perm[8*s+j],perm[j] + assert [perm[perm[j]] for j in range(64)]==list(range(64)) + assert sorted(perm)==list(range(64)) and [perm[j] for j in range(8)]==slots[s] + perms.append(perm) + assert len({tuple(p) for p in perms})==8 + assert set(sum(slots[:7]+[slots[6]],[]))!=set(range(64)) + out=dict(status='PASS_COMPRESSED_NINE_BIT_GEOMETRY_AND_BANK_BLOCKS',h=8,m=64,stages=9, + word_sha256=digest(p),ports=recipes,idle_per_port_and_data_member=idle, + local_window='U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks', + ambient_form='I_64/2',bank_slots=slots,bank_permutations=perms, + route_checks=1080,exact_bit_endpoint_operator_checks=240, + max_route_factors=max_factors,route_denominators=sorted(denoms), + bad_prime_factors=sorted({int(q) for d in denoms for q in S.factorint(d)}), + missing_route_factor_controls=120,duplicate_bank_slot_rejected=True, + scope='All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and bank coordinate slots. Full local-word scalar and chronological lowering are checked separately.', + seconds=time.monotonic()-t0) + dump(a.out/'GEOMETRY.json',out) + print(json.dumps({k:v for k,v in out.items() if k not in ('ports','bank_permutations','idle_per_port_and_data_member')}),flush=True) + +if __name__=='__main__': main() diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz new file mode 100644 index 0000000000..8bec1751f7 Binary files /dev/null and b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz differ diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json new file mode 100644 index 0000000000..e69ea66a3a --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json @@ -0,0 +1,167 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 9 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 213 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "proxy_saving": 13174.7497998684, + "stages": [ + [ + 0, + 8, + 1, + 222 + ], + [ + 2, + 8, + 0, + 439 + ], + [ + 2, + 8, + 1, + 217 + ], + [ + 2, + 8, + 2, + 10 + ], + [ + 4, + 8, + 2, + 429 + ], + [ + 4, + 8, + 4, + 252 + ], + [ + 4, + 8, + 5, + 429 + ], + [ + 6, + 8, + 3, + 439 + ], + [ + 6, + 8, + 4, + 187 + ], + [ + 6, + 8, + 7, + 439 + ], + [ + 7, + 8, + 5, + 10 + ], + [ + 7, + 8, + 6, + 439 + ], + [ + 7, + 8, + 8, + 217 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json new file mode 100644 index 0000000000..e293ddc557 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json @@ -0,0 +1,222 @@ +{ + "word": { + "file": "tune/bitE8mut-p111-tuned.json.gz", + "file_sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "content_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "v": 111, + "R": 439, + "punctured": [ + 10, + 15, + 51, + 53, + 56, + 66, + 72, + 89, + 111 + ], + "retained_totals": 9, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "decoder_constant": 63, + "gates": { + "D": 111, + "A": 2075, + "B": 712, + "C": 2574 + }, + "local_histogram": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "legality": { + "records": 27234, + "common_frame_ADDs": 24305, + "rank_mass": 5129 + }, + "five_stage_columns": 883, + "five_stage_payload_bits": 93, + "nine_stage_columns": 1327, + "nine_stage_payload_bits": 93, + "eleven_stage_columns": 1549, + "eleven_stage_payload_bits": 93, + "base_content_sha256": "d0df3c89ae84989f4045ba1681a5e2e9fcdfa38ed0301c8abf5185537155cbe3" + }, + "interface": { + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "conclusion": { + "U_block_form": true, + "J_identity": true, + "K_equals_D": true, + "C_is_U_inverse": true + }, + "interleaving": { + "z_gates_A": 2075, + "source_writes_A": 0, + "z_gates_B": 499, + "source_writes_B": 483, + "helper_writes_B": 16, + "sources_rewritten_B": 108, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "target_reads_of_targets": 0, + "cleanup_gates": 2574 + } + }, + "nine": { + "pipeline": "PR #510 (PR #463 nine-stage template, 32 replicas, PR #442 hosting, PR #493 outer assembly), parameterised for v <= 120 by code/adapt9p.py", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_lower_decimal": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26784, + "42": 288 + }, + "bit": { + "live": 28416, + "physical": 28425, + "maxchild": 42, + "rank_mass": 1808352, + "hosted_residuals": 126432, + "bank_assignments": 0, + "prefix_bits": 177, + "charged_prefix_bits": 192, + "coefficient_bits": 177, + "two_level_coefficient_bits": 393, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "halving_depth": 2 + }, + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "eleven": { + "pipeline": "PR #493 (PR #445 geometry, PR #472 emitter, audit and invoice, PR #442 hosting), parameterised by PR #545's code/adapt.py", + "bit_lower": "855475950388791987811/500000000000000000000000", + "bit_lower_decimal": "0.001710951900777583975622", + "profile": { + "1": 116424, + "2": 121648, + "3": 6952, + "4": 7424, + "5": 8976, + "6": 4520, + "7": 8776, + "56": 2600 + }, + "bit": { + "live": 8880, + "physical": 8889, + "maxchild": 56, + "rank_mass": 689304, + "hosted_residuals": 38632, + "prefix_bits": 4304, + "charged_prefix_bits": 4352, + "coefficient_bits": 4304, + "three_level_coefficient_bits": 12966, + "charged_three_level_coefficient_bits": 12992, + "row_coefficient": 19431, + "halving_depth": 3 + }, + "emitted_program_sha256": "793b6f40c9aa4b8db57fec0ac0973e16884dae28707e482ee8f7a2349a5d5a4b", + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "base": { + "nine_bit_lower": "1733052823330162099157/1000000000000000000000000", + "nine_bit_lower_decimal": "0.001733052823330162099157", + "eleven_bit_lower": "427652201524503168379/250000000000000000000000", + "eleven_bit_lower_decimal": "0.001710608806098012673516", + "note": "PR #555's EXPECTED.json (untuned word); the tune/ pipeline is the same, with the same frozen hosting selections" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py new file mode 100644 index 0000000000..3df12bd632 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py @@ -0,0 +1,264 @@ +# Generalised from PR #443's global_kernel.py to an arbitrary odd stage count S = 2K+1 (compressed window m = 1+7S) +# by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. At the defaults (S = 9, 32 replicas) the emitted +# GLOBAL-TEMPLATE.json.gz and GLOBAL.json equal PR #443's (GLOBAL.json except wall-clock seconds). +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound compressed S-stage (S = 2K+1 odd, default 9) bit template with independent replicas. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time +from collections import Counter +from pathlib import Path +import os, sys +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../e8-r740-replica32/code')) +from bank_routes_k import placement, validate_isometries +from config import REPLICAS + +H,L,K,T,M=8,9,4,REPLICAS,64 # overwritten in main() from --stages / --replicas +NAMES={5:'FIVE',7:'SEVEN',9:'NINE',11:'ELEVEN',13:'THIRTEEN'} +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(K): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j=5 and a.stages%2==1; L=a.stages; K=(L-1)//2; T=a.replicas; M=1+7*L; NOBANK=a.no_banks + if L!=9: assert NOBANK, 'bank tiling is only emitted for the nine-stage layout; use --no-banks and host every residual' + DEFICIT=T*(2*K*120-9*H*L) + wp=a.word; w=json.loads(gzip.decompress(wp.read_bytes()) if wp.suffix=='.gz' else wp.read_bytes()) + V,R=w['v'],w['R']; LOCAL=2*V+R; DATA=2*K*V*T; LIVE=DATA+L*R + assert (w['h'],V,w['form'])==(8,120,'/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_%s_BIT_GEOMETRY_AND_BANK_BLOCKS'%NAMES[L] and geo['stages']==L and geo['m']==M + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + if NOBANK: place,NB=None,None; LIVE=DATA + else: + place,NB=placement(widths,T,M) + assert T%8==0 and T*(H*R-ENT)%M==0 and NB==T*(H*R-ENT)//M + LIVE=DATA+L*NB + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=0 + cur[x]=newf + if f: hist[f]+=1 + events.append([0,x,oldf,newf,f,int(reverse)]) + elif op==1: + assert cur[x]==cur[y]==f and x!=y and x helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json b/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json new file mode 100644 index 0000000000..674ef36f72 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json @@ -0,0 +1,2122 @@ +{ + "base_commit": "389fa10d714f5b40afe624908e487eb5e424498d", + "controls": [ + { + "name": "omitted_candidate_cleanup", + "rejection": "Wrong arbitrary-dirty endpoint" + }, + { + "name": "omitted_candidate_dirty_compensation", + "rejection": "Wrong arbitrary-dirty endpoint" + }, + { + "name": "transport_retains_old_frame", + "rejection": "Frame descent" + }, + { + "name": "emitted_owner_wrong_port", + "rejection": "emitted owner family differs" + }, + { + "name": "emitted_owner_wrong_replica", + "rejection": "emitted owner family differs" + }, + { + "name": "emitted_owner_equal_width_wrong_slice", + "rejection": "emitted owner slice differs" + }, + { + "name": "emitted_rank34_omit", + "rejection": "emitted remainder factors differ" + }, + { + "name": "emitted_rank34_undercharge", + "rejection": "emitted remainder factors differ" + }, + { + "name": "emitted_local_instruction_omitted", + "rejection": "emitted local program changed" + } + ], + "emitted_binding": { + "local_program_sha256": "4c50687a587140a04187db68719499b3536e5c77df0f8178b108033fbc77f71b", + "owner_occurrences": 126144, + "owner_projector_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "paid_children": 904320, + "physical_deadlines": 71040, + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "rank_mass": 1808352, + "remainder_factors_sha256": "1e0e20f68af797c3075096ae626b765797004c52eb9046b59cddb517c61a007c" + }, + "geometry": { + "full_generated_artifact": "geometry/GEOMETRY.json", + "h": 8, + "m": 64, + "missing_route_factor_controls": 111, + "ports": 111, + "route_checks": 999, + "semantic_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "stages": 9 + }, + "local": { + "baseline": { + "adds": 24305, + "copies": 9, + "forward_bound": 49347, + "helpers": 439, + "local_bits": 93, + "nine_stage_bits": 177, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "rank_mass": 5129, + "records": 27234, + "registers": 661, + "reverse_bound": 1113070, + "word_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b" + }, + "candidate": { + "adds": 24248, + "copies": 9, + "forward_bound": 49347, + "helpers": 438, + "local_bits": 93, + "nine_stage_bits": 177, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "rank_mass": 5121, + "records": 27175, + "registers": 660, + "reverse_bound": 1113070, + "word_sha256": "7aad486877b8c03866b8f1e6f909d12085da347d86aaae891f86f4e2dbc550d1" + } + }, + "no_new_kappa": true, + "normalization": "Original raw geometry/template hashes checked within each run; semantic_* hashes omit only geometry.seconds and rebind that geometry digest in the templates.", + "pipeline": { + "baseline": { + "columns": { + "11": { + "bridge_additions": 2664, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "global_live_registers": 1549, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + }, + { + "omit_bridge": 18, + "rejected": true + }, + { + "omit_bridge": 19, + "rejected": true + }, + { + "omit_bridge": 20, + "rejected": true + }, + { + "omit_bridge": 21, + "rejected": true + }, + { + "omit_bridge": 22, + "rejected": true + }, + { + "omit_bridge": 23, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 267355, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 10 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "5": { + "bridge_additions": 666, + "copied_center_original_source_immutable": true, + "five_stage_additions": 121525, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "global_live_registers": 883, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + } + ], + "status": "PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "9": { + "bridge_additions": 1998, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "global_live_registers": 1327, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 218745, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + } + }, + "hosted": { + "audit": { + "bank_assignments": 0, + "deficit": 10272, + "emitted_events": 7843392, + "emitted_program_sha256": "96c7ad2e744e9a503a4ef5ecd52d0f6a8899bdb5efac2e3aafa0db18adf99523", + "hosted_residuals": 126432, + "live": 28416, + "maxchild": 42, + "mutations_rejected": [ + "slot outside window", + "copy index outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "omitted helper", + "hosted owner in another replica or outside the data stock", + "hosted owner on a wrong data family", + "wrong call orientation", + "duplicate call", + "changed idle rank", + "understated live stock", + "missing remainder summary", + "stale stage count", + "hosted coordinate beyond the pending set", + "overlapping hosted coordinates" + ], + "physical": 28425, + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + }, + "rank_mass": 1808352, + "semantic_template_sha256": "0ee55df480db549c55ad0452cf24d1789f7be0009af159b7f208dc2034f99e1c", + "status": "PASS_INDEPENDENT_REPLICATED_HOSTING_AUDIT" + }, + "invoice": { + "R": 439, + "bit": { + "bank_assignments": 0, + "charged_prefix_bits": 192, + "charged_two_level_coefficient_bits": 512, + "coefficient_bits": 177, + "halving_depth": 2, + "hosted_residuals": 126432, + "live": 28416, + "maxchild": 42, + "physical": 28425, + "prefix_bits": 177, + "rank_mass": 1808352, + "row_coefficient": 18355, + "two_level_coefficient_bits": 393 + }, + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_lower_decimal": "0.001733427039589844234749", + "bit_profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + }, + "emitted_program_sha256": "96c7ad2e744e9a503a4ef5ecd52d0f6a8899bdb5efac2e3aafa0db18adf99523", + "next_grid_point_rejected": "6933708158359376939/4000000000000000000000", + "replicas": 32, + "stages": 9, + "status": "PASS_NINE_STAGE_WHOLE_HOSTED_BIT_PRICE_AND_CITED_ASSEMBLY" + }, + "parent": { + "R": 439, + "all_scalar_columns_restored": true, + "bank_assignments": 126432, + "banks_per_stage": 1756, + "bridge_additions": 63936, + "charged_prefix_bits": 192, + "copy_erase_episodes": 2592, + "deficit": 10272, + "emitted_events": 7843392, + "emitted_program_sha256": "3663872061341889b43bd605d4e9a38072a842dab8505ed34ea5aeba3f5656d1", + "entrance_rank_total": 0, + "global_prefix_bits": 177, + "global_prefix_bound": "117742596540718658156527847560864213734191286190080000", + "h": 8, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "independent_unbanked_scalar_columns": 4839, + "live": 44220, + "local_additions": 24305, + "local_checks": { + "forward": { + "adds": 24305, + "all_columns": 661, + "cancellation_free_row_l1": 49347, + "copies": 9, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "records": 27234, + "sha256": "a778a0300bbf4b07908ee24c0d271426ba6c70568e788af2f0ac8517897cb5b4" + }, + "reverse": { + "adds": 24305, + "all_columns": 661, + "cancellation_free_row_l1": 1113070, + "copies": 9, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "records": 27234, + "sha256": "98d97804744d691548b4d54868a8a0e5f500c55ab32ac4be96f3ba30e6f5bef8" + } + }, + "local_invocations": 288, + "m": 64, + "maxchild": 42, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "padding_calls": 0, + "paid_calls": 904896, + "physical": 44229, + "profile": { + "1": 381024, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26784 + }, + "rank_mass": 2819808, + "replicas": 32, + "residual_bank_slots": true, + "scalar_stages": [ + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 0 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 1 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 2 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 3 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 4 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 5 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 6 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 7 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 8 + } + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "semantic_geometry_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "semantic_template_sha256": "9f3d11b6f0912eaf65eba21ea738caed142e9e11e8f616d0fb0d086214027153", + "source_records_sha256": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a", + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "v": 111, + "word_sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + "parent_audit": { + "entrance_rank_total": 0, + "exact_bank_families": 15804, + "exact_nested_frame_pairs": 2386, + "exact_reflected_pairs": 2386, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge", + "alter residual orthogonal basis", + "misstate replication count", + "misstate stage count", + "alias data across stages", + "delay an idle advance past its level", + "truncate the last idle advance", + "re-use a helper bank slot", + "wrong residual frame", + "alias data across replica groups", + "omit the fourth replica group" + ], + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "profile": { + "1": 381024, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26784 + }, + "residual_isometries": 1, + "semantic_template_sha256": "9f3d11b6f0912eaf65eba21ea738caed142e9e11e8f616d0fb0d086214027153", + "source_frames": 636, + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT" + } + }, + "interface": { + "columns": 661, + "conclusion": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 111 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "interleaving": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "punctured": 9, + "status": "PASS_EXACT_REPLAY_AND_INTERLEAVED_INTERFACE", + "totals_on_punctured_hyperplanes": true, + "v": 111 + }, + "legality": { + "all_final_frames_pass": true, + "common_frame_ADDs": 24305, + "containment_pairs_checked": 2386, + "copies": 9, + "donor_intersections": 0, + "erasures": 9, + "max_inherited_integer_abs": 2, + "nested_MOVEs": 2911, + "new_frame_ids_collision": false, + "nondegeneracy_checked_by_separate_exact_bank_audit": true, + "old_max_frame_id": 635, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 27234, + "scope": "Independent chronological geometry/copy/source-owner audit. F2 all-column replay is in the separately freshly compiled transform receipt; address transform theorem and bank completion remain separate.", + "selected_helpers": 0, + "selected_pairs": 0, + "source_owner_intersections": 0, + "status": "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE" + } + }, + "candidate": { + "columns": { + "11": { + "bridge_additions": 2664, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1548, + "fresh_center_copies": 99, + "global_live_registers": 1548, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + }, + { + "omit_bridge": 18, + "rejected": true + }, + { + "omit_bridge": 19, + "rejected": true + }, + { + "omit_bridge": 20, + "rejected": true + }, + { + "omit_bridge": 21, + "rejected": true + }, + { + "omit_bridge": 22, + "rejected": true + }, + { + "omit_bridge": 23, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 266728, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 10 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "5": { + "bridge_additions": 666, + "copied_center_original_source_immutable": true, + "five_stage_additions": 121240, + "formal_columns_checked": 882, + "fresh_center_copies": 45, + "global_live_registers": 882, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + } + ], + "status": "PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "9": { + "bridge_additions": 1998, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1326, + "fresh_center_copies": 81, + "global_live_registers": 1326, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 218232, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 8 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + } + }, + "hosted": { + "audit": { + "bank_assignments": 0, + "deficit": 10272, + "emitted_events": 7826400, + "emitted_program_sha256": "480f8b94801efb971aacf77bd20445a648f73f191b4f630ba193b5eae8f6aa14", + "hosted_residuals": 126144, + "live": 28416, + "maxchild": 42, + "mutations_rejected": [ + "slot outside window", + "copy index outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "omitted helper", + "hosted owner in another replica or outside the data stock", + "hosted owner on a wrong data family", + "wrong call orientation", + "duplicate call", + "changed idle rank", + "understated live stock", + "missing remainder summary", + "stale stage count", + "hosted coordinate beyond the pending set", + "overlapping hosted coordinates" + ], + "physical": 28425, + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352, + "semantic_template_sha256": "9f5c3c4b7ae658ee0d047b78ba93d26d731ffd4a70181c722241188197cb23bc", + "status": "PASS_INDEPENDENT_REPLICATED_HOSTING_AUDIT" + }, + "invoice": { + "R": 438, + "bit": { + "bank_assignments": 0, + "charged_prefix_bits": 192, + "charged_two_level_coefficient_bits": 512, + "coefficient_bits": 177, + "halving_depth": 2, + "hosted_residuals": 126144, + "live": 28416, + "maxchild": 42, + "physical": 28425, + "prefix_bits": 177, + "rank_mass": 1808352, + "row_coefficient": 18355, + "two_level_coefficient_bits": 393 + }, + "bit_lower": "69393850564807966059/40000000000000000000000", + "bit_lower_decimal": "0.001734846264120199151475", + "bit_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "emitted_program_sha256": "480f8b94801efb971aacf77bd20445a648f73f191b4f630ba193b5eae8f6aa14", + "next_grid_point_rejected": "433711566030049787869/250000000000000000000000", + "replicas": 32, + "stages": 9, + "status": "PASS_NINE_STAGE_WHOLE_HOSTED_BIT_PRICE_AND_CITED_ASSEMBLY" + }, + "parent": { + "R": 438, + "all_scalar_columns_restored": true, + "bank_assignments": 126144, + "banks_per_stage": 1752, + "bridge_additions": 63936, + "charged_prefix_bits": 192, + "copy_erase_episodes": 2592, + "deficit": 10272, + "emitted_events": 7826400, + "emitted_program_sha256": "096ac9a98a6e0f941e61a04b7ac721b1006a2276eec35af13a6b45f1f68ad643", + "entrance_rank_total": 0, + "global_prefix_bits": 177, + "global_prefix_bound": "117742596540718658156527847560864213734191286190080000", + "h": 8, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "independent_unbanked_scalar_columns": 4830, + "live": 44184, + "local_additions": 24248, + "local_checks": { + "forward": { + "adds": 24248, + "all_columns": 660, + "cancellation_free_row_l1": 49347, + "copies": 9, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "records": 27175, + "sha256": "82853061c90de52f66ca3ea57545fe9d9f028e3a77b6437ea78d26e5b7617864" + }, + "reverse": { + "adds": 24248, + "all_columns": 660, + "cancellation_free_row_l1": 1113070, + "copies": 9, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "records": 27175, + "sha256": "9563caa686bbae6c1aa153dfd589a14ac5b09d5d46c2861f68c3799b1b12b2ae" + } + }, + "local_invocations": 288, + "m": 64, + "maxchild": 42, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "padding_calls": 0, + "paid_calls": 904320, + "physical": 44193, + "profile": { + "1": 380736, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26496 + }, + "rank_mass": 2817504, + "replicas": 32, + "residual_bank_slots": true, + "scalar_stages": [ + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 0 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 1 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 2 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 3 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 4 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 5 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 6 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 7 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 8 + } + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "semantic_geometry_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "semantic_template_sha256": "902fe6565d76506a77392111ae8d928018b442a6dad29fc5401ed3579651ccaf", + "source_records_sha256": "4cc2e7032cf9897f93e45ff0c3944d1dd2d6506ad25e5a1140d4cbc91f6af6f7", + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "v": 111, + "word_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "parent_audit": { + "entrance_rank_total": 0, + "exact_bank_families": 15768, + "exact_nested_frame_pairs": 2385, + "exact_reflected_pairs": 2385, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge", + "alter residual orthogonal basis", + "misstate replication count", + "misstate stage count", + "alias data across stages", + "delay an idle advance past its level", + "truncate the last idle advance", + "re-use a helper bank slot", + "wrong residual frame", + "alias data across replica groups", + "omit the fourth replica group" + ], + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "profile": { + "1": 380736, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26496 + }, + "residual_isometries": 1, + "semantic_template_sha256": "902fe6565d76506a77392111ae8d928018b442a6dad29fc5401ed3579651ccaf", + "source_frames": 636, + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT" + } + }, + "interface": { + "columns": 660, + "conclusion": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "gates": { + "A": 2074, + "B": 712, + "C": 2573, + "D": 111 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "interleaving": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2573, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2074, + "z_gates_B": 499 + }, + "punctured": 9, + "status": "PASS_EXACT_REPLAY_AND_INTERLEAVED_INTERFACE", + "totals_on_punctured_hyperplanes": true, + "v": 111 + }, + "legality": { + "all_final_frames_pass": true, + "common_frame_ADDs": 24248, + "containment_pairs_checked": 2385, + "copies": 9, + "donor_intersections": 0, + "erasures": 9, + "max_inherited_integer_abs": 2, + "nested_MOVEs": 2909, + "new_frame_ids_collision": false, + "nondegeneracy_checked_by_separate_exact_bank_audit": true, + "old_max_frame_id": 635, + "paid_histogram": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "rank_mass": 5121, + "records": 27175, + "scope": "Independent chronological geometry/copy/source-owner audit. F2 all-column replay is in the separately freshly compiled transform receipt; address transform theorem and bank completion remain separate.", + "selected_helpers": 0, + "selected_pairs": 0, + "source_owner_intersections": 0, + "status": "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE" + } + }, + "hosting_change": { + "hosted_helpers_per_replica": 3942, + "new_remainders": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "old_remainders": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "returned_idle_rank_per_replica": 72 + } + }, + "projector_receipt": { + "census": { + "deadline_families": 71040, + "factorization_sha256": "7983d077edcf50376dc0f85ae48b1015a1b4e8077d0ba0770973a79451305798", + "families_with_multiple_children": 14208, + "idle_per_replica_including_zero": { + "0": 222, + "2": 433, + "4": 444, + "6": 444, + "7": 666, + "34": 1, + "42": 10 + }, + "occupied_families": 28096, + "owner_projector_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "physical_helpers": 126144, + "qperp_host_occurrences": 21312, + "slots": 3942 + }, + "children": 904320, + "control_witnesses": { + "replica_basis_witness": [ + 888, + 22 + ], + "wrong_exterior_axes": [ + 30, + 8 + ], + "wrong_port_basis_column": 0 + }, + "controls": [ + "source_byte_corruption", + "missing_helper", + "duplicate_helper", + "split_qperp_slice", + "stage_outside_window", + "omitted_rank34_remainder", + "duplicate_rank34_remainder", + "equal_rank_wrong_exterior", + "equal_rank_wrong_port_operator_witness", + "wrong_replica_dirty_basis_witness" + ], + "deficit": 10272, + "distinct_factorizations": 12, + "exact_basis_columns": 170496, + "global_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "local_profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "port_projectors": 111, + "predecessor_head": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "rank_mass": 1808352, + "scope": "finite changed-placement projector binding; no new endpoint or supplier admission", + "selected_control_helper_occurrences": 126432, + "status": "PASS_R438_REHOST_PROJECTORS" + }, + "schema_version": 1, + "selected_context": { + "binding": "complex", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "complex_lower": "67018507072324140917/40000000000000000000000", + "kappa": "836330098538459/500000000000000000" + }, + "status": "PASS_R438_NATIVE_REHOST" +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json new file mode 100644 index 0000000000..39a5b1f2de --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json @@ -0,0 +1,76 @@ +{ + "schema_version": 1, + "base_commit": "0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ae6a99f28aa468649eb66a361e764d769363bf11", + "sha256": "10b9e340fd8e354a37a0c4813c90e5de1dd42044b5f6aca4a3fc5a42b685fa32" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "e8870e5917057d59b730eb14721a778639eca050", + "sha256": "d46eb6d5b3e279428753d770653663fbdf1063e55c255ea073d768f344927ef7" + }, + { + "path": "research/e8-bit-carrier-skeleton/code/nine/geometry.py", + "usage": "input", + "git_blob": "91594e0223e8fac49162b5aef834ffaa8e94a254", + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + { + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "usage": "input", + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + { + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "usage": "input", + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + { + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py", + "usage": "input", + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + { + "path": "research/selected-bit-hosting-audit/README.md", + "usage": "input", + "git_blob": "145a92501fa73ccd507d9ddd2d6752fc78354764", + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + }, + { + "path": "research/e8-bit-p111-tuned/data/selection9-p111.json", + "usage": "input", + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + } + ], + "dependency_heads": { + "2423": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "1043": "e309e17f83f5759b1ea1fa24a76f24838784cb4d", + "589": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "1307": "4cb255ef445e2abc3ff8845fa01210b974e2cf6c" + }, + "vendored_files": [ + { + "path": "sources/pr2423-rehost.json", + "origin_path": "research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "commit": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "git_blob": "c2fb443f44f2c7c420cd367ab5fa12644efe318a" + }, + { + "path": "sources/pr2423-word.json.gz", + "origin_path": "research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "commit": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "git_blob": "e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8" + } + ] +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json new file mode 100644 index 0000000000..c2fb443f44 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json @@ -0,0 +1,726 @@ +{ + "claims": { + "c_pr1043_inplace": "0.001734176288479865766692", + "c_pr589": "0.001733427039589844234749", + "c_window_optimum_local_a": "0.001734802047828389852783", + "c_window_optimum_local_b": "0.001734846264120199151475", + "certificate": "moment(opt, c+1e-24) > 1 by both engines; every other no-bank R438 slot layout has a certified larger idle sum at c+1e-24 with the same child count and local profile, hence a larger moment; so no layout in the slot model reaches c+1e-24", + "kappa": "unchanged; the bit side does not bind", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + } + }, + "dp": { + "S45_positive_control": { + "c_star": "0.001733427039589844234750", + "exhaustive_layouts_covered": 3160688, + "optimum": "9x(42,5)", + "optimum_idle_per_replica": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "pr1023_width8_optimality": { + "margin_lower_bound": "0.0025867731454302305368", + "runner_up_per_unit": "capacity 42, u = 4" + }, + "runner_up": "8x(42,5) + 1x(14,1) + 1x(42,4)", + "runner_up_gap_moment": [ + "0.0000003322715521960530587537556494937834", + "0.0000003322715521960530587537556494937835" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.018883656854406087435093441072030701", + "0.018883656854406087435093441072030702" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 435, + "34": 1, + "4": 444, + "42": 8, + "6": 443, + "7": 666 + }, + "slack_units": 45, + "third": "8x(42,5) + 1x(28,1) + 1x(42,4)" + }, + "S54_at_c_a_next": { + "c_star": "0.001734802047828389852784", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390420665268048703185105882609695", + "0.0000001390420665268048703185105882609696" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902038724851374389941593752047420", + "0.007902038724851374389941593752047421" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "S54_at_c_b_next": { + "c_star": "0.001734846264120199151476", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390456087131328961495995128689269", + "0.0000001390456087131328961495995128689270" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902240034384768753974039515366855", + "0.007902240034384768753974039515366856" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "pr1043_inplace_layout": { + "gap_moment_at_c_a_next": [ + "0.0000020441334240402170287422093671650918", + "0.0000020441334240402170287422093671650919" + ], + "gap_sum_g_per_replica_at_c_a_next": [ + "0.116172190755053614177477242754726502", + "0.116172190755053614177477242754726503" + ], + "idle_per_replica": { + "10": 5, + "12": 3, + "14": 1, + "2": 430, + "4": 441, + "42": 9, + "6": 443, + "7": 666 + }, + "layout": "9x(42,5) + 5x(42,1) + 3x(28,1) + 1x(14,1)" + } + }, + "endpoints": { + "pr1043_r438_inplace_local_a": { + "children": 904320, + "endpoint": "0.001734176288479865766692", + "profile": { + "1": 380448, + "10": 160, + "12": 96, + "14": 32, + "2": 400832, + "3": 22464, + "4": 26784, + "42": 288, + "5": 29376, + "6": 17344, + "7": 26496 + } + }, + "pr1043_r438_inplace_local_b": { + "endpoint": "0.001734220472884893243548", + "gain_vs_pr1043_percent": "0.00254786", + "gain_vs_pr589_percent": "0.04577252" + }, + "pr589_r439_selected": { + "endpoint": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + } + }, + "r438_runner_up_layout_local_a": { + "endpoint": "0.001734759469354358444809", + "gain_vs_pr1043_percent": "0.03362869", + "gain_vs_pr589_percent": "0.07686679", + "layout": "10x(42,5) + 1x(14,1) + 1x(28,3)" + }, + "r438_window_optimum_local_a": { + "children": 904320, + "endpoint": "0.001734802047828389852783", + "endpoint_fraction": "1734802047828389852783/1000000000000000000000000", + "gain_vs_pr1043_percent": "0.03608395", + "gain_vs_pr589_percent": "0.07932311", + "profile": { + "1": 380448, + "2": 400928, + "3": 22464, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + }, + "r438_window_optimum_local_b": { + "children": 904320, + "endpoint": "0.001734846264120199151475", + "endpoint_fraction": "69393850564807966059/40000000000000000000000", + "gain_vs_pr1043_percent": "0.03863365", + "gain_vs_pr589_percent": "0.08187391", + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + } + }, + "inputs": { + "main_tree": { + "research/bit-helper470-window-placement-seed14/verify.py": { + "git_blob": "c716a44e3b920f91918903d3480560e3882fbe80", + "sha256": "9cceeb610eccd6171585b056020ab6c44d7428de403a9ed035be1df9ae63f55b" + }, + "research/bit589-width-packing/SOURCES.json": { + "git_blob": "f6a97de32691a1d426ac4819aad24c0c8414d97e", + "sha256": "53fe98c8f01de7e32e3110e591d62e60292abb38cc11ecde4839f2eebd3b5fbc" + }, + "research/bit589-width-packing/packing.py": { + "git_blob": "a6079ee0dd4d8037be477a3c4497f472348bde07", + "sha256": "2bb5515807714807961289e4ee6958c3ad7e0c27bbec4d9212b138c662a6cc7b" + }, + "research/bit589-width7-windows-seed72/verify.py": { + "git_blob": "7f79a47146b150c9446e5f45e401d70b5cd12427", + "sha256": "a5341ed222af84b51cd18645dd6b23e4613c0275cbf2663c94b07a9f916e9e60" + }, + "research/bit589-width7-windows-seed72/windows.py": { + "git_blob": "4bb4f075ad5c1a49b4af310094bde6b2a4ea0c2e", + "sha256": "a24295a51333b168ab73215f8a4bbb5bf831be829f572d1cde15fc322049c635" + }, + "research/bit589-width7-windows-seed72/wopt.py": { + "git_blob": "4e0bd3704d1a2be460ed25b363e95918119e8d42", + "sha256": "a72daf1c7cff422543371a220fd391fe3b33552ac6ed52763f50b0c2f93d9532" + }, + "research/e8-bit-p111-tuned/data/selection9-p111.json": { + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/audit_hosted_k.py": { + "git_blob": "8864ca9b942a3507171edca0cf6cbaaf10fcf434", + "sha256": "57e558c80a2fea6e291587b04afd76dfaee3550729997798b61f33daf90b8ec9" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "research/native-complex-moment552/engines/base_two_moment.py": { + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + "research/native-complex-moment552/engines/moment.py": { + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + "research/native-complex-moment552/engines/outer.py": { + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "vendored": { + "vendor/pr1043/CERTIFICATE.json": { + "git_blob": "56400920050c523e6e399f2455137b36c35cf528", + "origin": "PR1043 (Ali Romman, @aliromman) head e309e17f83f5759b1ea1fa24a76f24838784cb4d, research/bit-boundary-persistence/CERTIFICATE.json", + "sha256": "32c6cd6103006d627909cabdaf5083238c661a6582016a8b21075bd01c892eff" + } + } + }, + "negative_controls": [ + { + "name": "vendored_pr1043_certificate_tampered", + "reason": "Fail: sha256 pin: vendor/pr1043/CERTIFICATE.json", + "rejected": true + }, + { + "name": "pr1023_width8_optimality_hardcoded_45_rejects_R438", + "reason": "ValueError: slack per replica", + "rejected": true + }, + { + "name": "dp_with_move_42_4_dropped_vs_exhaustive", + "reason": "Fail: exhaustive enumeration disagrees with the DP (values)", + "rejected": true + }, + { + "name": "runner_up_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "pr1043_inplace_layout_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "optimum_profile_with_partial_slot_dropped", + "reason": "Fail: hosted rank mass (bad)", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_a", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_b", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "window_child4_tightened_to_stages_0_1", + "reason": "Fail: infeasible: Hall violated by children [4]", + "rejected": true + }, + { + "name": "window_child6_tightened_to_stages_7_8", + "reason": "Fail: infeasible: Hall violated by children [6]", + "rejected": true + }, + { + "name": "r439_supply_into_r438_optimum", + "reason": "Fail: infeasible: 439 helpers per stage do not fit the R438 optimum", + "rejected": true + }, + { + "name": "placement_stage_outside_window/seed14", + "reason": "Reject: outside untouched window", + "rejected": true + }, + { + "name": "placement_stage_outside_window/independent", + "reason": "Fail: stage outside window", + "rejected": true + }, + { + "name": "placement_cell_collision/seed14", + "reason": "Reject: coordinate collision", + "rejected": true + }, + { + "name": "placement_cell_collision/independent", + "reason": "Fail: cell collision", + "rejected": true + }, + { + "name": "placement_duplicate_helper/seed14", + "reason": "Reject: duplicate helper", + "rejected": true + }, + { + "name": "placement_duplicate_helper/independent", + "reason": "Fail: duplicate (stage, helper)", + "rejected": true + }, + { + "name": "placement_missing_helper/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_missing_helper/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + }, + { + "name": "placement_slot_extent/seed14", + "reason": "Reject: slot extent", + "rejected": true + }, + { + "name": "placement_slot_extent/independent", + "reason": "Fail: slot extent", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/seed14", + "reason": "Reject: owner domain", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/independent", + "reason": "Fail: index domain", + "rejected": true + }, + { + "name": "placement_width7_residual/seed14", + "reason": "Reject: helper residual width", + "rejected": true + }, + { + "name": "placement_width7_residual/independent", + "reason": "Fail: residual width", + "rejected": true + }, + { + "name": "placement_host_pair_active/seed14", + "reason": "Reject: host is active data", + "rejected": true + }, + { + "name": "placement_host_pair_active/independent", + "reason": "Fail: host pair active at stage", + "rejected": true + }, + { + "name": "placement_audited_as_R439/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_audited_as_R439/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + } + ], + "placement": { + "audits": "seed14 placement_audit, independent audit_slots, seed14 owners_for_replicas", + "builders_agree": "seed14 allocate == PR442 hosting_core.expand", + "hosted_residual_roles": 126144, + "idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "occurrences_per_replica": 3942, + "selection": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 10 + ], + [ + 6, + [ + 8 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 211 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "stages": [ + [ + 0, + 8, + 0, + 222 + ], + [ + 2, + 8, + 0, + 216 + ], + [ + 2, + 8, + 1, + 438 + ], + [ + 2, + 8, + 2, + 12 + ], + [ + 4, + 8, + 2, + 426 + ], + [ + 4, + 8, + 3, + 438 + ], + [ + 4, + 8, + 4, + 246 + ], + [ + 6, + 8, + 4, + 192 + ], + [ + 6, + 8, + 5, + 438 + ], + [ + 6, + 8, + 6, + 426 + ], + [ + 7, + 8, + 6, + 12 + ], + [ + 7, + 8, + 7, + 438 + ], + [ + 7, + 8, + 8, + 216 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + }, + "slot_list_sha256": "1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e", + "split": "all 10 idle 42-copies and the one-residual copy in child 6" + }, + "scope": "bit headroom only; no new kappa; the selected record is complex-bound; every R438 row is conditional on PR1043 (open, not admitted); row (b) also on the transported word of verify_transport.py", + "slots_per_replica": { + "14": 444, + "28": 444, + "42": 444, + "7": 666 + }, + "status": "PASS_R438_WINDOW_REHOST", + "width8_units_per_replica": { + "capacity": 3996, + "slack_R438": 54, + "slack_R439": 45 + }, + "windows": { + "0": { + "capacity": 14, + "pair": 1, + "stages": [ + 0, + 1 + ] + }, + "1": { + "capacity": 7, + "pair": 1, + "stages": [ + 2 + ] + }, + "2": { + "capacity": 28, + "pair": 2, + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + "3": { + "capacity": 7, + "pair": 2, + "stages": [ + 4 + ] + }, + "4": { + "capacity": 42, + "pair": 3, + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + "5": { + "capacity": 7, + "pair": 3, + "stages": [ + 6 + ] + }, + "6": { + "capacity": 42, + "pair": 0, + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "7": { + "capacity": 28, + "pair": 1, + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + "8": { + "capacity": 14, + "pair": 2, + "stages": [ + 7, + 8 + ] + } + }, + "windows_feasibility": { + "configs_checked": 22, + "feasible": 22, + "note": "x4 idle 42-copies in child 4, 10-x4 in child 6, one-residual copy in child 4 or 6; children 0,2,7,8 full; capacity-7 children host nothing" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz new file mode 100644 index 0000000000..e12a566658 Binary files /dev/null and b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz differ diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py new file mode 100644 index 0000000000..30b18ceaf5 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py @@ -0,0 +1,447 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Bind PR2423's changed R438 placement to exact pending projectors. + +Prepared for commdata2338, with substantial OpenAI Codex assistance. +Projector algebra and geometry are credited to PR1307 and its predecessors. +This checker does not import a predecessor acceptance engine. +""" +import argparse +import ast +from collections import Counter, defaultdict +from fractions import Fraction as Q +import gzip +import hashlib +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BIT = 'research/e8-bit-p111-tuned/' +BASE = BIT + 'vendor/pr510/e8-r480-nine-stage/vendor/' +CONTROLLER = BASE + 'e8-r715-eleven-stage-whole/code/global_k.py' +HOSTING = BASE + 'idle-axis-hosting/hosting_core.py' +GEOMETRY = 'research/e8-bit-carrier-skeleton/code/nine/geometry.py' +V, STAGES, REPLICAS, WIDTH = 111, 9, 32, 64 +LOW = 255 +QPERP = 254 + + +class Rejected(ValueError): + pass + + +def require(condition, message): + if not condition: + raise Rejected(message) + + +def canonical(obj): + return json.dumps(obj, sort_keys=True, separators=(',', ':')).encode() + + +def sha(raw): + return hashlib.sha256(raw).hexdigest() + + +def check_bytes(raw, pin): + require(sha(raw) == pin['sha256'], 'source SHA256: ' + pin['path']) + blob = hashlib.sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() + require(blob == pin['git_blob'], 'source Git blob: ' + pin['path']) + + +def source_check(): + pins = json.loads((HERE / 'SOURCES.json').read_text()) + live = [p for p in pins['files'] if p['usage'] == 'input'] + for p in live: + check_bytes((ROOT / p['path']).read_bytes(), p) + for p in pins['vendored_files']: + check_bytes((HERE / p['path']).read_bytes(), p) + return pins + + +def function(path, name): + """Extract a pinned pure source function, never its module main/imports.""" + nodes = [n for n in ast.parse((ROOT / path).read_text()).body + if isinstance(n, ast.FunctionDef) and n.name == name] + require(len(nodes) == 1, 'unique source function') + ns = {'Counter': Counter, 'defaultdict': defaultdict} + exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec'), ns) + return ns[name] + + +def pending(a, b): + require(-1 <= a <= b <= 8, 'level range') + axes = range(1 if a == -1 else 8 + 7*a, 8 + 7*b) + return sum(1 << i for i in axes) + + +def chronology(): + levels = [-1]*4 + events, children = [], [] + + def advance(pair, target): + a = levels[pair] + child = {'kind': 'idle', 'idx': len(children), 'pair': pair, + 'source_level': a, 'target_level': target, + 'rank': 7*(target-a), 'mask': pending(a, target)} + children.append(child) + events.append(child) + levels[pair] = target + + for e in function(CONTROLLER, 'recipe')(4): + events.append(e) + if e['kind'] == 'local': + s, p = e['stage'], e['pair'] + require(levels[p] == s-1, 'local source level') + levels[p] = s + if 1 <= s <= 6: + advance((s+1)//2, s) + if s == 8: + for pair in range(4): + advance(pair, 8) + elif e['kind'] == 'bridge': + require(levels[e['src']] == levels[e['dst']], 'bridge levels') + else: + require(e['kind'] == 'exchange' and levels == [8]*4, 'final exchange') + # Compare the geometry producer's literal table, without importing sympy. + main = next(n for n in ast.parse((ROOT / GEOMETRY).read_text()).body + if isinstance(n, ast.FunctionDef) and n.name == 'main') + start = next(i for i, n in enumerate(main.body) if isinstance(n, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == 'idle' for t in n.targets)) + nodes = main.body[start:start+3] + require(len(nodes) == 3 and all(isinstance(n, ast.For) for n in nodes[1:]), + 'geometry table syntax') + ns = {} + exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec'), ns) + fields = ('pair', 'source_level', 'target_level', 'rank') + require([[c[k] for k in fields] for c in children] == + [[c[k] for k in fields] for c in ns['idle']], 'geometry/controller binding') + require(len(children) == 10 and len(events) == 29, 'chronology size') + used = defaultdict(int) + for c in children: + require(c['mask'].bit_count() == c['rank'], 'pending rank') + require(not used[c['pair']] & c['mask'], 'source children disjoint') + used[c['pair']] |= c['mask'] + windows = {} + calls = {e['stage']: (i, e['pair']) for i, e in enumerate(events) if e['kind'] == 'local'} + for c in children: + end = events.index(c) + stages = [] + for stage, (begin, pair) in calls.items(): + if begin >= end or pair == c['pair']: + continue + touches = any((e['kind'] == 'local' and e['pair'] == c['pair']) or + (e['kind'] == 'bridge' and c['pair'] in (e['src'], e['dst'])) + for e in events[begin+1:end]) + if not touches: + stages.append(stage) + windows[c['idx']] = (c['pair'], c['rank'], frozenset(stages)) + return events, children, windows + + +def expand(selection, children, windows, helpers): + """Expand queues from the fixed selection; do not use source expand.""" + queues = defaultdict(list) + seen = set() + for child, width, stage, count in sorted(selection['stages']): + require((child, width, stage) not in seen, 'duplicate demand') + seen.add((child, width, stage)) + require(width == 8 and stage in windows[child][2] and type(count) is int and count > 0, + 'demand window/width') + queues[child].extend([stage]*count) + patterns = defaultdict(list) + for child, widths, count in selection['patterns']: + require(child in windows and all(w == 8 for w in widths) and count > 0, 'pattern domain') + patterns[child].append((widths, count)) + next_helper, consumed = Counter(), Counter() + slots, remainder = [], {} + for c in children: + child, copy = c['idx'], 0 + for widths, count in sorted(patterns[child], key=lambda p: (-sum(p[0]), p[0])): + require(sum(widths) <= c['rank'], 'pattern extent') + for _ in range(count): + require(copy < 2*V, 'copy count') + for offset in range(0, sum(widths), 8): + require(consumed[child] < len(queues[child]), 'demand underflow') + stage = queues[child][consumed[child]] + consumed[child] += 1 + helper = next_helper[stage] + next_helper[stage] += 1 + slots.append((child, copy, offset, 8, stage, helper)) + remainder[child, copy] = c['rank']-sum(widths) + copy += 1 + while copy < 2*V: + remainder[child, copy] = c['rank'] + copy += 1 + require(consumed[child] == len(queues[child]), 'unconsumed demand') + require(dict(next_helper) == {s: helpers for s in range(STAGES)}, 'helper counts') + # Independent producer agreement is a control, not the geometric test. + ys = {(i, tuple(p)): n for i, p, n in selection['patterns']} + zs = {(i, w, s): n for i, w, s, n in selection['stages']} + original = function(HOSTING, 'expand')(windows, ys, zs, + {s: [(h, 8) for h in range(helpers)] for s in range(STAGES)}, 2*V) + require(original == (slots, remainder), 'producer slot agreement') + return slots, remainder + + +def axes(mask): + return tuple(i for i in range(WIDTH) if mask >> i & 1) + + +def factorization(parts, target): + used = 0 + for part in parts: + require(part >= 0 and part < 1 << WIDTH, 'factor dimension') + require(part & LOW in (0, QPERP), 'split q-perp') + require(not part & used, 'overlapping factors') + used |= part + require(used == target, 'wrong pending operator') + + +def audit(slots, children, windows, helpers): + by_deadline = defaultdict(list) + seen = set() + for child, copy, offset, width, stage, helper in slots: + require(0 <= child < 10 and 0 <= copy < 2*V and 0 <= helper < helpers, 'slot indices') + require(stage in windows[child][2] and width == 8, 'slot window/width') + require((stage, helper) not in seen, 'duplicate helper') + seen.add((stage, helper)) + axis = axes(children[child]['mask']) + require(0 <= offset and offset+width <= len(axis), 'slot extent') + support = sum(1 << i for i in axis[offset:offset+width]) + by_deadline[child, copy].append((support, stage, helper)) + require(seen == {(s, h) for s in range(STAGES) for h in range(helpers)}, 'missing helper') + remainders, signatures, complement = Counter(), set(), {} + for c in children: + for copy in range(2*V): + parts = [p for p, _, _ in by_deadline[c['idx'], copy]] + used = 0 + for part in parts: + require(not used & part, 'overlapping helper slices') + used |= part + require(not used & ~c['mask'], 'factor outside pending space') + rest = c['mask'] ^ used + factorization(parts+[rest], c['mask']) + complement[c['idx'], copy] = rest + remainders[rest.bit_count()] += 1 + signatures.add((c['mask'], tuple(parts+[rest]))) + occupied, multiple = {}, defaultdict(set) + owner_rows = [] + for rep in range(REPLICAS): + for (child, copy), pieces in sorted(by_deadline.items()): + pair = children[child]['pair'] + side, port = divmod(copy, V) + family = rep*8*V+(2*pair+side)*V+port + require(divmod(family, 8*V)[0] == rep, 'replica binding') + for support, stage, helper in pieces: + require(not occupied.get(family, 0) & support, 'cross-child physical overlap') + occupied[family] = occupied.get(family, 0) | support + multiple[family].add(child) + owner_rows.append((rep, stage, helper, family, child, support)) + require(len({r[:3] for r in owner_rows}) == REPLICAS*STAGES*helpers, 'owner role coverage') + return {'slots': len(slots), 'physical_helpers': len(owner_rows), + 'deadline_families': REPLICAS*len(children)*2*V, + 'occupied_families': len(occupied), + 'families_with_multiple_children': sum(len(cs)>1 for cs in multiple.values()), + 'qperp_host_occurrences': REPLICAS*sum((p & LOW)==QPERP for ps in by_deadline.values() for p,_,_ in ps), + 'idle_per_replica_including_zero': dict(sorted(remainders.items())), + 'owner_projector_sha256': sha(canonical(owner_rows)), + 'factorization_sha256': sha(canonical(sorted(signatures)))}, signatures, complement + + +def low_apply(vector, q, enabled): + """Direct rational 16-coordinate D(K_q) application, no mask-union rule.""" + if not enabled: + return vector + diff = [vector[8+i]-vector[i] for i in range(8)] + dot = sum(q[i]*diff[i] for i in range(8))/Q(4) + shift = [diff[i]-q[i]*dot for i in range(8)] + return tuple(vector[i]+shift[i] for i in range(8)) + tuple(vector[8+i]-shift[i] for i in range(8)) + + +def operator_check(lines, signatures): + columns = 0 + for q in lines: + require(len(q)==8 and all(type(x) is int for x in q) and sum(x*x for x in q)==4, 'port norm') + K4 = [[4*(i==j)-q[i]*q[j] for j in range(8)] for i in range(8)] + require(all(sum(K4[i][k]*K4[k][j] for k in range(8))==4*K4[i][j] + for i in range(8) for j in range(8)), 'rational projector') + require(sum(K4[i][i] for i in range(8))==28, 'q-perp rank seven') + for target, parts in signatures: + # The local block is checked directly on all 16 rational basis columns. + for j in range(16): + v = tuple(Q(i==j) for i in range(16)) + got = v + for part in parts: + got = low_apply(got, q, bool(part & LOW)) + require(got == low_apply(v, q, bool(target & LOW)), 'local address operator') + # Each exterior coordinate has a literal two-by-two swap matrix. + # Check both basis columns via parity of the executed factor list. + for j in range(8, WIDTH): + parity = sum((part >> j) & 1 for part in parts) % 2 + require(parity == ((target >> j)&1), 'exterior address operator') + columns += 2*WIDTH + return columns + + +def rank(rows): + basis = {} + for row in rows: + x = list(map(Q, row)) + for pivot, b in sorted(basis.items()): + v = x[pivot] + if v: + x = [a-v*c for a,c in zip(x,b)] + pivot = next((j for j,v in enumerate(x) if v), None) + if pivot is not None: + v = x[pivot] + basis[pivot] = [a/v for a in x] + return len(basis) + + +def word_profile(word): + require((word['h'],word['v'],word['R'])==(8,V,438), 'R438 word binding') + dims = [rank([word['lines'][i] for i in f]) for f in word['frames']] + now = word['start'][:] + require(len(now)==660 and len(word['final'])==660, 'word arity') + require(all(dims[f]==0 for f in now[2*V:]), 'helper entry widths') + hist = Counter() + + def move(reg, frame): + old = now[reg] + if frame != old: + require(set(word['frames'][old]) <= set(word['frames'][frame]), 'nested source frames') + delta = dims[frame]-dims[old] + require(delta > 0, 'positive frame increment') + hist[delta] += 1 + now[reg] = frame + + copies = [] + for section in ('D','A','copy','B','C'): + if section=='copy': + copies = [dims[now[h]] for h in word['ret']] + hist.update(copies) + else: + for frame, dst, srcs in word[section]: + for reg in (dst,*srcs): + move(reg,frame) + for reg,frame in enumerate(word['final']): + move(reg,frame) + require(copies==[7]*9, 'COPY charge') + require(all(dims[f]==8 for f in now[2*V:]), 'helper exit widths') + return hist + + +def controls(slots, children, windows, word, signatures, pin): + names = [] + + def reject(name, action, reason): + try: + action() + except Rejected as e: + require(reason in str(e), 'wrong rejection: '+name+': '+str(e)) + names.append(name) + return + raise Rejected('negative control accepted: '+name) + + reject('source_byte_corruption', lambda: check_bytes(b'wrong',pin), 'source SHA256') + reject('missing_helper', lambda: audit(slots[1:],children,windows,438), 'missing helper') + reject('duplicate_helper', lambda: audit(slots+[slots[0]],children,windows,438), 'duplicate helper') + changed = [list(s) for s in slots] + changed[0][2] += 1 + reject('split_qperp_slice', lambda: audit(changed,children,windows,438), 'split q-perp') + changed = [list(s) for s in slots] + changed[0][4] = 8 + reject('stage_outside_window', lambda: audit(changed,children,windows,438), 'slot window') + target, parts = next(s for s in signatures if any(p.bit_count()==34 for p in s[1])) + rest = next(p for p in parts if p.bit_count()==34) + reject('omitted_rank34_remainder', lambda: factorization([p for p in parts if p!=rest],target), 'wrong pending') + reject('duplicate_rank34_remainder', lambda: factorization(list(parts)+[rest],target), 'overlapping factors') + # Equal-rank exterior substitution, with no local-chart or timing changes. + old_axis = min(axes(rest)) + new_axis = next(i for i in range(8,WIDTH) if not target>>i&1) + altered = rest ^ (1< b` therefore has projector `P(L_b)-P(L_a)`. Its chart +axes are `[1, 8+7b)` when `a=-1`, and `[8+7a, 8+7b)` otherwise. Endpoints are +half-open. Replaying the source recipe's pair levels produces this table: + +| Child | Pair | Levels | Pending axes | Eligible local stages | +| ---: | ---: | --- | --- | --- | +| 0 | 1 | -1 to 1 | [1,15) | 0,1 | +| 1 | 1 | 1 to 2 | [15,22) | 2 | +| 2 | 2 | -1 to 3 | [1,29) | 0,1,2,3 | +| 3 | 2 | 3 to 4 | [29,36) | 4 | +| 4 | 3 | -1 to 5 | [1,43) | 0,1,2,3,4,5 | +| 5 | 3 | 5 to 6 | [43,50) | 6 | +| 6 | 0 | 2 to 8 | [22,64) | 3,4,5,6,7,8 | +| 7 | 1 | 4 to 8 | [36,64) | 5,6,7,8 | +| 8 | 2 | 6 to 8 | [50,64) | 7,8 | +| 9 | 3 | 8 to 8 | empty | none | + +For each physical family, distinct rows of this table have disjoint supports. +Inside each row, the frozen slots partition a subset of its ordered axes; +the remainder is the exact complement. This proves orthogonality of every +pair of hosted supports and of each support with its remaining child factor. + +**No orthonormal completion has to be chosen for these slots.** Every selected +slot contains either all seven q-perp axes or none of them; the same is true +of every child and remainder. Thus its actual projector is either `K_q` plus +an exterior coordinate projector, or just an exterior coordinate projector. +Changing the orthonormal basis of q-perp cannot change any of these projectors. +This observation is specific to this width-eight frozen selection; arbitrary +mixed-width slots can split q-perp and need additional basis data. + +For a projector P the inherited exact bit address operator is + +``` +D(P) = [ I-P P ] + [ P I-P ]. +``` + +If P and Q are orthogonal projectors, block multiplication gives +`D(P)D(Q) = D(P+Q)`. Induction proves that each child's hosted factors and +its remainder equal its original operator on **arbitrary head and tail +vectors**, not just sampled inputs. For commuting coordinate projectors +with overlap the formula is instead `D(P)D(Q) = D(P+Q-2PQ)`: repeated axes +cancel. The separate dense rational tests cover all two-coordinate support +pairs and show that noncommuting projectors cannot use the coordinate-set +argument. These tests accompany, rather than replace, the algebra above. + +## Counterexample and production protection + +On pair 1, child 0 contains exterior axis 8, while child 7 contains axis 36. +Conjugate **only child 7's realization**, including all its hosted slices and +remainder, by the ambient permutation exchanging axes 8 and 36. Its rank +stays 28; every slot width, relative offset, source stage, helper identity, +within-child disjointness and remainder rank stays unchanged. Its support +now overlaps child 0 at axis 8 and omits axis 36. + +The products of this family's idle factors before and after the substitution +differ on exactly these two exterior axes. Applied to `(head=e_8, tail=0)`, +the original product gives `(0,e_8)` and the modified product gives `(e_8,0)`. +This is an exact address-operator witness, independent of the port q. It is +not a replay of the whole interleaved supplier on that particular input; +local calls and bridges also occur between idle deadlines. At an individual +deadline the modified child operator already differs from the source operator. + +The production `audit_hosted_k.py` compares the schedule with the source +parent and validates relative slots under each child; `global_k.py` and +the geometry contract assign the actual pending subspaces from those levels. +Neither accepts an arbitrary alternate chart field of the kind introduced +in this adversarial fixture. `adapt9p.py` changes the live-port and COPY-rank +accounting, and PR545's adapter substitutes the live labels; it does not +grant arbitrary pending axes. These pinned constraints protect the selected +construction. The counterexample explains why a replacement geometric +compiler must preserve this binding, even if its rank and timing receipts +are unchanged. + +## Independence, controls and limits + +The audit independently implements backwards window scanning, direct +intervening-touch checks, finite allocation, ambient masks, all-replica +family checks and exact frame-rank/profile recounting. It compares allocation +and windows against the source's `expand` and `windows` functions. Only these +named pure functions, the source `recipe`, and the literal idle-table +construction are extracted with Python AST; entire producer modules, solvers +and original acceptance checkers are never imported. The source recipe and +geometric level convention are declared inputs, not independent discoveries. + +Twelve semantic controls reject equal-rank overlapping and wrong-disjoint +charts, duplicate axes, missing/duplicate helpers, distinct-helper overlap, +illegal stages, negative offsets, wrong width, out-of-replica copy indices, +an intervening bridge with stale windows, and a nonempty zero-rank child. +Six additional tests cover the positive receipt, independent dense matrix +composition, the noncommuting boundary, a split-q-perp rejection, changed +source bytes and a changed committed receipt. Checks remain active under `-O`. + +This is a finite geometric certificate with a written projector argument. +It does not prove the inherited complete-call correlated-helper realization, +injective cover-class compilation, local scalar correctness/H1-H5, all-size +compiler, native lowered program, precision/tape, analytic transfer, or the +full multiplication theorem. No complete cold replay, Lean proof, new moment +endpoint, supplier adoption or selected-frontier change is claimed. + +Nearby work is retained: [PR1228](https://github.com/CrocSwap/integer-mult-bounds/pull/1228) +and [PR1231](https://github.com/CrocSwap/integer-mult-bounds/pull/1231) derive two +pending ranges for one historical PR442 R747 invocation; this audit covers the +current PR589 R439 allocation and every idle child. [PR1209](https://github.com/CrocSwap/integer-mult-bounds/pull/1209) +and Josie Elliston's retained T16 owner audit treat the complex supplier. +[PR878](https://github.com/CrocSwap/integer-mult-bounds/pull/878) formalizes bit +B boundaries, not this global geometric census. No priority is claimed for +projector algebra, strict borrowing windows or the historical range formulas. +Sagar Thakrar's [PR589 width-packing audit](../bit589-width-packing/README.md) +already recounts the slot capacities and remainders and proves a restricted +width-eight packing optimum. Those counts are consistency checks here; the +added evidence is the current all-child projector census and the exact +rank/window-preserving geometric counterexample. + +## Open next questions + +1. Can the all-call pending-projector statement be connected to a typed + physical realization of the actual PR589 emitted word? This would reduce + the remaining gap between finite placement and complete-call hosting. + Start by exporting these source-bound slot masks into the PR540/PR1231 + multi-host contract with the R439 word. The missing current-word extraction + and correlated-helper realization remain blockers; historical Lean data + cannot simply be renamed. +2. Which mixed-width selected or proposed bit allocations split q-perp? + The completion-free argument would then require explicit local projectors. + First run the `mask & 255 in {0,254}` gate on one pinned candidate's slices; + if it fails, obtain the actual source orthonormal complement before testing + orthogonality. No such mixed-width source is admitted or excluded here. + +## Credit + +DreamingOfClouds / eumemic supplied PR589/555/545/543 and the punctured word, +interleaved interface, parameter adapters and retained replica chain. Zhihao +Chen supplied the PR386 bit geometry; DaysSky supplied PR442 idle-axis +hosting; chafreaky and the earlier bank/replica contributors supplied its +retained extensions. Their source notices and disclosed AI assistance remain +intact. The PR1228/1231 auditors and Josie Elliston's independent complex +owner audit provide nearby precedents. Rohan Arun's PR1094 supplies selected +context; it is unchanged. New material is Apache-2.0. This is AI-assisted +research and local checking, not independent human peer review. diff --git a/research/r429-controller-accounting/native_remainders.py b/research/r429-controller-accounting/native_remainders.py new file mode 100644 index 0000000000..5141edc55a --- /dev/null +++ b/research/r429-controller-accounting/native_remainders.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +"""Bind the pruned invoice to the literal local word and every pending operator. + +The native operator implementation is the retained PR2653 checker, not an +independent implementation. The independent owner reconstruction is separate. +Ross Richardson with substantial OpenAI Codex assistance. Apache-2.0. +""" +from collections import Counter +import gzip +import importlib.util +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parent +spec = importlib.util.spec_from_file_location('portable_check', ROOT/'verify.py') +v = importlib.util.module_from_spec(spec) +exec(compile((ROOT/'verify.py').read_bytes(),str(ROOT/'verify.py'),'exec',dont_inherit=True,optimize=0),v.__dict__) +need = v.need + + +def local_profile(word, program, rank): + dims = [rank([word['lines'][j] for j in frame]) for frame in word['frames']] + masks = [sum(1 << j for j in frame) for frame in word['frames']] + deleted = set(program['deleted_public_families']) + need(deleted == set(range(471,480)), 'deleted local families') + need(program['start'] == [f for i,f in enumerate(word['start']) if i not in deleted], 'local start binding') + need(program['final'] == [f for i,f in enumerate(word['final']) if i not in deleted], 'local final binding') + state = program['start'][:] + [None] + copied = None + paid, count = Counter(), Counter() + for op,x,y,c,f,phase in program['records']: + count[op] += 1 + if op == 0: + need(state[x] == y and dims[c]-dims[y] == f > 0, 'literal local MOVE rank') + need(not masks[y] & ~masks[c], 'local MOVE nesting') + need(x != copied, 'live copied source moved') + state[x] = c + paid[f] += 1 + elif op == 1: + need(x != y and x != copied and state[x] == state[y] == f, 'local ADD frame or copied source') + elif op == 2: + need(copied is None and y == 651 and state[y] is None, 'local COPY lifecycle') + need(state[x] == c and not masks[f] & ~masks[c], 'local COPY frame') + need(dims[c]-dims[f] == phase == 1, 'local COPY rank') + state[y],copied = f,x + paid[phase] += 1 + else: + need(op == 3 and y == 651 and copied == x and state[x] == c and state[y] == f and phase == 0, + 'local ERASE original snapshot') + state[y],copied = None,None + need(copied is None and state[:-1] == program['final'], 'local final state') + need(count[2] == count[3] == 3 and count[1] == 13223, 'local event coverage') + need(paid == Counter({1:1298,2:1342,3:79,4:44,5:93,6:11,7:9}), 'local paid histogram') + return paid, count + + +def main(): + p = v.Portable(ROOT) + p.check_all(); p.install() + m = p.load('frozen/upstream/research/r438-rehost-projectors/verify.py') + m.source_check() + base = ROOT/'frozen/upstream/research' + word = json.loads(gzip.decompress(p.authenticate(base/'bit-r438-transport-rehost/words/r438-t154.json.gz'))) + program = json.loads(gzip.decompress(p.authenticate(base/'bit-r438-source-code/WORD.json.gz'))) + local, counts = local_profile(word,program,m.rank) + _,children,windows = m.chronology() + layout = json.loads(p.authenticate(base/'bit-r438-transport-rehost/verify_rehost.receipt.json'))['placement']['selection'] + old,_ = m.expand(layout,children,windows,438) + new = [s[:5]+(s[5]-(9 if s[5]>257 else 0),) for s in old if not 249 <= s[5] <= 257] + audit,signatures,complements = m.audit(new,children,windows,429) + columns = m.operator_check(word['lines'],signatures) + rejected=[] + def reject(name, action, marker): + try: action() + except ValueError as e: + need(marker in str(e),'wrong control rejection: '+str(e)); rejected.append(name) + else: raise ValueError('control accepted: '+name) + reject('missing_retained_helper',lambda:m.audit(new[1:],children,windows,429),'missing helper') + reject('duplicate_retained_helper',lambda:m.audit(new+[new[0]],children,windows,429),'duplicate helper') + target,parts=next(s for s in signatures if any(x and x & ~255 for x in s[1])) + victim=next(x for x in parts if x & ~255) + bit=(victim & ~255) & -(victim & ~255) + bad=tuple(x^bit if x==victim else x for x in parts) + reject('missing_pending_axis',lambda:m.factorization(bad,target),'wrong pending operator') + outside=next(i for i in range(8,64) if not target>>i&1) + wrong=tuple((x^bit^(1<