diff --git a/blockchain/.gitignore b/blockchain/.gitignore
new file mode 100644
index 00000000..5ff6309b
--- /dev/null
+++ b/blockchain/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/blockchain/pom.xml b/blockchain/pom.xml
new file mode 100644
index 00000000..bbcf2069
--- /dev/null
+++ b/blockchain/pom.xml
@@ -0,0 +1,136 @@
+
+B dup Bx. cr
- *
- * =: cell2
- * cell2 ."cell 2: " B dup Bx. cr
- *
- * =: cell3
- * cell3 ."cell 3: " B dup Bx. cr
- *
- * =: cell4
- * cell4 ."cell 4: " B dup Bx. cr
- *
- * =: cell5
- * cell5 ."cell 5: " B dup Bx. cr
- */
- @Test
- public void testCellBackAndForth4() {
- String cellExpected = "x{40000001400000034_}\n" +
- " x{40000001400000036_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000036_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000036_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000036_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000034_}\n" +
- " x{40000001400000036_}\n";
- String bocHexExpected = "B5EE9C7241010501003F00041140000001400000034004030201021140000001400000034003020111400000014000000340030111400000014000000340040011400000014000000360785A1C4B";
- Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
-
- log.info("CellType {}", cell.getCellType());
- log.info(cell.print());
- log.info(Utils.bytesToHex(cell.toBoc(true)));
-
- assertThat(cell.print()).isEqualTo(cellExpected);
- assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
- }
-
- private static final String BOC_FIFT_HEX_LARGE2 = "b5ee9c7241023201000498000114ff00f4a413f4bcf2c80b010201200302000cf2308048f2f00201480e0402012008050201200706001db9c34f00a5f03802032028307f00580011bbbd182108325e4c380201200d090201200b0a003bb6e53da89a1f401a803a1a7ffe00203e00203a861a1e0026209a8608a810020120310c002bb2fe7c02840917c120c1fd039be864fe800c380c1c200017bb9a5ed44d0d430d0d3ff3080202cb120f0201ce1110005b3e105bc90c0c40b53d01347b5134350c3434ffcc201254452ebcbd087ec120841ca368e840b2333d00104c3c01a000513e105bc90c0c40bd01347b5134350c3434ffcc20125444eebcbd20840764eab600723d00104c3c01a002012023130201201c140201201915020120181601f73e105bc90c80fd01347c02b434c03e8034c7f4c7fd010c2012c97cbd2012d4e4ae7cbd2012d4e4ee7cbd20134920840ee6b2802814032ec6fcbd3e097e0554c1e8483e0454c2e0083d039be864f4c7cc248c083880a94b20083d039be865900720083d05a74c083232c7f274100720083d05b882a9013232c01400e0170038fa02cb1fcb1f17f400c9f00b82101a69387e02c8cb1ff4004130f00600793e105bc90c0c40b53d01347b5134350c3434ffcc201254c52ebcbd08b434ffcc201200aebcbd3c028c54943c02e0843218aeaf40b2333d00104c3c01a00201201b1a00e33e105bc90c0c40b4fff4c7fe803d01347c02887434ffcc20125446eebcbd08e0080a60c1fc014c6011c07cbc94ca3c020a7232ffd50825a0083d10c1291508e43c0240bc02e0840d2212a4497232ffd49032c7d4883d00095110d4a17c01e0841c04df21c0f232ffc4b2c7fd00104c3c01a000ed3e105bc90c0c40b4fff4c7fe803d01347c0288e0080a60c1fc016011c07cbd2011d4c6eebcbd14cc3c0214d2bc020af232ffd5082e20083d10c06951543c0241291509243c025004fc02e084260abfffc97232ffd49032c7d4883d00095110d4a17c01e0840c19b443c0f232ffc4b2c7fd00104c3c01a0020120201d0201201f1e001f3214017e8084fd003d003333327b552000193b51343e803d013d0135350c200201202221003b20128870403cbc8830802672007e8080a0c1fd10e5cc0060c1fd16cc38a0001d0060c1fd039be864fe800c380c1c200201202b2402012028250201202726003d1c20043232c141bc0105b3c594013e808532dab2c7c4b2cff3c4f25c7ec020003d1c20043232c1417c010573c5893e808532da84b2c7f2cff3c4f260103ec0200201202a290023104cfd039be8482540b5c04c00780c5c0ca0001d1c081cb232c072c032c1f2fff274200201202d2c00215fa4001fa46804602c00012f2f4d3ff3080201202f2e001134c1c06a80b5c6006001ed20120871c03cbc807434c0c05c6c2497c0f83c00cc4074c7dc208061a808f00023858cc074c7e01200a0841b5a5b9d2e84bcbd2082c63cd865d6f4cffe801400f880fe0048840d10015bc13e186084100d28f014842ea4cc3c033820842296cbb9d4842ea4cc3c03782082c63cd854842ea4cc3c03f8203000588210982535785210ba9330f00ee08210b766741a5210ba9330f011e0821025d53dfdba92f010e0308048f2f00011b323bc02840d17c12004896818";
- private static final String BOC_FIFT_BASE64_LARGE = "te6ccgECMgEABJgAART/APSkE/S88sgLAQIBIAIDAgFIBAUADPIwgEjy8AICywYHAgEgKCkCASAICQIBziYnAgEgCgsCASAXGAIBIAwNAgEgERICASAODwAhX6QAH6RoBGAsAAEvL00/8wgB7SASCHHAPLyAdDTAwFxsJJfA+DwAzEB0x9wggGGoCPAAI4WMwHTH4BIAoIQbWludLoS8vSCCxjzYZdb0z/6AFAD4gP4ASIQNEAFbwT4YYIQQDSjwFIQupMw8AzgghCKWy7nUhC6kzDwDeCCCxjzYVIQupMw8A/ggEAARNMHAaoC1xgBgAFiCEJglNXhSELqTMPAO4IIQt2Z0GlIQupMw8BHgghAl1T39upLwEOAwgEjy8AIBIBMUAgEgFRYAHRwIHLIywHLAMsHy//J0IAAjEEz9A5voSCVAtcBMAHgMXAygAD0cIAQyMsFBfAEFc8WJPoCFMtqEssfyz/PE8mAQPsAgAD0cIAQyMsFBvAEFs8WUAT6AhTLassfEss/zxPJcfsAgAgEgGRoCASAfIAIBIBscAgEgHR4AHQBgwf0Dm+hk/oAMOAwcIAA7IBKIcEA8vIgwgCZyAH6AgKDB/RDlzABgwf0WzDigABk7UTQ+gD0BPQE1NQwgAB8yFAF+gIT9AD0AMzMye1UgAgEgISICASAjJADtPhBbyQwMQLT/9Mf+gD0BNHwCiOAICmDB/AFgEcB8vSAR1MbuvL0UzDwCFNK8AgryMv/VCC4gCD0QwGlRVDwCQSkVCSQ8AlAE/ALghCYKv//JcjL/1JAyx9SIPQAJURDUoXwB4IQMGbRDwPIy/8Syx/0AEEw8AaAA4z4QW8kMDEC0//TH/oA9ATR8Aoh0NP/MIBJURu68vQjgCApgwfwBTGARwHy8lMo8AgpyMv/VCCWgCD0QwSkVCOQ8AkC8AuCEDSISpElyMv/UkDLH1Ig9AAlRENShfAHghBwE3yHA8jL/xLLH/QAQTDwBoAB5PhBbyQwMQLU9ATR7UTQ1DDQ0/8wgElTFLry9CLQ0/8wgEgCuvL08AoxUlDwC4IQyGK6vQLIzPQAQTDwBoAH3PhBbyQyA/QE0fAK0NMA+gDTH9Mf9AQwgEsl8vSAS1OSufL0gEtTk7ny9IBNJIIQO5rKAKBQDLsb8vT4JfgVUwehIPgRUwuAIPQOb6GT0x8wkjAg4gKlLIAg9A5voZZAHIAg9BadMCDIyx/J0EAcgCD0FuIKpATIywBQA4CUAOPoCyx/LHxf0AMnwC4IQGmk4fgLIyx/0AEEw8AYAUT4QW8kMDEC9ATR7UTQ1DDQ0/8wgElRE7ry9IIQHZOq2AHI9ABBMPAGgAFs+EFvJDAxAtT0BNHtRNDUMNDT/zCASVEUuvL0IfsEghByjaOhAsjM9ABBMPAGgAgEgKisCASAwMQAXu5pe1E0NQw0NP/MIAgEgLC0CASAuLwA7tuU9qJofQBqAOhp//gAgPgAgOoYaHgAmIJqGCKgQABGzI7wChA0XwSAAK7L+fAKECRfBIMH9A5voZP6ADDgMHCAAEbu9GCEIMl5MOAAducNPAKXwOAIDICgwfwBY";
- private static final String BOC_FIFT_LARGE_HASH = "2f013a05f1522b9288e0412c524186f089ea30e87afc9a51395eed0019f2cf8f";
-
- private static final String BOC_FIFT_HEX_WITH_DUPS = "b5ee9c720101180100e800020310c201020163a90da09563b6740a4b7f68ca09fbdb76b0035cc101450a16e2e79b985ebbb38a0c5768616c657320546f6b656e0357484c40030119a1dcd65000000003200000032604003e1e68747470733a2f2f746f6e7768616c65732e636f6d2f636f6e74656e742f0203ccc0050602012007080201481415020120090a0201200f10000ba38000002cc00201200b0c0009b6000000c30201480d0e00094000000638000950000005f8000ba6000000304002012011170201581213000940000005c8000950000005e8000ba18000002ec002012016170009b4000000b70009d8000002d4";
- private static final String BOC_FIFT_BASE64_WITH_DUPS = "te6ccgEBGAEA6AACAxDCAQIBY6kNoJVjtnQKS39oygn723awA1zBAUUKFuLnm5heu7OKDFdoYWxlcyBUb2tlbgNXSExAAwEZodzWUAAAAAMgAAADJgQAPh5odHRwczovL3RvbndoYWxlcy5jb20vY29udGVudC8CA8zABQYCASAHCAIBSBQVAgEgCQoCASAPEAALo4AAACzAAgEgCwwACbYAAADDAgFIDQ4ACUAAAAY4AAlQAAAF+AALpgAAADBAAgEgERcCAVgSEwAJQAAABcgACVAAAAXoAAuhgAAALsACASAWFwAJtAAAALcACdgAAALU";
- private static final String BOC_FIFT_WITH_DUPS_HASH = "5049e60708f6f8aefb51009361aa6ad6fc6a14becd8d8bef37d10cf2e8ea281d";
-
- private static final String BOC_FIFT_HEX_DEEP_DUPLICATED_HASHMAP = "b5ee9c7241010901006a000101c0010202cb02030201200404020162060702012005050201200606020120080800434801f9c856c1260ecc28bf6928191e2b79c9a64d19c787ccb9d113c6d609690b7f0900432007e7215b04983b30a2fda4a06478ade7269934671e1f32e7444f1b5825a42dfc2404807a00";
- private static final String BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH = "69e794b89cef40a0ee3ab947cf8ea70736101d9c86ae4168406fc72964d1a9e6";
-
- @Test
- public void testShouldDeserializeSerializeDeserializeBocFromHex() {
- Cell c1 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_LARGE2).endCell();
- log.info("CellType c1 {}", c1.getCellType());
- log.info("Hex c1 {}", Utils.bytesToHex(c1.toBoc(true, true)));
- assertThat(Utils.bytesToHex(c1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
- assertThat(Utils.bytesToHex(c1.getHash())).isEqualTo(BOC_FIFT_LARGE_HASH);
-
- Cell c2 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_WITH_DUPS).endCell();
- log.info("CellType c2 {}", c2.getCellType());
- log.info("Hex c2 {}", Utils.bytesToHex(c2.toBoc(true, true)));
- assertThat(Utils.bytesToHex(c2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
- assertThat(Utils.bytesToHex(c2.getHash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
-
- Cell c3 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_DEEP_DUPLICATED_HASHMAP).endCell();
- log.info("CellType c3 {}", c3.getCellType());
- log.info("Hex c3 {}", Utils.bytesToHex(c3.toBoc(true, true)));
- assertThat(Utils.bytesToHex(c3.hash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
- assertThat(Utils.bytesToHex(c3.getHash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
-
- String hex1 = c1.toHex();
- String hex2 = c2.toHex();
- String hex3 = c3.toHex();
-
- log.info("hex1 {}", hex1);
- log.info("hex2 {}", hex2);
- log.info("hex3 {}", hex3);
-
- Cell result1 = CellBuilder.beginCell().fromBoc(hex1).endCell();
- Cell result2 = CellBuilder.beginCell().fromBoc(hex2).endCell();
- Cell result3 = CellBuilder.beginCell().fromBoc(hex3).endCell();
-
- assertThat(Utils.bytesToHex(result1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
- assertThat(Utils.bytesToHex(result2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
- assertThat(Utils.bytesToHex(result3.hash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
- }
-
- @Test
- public void testShouldDeserializeSerializeDeserializeBocFromBase64() {
- Cell c1 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(BOC_FIFT_BASE64_LARGE)).endCell();
- assertThat(Utils.bytesToHex(c1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
- assertThat(Utils.bytesToHex(c1.getHash())).isEqualTo(BOC_FIFT_LARGE_HASH);
-
- Cell c2 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(BOC_FIFT_BASE64_WITH_DUPS)).endCell();
- assertThat(Utils.bytesToHex(c2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
- assertThat(Utils.bytesToHex(c2.getHash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
-
- String base64c1 = c1.toBase64();
- String base64c2 = c2.toBase64(true);
-
- Cell c3 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(base64c1)).endCell();
- Cell c4 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(base64c2)).endCell();
-
- assertThat(Utils.bytesToHex(c3.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
- assertThat(Utils.bytesToHex(c4.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
- }
-
- @Test
- public void testShouldDeserializeSerializeDeserializeBocWithExoticCells() {
- log.info("hex {}", Utils.base64ToHexString("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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"));
- Cell c = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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")).endCell();
- log.info("type {}", Utils.bytesToHex(c.getHash()));
-
- }
-
- @Test
- public void testShouldDeserialize2() {
- Cell cell = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes("te6cckEBAQEAIgAAQI4l3QgXTJzTGSGBoCKurXZZrCqdShK4T1Fg7dLsxwbqJRoppg==")).endCell();
- log.info("CellType {}", cell.getCellType());
-
- }
-
- @Test
- public void testShouldDeserializeAccountState() {
- Cell c = CellBuilder.beginCell().fromBoc("b5ee9c724101030100d700026fc00c419e2b8a3b6cd81acd3967dbbaf4442e1870e99eaf32278b7814a6ccaac5f802068148c314b1854000006735d812370d00764ce8d340010200deff0020dd2082014c97ba218201339cbab19f71b0ed44d0d31fd31f31d70bffe304e0a4f2608308d71820d31fd31fd31ff82313bbf263ed44d0d31fd31fd3ffd15132baf2a15144baf2a204f901541055f910f2a3f8009320d74a96d307d402fb00e8d101a4c8cb1fcb1fcbffc9ed5400500000000229a9a317d78e2ef9e6572eeaa3f206ae5c3dd4d00ddd2ffa771196dc0ab985fa84daf451c340d7fa").endCell();
- log.info("CellType {}", c.getCellType());
- log.info(c.toString());
- log.info("length {}", c.getBitLength());
- }
-
- @Test
- public void testShouldDeserializeInMsgDescr() {
- Cell c = CellBuilder.beginCell().fromBoc("b5ee9c724102300100078d0001099b2dcef0200102090d96e77810120202090d96e778100a030246bfa9346e9464c7f146a6be4225b1c98e29a59561fbb67319922eda6acc69f6b9130030040501064606000903af7000000000000000000000000000000000000000000000000000000000000000000000000000f42439440e0c397a3b2ee3cbd81ea78021862f892a5a9e779d1fecd55236d6571eb5200000000000f424165a57c5f0001408082f06020f0409017d784018110729009a27c89c40000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101a00900ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8484cb4af8be4002094365b9de04260b0251bf084dd4db5a349ccfcf293baf5f5b626f4a130856b6613ded62877bfecc2536dcd96e7780cd96e77a110c03af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f4247d59d160ea9c63d10edae2c76ada993f982915bc75f7bcc0fb81280820d15523200000000000f424165a57c5f0001408100f0d020f0c0901c9c38018110e29009c402468bb8000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa816617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee26720101a019010c46060365b9de19020300101c130246bf919848778310ed687087000647581469374dff5e9f0fb1cf744809c5016e12fb00301a1403b57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef00000000000f42450000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0003e665b9448171615001f040901efe92001c0332dca2365b9de4000827290aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da490aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da40201e01b180101df1900b959ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf3fc13d931abeffcf744362e99c1de42b259c35503cdea5122c0cdeea9a96a4ab2b101c9c380006cb73bc00000000001e848ccb4af8be7fffffffc001064606001b00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8488cb4af8be400246bfad8011dbd0ddd5549e65b1288c858e77dc3e0a5ba9eae0d756ca2e8b5731753e0030211d03af7000000000000000000000000000000000000000000000000000000000000000000000000000f42410000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0001408201f1e0113040829a40cd41efffe02230082725828aa96d32f676df2049228847cc42b15b0a52d9ffa3bc66b36fcedeff20af9310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f0101a02201064606002201a369fe00000000000000000000000000000000000000000000000000000000000000013fc000000000000000000000000000000000000000000000000000000000000000020000000000001e8480cb4af8be402302012025240015bfffffffbcbd1a94a200100015be000003bcb3670dc155500245bf2ac017c203ca0d9d008bf543c1364eebf27183668cf1e8b1e0e98af56b2dc1dc00c22d2703af7333333333333333333333333333333333333333333333333333333333333333300000000000f4242cac3c5723cb68f5f7dba257e7f812140298ea360bdbf630cd33c8da2b098829200000000000f424165a57c5f00014082c2b28020f04091954fc4018112a29005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04009e41778c0a604000000000000000003e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082729304b9982993165dc7b4b2ccfc64c61bf6455afe7e4fe1233d5f827261360d8ed855aea1ede2adcff55d3d37fcf59c03bd19c39f843a14faef85cad3980cf6920101a02e01064606002e00ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd1954fc4000000000000001e8480cb4af8be40008272310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f606c97d0dc8b63016a6afd67b2fe52cd0e02a3dcdf71f331cf1e8006ca8e51a323766587").endCell();
- log.info(c.print());
- log.info(c.toString());
- log.info("length {}", c.getBitLength());
- }
-
- @Test
- public void testShouldDeserializeOutMsgDescr() {
- Cell c = CellBuilder.beginCell().fromBoc("b5ee9c72410241010008c7000109a06dac2c020102091036d61601030202091017d7840104060209101efe92013212020b4405f5e1004009050343bf084dd4db5a349ccfcf293baf5f5b626f4a130856b6613ded62877bfecc2536dc0a301b290203504007080343bf24d1ba51931fc51a9af90896c72638a6965587eed9cc6648bb69ab31a7dae44c0a0c330b0243bf17c9d39d78e8498a560800ddfb11dc48be1bc0edc2fbf90844eceb5ab4649610022614024bbf0847cbb01de39c3308edf1091131c7dedb780ca3e34d85bdc1a6ab4df16d79e9017d7840060a140106460600280201610c0d01064606003f03af7000000000000000000000000000000000000000000000000000000000000000000000000000f42439440e0c397a3b2ee3cbd81ea78021862f892a5a9e779d1fecd55236d6571eb5200000000000f424165a57c5f000140811100e020f0409017d784018110f2c009a27c89c4000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f606c97d0dc8b63016a6afd67b2fe52cd0e02a3dcdf71f331cf1e8006ca8e51a30101a03f020b6501efe920101913024bbec8a2b54087ea747ec1d5ecc652b91406aa6f4c2f479843ebd290b26ad8043eca03dfd2400c181403af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f424873b47eb527e2e6b9a73405d88f31477703ef31e5c4f2b8a2be754d66be0d60ff00000000000f424765a57c5f00074081716150205303024363500827216617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee2672d4d2e789fd57af824d33228887af40bcfb492aebe39ec74d665726b6471454ab010160210106460600230343beccc243bc18876b43843800323ac0a349ba6ffaf4f87d8e7ba2404e280b7097d81420331a020161201b03b57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef00000000000f42450000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0003e665b94481e1d1c001f040901efe92001c0332dca2365b9de4000827290aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da490aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da40201e03b1f0101df3101064606003b0201db24220101482300ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8496cb4af8be40020120272501012026008be7f827b26357dff9ee886c5d3383bc8564b386aa079bd4a245819bdd5352d495656240e8cae6e880eb79a200000000000f424a65a57c5f00012195b1b1bcb081ddbdc9b190860101202800ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8492cb4af8be40020766cb73bd302a03af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f4247d59d160ea9c63d10edae2c76ada993f982915bc75f7bcc0fb81280820d15523200000000000f424165a57c5f00014082f2e2b020f0c0901c9c38018112d2c005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04009c402468bb8000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa816617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee26720101a031010c46060365b9de3100b959ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf3fc13d931abeffcf744362e99c1de42b259c35503cdea5122c0cdeea9a96a4ab2b101c9c380006cb73bc00000000001e848ccb4af8be7fffffffc00244bfaeffebddf2ee4f04633ee2bbba628ae4e08b6e0043d11727286b0df248a2e17700403303af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f42410000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0007408383734020520302436350061c000000000000600000000000719ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a40d03c04009e42664e625a0000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272f1f67337526ee9890e137d5255f3150400e63d15dfe04b26653d275f2d0a6b04bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa8010160390201db3c3a0101483b00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8488cb4af8be400201203e3d010120400101203f00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8484cb4af8be40008be7f827b26357dff9ee886c5d3383bc8564b386aa079bd4a245819bdd5352d495656240e8cae6e880eb79a200000000000f424365a57c5f00012195b1b1bcb081ddbdc9b1908660bfedbd").endCell();
- log.info(c.print());
- log.info(c.toString());
- log.info("length {}", c.getBitLength());
- }
-
- @Test
- public void testShouldDeserializeInsane() {
- Cell c = CellBuilder.beginCell().fromBoc("b5ee9c72e20201380001000028250000002400cc00ea01c402a603420374039603a503be03d8044804b8050405ac05ec065606a2076e078e0824084208600880089e08bc08da08f80916093009d80a180b0a0b7a0bc70bea0c0e0cba0cda0cfa0d1a0d380d560d740d900dac0dc80e6e0ef20f160f360f820fce0fee100e102e104c106c108c10ac10cc10ec1196121e12841306132413421360137c142014a014ae14bc14ca14d814e614f415021510151e152c153a1548155615a215b015be15cc15da15e815f6160416ba16c816d616e416f21700170e171c172a1738178417a817cc181918c418e419041951199d19bc19da1a271a731a901aae1afb1b471b621b7e1bcb1c171c321cd81d251da81df51e471e921eb21eff1f4b1f6a1f8a1fd71ff620142061208020cd20ec210c2159217821c52211223022da232723ae23fb246024ad24f9257a25c725e42631264e269b26b827052751276c2810285d28dc2929297529c12a0d2ad82b252b442b522b9f2bbc2c092c262c732c922cdf2cfc2d492d662db32dd02e1d2e3a2e872ea42ec22f702fbd3009309e30ac30ba31073114316131ad31ba31c832153222326f327c32c9331533223330337d33c933d633e4343134e634f435aa35b8366c3720372e377b378837d537e237f037fe384b385838a538b238ff390c3959396639b339c03a0d3a1a3a673a743ac13b383bec3c393c463c543ca13cae3cfb3d473d543da13dae3dbc3e093e163ecd3f823fcf3fda3fe0402e405640aa40b740fa410441e84200420e421d422c423c42e043884430443c444844ce458e4614462646ca478b4794481a483648e74988499449a04a264ae64b6c4b7e4c3e4cc44cd64d7b4de94ea84eaf4f354f464fea504b041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600071a8a03482793f3b50aaf5c1948a7daea6509532374f902fe6abeff45f620cb8c99cb00130443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e000b000c1489b85d301a5e194c97f1c275d3ead4bd74c6e4f42bc74ff8ef930e594b8dd9887900084a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c00109010a010b010c009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd400800080008001d43b9aca00250775d8011954fc400080201200009000a0015be000003bcb355ab466ad00015bfffffffbcbd0efda563d0245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000d000e000f0010245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001d001e001f0020284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a00013213eaca33f4cbadbd5448172264067fbb377adbe16d7c4681fb55312783f206756a318a5c723a464c78c863a17c0802276f4114c4c8edf27dd9eb88622de8445b07016d00118207cb3d36dad8873eb00023008422330000000000000000ffffffffffffffff81f2cf4db6b621cfa828008400222455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e001100ac001200ae28480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be001300142213c3c0000695d4a559e12000b100153201c47dca7c0afc1021a7f8ac40f39fac4e3a34441c180afd0667ef533f08c042258d60f2282e7cde376f0df9fd5ebcc5d8bb19faf6cc57bbbb662485cd76bdce510010000c20004800492211480000d2ba94ab3c2400b30016221162000034aea52acf0900b500172213c480000d2ba94ab3c24000b700182211400000d2ba94ab3c2400b9001922110000034aea52acf09000bb001a22110000034aea52acf09000bd001b2212cc00001a575295678400bf001c2211400000d2ba94ab3c2400c300c4011100000000000000005000213213b82c6f6878b537db3c16dcd5f01397865949762fc38f51cb6aff56594f1062f1edf7f2f7d1549f1d22aab06d9a81c9d49510c3fa6d09dba89fcddb0b8576e4aa016d00118207cb3d37031435feb00068008422330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828008400223455ee67dd6327a64269ce346e9b1568ef56241f1ba5179cb6d2ac85c5c18646ae12717905e49ef1945ed5b3e03bab93b347378306bc631945e0355ad7507cbada29001b0010cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e010e00ac00ad00ae006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc028480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000423130103e59e9b6d6c439f580024006a00842313010217dee532a6595718002500260084331392afc8f7cde2b08b147ca948f16cc575bbbd4d383188441e172a5cbc617e05249b737c913fe069b3ce1ce7d550cb95f27f4d428faee54cd295c65c5b9ad7e3ae0027000e01014dad03493b489b5800310032008422130100ca31e1e96b10bbc80027006e2213010058b525488168d908006f0028221301003e470bb61928028800290072221100e1caf7c460aa04680073002a221100e1c6b40db0b41708002b0076221100e11e73378043a2080077002c220f00c021469bdc5408002d007a2210680c021412935422007b002e220f00c021383dbc6da8002f007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea549538700302277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d0008000812313010069341ebbd1eac97800330034008422130100e478e48d695dd1e8008500352848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe001922130100cae245aca13c29a8003600882213010094b93dc1fd640ba800370038221301007e0f065474a37188008b0039221100f6aa376d88c09a280042009f221301007e00c5c8df3ca988008d003a221301007e00c226bc22c348003b0090221301007dfeec4e6f29f348003c0092221301007dfeec4db9634c680093003d221350401f7fbb08ed8733f2003e009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385003f227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0009800402355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b00412179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20009d221100f6a49bd9e38f3928004300a1221100ea59d8cb334c9c08004400a3221100ea59cff28ceadfc800a40045220f00c108ba716ce988004600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00047236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f000a900aa00ab220120004a00e2220120005e00c8220120004b00e4220120004c004d220120004e00e822012000f90056220120004f00ea220120005000ec220120005100ee220120005200f0220120005300f2220120005400f4220120005500f628480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec330001220120005700fc220120005800fe22012000ff00592201200101005a220120005b0104220120005c0106220120005d010800b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a0220120005f00ca22012000cb0060220120006100ce220120006200d0220120006300d222012000d30064220120006500d622012000d70066220120006700da284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a000323130103e59e9b818a1aff580069006a00842313010217dee546c430b718006b006c0084284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b33134d60714c9ba1d20d9c30bf39735d0ad7bfca9eb3ced50edfdae92a4c3339ef4d25e774489adf29b089b2e31b7a68d28886f450600fefbb6f581b3a94423ffc070027000e01014dad035d591ffb5800820083008422130100ca31e1e96b10bbc8006d006e2213010058b525488168d908006f007028480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e00262848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800710072221100e1caf7c460aa04680073007428480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b4170800750076221100e11e73378043a20800770078284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc54080079007a2210680c021412935422007b007c284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f2001128480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da8007d007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807007f284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d0008000812848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c94623464684000ac28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e80085008628480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef0001284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245c0bf1389a8008700882213010094b93dd61b3b6ba80089008a28480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221301007e0f0668927ad188008b008c221100f6aa376d88c09a28009e009f284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5dcfd140988008d008e2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c23ad9fa2348008f0090221301007dfeec628d0153480091009228480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221301007dfeec61d73aac6800930094284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb0df4fd0bf20095009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d80500972848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d000980099284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b009c28480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20009d28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a221100f6a49bd9e38f392800a000a128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100ea59d8cb334c9c0800a200a3284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f78580012221100ea59cff28ceadfc800a400a52848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800a600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c000a8284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f000a900aa00ab284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e8000328480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e5001022bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be00af00b028480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b600012213c3c0000695d4a92a712000b100b222012000c500c628480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba95254e2400b300b4284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea549538900b500b6284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba95254e24000b700b82848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba95254e2400b900ba28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea5495389000bb00bc28480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea5495389000bd00be284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a5752a4a9c400bf00c0284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd761000322110000034aea5495389000c100c222110000034aea52acf09000c300c400a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c9284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a00013201d970752cf49fb39f7ea882f429ef6a8a5ce3eaf9ff4d35bfba6d93ffc9e2a7368180f9da67bd40c08ccea6759238e3e79b631d22aa1dc395bbcec337be6d4e84000f000c2000e100e222012000c700c822012000c900ca284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e22012000cb00cc28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c22012000cd00ce22012000cf00d0284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b22012000d100d228480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f04000922012000d300d4284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af000828480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000d500d622012000d700d828480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b85000528480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012000d900da02012000db00dc284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000300b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012000dd00de00b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c002015800df00e000afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd22012000e300e4284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000e500e62848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c22012000e700e822012000f900fa22012000e900ea284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000922012000eb00ec284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000ed00ee284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000ef00f02848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000622012000f100f228480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f70000522012000f300f428480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b4079019904000222012000f500f6284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c42000302014800f700f82848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e00020073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819328480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000fb00fc22012000fd00fe2848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ff010028480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000728480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f7017650006220120010101022848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012001030104220120010501062848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d00022201200107010800b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa9000b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e202848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f000201038020010d00010211011366ea62c6b62574b18990480a15bd04daf2d4d5c8e3413a8f62b0ff533b259b00078201150317cca5687735940043b9aca004010e010f01100247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610011401210103d0400111003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca004010150011301db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0112001343b9aca0021dcd6500200201610114012101064606000125020340400116011702037604011801190297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c1013201340397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb00040011a011b011c0397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004001270128012901035040011d0103404001210082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f00014080133011e011f0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f02052030240120013700a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f00014080122012301240101a001250082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110126013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac00000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001035040012a01035040012d008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f00014080133012b012c008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db202052030340130013103af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f00014080133012e012f008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb02053030340130013100a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc03af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408013301340135000120008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f19902053030240136013700a041297004c4b40000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04a5134191").endCell();
-
- String bocHexWithCrcAndIndex = c.toHex(true,true);
-
- log.info("hex {}", bocHexWithCrcAndIndex);
- assertThat(bocHexWithCrcAndIndex).isEqualTo("b5ee9c72c20201380001000025e3000000120066007500c0010f015d0176018701bf01f701fd020002050219022002460256027602ab02b802c802e8031d0347034f03550377037c0389039603a803ce03f4045a048004b804ca05300538058a05fc06030615063b064b065206640674067b06cf0723078307c607d207e407f4081a082908300837084908590868086f0876087c088208c508cb08d10914091d092f093f094f0975099b09aa09b109d709de0a040a2a0a3a0a4a0a590a600a670ac70b270b870bd90bff0c250c4b0c5b0c810c910cb70cc70cce0cf40cfb0d210d310d410d510d580d5f0da20dab0dee0df70e3a0e430e530e790e880eae0ed40ee30eea0ef10f170f1e0f2e0f3d0f4c0f530f5a0f610fb31005103c104c105b1081109010b610c510cc10f21118111f1126114c115c116b117a118911901197119e11c411d411e312091218123e12641273127a12a012a712cd12d412fa130a131913281337133e1345134c13721382139113b713dd13eb141114201427144d1454147a148114a714b714c614d414e314ea14f114f81508152e153d15631571159715bd15cc15d315f9161f1626164c1653166316721680168f1696169d16a416b416da1700170e173417421749176f1795179c17a317c917d917e717f51804185b186218691870189618a618f8191e19711997199e19c419cb19f11a171a1e1a2e1a801ad31ada1ae11ae81b3d1b631ba31be51bec1c121c191c741c9a1cc01d151d551d971d9e1da51dac1df01e161e3c1e621e881eb11ed71efd1f581f7e1fc21fc92024207f208620ac20df2112214e21a82203220a22302256229722d82332238c23b223d823df243f24422468248e24b424b924fc250a256225b325e3041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600070a8a0443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e0008000904894a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c0000a000b000c000d009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd4008000e000e001d43b9aca00250775d8011954fc40008245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000f001000110012245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001300140015001601038020001700010201018200180317cca5687735940043b9aca0040019001a001b020120001c001d284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a000122138207cb3d36dad8873eb0001e012b22330000000000000000ffffffffffffffff81f2cf4db6b621cfa828012b001f2455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e00200131002100220111000000000000000050002322138207cb3d37031435feb00024012b22330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828012b001f2455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e00190131002500220247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610012c012d02034040002600270103d0400028003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca00401015000290015be000003bcb355ab466ad00015bfffffffbcbd0efda563d023130103e59e9b6d6c439f58002a002b012b28480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000428480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be002c002d28480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b60001006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc023130103e59e9b818a1aff58002e002b012b22bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be002f003002037604003100320297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c10033003401db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0035020161012c012d2313010217dee532a659571800360037012b284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b2213c3c0000695d4a559e12000380039220120003a003b2313010217dee546c430b718003c003d012b2213c3c0000695d4a92a71200038003e220120003f00400397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb000400041004200430397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004000440045004603af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408012e00340047008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f199001343b9aca0021dcd650020231301014dad03493b489b5800480049012b22130100ca31e1e96b10bbc8004a004b28480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba94ab3c24004c004d220120004e004f22012000500051231301014dad035d591ffb5800520053012b22130100ca31e1e96b10bbc80054004b2211480000d2ba95254e24004c00552201200056004f2201200057005101035040005801034040012d0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23701035040005901035040005a008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb0205303024005b01372313010069341ebbd1eac978005c005d012b22130100e478e48d695dd1e8005e005f2213010058b525488168d9080060006128480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e0026284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea52acf090062006322012000640065284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000660067284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e8005e00682213010058b525488168d90800600069221162000034aea54953890062006a220120006b0065220120006c006703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f0001408012e006d006e03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f0001408012e006f007003af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f0001408012e0071007200a041297004c4b40000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe0019284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245aca13c29a8007300742848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800750076284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba94ab3c240007700782201200079007a2848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c220120007b007c28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c22130100cae245c0bf1389a8007d0074221301003e470bb619280288007e00762213c480000d2ba95254e2400077007f22012000800081220120007b00820082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f020520302400830137008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db2020520303400840085008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb0205303034008400852213010094b93dc1fd640ba80086008728480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221100e1caf7c460aa04680088008928480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba94ab3c24008a008b220120008c008d220120008e008f2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c220120009000912213010094b93dd61b3b6ba800920093221100e1caf7c460aa0468008800942211400000d2ba95254e24008a00952201200096008d220120008e00972201200098009100a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc221301007e0f065474a371880099009a221100f6aa376d88c09a28009b009c2848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b41708009d009e28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea52acf090009f00a022012000a100a2284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000928480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000a300a422012000a500a6284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b221301007e0f0668927ad188009900a7221100f6aa376d88c09a2800a8009c221100e1c6b40db0b4170800a9009e22110000034aea54953890009f00aa22012000ab00a222012000ac00a422012000ad00a6284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5c8df3ca98800ae00af221100f6a49bd9e38f392800b000b128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100e11e73378043a20800b200b3284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea52acf09000b400b522012000b600b7284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000b800b92848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ba00bb28480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f040009221301007e00c5dcfd14098800ae00bc221100f6a49bd9e38f392800bd00b1221100e11e73378043a20800b200be22110000034aea5495389000b400bf22012000c000b722012000c100b922012000c200bb2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c226bc22c34800c300c4221100ea59d8cb334c9c0800c500c6284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f7858001228480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc540800c700c8284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a575295678400c900ca22012000cb00cc284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000cd00ce28480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000722012000cf00d0284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af0008221301007e00c23ad9fa234800d100c4221100ea59d8cb334c9c0800d200c6220f00c021469bdc540800d300c82212cc00001a5752a4a9c400c900d422012000d500cc22012000cd00d622012000cf00d7221301007dfeec4e6f29f34800d800d928480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221100ea59cff28ceadfc800da00db2848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b2210680c02141293542200dc00dd284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f20011284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd76100032211400000d2ba94ab3c24012f013022012000de00df2848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000628480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f701765000622012000e000e128480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000e200e3221301007dfeec628d01534800e400d9221100ea59cff28ceadfc800da00e52210680c02141293542200dc00e622110000034aea5495389000e700e822012000e900df22012000e000ea22012000eb00e3221301007dfeec4db9634c6800ec00ed284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800ee00ef28480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da800f000f122012000f200f328480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f7000052848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012000f400f522012000f600f728480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b850005221301007dfeec61d73aac6800ec00f8220f00c108ba716ce98800f900ef220f00c021383dbc6da800fa00f122110000034aea52acf090012f013000a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c922012000fb00f322012000fc00f522012000f600fd2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb08ed8733f200fe00ff219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00100284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea54953870101284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2201200102010328480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b40790199040002220120010401052848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d000228480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012001060107221350401f7fbb0df4fd0bf2010800ff219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c00109219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807010a220120010b0103220120010c0105220120010d010721a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385010e2848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f0010f011001112277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d00112011322012001140115284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c4200032201200116011700b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa90284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a0003284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000321a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d8050118236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f0010f011001112277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d00112011322012001190115220120011a0117020120011b011c227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0011d011e284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e800032848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c946234646840013128480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec3300012848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e000200b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a02848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f0002227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d0011d011f0201480120012100b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e2000b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012001220123284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b0124012501262355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b0124012501270073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819300b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c00201580128012928480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20012a2179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20012a00afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a28480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef00010106460600013503af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f0001408013201330134000120284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a000128480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e500100101a001350082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110136013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e046120c1e7");
-
- String hash = Utils.bytesToHex(c.getHash());
- log.info("hash {}", hash);
- assertThat(hash).isEqualTo("bf76eed0ac2f54e30c93c36e587a6dacd4526f45dcbf01a476c149f1991cb78a"); // works
- }
+ /** issue 70 */
+ @Test
+ public void testBocDeserializationIssue70() {
+ String base64boc =
+ "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";
+
+ byte[] rawBoc1 = Utils.base64ToSignedBytes(base64boc);
+ log.info("rawBoc {}, length {}", rawBoc1, rawBoc1.length);
+ log.info("hex1: {}", Hex.encodeHexString(rawBoc1));
+
+ // FileUtils.writeByteArrayToFile(new File("sample.boc"), rawBoc);
+
+ // deserialize
+ Cell c1 = CellBuilder.beginCell().fromBoc(rawBoc1).endCell();
+
+ log.info("CellType {}", c1.getCellType());
+ log.info(c1.print());
+
+ byte[] rawBoc2 = c1.toBoc(false);
+ log.info("rawBoc2 {}, length {}", rawBoc2, rawBoc2.length);
+ log.info("hex2: {}", Hex.encodeHexString(rawBoc2));
+ log.info(Utils.bytesToBase64(rawBoc2));
+
+ // serialize
+ Cell c2 = CellBuilder.beginCell().fromBoc(rawBoc2).endCell();
+ log.info(c2.print());
+ log.info("exotic? {}", c2.isExotic());
+ // assertThat(Hex.encodeHexString(rawBoc1)).isEqualTo(Hex.encodeHexString(rawBoc2)); //
+ // TODO
+ assertThat(c1.print()).isEqualTo(c2.print());
+ }
+
+ @Test
+ public void testBocDeserializationAllConfig() throws IOException {
+ String newBlockOutput =
+ IOUtils.toString(
+ Objects.requireNonNull(getClass().getResourceAsStream("/allconfig-boc-as-hex.txt")),
+ StandardCharsets.UTF_8);
+ String cellOutput =
+ IOUtils.toString(
+ Objects.requireNonNull(getClass().getResourceAsStream("/allconfig-cell-print.txt")),
+ StandardCharsets.UTF_8);
+ Cell cell = CellBuilder.beginCell().fromBoc(newBlockOutput).endCell();
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+
+ String actual = StringUtils.trim(cell.print());
+
+ assertThat(actual).isEqualTo(cellOutput);
+ }
+
+ @Test
+ public void testBocIssue74() {
+ Cell cell =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c72e20201380001000028250000002400cc00ea01c402a603420374039603a503be03d8044804b8050405ac05ec065606a2076e078e0824084208600880089e08bc08da08f80916093009d80a180b0a0b7a0bc70bea0c0e0cba0cda0cfa0d1a0d380d560d740d900dac0dc80e6e0ef20f160f360f820fce0fee100e102e104c106c108c10ac10cc10ec1196121e12841306132413421360137c142014a014ae14bc14ca14d814e614f415021510151e152c153a1548155615a215b015be15cc15da15e815f6160416ba16c816d616e416f21700170e171c172a1738178417a817cc181918c418e419041951199d19bc19da1a271a731a901aae1afb1b471b621b7e1bcb1c171c321cd81d251da81df51e471e921eb21eff1f4b1f6a1f8a1fd71ff620142061208020cd20ec210c2159217821c52211223022da232723ae23fb246024ad24f9257a25c725e42631264e269b26b827052751276c2810285d28dc2929297529c12a0d2ad82b252b442b522b9f2bbc2c092c262c732c922cdf2cfc2d492d662db32dd02e1d2e3a2e872ea42ec22f702fbd3009309e30ac30ba31073114316131ad31ba31c832153222326f327c32c9331533223330337d33c933d633e4343134e634f435aa35b8366c3720372e377b378837d537e237f037fe384b385838a538b238ff390c3959396639b339c03a0d3a1a3a673a743ac13b383bec3c393c463c543ca13cae3cfb3d473d543da13dae3dbc3e093e163ecd3f823fcf3fda3fe0402e405640aa40b740fa410441e84200420e421d422c423c42e043884430443c444844ce458e4614462646ca478b4794481a483648e74988499449a04a264ae64b6c4b7e4c3e4cc44cd64d7b4de94ea84eaf4f354f464fea504b041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600071a8a03482793f3b50aaf5c1948a7daea6509532374f902fe6abeff45f620cb8c99cb00130443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e000b000c1489b85d301a5e194c97f1c275d3ead4bd74c6e4f42bc74ff8ef930e594b8dd9887900084a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c00109010a010b010c009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd400800080008001d43b9aca00250775d8011954fc400080201200009000a0015be000003bcb355ab466ad00015bfffffffbcbd0efda563d0245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000d000e000f0010245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001d001e001f0020284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a00013213eaca33f4cbadbd5448172264067fbb377adbe16d7c4681fb55312783f206756a318a5c723a464c78c863a17c0802276f4114c4c8edf27dd9eb88622de8445b07016d00118207cb3d36dad8873eb00023008422330000000000000000ffffffffffffffff81f2cf4db6b621cfa828008400222455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e001100ac001200ae28480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be001300142213c3c0000695d4a559e12000b100153201c47dca7c0afc1021a7f8ac40f39fac4e3a34441c180afd0667ef533f08c042258d60f2282e7cde376f0df9fd5ebcc5d8bb19faf6cc57bbbb662485cd76bdce510010000c20004800492211480000d2ba94ab3c2400b30016221162000034aea52acf0900b500172213c480000d2ba94ab3c24000b700182211400000d2ba94ab3c2400b9001922110000034aea52acf09000bb001a22110000034aea52acf09000bd001b2212cc00001a575295678400bf001c2211400000d2ba94ab3c2400c300c4011100000000000000005000213213b82c6f6878b537db3c16dcd5f01397865949762fc38f51cb6aff56594f1062f1edf7f2f7d1549f1d22aab06d9a81c9d49510c3fa6d09dba89fcddb0b8576e4aa016d00118207cb3d37031435feb00068008422330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828008400223455ee67dd6327a64269ce346e9b1568ef56241f1ba5179cb6d2ac85c5c18646ae12717905e49ef1945ed5b3e03bab93b347378306bc631945e0355ad7507cbada29001b0010cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e010e00ac00ad00ae006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc028480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000423130103e59e9b6d6c439f580024006a00842313010217dee532a6595718002500260084331392afc8f7cde2b08b147ca948f16cc575bbbd4d383188441e172a5cbc617e05249b737c913fe069b3ce1ce7d550cb95f27f4d428faee54cd295c65c5b9ad7e3ae0027000e01014dad03493b489b5800310032008422130100ca31e1e96b10bbc80027006e2213010058b525488168d908006f0028221301003e470bb61928028800290072221100e1caf7c460aa04680073002a221100e1c6b40db0b41708002b0076221100e11e73378043a2080077002c220f00c021469bdc5408002d007a2210680c021412935422007b002e220f00c021383dbc6da8002f007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea549538700302277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d0008000812313010069341ebbd1eac97800330034008422130100e478e48d695dd1e8008500352848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe001922130100cae245aca13c29a8003600882213010094b93dc1fd640ba800370038221301007e0f065474a37188008b0039221100f6aa376d88c09a280042009f221301007e00c5c8df3ca988008d003a221301007e00c226bc22c348003b0090221301007dfeec4e6f29f348003c0092221301007dfeec4db9634c680093003d221350401f7fbb08ed8733f2003e009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385003f227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0009800402355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b00412179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20009d221100f6a49bd9e38f3928004300a1221100ea59d8cb334c9c08004400a3221100ea59cff28ceadfc800a40045220f00c108ba716ce988004600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00047236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f000a900aa00ab220120004a00e2220120005e00c8220120004b00e4220120004c004d220120004e00e822012000f90056220120004f00ea220120005000ec220120005100ee220120005200f0220120005300f2220120005400f4220120005500f628480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec330001220120005700fc220120005800fe22012000ff00592201200101005a220120005b0104220120005c0106220120005d010800b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a0220120005f00ca22012000cb0060220120006100ce220120006200d0220120006300d222012000d30064220120006500d622012000d70066220120006700da284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a000323130103e59e9b818a1aff580069006a00842313010217dee546c430b718006b006c0084284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b33134d60714c9ba1d20d9c30bf39735d0ad7bfca9eb3ced50edfdae92a4c3339ef4d25e774489adf29b089b2e31b7a68d28886f450600fefbb6f581b3a94423ffc070027000e01014dad035d591ffb5800820083008422130100ca31e1e96b10bbc8006d006e2213010058b525488168d908006f007028480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e00262848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800710072221100e1caf7c460aa04680073007428480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b4170800750076221100e11e73378043a20800770078284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc54080079007a2210680c021412935422007b007c284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f2001128480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da8007d007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807007f284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d0008000812848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c94623464684000ac28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e80085008628480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef0001284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245c0bf1389a8008700882213010094b93dd61b3b6ba80089008a28480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221301007e0f0668927ad188008b008c221100f6aa376d88c09a28009e009f284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5dcfd140988008d008e2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c23ad9fa2348008f0090221301007dfeec628d0153480091009228480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221301007dfeec61d73aac6800930094284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb0df4fd0bf20095009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d80500972848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d000980099284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b009c28480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20009d28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a221100f6a49bd9e38f392800a000a128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100ea59d8cb334c9c0800a200a3284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f78580012221100ea59cff28ceadfc800a400a52848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800a600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c000a8284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f000a900aa00ab284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e8000328480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e5001022bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be00af00b028480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b600012213c3c0000695d4a92a712000b100b222012000c500c628480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba95254e2400b300b4284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea549538900b500b6284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba95254e24000b700b82848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba95254e2400b900ba28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea5495389000bb00bc28480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea5495389000bd00be284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a5752a4a9c400bf00c0284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd761000322110000034aea5495389000c100c222110000034aea52acf09000c300c400a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c9284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a00013201d970752cf49fb39f7ea882f429ef6a8a5ce3eaf9ff4d35bfba6d93ffc9e2a7368180f9da67bd40c08ccea6759238e3e79b631d22aa1dc395bbcec337be6d4e84000f000c2000e100e222012000c700c822012000c900ca284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e22012000cb00cc28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c22012000cd00ce22012000cf00d0284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b22012000d100d228480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f04000922012000d300d4284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af000828480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000d500d622012000d700d828480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b85000528480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012000d900da02012000db00dc284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000300b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012000dd00de00b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c002015800df00e000afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd22012000e300e4284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000e500e62848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c22012000e700e822012000f900fa22012000e900ea284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000922012000eb00ec284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000ed00ee284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000ef00f02848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000622012000f100f228480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f70000522012000f300f428480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b4079019904000222012000f500f6284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c42000302014800f700f82848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e00020073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819328480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000fb00fc22012000fd00fe2848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ff010028480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000728480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f7017650006220120010101022848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012001030104220120010501062848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d00022201200107010800b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa9000b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e202848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f000201038020010d00010211011366ea62c6b62574b18990480a15bd04daf2d4d5c8e3413a8f62b0ff533b259b00078201150317cca5687735940043b9aca004010e010f01100247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610011401210103d0400111003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca004010150011301db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0112001343b9aca0021dcd6500200201610114012101064606000125020340400116011702037604011801190297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c1013201340397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb00040011a011b011c0397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004001270128012901035040011d0103404001210082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f00014080133011e011f0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f02052030240120013700a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f00014080122012301240101a001250082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110126013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac00000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001035040012a01035040012d008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f00014080133012b012c008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db202052030340130013103af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f00014080133012e012f008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb02053030340130013100a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc03af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408013301340135000120008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f19902053030240136013700a041297004c4b40000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04a5134191")
+ .endCell();
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+ log.info(Utils.bytesToHex(cell.getHash()));
+ }
+
+ @Test
+ public void testBocIssue3() {
+ Cell cell =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c72e2020152000100002a490000002400cc00ea0180026202fe033003520361037a03940404047404c0056805a8069a06b4075c079c0806087608c30a160a3a0a5e0b0a0b2a0b4a0b6a0b880ba60bc20bde0bfa0c160c320cd80d5c0d800da00dec0e380e580e780e980eb60ed60ef60f160f360f560f76102010a8110e119011ae11cc11ea120612aa132a13761442148f14ae154415621580159e15bc15da15f81616163416521670168e16ac16ca16d816e616f417021710171e172c173a1748175617641772178017cc17da17e817f6180418121820182e187a1888189618a418b218c018ce18dc18ea18f8190619521976199a19e71a921ab21ad21b1f1b6b1b8a1ba81bf51c411c5e1c7a1cc71d131d2e1d4a1d971de31dfe1e4b1e661f0c1f591fdc2029207b20c721122132217f21cb21ea220a22572276229422e12300234d236c238c23d923f82445249124b024fd251c25c62613269a26e7274c279927e5286628b328d0291d293a298729a429f12a3d2a582afc2b492bc82c152c612cad2ccc2cda2d272d442d912dae2dfb2e182e652e822ecf2eec2f392f562fa32fc0300d302a3077309430e130fe314b316831b531d2321f323c325a3308335533a1343634443491349e34eb34f835453552356035ad35f936063653366036ad36ba370737143722376f377c37c937d6382338d838e6399a3a4e3a5c3aa93ab63ac43ad23b1f3b2c3b793b863bd33be03c2d3c3a3c873c943ce13cee3d3b3d483d953da43df13e683f1c3f693f763f843fd1401d402a40774084409240df412b41384185419241df41ec41fa42ae43624416442244284476449e44f244ff4542454c463046484656466546744684472847d0487848844890491649d64a5c4a6e4b124bd34bdc4c624c7e4d2f4dd04ddc4de84e6e4f2e4fb44fc65086510c511e51c3523152f052f7537d538e54325493041011ef55aaffffff11000100020003000401a09bc7a9870000000004010173ed450000000100ffffffff0000000000000000634e93ea00001d3677b8338000001d3677b83384955d862e00058edb0173ed410173bfbec400000003000000000000002e00050211b8e48dfb4a0eebb004000600070a8a040a13051bcbbbdeccd56f979164b7da81b8e49732e7215334e2b8ce57c41888d03190bd932f59e8bcca9b92cd1032c316407ca6099409a8aedf4146f39e95ffec016e016e000b000c14892736daee89910b52d7041a889bf97c864cfc84eeafba291a1b5b2e931cc1b5e800084a33f6fd0be55a2d75c3eae367b5ba338705f0319041b70e23a5c9b65374cf2739898e58f78b372f9292751451def1be4dc7cf494ef17470574d85c253ef77746b8ea127c00123012401250126009800001d3677a8f1440173ed443de180887d5f5a84d44bd19c87cbb664b0561d5eb81da88c5782b0e36e9a07e4d7fd7d801561f54bffc0cb5c4ec4e855deeeeb6fdf26d4c99a086ffafb93580a022581fa7454b05a2ea2ac0fd3a2a5d348d295400800080008001d43b9aca00250775d8011954fc400080201200009000a0015be000003bcb355ab466ad00015bfffffffbcbd0efda563d0245b9023afe2ffffff1100ffffffff00000000000000000173ed4400000001634e93e700001d3677a8f1440173ed4160000d000e000f0010245b9023afe2ffffff1100ffffffff00000000000000000173ed4500000001634e93ea00001d3677b833840173ed416000110012001300142848010124871f46ee0eb1ae00a27d5c29f6cdbcc378c1f4f1380805ff2297c9ed9fcf2200013213a09776db739953220712f110cafb8c5d8dc0fab70e9391a4894fc7cc8706b210f3282d0d6691f0235fdd6b31911b4bd49619c99ab3dbcb80305cea71d75d2eb0016d00128207e9d152c168ba8ab00018009122330000000000000000ffffffffffffffff81fa7454b05a2ea2a8280091001634558d88cb7e0929c9a44ffc1cf3c5a230c0db9b7ba3f7e489ee00f8289579a5c967d13c5fdbab5e261b0b55885aa0a63abbc4487521903d912f3e35c296ad0eb23d001b0010cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23305e8350c57b37e003f008e004000410111000000000000000050001532139abefb5447ac011734d52324dd76a05aff0775b45c928601222624dbc2141bf2fa4c3e38ec56db5fc900c7c628d963f6fd5f016fdbf141f3f5ae91c3314e7b7f016d00128207e9d152e9a4694ab00072009122330000000000000000ffffffffffffffff81fa7454ba691a52a828009100162455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23305e83a13cd8b7e0128008e00170041006bb0400000000000000000b9f6a280000e9b3bd478a1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc028480101de5adf45c03a745fc9d3a418d9e2ba096db9c1aaa77bc0898b6d9ebb611d2b40000532bfe179ee8495cd144a2f6d30950db2d48088fac5f9a778519dc0114219bf54cead2e7212dcdf398af721e9e425782d575b6c4026b7ec52ea1d3fe9dbb2bbe2aecf001a0010000100f59f3900058edb600003a6cef51e28880000e99c6da994200b9dfdf25ea78c41c94e4584ff2623b917b789f5d0e6a859861410542cb94e76fdc6efde77dc19b6aa8de0d4ad05651468c38cb9f64e1f8cf1351de6d5a7d98d56d6ded0be00bb00bc23130103f4e8a960b45d4558001900740091231301022a87a0b197c88778001a001b0091331367865aed64db08164a3138d816a8cacbb8b8fa46bc1fd1023ef5bd4e8fb6299ddc6201a0bfe76f22f36ca8ad0c54aa645c5739752b0a53bac3e57e9dda18febd0027000f01015ec2a32762fd21d800270028009122130100cbc4fd8a34cb65a8001c007822130100596b57d9c1932d880079001d221301003f0bad3989c46848001e007c221100e0b187aea6583a68007d001f221100e0a7528c0ef9512800200080220f00c141a6498c4d0800810021220f00c02225548664a800220084220f00c0221de12e910800850023220f4030085e7768002a00870024220f00c02170f2272c280025008a219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa818042d76318e19f365e6f7e0780eb2bc9f0c382940ef38b61bb6257ad617eb36fe8c9f56964f2800003a6cef51e28700262277cff55555555555555555555555555555555555555555555555555555555555555554085ac1288e0000000000000074d9dea3c5118042d76318e195d0008c008d2313010068a1a14c598fee380029002a009122130100f62101db096d33a80092002b28480101357b3e386bb95837e17d8fc7dd37f292efdc3301f6e109d8b33eb8a02afbb95d002228480101df3229c929cdae91378fd16242bda5a97246c54da4e9700d7427829825ee7b5d001922130100dd08f96dc461bcc8002c009522130100a6df074312541a08002d002e22130100902873121142a0c80098002f221100f6b6943101117948003900ae2213010090175c7b3161aee8009a0030221301008fb45fdc97d252080031009d221301008f689e5fb80803e80032009f221301008f677b3e09283ac800a00033221301008f677a70024cc70800a20034221301008f6779cbfeb8f188003500a521a1bcd99999999999999999999999999999999999999999999999999999999999982011ecef393af6d61933fe8eada66c79771a5de359b379b70bfe4414022dee90877585c9818f39dda000003a6cef51e2850036227bcff33333333333333333333333333333333333333333333333333333333333333334081ac1664bc000000000000074d9dea3c50e011ecef393af6d6196d000a700372355ec039e4242ff8cc69bf4260c44ddc7b820f838fa85ad1828d2b83ace409d6c02a3b89a505ac592d94a7c4d00a900aa00382179a0634dfa13634f7a130000800006226ee3dc107c1c7d42d68c14695c1d67204eb60151dc4d282d62c96ca53e26c0100ee542c8b882e30ec339334e5ca000ac221100f6a2a63eab3d4e48003a00b0221100ea5905b0b329bd88003b00b2221100ea58fcd0996ec14800b3003c220f00c035987df0cb08003d00b6219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f803d1a0544cba813425adf3253dd3727a789c9e418b5e788a4cab5df805caee92b00000e9b3bd478a1c0003e236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f48000000000000074d9dea3c5110311d3e017f000b800b900ba28480101db29f7a5808e1a673feb2258d777f3005642991b8025b1f92bcd7c498a8bd8ed000222bf000100f59f3900058edb600003a6cef335e0880000e99c6da994200b9dfdf25ea78c41c94e4584ff2623b917b789f5d0e6a859861410542cb94e76fdc6efde77dc19b6aa8de0d4ad05651468c38cb9f64e1f8cf1351de6d5a7d98d56d6ded0be0042004328480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b600012213c3c000074d9de66bc12000bd004432014645ed4db913f636932b4bebb489b51112e1a415136d57d6c6735ffc4bd556606e33f960111aa97c043f6040c47d1298da52d6a46a0378304ba87f61f3dee9db0010000c20005100522211480000e9b3bccd782400bf00452211200003a6cef335e09000c100462211200003a6cef335e09000c3004722116200003a6cef335e0900c500482211200003a6cef335e09000c700492211200003a6cef335e09000c9004a2211200003a6cef335e09000cb004b2211000003a6cef335e09000cd004c2211400000e9b3bccd782400cf004d2211000003a6cef335e09000d1004e2211400000e9b3bccd782400d3004f2211400000e9b3bccd782400d500502211d000003a6cef335e0900d900da220120005300f822012000dd006722012000540055220120005600fc220120010f005f220120005700fe2201200058010022012000590102220120005a0104220120005b0106220120005c0108220120005d010a220120005e010c28480101f25a1e1d7f11115186543ff6eb95e3d9b98f71d2c959af6b0dad6b63cd1e6d6900012201200060011222012001130061220120011500622201200063011822012001190064220120011b0065220120011d006628480101a96f5d75bc79b8d1640e680704965baaa2245e4b3a5ad8e980ef5a3568409418000222012000df006822012000e10069220120006a00e422012000e5006b22012000e7006c22012000e9006d22012000eb006e220120006f00ee220120007000f0220120007100f2284801016f2780ba9d3cdce8eee34a23d893d90800da0ac1be8a973c513909136b7f636b000223130103f4e8a974d234a558007300740091231301022a87a0c5b59fe77800750076009128480101827773c365eccfd6cb46a3f783a09f1aba77ce1a0a4d62048569e9b845e955f8016b3313e844a4da57b7cf2b0b52b004cc5886c966478e37012ee2d9b473bf083e1e3072beee68024dd8cc7dffdfde9e114e4818dc10824b446d661453963fa117c1fcbf0027000f01015ec2a33b80d481d8008f0090009122130100cbc4fd8a34cb65a80077007822130100596b57d9c1932d880079007a28480101cf20bddca78403c3e40e2ab1b3eeb526c425b5efb531e6c5bd3d52019c25125c002628480101ff7081e66c7f0d6e868021316b0189b9e67b61284c176cd74f78fa6baa18a025001a221301003f0bad3989c46848007b007c221100e0b187aea6583a68007d007e284801011d818de56750d053b2a227f0da85ba37fb1869d0c774629d04e2668e1204c0a3001b28480101174c3878604468b08b7b76f5349c41201ae28b81ca1d94794ab11a692e4668250018221100e0a7528c0ef95128007f0080220f00c141a6498c4d080081008228480101e00721ae4b2be2ed708fa68e6b7bec2759a107504812069b3b8aa9acea346c66001528480101747c06e45f53ca1dc7d23f39db07d12f2e67fa595a36fa41d26683ab42d1a3040014220f00c02225548664a800830084220f00c0221de12e91080085008628480101eb38ef90c590bedb3ce31140d2d4176d43db6b7aab35df685afc4ccf2a383209000b2848010179a2e20b8a926ab2fe83108ff00f2fbced9958047008e5cb5fdf8c798aab63850010220f4030085e7768002a0087008828480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c02170f2272c280089008a219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa818042d76318e1805a8c67376726b2dcf563d47e9c2ed6fa8fd993942535d6c8ed758902593e99400003a6cef706707008b284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2277cff55555555555555555555555555555555555555555555555555555555555555554085ac1288e0000000000000074d9dee0ce118042d76318e195d0008c008d2848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c946234646840008e28480101374e198a900e08edc634a5f2ad73e388b0a3019d24269fae8046024e437476b1001028480101903aa268fecbed38822a8972ba42eadb53c0972f11b8486f1534210245db4898002322130100f62101ef274493a80092009328480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef0001284801012bd772e408a34578028922281a3e5b5384970a6a6dd741b1cfa3b80a3e5ec57d002322130100dd08f981e2391cc80094009522130100a6df0757302b7a080096009728480101b90ed7fc04a4971294b12a078ec8189e8fdba184de6e23043922a774ae403ee2002422130100902873262f1a00c800980099221100f6b694310111794800ad00ae28480101eda54e0b0237690499c3e159ab800469fdbcb3c162d42181c2c298acd4e98f3100152213010090175c8f4f390ee8009a009b28480101cc6ead611f9fa7c0598d8f88d658fe0b91f5f9c9635c872154234c16c722970c0014221301008fb45ff0b5a9b208009c009d221301008f689e73d5df63e8009e009f28480101c7c146bea2ced23475861d11146c0560a46c3d243563fda0e32bf8c34229d2670013221301008f677b5226ff9ac800a000a128480101ef1aa8b2068cf6a8eadef8197235a5d5976865a32a3ad1fe80db069ddb8cc2fe001128480101c2ef35325f62d0b4cc17d1f5d083894100c3c478504d70b6eb8d3cf26e604ff40011221301008f677a842024270800a200a3284801018a51fe69422dbf7e028fb1dcac5a62064eefeb4c080793e78a24ef22334b307c0010221301008f6779e01c90518800a400a521a1bcd99999999999999999999999999999999999999999999999999999999999982011ecef3bbeb1c21823653419f6ebabf10f7978dae7e33a12d3bbe9815917a62eb4fe902f2a96e88600003a6cef70670500a62848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007227bcff33333333333333333333333333333333333333333333333333333333333333334081ac1664bc000000000000074d9dee0ce0e011ecef3bbeb1c2196d000a700a8284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec039e4242ff8cc69bf4260c44ddc7b820f838fa85ad1828d2b83ace409d6c02a3b89a505ac592d94a7c4d00a900aa00ab28480101ff06225996392d9e78d92fef981828f3459892841111b2d352901236d506cb65000b28480101336df3bd068890e3f26c1a8f5e77c4bf7cc3c81fc88006ab614b6db43647262600072179a0634dfa13634f7a130000800006226ee3dc107c1c7d42d68c14695c1d67204eb60151dc4d282d62c96ca53e26c0100ee542c8b882e30ec389aaabdca000ac28480101b8ad45439ed0f9f1ffb12362a0c0a6f522734feed11dda077d5f6067f1305170000b221100f6a2a63eab3d4e4800af00b028480101e2a96bbff9be849635722263833d77a90f0a832b410f8b73bca56041fd7e21970016221100ea5905b0b329bd8800b100b22848010130dd0d5ef5796dc4c101fbf5b4b083599e509d0f738b07a8dbfad6b5ae53aecb0012221100ea58fcd0996ec14800b300b42848010130219e3c8c788af6da8a296da6f3e9925c909eed9821a0ae1911c38f56f7b37e000b28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c035987df0cb0800b500b6219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f804c5ac6247ef1e5d11d080c3d8b21135b54598a72e11fbc6ebe1fa0c4b2a7df0a00000e9b3bdc19c1c000b72848010118dd0a8040c21a2cfb6c0acf4ad636dc67ef3ab0a3e102f1b43ad500c55728d00007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f48000000000000074d9dee0ce110311d3e017f000b800b900ba284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e800032213c3c000074d9dea3c512000bd00be22012000db00dc28480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000e9b3bd478a2400bf00c0284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d53000162211200003a6cef51e289000c100c22848010165b0a85a0fdea0c76a2a98445623ea62427099a6318624794dea416f1bdc6f5c00152211200003a6cef51e289000c300c428480101b5b64686c719580155341cb7347af0405dec7158c283ad30833b07325bdc48a5001422116200003a6cef51e28900c500c628480101fde4f74a9866e3de066d6d27e3b1fe107053ecce8b54d8b05ebf4a3b0789c26b00112211200003a6cef51e289000c700c828480101f7a4391731a8136b142d214311bd2f8c162938f27185d22de576a045a13b1e1600102211200003a6cef51e289000c900ca2848010187c846be2bc06a266ae017ae9a13c66cf156125edd95b8bd4f6cfe3c903e3b35000f2211200003a6cef51e289000cb00cc2848010122da148fcc6a6a317ae3c41ee888034019cbfa89e57f306b85601dd2045d6daa000e2211000003a6cef51e289000cd00ce2848010191c44865f6767ab41750fbf5117df2d8be3110925c7993aa2e03780673c31f32000d2211400000e9b3bd478a2400cf00d0284801016d16afa0d70d41df6abe49636527c0b566bd3b722b731eba03433d7efbcb3908000b2211000003a6cef51e289000d100d228480101d744ca7d3ce6fe4538b3fa6a138971ca129c227d8a6736a9cd1d33c2f1fd06cc000a2211400000e9b3bd478a2400d300d42848010175d211346d824c33aff56800c12e0b320854590aadfd85e3f909502cdb6ec3c100082211400000e9b3bd478a2400d500d628480101322f03bbddf42b900d602199315f5d4befa1a9282a2a6c845f3db6ccd2b6bfc000062211cc00003a6cef51e28900d700d82211000003a6cef335e09000d900da00a9d0000074d9dea3c51000003a6cef51e28802e7da887bc30110fabeb509a897a3390f976cc960ac3abd703b5118af0561c6dd340fc9affafb002ac3ea97ff8196b89d89d0abbdddd6dfbe4da9933410dff5f726b01528480101523e62a3a95932c2a65f2314a8a818f82f48644967cc31dcfda9954109d8b55100012848010177c2748c31a7f78c56862aa9d06df60981de7aaa59e67d4d0360a2903384fe1500013201032a5ac73da06a6b989d158bec539003d36dc087d663eda6337be5667c284f16310ee22bacedde5f1c215edbbbdf7a1c20c98ec248b7893266ebfceeb41817bd000f000c2000f700f822012000dd00de284801019deed5e9cd5995ad6c97a06276c939029a1d05a6de03b6c724a4b5567e9adb7a000e22012000df00e0284801016bc4ad2e5c909f6f452be243edc65694f7e6db5f2fc615f69756954a60a563a2000c22012000e100e2284801016925c827cdb72656785a860c0ed1b94c1ff9f0614b9e2ed1b0aa1ee8fbb395aa000c22012000e300e422012000e500e62848010197d9c97586b5cf9a93f5077cf1e13c91f7a4d5b240601e4d08030ab62cd17707000b28480101f613c63e75ce90bdb3aadf01297ba9a958588392473ea542ef8654f281d2854f000922012000e700e828480101d83f99b6b2deca33e45337ea0fa4788a5590c2a9f88654c24c1e4b5282ec7787000822012000e900ea28480101497deb7f82cc061521c9f6bf58ddd3043ecb1dbaea13352ecb73bb53236a9dd8000622012000eb00ec28480101e86bec3c2e5a0c5b9bad30e9b0efd5c74409fece4efd571f8fe02eccbbd0af1a000422012000ed00ee22012000ef00f02848010178a2f12e152f91343bff8aeda8ca7bab1039578fb6b03832c150f22786d0500c000422012000f100f228480101b26a0cc496805853f303d8a00ae9fc7f7b20dc7cab6d1d1c21f5b86469874a84000202012000f300f428480101a31f27b17ffa79bcaf0e47f55dffa054f825e019e447026255e7e1a8d7488701000200b1bcd91dbefdb40075ad92878e330bb79115bcfc28f3c5b9833df391ce8138514a3199fcd1800000000000006500000002b0d782ed8000003f2a3414d8b199f72d0000000000000040800000038a0ed0708000002d14497b814002014800f500f600afbc6827bcf8957c10b8a5694ecd7f0dd41e6a2cd906c77e5340983b618fb6fb0800000000000000000000000000000000000000000000000000000000c695ef7e000000000000007200000006efab3f64000000450742496300afbc66e5f2524ea28a3bde37c9b8f9e929de2e8e0ae9b0b84a7deeee8d71d424e8c69d27d400000000000000e2000000093197d6c2000000a8632502f4c69d1ba4000000000000008a000000116e3e81da0000006af0f2148122012000f900fa28480101912d60694234d59e4645f5d2ebd90e081979a3f6eaf4124bec3980e4547a5094000e22012000fb00fc220120010f011022012000fd00fe28480101348a81067d100edaf90feeb18db50c3c315a07c6c0944b52368c30e76a6f40df000b22012000ff0100284801018540d2166efad6f7a81289ddf3983d3ed177993dce47ccb150f2fcc287428d53000a220120010101022848010110b3b5e79df7c963efb443120853eb1bf9377e78020993bf79d5aaa9b02d1a6a000822012001030104284801016f610eec3a1e4dc9bdacbda0e586e7a8f6b4734b6599ecc0f8c5d0e9666d0ed3000822012001050106284801019100c451439a1cfdcf444d77bc78d03f19ca5e71b1f8fdae5e9e0ccf3e8214a000072201200107010828480101e0140ab9f7e276e1143af00713243e470dfc2c93c02b124622926fd33551a71b00062201200109010a284801014ef684da255649795b7830d1100f419d8f8a0eeb9ed6ed3610ba20b5d815deed0003220120010b010c2848010155cdb8f72801ef11ba562172ed2626c88208eddcf4a0c8f6d5447a785d02b790000202037820010d010e28480101b6eb72df89b91190ab85640f1ef9817bf00e49c5c11e8fd173b5b382ca4a104700010073dde8c69d27d40000000002e7da88000004baec525bbe000096f6a2fa0e38c69d27d4000000001598a6b2000004da46f3846200009e49d38f1eeb00afbbdc4b61f8041625a15bee3b094ff72034e12e69e8d71521ac6748fe6359832319afc8c8000000000000066800000033ffaa8b0000000419c4a9d68319afccd800000000000003d00000002e72705fc80000026a49c0209c284801018dfe3c99df194f8fec2b5b64b5ef08296b853794a29497c7c425ca62a44695e6000c2201200111011222012001130114284801010c275d6749b7c9102256e4abafdecda16a1697f20d26cd0e711bd9d58ef4a2f2000a28480101c169f7745c95d5f3f6b4e550c15978aaf563631f3a9e6ddaaa361ed4042e4f05000922012001150116284801017a3b4493fefcfd2275fa2f6ab01a8db5d70a443fb48dfb00e152545adfb97cbb0007220120011701182201200119011a28480101b13de2fa76c60764833d05264a2e1081609e2dfa9a04bf8d6c5e1162ac7d47cb000728480101027742b12159d2d1310044b4a94e1eea928905b045871a52b552b4b4841288400006220120011b011c28480101df4611dc79f46dc700809e0c3140796be5ca9572c3f3fab70ddbe6a5460bf4900003220120011d011e28480101d52b65c44fcc1a90bbbf8cc01e8ab9c7b6c51f95c2735d6de72a669c1135a8360003020162011f01200201200121012200b0bc885a77c249fb95f38bb13224853b7944942c4b10b84f1b99aa32892aabd4f46335f78a00000000000000bc00000003fb0146f100000074c1cd03f56335e64b0000000000000058000000040ca9eccb000000387d19d10000afbc60807ffe2b018ea1eb65ddc523f7772fc1e1f16e73ee8905b4b66c12275ca800000000000000000000000000000000000000000000000000000000c67fd5260000000000000096000000081b2d1d7000000064c8dda77100afbc799607d471065ad26b0a721946ed764b15a01cf341e11989f08863962a362800000000000000000000000000000000000000000000000000000000c69d27d4000000000000003e00000002165b2b1c0000002c0b7cc7ad0103802001270001021101918f8df47d89a592d9a8e2220276e210d49d789c174ab2b303917d71c6655837000782012f0317cca5687735940043b9aca00401280129012a0247a00f076afb8843d0d2618df1779691876f9ffd59f9b30f47df60f49496744dec67200610012e013b0103d040012b003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca004010150012d01db500e3a26680b9f6a280000e9b3bd478a000000e9b3bd478a0d73fd8f873243316a5b55a0395be4d1c584d71a7c52116b6379a3e93f9649360375de02eb9865b5786e167c4411e5c415cf6064be75fe04b0f81f0c4b84c7260880002c7d7c00000000000000000b9f6a0b1a749f2a012c001343b9aca0021dcd650020020161012e013b0106460600013f020340400130013102037604013201330297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad00000074d9dee0ce0c1014c014e0397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf8000074d9dee0ce00400134013501360397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf8000074d9dee0ce004001410142014301035040013701034040013b0082722f7566ede0ba3a333ac2ca4e9820a0eb28fa3c675e8c5b7378fbba7d487af6b6d8b330226ee7a4226c9a4e28167203a4dec229d3f51655422b56dd7122352fda03af7333333333333333333333333333333333333333333333333333333333333333300001d3677b8338199ff4756d3363cbb8d2ef1acd9bcdb85ff220a0116f74843bac2e4c0c79ceed000001d3677a8f142634e93ea0001408014d013801390082722f7566ede0ba3a333ac2ca4e9820a0eb28fa3c675e8c5b7378fbba7d487af6b69e73e012c2b93293818802ecda692b6a70c7bc140c3d6ba22159dd15949099300205203024013a015100a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003af7333333333333333333333333333333333333333333333333333333333333333300001d3677b8338232a2e0d714f1820922c85912266b270b551f97fd88c9ce96b02fbe0b94fedd3300001d3677b83381634e93ea0001408013c013d013e0101a0013f0082729e73e012c2b93293818802ecda692b6a70c7bc140c3d6ba22159dd1594909930d8b330226ee7a4226c9a4e28167203a4dec229d3f51655422b56dd7122352fda020f0409283baec018110140015100ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec000000003a6cef706700c69d27d440009e42614c107ac0000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000103504001440103504001470082723145f857768776495406acbcd9f6451e43b82a7cf2b787bdfcd66f54e8f61eb2f5fc1aa51cd06879f30dac067b3d17d0571b7c8ef15db6c57ce3e90f63e7d80803af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001d3677b833817a340a8997502684b5be64a7ba6e4f4f1393c8316bcf1149956bbf00b95dd25600001d3677a8f143634e93ea0001408014d014501460082723145f857768776495406acbcd9f6451e43b82a7cf2b787bdfcd66f54e8f61eb20d9c166ab6df5f0d47d18e86fc45c1e5f42681c1184337189ef2e4aa3f2552c10205203034014a014b03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001d3677b83383a4dbec8658831b756fd060883f7d013972d9838f66cebcd2e28d66f2b2d6d46900001d3677b83381634e93ea0001408014d014801490082720d9c166ab6df5f0d47d18e86fc45c1e5f42681c1184337189ef2e4aa3f2552c1f5fc1aa51cd06879f30dac067b3d17d0571b7c8ef15db6c57ce3e90f63e7d8080205303034014a014b00a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc03af7555555555555555555555555555555555555555555555555555555555555555500001d3677b83383f9b2f37bf03c07595e4f861c14a0779c5b0ddb12bd6b0bf59b7f464fab4b279400001d3677a8f143634e93ea0001408014d014e014f0001200082720ac47779e474df79ac188caf2308fa7fccf511a8be789a6502f15ca63fba64408669008ce4710e1108a5eee86c282b1d13feaf7634e0c592943ae844ddd4ca0c02053030240150015100a041297004c4b40000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04d7cef969")
+ .endCell();
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+ }
+
+ /** deserialize cell of code of wallet v4r2 */
+ @Test
+ public void testBocIssue4() {
+ String cellExpected =
+ "x{FF00F4A413F4BCF2C80B}\n"
+ + " x{2_}\n"
+ + " x{4}\n"
+ + " x{D001D0D3032171B0925F04E022D749C120925F04E002D31F218210706C7567BD22821064737472BDB0925F05E003FA403020FA4401C8CA07CBFFC9D0ED44D0810140D721F404305C810108F40A6FA131B3925F07E005D33FC8258210706C7567BA923830E30D03821064737472BA925F06E30D}\n"
+ + " x{01FA00F40430F8276F2230500AA121BEF2E0508210F06C75677080185004CB0526CF1658FA0219F400CB6917CB1F5260CB3F20C98040FB0006}\n"
+ + " x{5004810108F45930ED44D0810140D720C801CF16F400C9ED540172B08E208210E47374727080185005CB055003CF1623FA0213CB6ACB1FCB3FC98040FB00925F03E2}\n"
+ + " x{2_}\n"
+ + " x{2_}\n"
+ + " x{5}\n"
+ + " x{B29DFB513420405035C87D010C00B23281F2FFF274006040423D029BE84C6_}\n"
+ + " x{2_}\n"
+ + " x{ADCE76A26840206B90EB85FFC_}\n"
+ + " x{AF1DF6A26840106B90EB858FC_}\n"
+ + " x{B8C97ED44D0D70B1F}\n"
+ + " x{BD242B6F6A2684080A06B90FA0218470D4080847A4937D29910CE6903E9FF9837812801B7810148987159F3184_}\n"
+ + " x{F28308D71820D31FD31FD31F02F823BBF264ED44D0D31FD31FD3FFF404D15143BAF2A15151BAF2A205F901541064F910F2A3F80024A4C8CB1F5240CB1F5230CBFF5210F400C9ED54F80F01D30721C0009F6C519320D74A96D307D402FB00E830E021C001E30021C002E30001C0039130E30D03A4C8CB1F12CB1FCBFF}\n"
+ + " x{D207FA00D4D422F90005C8CA0715CBFFC9D077748018C8CB05CB0222CF165005FA0214CB6B12CCCCC973FB00C84014810108F451F2A702}\n"
+ + " x{810108D718FA00D33FC8542047810108F451F2A782106E6F746570748018C8CB05CB025006CF165004FA0214CB6A12CB1FCB3FC973FB0002}\n"
+ + " x{810108D718FA00D33F305224810108F459F2A782106473747270748018C8CB05CB025005CF165003FA0213CB6ACB1F12CB3FC973FB00}\n"
+ + " x{F400C9ED54}\n";
+
+ String bocHexExpected =
+ "B5EE9C72410214010002CE000114FF00F4A413F4BCF2C80B010201200203020148040504F8F28308D71820D31FD31FD31F02F823BBF264ED44D0D31FD31FD3FFF404D15143BAF2A15151BAF2A205F901541064F910F2A3F80024A4C8CB1F5240CB1F5230CBFF5210F400C9ED54F80F01D30721C0009F6C519320D74A96D307D402FB00E830E021C001E30021C002E30001C0039130E30D03A4C8CB1F12CB1FCBFF1011121302E6D001D0D3032171B0925F04E022D749C120925F04E002D31F218210706C7567BD22821064737472BDB0925F05E003FA403020FA4401C8CA07CBFFC9D0ED44D0810140D721F404305C810108F40A6FA131B3925F07E005D33FC8258210706C7567BA923830E30D03821064737472BA925F06E30D06070201200809007201FA00F40430F8276F2230500AA121BEF2E0508210F06C75677080185004CB0526CF1658FA0219F400CB6917CB1F5260CB3F20C98040FB000600845004810108F45930ED44D0810140D720C801CF16F400C9ED540172B08E208210E47374727080185005CB055003CF1623FA0213CB6ACB1FCB3FC98040FB00925F03E20201200A0B0059BD242B6F6A2684080A06B90FA0218470D4080847A4937D29910CE6903E9FF9837812801B7810148987159F31840201580C0D0011B8C97ED44D0D70B1F8003DB29DFB513420405035C87D010C00B23281F2FFF274006040423D029BE84C600201200E0F0019ADCE76A26840206B90EB85FFC00019AF1DF6A26840106B90EB858FC0006ED207FA00D4D422F90005C8CA0715CBFFC9D077748018C8CB05CB0222CF165005FA0214CB6B12CCCCC973FB00C84014810108F451F2A7020070810108D718FA00D33FC8542047810108F451F2A782106E6F746570748018C8CB05CB025006CF165004FA0214CB6A12CB1FCB3FC973FB0002006C810108D718FA00D33F305224810108F459F2A782106473747270748018C8CB05CB025005CF165003FA0213CB6ACB1F12CB3FC973FB00000AF400C9ED54D4552129";
+ Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true, false, false, false, false)));
+
+ assertThat(cell.print()).isEqualTo(cellExpected);
+
+ // todo
+ // assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
+ }
+
+ /** basic cell */
+ @Test
+ public void testCellBackAndForth1() {
+ String cellExpected = "x{40000001400000036_}\n";
+ String bocHexExpected = "B5EE9C7241010101000B0000114000000140000003603C39FDA2";
+ Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
+
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+
+ assertThat(cell.print()).isEqualTo(cellExpected);
+ assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
+ }
+
+ /** cell with one ref */
+ @Test
+ public void testCellBackAndForth2() {
+ String cellExpected = "x{40000001400000034_}\n" + " x{40000001400000036_}\n";
+ String bocHexExpected =
+ "B5EE9C7241010201001700011140000001400000034001001140000001400000036010CB5ED2";
+ Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
+
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+
+ assertThat(cell.print()).isEqualTo(cellExpected);
+ assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
+ }
+
+ /** cell with one ref that has another ref */
+ @Test
+ public void testCellBackAndForth3() {
+ String cellExpected =
+ "x{40000001400000034_}\n" + " x{40000001400000034_}\n" + " x{40000001400000036_}\n";
+ String bocHexExpected =
+ "B5EE9C72410103010023000111400000014000000340010111400000014000000340020011400000014000000360CD2FA77E";
+ Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
+
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+
+ assertThat(cell.print()).isEqualTo(cellExpected);
+ assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
+ }
+
+ /*
+ * complex cell with four refs:
+ * =: cell1
+ * cell1 ."cell 1: " B dup Bx. cr
+ *
+ * =: cell2
+ * cell2 ."cell 2: " B dup Bx. cr
+ *
+ * =: cell3
+ * cell3 ."cell 3: " B dup Bx. cr
+ *
+ * =: cell4
+ * cell4 ."cell 4: " B dup Bx. cr
+ *
+ * =: cell5
+ * cell5 ."cell 5: " If not specified and testnet=true then integrated testnet-global.config.json is used;
*/
- private String pathToGlobalConfig;
+ public String pathToGlobalConfig;
/**
* if not specified and pathToGlobalConfig is null then integrated global-config.json is used;
@@ -231,7 +231,7 @@ public Tonlib build() {
super.keystoreInMemory,
super.keystorePath,
super.pathToGlobalConfig,
- (super.globalConfigAsString != null && super.globalConfigAsString.length() > 33)
+ (nonNull(super.globalConfigAsString) && super.globalConfigAsString.length() > 33)
? super.globalConfigAsString.substring(0, 33)
: "",
super.originalGlobalConfigInternal.getLiteservers().length,
@@ -390,6 +390,12 @@ private String syncAndRead(String query) {
+ " times was not able retrieve result from lite-server.");
}
+ if (response.contains("Failed to unpack account state")) {
+ log.info(
+ "You are trying to deploy a contract on address that does not have toncoins.");
+ break outterloop;
+ }
+
if (usingAllLiteServers) {
// try next lite-server from the list
TonGlobalConfig globalConfigCurrent =
@@ -1556,4 +1562,31 @@ public SmcLibraryResult getLibraries(ListB dup Bx. cr
+ */
+ @Test
+ public void testCellBackAndForth4() {
+ String cellExpected =
+ "x{40000001400000034_}\n"
+ + " x{40000001400000036_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000036_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000036_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000036_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000034_}\n"
+ + " x{40000001400000036_}\n";
+ String bocHexExpected =
+ "B5EE9C7241010501003F00041140000001400000034004030201021140000001400000034003020111400000014000000340030111400000014000000340040011400000014000000360785A1C4B";
+ Cell cell = CellBuilder.beginCell().fromBoc(bocHexExpected).endCell();
+
+ log.info("CellType {}", cell.getCellType());
+ log.info(cell.print());
+ log.info(Utils.bytesToHex(cell.toBoc(true)));
+
+ assertThat(cell.print()).isEqualTo(cellExpected);
+ assertThat(Utils.bytesToHex(cell.toBoc(true)).toUpperCase()).isEqualTo(bocHexExpected);
+ }
+
+ private static final String BOC_FIFT_HEX_LARGE2 =
+ "b5ee9c7241023201000498000114ff00f4a413f4bcf2c80b010201200302000cf2308048f2f00201480e0402012008050201200706001db9c34f00a5f03802032028307f00580011bbbd182108325e4c380201200d090201200b0a003bb6e53da89a1f401a803a1a7ffe00203e00203a861a1e0026209a8608a810020120310c002bb2fe7c02840917c120c1fd039be864fe800c380c1c200017bb9a5ed44d0d430d0d3ff3080202cb120f0201ce1110005b3e105bc90c0c40b53d01347b5134350c3434ffcc201254452ebcbd087ec120841ca368e840b2333d00104c3c01a000513e105bc90c0c40bd01347b5134350c3434ffcc20125444eebcbd20840764eab600723d00104c3c01a002012023130201201c140201201915020120181601f73e105bc90c80fd01347c02b434c03e8034c7f4c7fd010c2012c97cbd2012d4e4ae7cbd2012d4e4ee7cbd20134920840ee6b2802814032ec6fcbd3e097e0554c1e8483e0454c2e0083d039be864f4c7cc248c083880a94b20083d039be865900720083d05a74c083232c7f274100720083d05b882a9013232c01400e0170038fa02cb1fcb1f17f400c9f00b82101a69387e02c8cb1ff4004130f00600793e105bc90c0c40b53d01347b5134350c3434ffcc201254c52ebcbd08b434ffcc201200aebcbd3c028c54943c02e0843218aeaf40b2333d00104c3c01a00201201b1a00e33e105bc90c0c40b4fff4c7fe803d01347c02887434ffcc20125446eebcbd08e0080a60c1fc014c6011c07cbc94ca3c020a7232ffd50825a0083d10c1291508e43c0240bc02e0840d2212a4497232ffd49032c7d4883d00095110d4a17c01e0841c04df21c0f232ffc4b2c7fd00104c3c01a000ed3e105bc90c0c40b4fff4c7fe803d01347c0288e0080a60c1fc016011c07cbd2011d4c6eebcbd14cc3c0214d2bc020af232ffd5082e20083d10c06951543c0241291509243c025004fc02e084260abfffc97232ffd49032c7d4883d00095110d4a17c01e0840c19b443c0f232ffc4b2c7fd00104c3c01a0020120201d0201201f1e001f3214017e8084fd003d003333327b552000193b51343e803d013d0135350c200201202221003b20128870403cbc8830802672007e8080a0c1fd10e5cc0060c1fd16cc38a0001d0060c1fd039be864fe800c380c1c200201202b2402012028250201202726003d1c20043232c141bc0105b3c594013e808532dab2c7c4b2cff3c4f25c7ec020003d1c20043232c1417c010573c5893e808532da84b2c7f2cff3c4f260103ec0200201202a290023104cfd039be8482540b5c04c00780c5c0ca0001d1c081cb232c072c032c1f2fff274200201202d2c00215fa4001fa46804602c00012f2f4d3ff3080201202f2e001134c1c06a80b5c6006001ed20120871c03cbc807434c0c05c6c2497c0f83c00cc4074c7dc208061a808f00023858cc074c7e01200a0841b5a5b9d2e84bcbd2082c63cd865d6f4cffe801400f880fe0048840d10015bc13e186084100d28f014842ea4cc3c033820842296cbb9d4842ea4cc3c03782082c63cd854842ea4cc3c03f8203000588210982535785210ba9330f00ee08210b766741a5210ba9330f011e0821025d53dfdba92f010e0308048f2f00011b323bc02840d17c12004896818";
+ private static final String BOC_FIFT_BASE64_LARGE =
+ "te6ccgECMgEABJgAART/APSkE/S88sgLAQIBIAIDAgFIBAUADPIwgEjy8AICywYHAgEgKCkCASAICQIBziYnAgEgCgsCASAXGAIBIAwNAgEgERICASAODwAhX6QAH6RoBGAsAAEvL00/8wgB7SASCHHAPLyAdDTAwFxsJJfA+DwAzEB0x9wggGGoCPAAI4WMwHTH4BIAoIQbWludLoS8vSCCxjzYZdb0z/6AFAD4gP4ASIQNEAFbwT4YYIQQDSjwFIQupMw8AzgghCKWy7nUhC6kzDwDeCCCxjzYVIQupMw8A/ggEAARNMHAaoC1xgBgAFiCEJglNXhSELqTMPAO4IIQt2Z0GlIQupMw8BHgghAl1T39upLwEOAwgEjy8AIBIBMUAgEgFRYAHRwIHLIywHLAMsHy//J0IAAjEEz9A5voSCVAtcBMAHgMXAygAD0cIAQyMsFBfAEFc8WJPoCFMtqEssfyz/PE8mAQPsAgAD0cIAQyMsFBvAEFs8WUAT6AhTLassfEss/zxPJcfsAgAgEgGRoCASAfIAIBIBscAgEgHR4AHQBgwf0Dm+hk/oAMOAwcIAA7IBKIcEA8vIgwgCZyAH6AgKDB/RDlzABgwf0WzDigABk7UTQ+gD0BPQE1NQwgAB8yFAF+gIT9AD0AMzMye1UgAgEgISICASAjJADtPhBbyQwMQLT/9Mf+gD0BNHwCiOAICmDB/AFgEcB8vSAR1MbuvL0UzDwCFNK8AgryMv/VCC4gCD0QwGlRVDwCQSkVCSQ8AlAE/ALghCYKv//JcjL/1JAyx9SIPQAJURDUoXwB4IQMGbRDwPIy/8Syx/0AEEw8AaAA4z4QW8kMDEC0//TH/oA9ATR8Aoh0NP/MIBJURu68vQjgCApgwfwBTGARwHy8lMo8AgpyMv/VCCWgCD0QwSkVCOQ8AkC8AuCEDSISpElyMv/UkDLH1Ig9AAlRENShfAHghBwE3yHA8jL/xLLH/QAQTDwBoAB5PhBbyQwMQLU9ATR7UTQ1DDQ0/8wgElTFLry9CLQ0/8wgEgCuvL08AoxUlDwC4IQyGK6vQLIzPQAQTDwBoAH3PhBbyQyA/QE0fAK0NMA+gDTH9Mf9AQwgEsl8vSAS1OSufL0gEtTk7ny9IBNJIIQO5rKAKBQDLsb8vT4JfgVUwehIPgRUwuAIPQOb6GT0x8wkjAg4gKlLIAg9A5voZZAHIAg9BadMCDIyx/J0EAcgCD0FuIKpATIywBQA4CUAOPoCyx/LHxf0AMnwC4IQGmk4fgLIyx/0AEEw8AYAUT4QW8kMDEC9ATR7UTQ1DDQ0/8wgElRE7ry9IIQHZOq2AHI9ABBMPAGgAFs+EFvJDAxAtT0BNHtRNDUMNDT/zCASVEUuvL0IfsEghByjaOhAsjM9ABBMPAGgAgEgKisCASAwMQAXu5pe1E0NQw0NP/MIAgEgLC0CASAuLwA7tuU9qJofQBqAOhp//gAgPgAgOoYaHgAmIJqGCKgQABGzI7wChA0XwSAAK7L+fAKECRfBIMH9A5voZP6ADDgMHCAAEbu9GCEIMl5MOAAducNPAKXwOAIDICgwfwBY";
+ private static final String BOC_FIFT_LARGE_HASH =
+ "2f013a05f1522b9288e0412c524186f089ea30e87afc9a51395eed0019f2cf8f";
+
+ private static final String BOC_FIFT_HEX_WITH_DUPS =
+ "b5ee9c720101180100e800020310c201020163a90da09563b6740a4b7f68ca09fbdb76b0035cc101450a16e2e79b985ebbb38a0c5768616c657320546f6b656e0357484c40030119a1dcd65000000003200000032604003e1e68747470733a2f2f746f6e7768616c65732e636f6d2f636f6e74656e742f0203ccc0050602012007080201481415020120090a0201200f10000ba38000002cc00201200b0c0009b6000000c30201480d0e00094000000638000950000005f8000ba6000000304002012011170201581213000940000005c8000950000005e8000ba18000002ec002012016170009b4000000b70009d8000002d4";
+ private static final String BOC_FIFT_BASE64_WITH_DUPS =
+ "te6ccgEBGAEA6AACAxDCAQIBY6kNoJVjtnQKS39oygn723awA1zBAUUKFuLnm5heu7OKDFdoYWxlcyBUb2tlbgNXSExAAwEZodzWUAAAAAMgAAADJgQAPh5odHRwczovL3RvbndoYWxlcy5jb20vY29udGVudC8CA8zABQYCASAHCAIBSBQVAgEgCQoCASAPEAALo4AAACzAAgEgCwwACbYAAADDAgFIDQ4ACUAAAAY4AAlQAAAF+AALpgAAADBAAgEgERcCAVgSEwAJQAAABcgACVAAAAXoAAuhgAAALsACASAWFwAJtAAAALcACdgAAALU";
+ private static final String BOC_FIFT_WITH_DUPS_HASH =
+ "5049e60708f6f8aefb51009361aa6ad6fc6a14becd8d8bef37d10cf2e8ea281d";
+
+ private static final String BOC_FIFT_HEX_DEEP_DUPLICATED_HASHMAP =
+ "b5ee9c7241010901006a000101c0010202cb02030201200404020162060702012005050201200606020120080800434801f9c856c1260ecc28bf6928191e2b79c9a64d19c787ccb9d113c6d609690b7f0900432007e7215b04983b30a2fda4a06478ade7269934671e1f32e7444f1b5825a42dfc2404807a00";
+ private static final String BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH =
+ "69e794b89cef40a0ee3ab947cf8ea70736101d9c86ae4168406fc72964d1a9e6";
+
+ @Test
+ public void testShouldDeserializeSerializeDeserializeBocFromHex() {
+ Cell c1 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_LARGE2).endCell();
+ log.info("CellType c1 {}", c1.getCellType());
+ log.info("Hex c1 {}", Utils.bytesToHex(c1.toBoc(true, true)));
+ assertThat(Utils.bytesToHex(c1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+ assertThat(Utils.bytesToHex(c1.getHash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+
+ Cell c2 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_WITH_DUPS).endCell();
+ log.info("CellType c2 {}", c2.getCellType());
+ log.info("Hex c2 {}", Utils.bytesToHex(c2.toBoc(true, true)));
+ assertThat(Utils.bytesToHex(c2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+ assertThat(Utils.bytesToHex(c2.getHash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+
+ Cell c3 = CellBuilder.beginCell().fromBoc(BOC_FIFT_HEX_DEEP_DUPLICATED_HASHMAP).endCell();
+ log.info("CellType c3 {}", c3.getCellType());
+ log.info("Hex c3 {}", Utils.bytesToHex(c3.toBoc(true, true)));
+ assertThat(Utils.bytesToHex(c3.hash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
+ assertThat(Utils.bytesToHex(c3.getHash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
+
+ String hex1 = c1.toHex();
+ String hex2 = c2.toHex();
+ String hex3 = c3.toHex();
+
+ log.info("hex1 {}", hex1);
+ log.info("hex2 {}", hex2);
+ log.info("hex3 {}", hex3);
+
+ Cell result1 = CellBuilder.beginCell().fromBoc(hex1).endCell();
+ Cell result2 = CellBuilder.beginCell().fromBoc(hex2).endCell();
+ Cell result3 = CellBuilder.beginCell().fromBoc(hex3).endCell();
+
+ assertThat(Utils.bytesToHex(result1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+ assertThat(Utils.bytesToHex(result2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+ assertThat(Utils.bytesToHex(result3.hash())).isEqualTo(BOC_FIFT_DEEP_DUPLICATED_HASHMAP_HASH);
+ }
+
+ @Test
+ public void testShouldDeserializeSerializeDeserializeBocFromBase64() {
+ Cell c1 =
+ CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(BOC_FIFT_BASE64_LARGE)).endCell();
+ assertThat(Utils.bytesToHex(c1.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+ assertThat(Utils.bytesToHex(c1.getHash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+
+ Cell c2 =
+ CellBuilder.beginCell()
+ .fromBoc(Utils.base64ToSignedBytes(BOC_FIFT_BASE64_WITH_DUPS))
+ .endCell();
+ assertThat(Utils.bytesToHex(c2.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+ assertThat(Utils.bytesToHex(c2.getHash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+
+ String base64c1 = c1.toBase64();
+ String base64c2 = c2.toBase64(true);
+
+ Cell c3 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(base64c1)).endCell();
+ Cell c4 = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes(base64c2)).endCell();
+
+ assertThat(Utils.bytesToHex(c3.hash())).isEqualTo(BOC_FIFT_LARGE_HASH);
+ assertThat(Utils.bytesToHex(c4.hash())).isEqualTo(BOC_FIFT_WITH_DUPS_HASH);
+ }
+
+ @Test
+ public void testShouldDeserializeSerializeDeserializeBocWithExoticCells() {
+ log.info(
+ "hex {}",
+ Utils.base64ToHexString(
+ "te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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"));
+ Cell c =
+ CellBuilder.beginCell()
+ .fromBoc(
+ Utils.base64ToSignedBytes(
+ "te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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"))
+ .endCell();
+ log.info("type {}", Utils.bytesToHex(c.getHash()));
+ }
+
+ @Test
+ public void testShouldDeserialize2() {
+ Cell cell =
+ CellBuilder.beginCell()
+ .fromBoc(
+ Utils.base64ToSignedBytes(
+ "te6cckEBAQEAIgAAQI4l3QgXTJzTGSGBoCKurXZZrCqdShK4T1Fg7dLsxwbqJRoppg=="))
+ .endCell();
+ log.info("CellType {}", cell.getCellType());
+ }
+
+ @Test
+ public void testShouldDeserializeAccountState() {
+ Cell c =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c724101030100d700026fc00c419e2b8a3b6cd81acd3967dbbaf4442e1870e99eaf32278b7814a6ccaac5f802068148c314b1854000006735d812370d00764ce8d340010200deff0020dd2082014c97ba218201339cbab19f71b0ed44d0d31fd31f31d70bffe304e0a4f2608308d71820d31fd31fd31ff82313bbf263ed44d0d31fd31fd3ffd15132baf2a15144baf2a204f901541055f910f2a3f8009320d74a96d307d402fb00e8d101a4c8cb1fcb1fcbffc9ed5400500000000229a9a317d78e2ef9e6572eeaa3f206ae5c3dd4d00ddd2ffa771196dc0ab985fa84daf451c340d7fa")
+ .endCell();
+ log.info("CellType {}", c.getCellType());
+ log.info(c.toString());
+ log.info("length {}", c.getBitLength());
+ }
+
+ @Test
+ public void testShouldDeserializeInMsgDescr() {
+ Cell c =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c724102300100078d0001099b2dcef0200102090d96e77810120202090d96e778100a030246bfa9346e9464c7f146a6be4225b1c98e29a59561fbb67319922eda6acc69f6b9130030040501064606000903af7000000000000000000000000000000000000000000000000000000000000000000000000000f42439440e0c397a3b2ee3cbd81ea78021862f892a5a9e779d1fecd55236d6571eb5200000000000f424165a57c5f0001408082f06020f0409017d784018110729009a27c89c40000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101a00900ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8484cb4af8be4002094365b9de04260b0251bf084dd4db5a349ccfcf293baf5f5b626f4a130856b6613ded62877bfecc2536dcd96e7780cd96e77a110c03af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f4247d59d160ea9c63d10edae2c76ada993f982915bc75f7bcc0fb81280820d15523200000000000f424165a57c5f0001408100f0d020f0c0901c9c38018110e29009c402468bb8000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa816617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee26720101a019010c46060365b9de19020300101c130246bf919848778310ed687087000647581469374dff5e9f0fb1cf744809c5016e12fb00301a1403b57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef00000000000f42450000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0003e665b9448171615001f040901efe92001c0332dca2365b9de4000827290aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da490aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da40201e01b180101df1900b959ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf3fc13d931abeffcf744362e99c1de42b259c35503cdea5122c0cdeea9a96a4ab2b101c9c380006cb73bc00000000001e848ccb4af8be7fffffffc001064606001b00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8488cb4af8be400246bfad8011dbd0ddd5549e65b1288c858e77dc3e0a5ba9eae0d756ca2e8b5731753e0030211d03af7000000000000000000000000000000000000000000000000000000000000000000000000000f42410000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0001408201f1e0113040829a40cd41efffe02230082725828aa96d32f676df2049228847cc42b15b0a52d9ffa3bc66b36fcedeff20af9310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f0101a02201064606002201a369fe00000000000000000000000000000000000000000000000000000000000000013fc000000000000000000000000000000000000000000000000000000000000000020000000000001e8480cb4af8be402302012025240015bfffffffbcbd1a94a200100015be000003bcb3670dc155500245bf2ac017c203ca0d9d008bf543c1364eebf27183668cf1e8b1e0e98af56b2dc1dc00c22d2703af7333333333333333333333333333333333333333333333333333333333333333300000000000f4242cac3c5723cb68f5f7dba257e7f812140298ea360bdbf630cd33c8da2b098829200000000000f424165a57c5f00014082c2b28020f04091954fc4018112a29005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04009e41778c0a604000000000000000003e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082729304b9982993165dc7b4b2ccfc64c61bf6455afe7e4fe1233d5f827261360d8ed855aea1ede2adcff55d3d37fcf59c03bd19c39f843a14faef85cad3980cf6920101a02e01064606002e00ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd1954fc4000000000000001e8480cb4af8be40008272310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f606c97d0dc8b63016a6afd67b2fe52cd0e02a3dcdf71f331cf1e8006ca8e51a323766587")
+ .endCell();
+ log.info(c.print());
+ log.info(c.toString());
+ log.info("length {}", c.getBitLength());
+ }
+
+ @Test
+ public void testShouldDeserializeOutMsgDescr() {
+ Cell c =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c72410241010008c7000109a06dac2c020102091036d61601030202091017d7840104060209101efe92013212020b4405f5e1004009050343bf084dd4db5a349ccfcf293baf5f5b626f4a130856b6613ded62877bfecc2536dc0a301b290203504007080343bf24d1ba51931fc51a9af90896c72638a6965587eed9cc6648bb69ab31a7dae44c0a0c330b0243bf17c9d39d78e8498a560800ddfb11dc48be1bc0edc2fbf90844eceb5ab4649610022614024bbf0847cbb01de39c3308edf1091131c7dedb780ca3e34d85bdc1a6ab4df16d79e9017d7840060a140106460600280201610c0d01064606003f03af7000000000000000000000000000000000000000000000000000000000000000000000000000f42439440e0c397a3b2ee3cbd81ea78021862f892a5a9e779d1fecd55236d6571eb5200000000000f424165a57c5f000140811100e020f0409017d784018110f2c009a27c89c4000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272310a1de222ce584cb4e86613b11d31616e9eaa4ff9ee499f19b104cf71eb504f606c97d0dc8b63016a6afd67b2fe52cd0e02a3dcdf71f331cf1e8006ca8e51a30101a03f020b6501efe920101913024bbec8a2b54087ea747ec1d5ecc652b91406aa6f4c2f479843ebd290b26ad8043eca03dfd2400c181403af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f424873b47eb527e2e6b9a73405d88f31477703ef31e5c4f2b8a2be754d66be0d60ff00000000000f424765a57c5f00074081716150205303024363500827216617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee2672d4d2e789fd57af824d33228887af40bcfb492aebe39ec74d665726b6471454ab010160210106460600230343beccc243bc18876b43843800323ac0a349ba6ffaf4f87d8e7ba2404e280b7097d81420331a020161201b03b57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef00000000000f42450000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0003e665b94481e1d1c001f040901efe92001c0332dca2365b9de4000827290aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da490aec8965afabb16ebc3cb9b408ebae71b618d78788bc80d09843593cac98da40201e03b1f0101df3101064606003b0201db24220101482300ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8496cb4af8be40020120272501012026008be7f827b26357dff9ee886c5d3383bc8564b386aa079bd4a245819bdd5352d495656240e8cae6e880eb79a200000000000f424a65a57c5f00012195b1b1bcb081ddbdc9b190860101202800ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8492cb4af8be40020766cb73bd302a03af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f4247d59d160ea9c63d10edae2c76ada993f982915bc75f7bcc0fb81280820d15523200000000000f424165a57c5f00014082f2e2b020f0c0901c9c38018112d2c005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04009c402468bb8000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa816617de1e9f3a79e4c7d8a3a51ac0c8b54b6bbcd4f824c9f800aa2f36fee26720101a031010c46060365b9de3100b959ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf3fc13d931abeffcf744362e99c1de42b259c35503cdea5122c0cdeea9a96a4ab2b101c9c380006cb73bc00000000001e848ccb4af8be7fffffffc00244bfaeffebddf2ee4f04633ee2bbba628ae4e08b6e0043d11727286b0df248a2e17700403303af704f64c6afbff3dd10d8ba6707790ac9670d540f37a9448b0337baa6a5a92acac00000000000f42410000000000000000000000000000000000000000000000000000000000000000000000000000000065a57c5f0007408383734020520302436350061c000000000000600000000000719ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a40d03c04009e42664e625a0000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008272f1f67337526ee9890e137d5255f3150400e63d15dfe04b26653d275f2d0a6b04bf8229e6e684701825a6f8e1fb0f8155aba759d58b82e73b8405092874e23fa8010160390201db3c3a0101483b00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd01efe92000000000000001e8488cb4af8be400201203e3d010120400101203f00ab29fe09ec98d5f7fe7ba21b174ce0ef21592ce1aa81e6f528916066f754d4b52559593fc0000000000000000000000000000000000000000000000000000000000000001017d784000000000000001e8484cb4af8be40008be7f827b26357dff9ee886c5d3383bc8564b386aa079bd4a245819bdd5352d495656240e8cae6e880eb79a200000000000f424365a57c5f00012195b1b1bcb081ddbdc9b1908660bfedbd")
+ .endCell();
+ log.info(c.print());
+ log.info(c.toString());
+ log.info("length {}", c.getBitLength());
+ }
+
+ @Test
+ public void testShouldDeserializeInsane() {
+ Cell c =
+ CellBuilder.beginCell()
+ .fromBoc(
+ "b5ee9c72e20201380001000028250000002400cc00ea01c402a603420374039603a503be03d8044804b8050405ac05ec065606a2076e078e0824084208600880089e08bc08da08f80916093009d80a180b0a0b7a0bc70bea0c0e0cba0cda0cfa0d1a0d380d560d740d900dac0dc80e6e0ef20f160f360f820fce0fee100e102e104c106c108c10ac10cc10ec1196121e12841306132413421360137c142014a014ae14bc14ca14d814e614f415021510151e152c153a1548155615a215b015be15cc15da15e815f6160416ba16c816d616e416f21700170e171c172a1738178417a817cc181918c418e419041951199d19bc19da1a271a731a901aae1afb1b471b621b7e1bcb1c171c321cd81d251da81df51e471e921eb21eff1f4b1f6a1f8a1fd71ff620142061208020cd20ec210c2159217821c52211223022da232723ae23fb246024ad24f9257a25c725e42631264e269b26b827052751276c2810285d28dc2929297529c12a0d2ad82b252b442b522b9f2bbc2c092c262c732c922cdf2cfc2d492d662db32dd02e1d2e3a2e872ea42ec22f702fbd3009309e30ac30ba31073114316131ad31ba31c832153222326f327c32c9331533223330337d33c933d633e4343134e634f435aa35b8366c3720372e377b378837d537e237f037fe384b385838a538b238ff390c3959396639b339c03a0d3a1a3a673a743ac13b383bec3c393c463c543ca13cae3cfb3d473d543da13dae3dbc3e093e163ecd3f823fcf3fda3fe0402e405640aa40b740fa410441e84200420e421d422c423c42e043884430443c444844ce458e4614462646ca478b4794481a483648e74988499449a04a264ae64b6c4b7e4c3e4cc44cd64d7b4de94ea84eaf4f354f464fea504b041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600071a8a03482793f3b50aaf5c1948a7daea6509532374f902fe6abeff45f620cb8c99cb00130443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e000b000c1489b85d301a5e194c97f1c275d3ead4bd74c6e4f42bc74ff8ef930e594b8dd9887900084a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c00109010a010b010c009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd400800080008001d43b9aca00250775d8011954fc400080201200009000a0015be000003bcb355ab466ad00015bfffffffbcbd0efda563d0245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000d000e000f0010245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001d001e001f0020284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a00013213eaca33f4cbadbd5448172264067fbb377adbe16d7c4681fb55312783f206756a318a5c723a464c78c863a17c0802276f4114c4c8edf27dd9eb88622de8445b07016d00118207cb3d36dad8873eb00023008422330000000000000000ffffffffffffffff81f2cf4db6b621cfa828008400222455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e001100ac001200ae28480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be001300142213c3c0000695d4a559e12000b100153201c47dca7c0afc1021a7f8ac40f39fac4e3a34441c180afd0667ef533f08c042258d60f2282e7cde376f0df9fd5ebcc5d8bb19faf6cc57bbbb662485cd76bdce510010000c20004800492211480000d2ba94ab3c2400b30016221162000034aea52acf0900b500172213c480000d2ba94ab3c24000b700182211400000d2ba94ab3c2400b9001922110000034aea52acf09000bb001a22110000034aea52acf09000bd001b2212cc00001a575295678400bf001c2211400000d2ba94ab3c2400c300c4011100000000000000005000213213b82c6f6878b537db3c16dcd5f01397865949762fc38f51cb6aff56594f1062f1edf7f2f7d1549f1d22aab06d9a81c9d49510c3fa6d09dba89fcddb0b8576e4aa016d00118207cb3d37031435feb00068008422330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828008400223455ee67dd6327a64269ce346e9b1568ef56241f1ba5179cb6d2ac85c5c18646ae12717905e49ef1945ed5b3e03bab93b347378306bc631945e0355ad7507cbada29001b0010cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e010e00ac00ad00ae006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc028480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000423130103e59e9b6d6c439f580024006a00842313010217dee532a6595718002500260084331392afc8f7cde2b08b147ca948f16cc575bbbd4d383188441e172a5cbc617e05249b737c913fe069b3ce1ce7d550cb95f27f4d428faee54cd295c65c5b9ad7e3ae0027000e01014dad03493b489b5800310032008422130100ca31e1e96b10bbc80027006e2213010058b525488168d908006f0028221301003e470bb61928028800290072221100e1caf7c460aa04680073002a221100e1c6b40db0b41708002b0076221100e11e73378043a2080077002c220f00c021469bdc5408002d007a2210680c021412935422007b002e220f00c021383dbc6da8002f007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea549538700302277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d0008000812313010069341ebbd1eac97800330034008422130100e478e48d695dd1e8008500352848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe001922130100cae245aca13c29a8003600882213010094b93dc1fd640ba800370038221301007e0f065474a37188008b0039221100f6aa376d88c09a280042009f221301007e00c5c8df3ca988008d003a221301007e00c226bc22c348003b0090221301007dfeec4e6f29f348003c0092221301007dfeec4db9634c680093003d221350401f7fbb08ed8733f2003e009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385003f227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0009800402355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b00412179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20009d221100f6a49bd9e38f3928004300a1221100ea59d8cb334c9c08004400a3221100ea59cff28ceadfc800a40045220f00c108ba716ce988004600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00047236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f000a900aa00ab220120004a00e2220120005e00c8220120004b00e4220120004c004d220120004e00e822012000f90056220120004f00ea220120005000ec220120005100ee220120005200f0220120005300f2220120005400f4220120005500f628480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec330001220120005700fc220120005800fe22012000ff00592201200101005a220120005b0104220120005c0106220120005d010800b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a0220120005f00ca22012000cb0060220120006100ce220120006200d0220120006300d222012000d30064220120006500d622012000d70066220120006700da284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a000323130103e59e9b818a1aff580069006a00842313010217dee546c430b718006b006c0084284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b33134d60714c9ba1d20d9c30bf39735d0ad7bfca9eb3ced50edfdae92a4c3339ef4d25e774489adf29b089b2e31b7a68d28886f450600fefbb6f581b3a94423ffc070027000e01014dad035d591ffb5800820083008422130100ca31e1e96b10bbc8006d006e2213010058b525488168d908006f007028480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e00262848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800710072221100e1caf7c460aa04680073007428480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b4170800750076221100e11e73378043a20800770078284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc54080079007a2210680c021412935422007b007c284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f2001128480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da8007d007e219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807007f284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d0008000812848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c94623464684000ac28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e80085008628480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef0001284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245c0bf1389a8008700882213010094b93dd61b3b6ba80089008a28480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221301007e0f0668927ad188008b008c221100f6aa376d88c09a28009e009f284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5dcfd140988008d008e2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c23ad9fa2348008f0090221301007dfeec628d0153480091009228480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221301007dfeec61d73aac6800930094284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb0df4fd0bf20095009621a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d80500972848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d000980099284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b009a009b009c28480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20009d28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a221100f6a49bd9e38f392800a000a128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100ea59d8cb334c9c0800a200a3284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f78580012221100ea59cff28ceadfc800a400a52848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800a600a7219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c000a8284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f000a900aa00ab284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e8000328480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e5001022bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be00af00b028480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b600012213c3c0000695d4a92a712000b100b222012000c500c628480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba95254e2400b300b4284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea549538900b500b6284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba95254e24000b700b82848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba95254e2400b900ba28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea5495389000bb00bc28480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea5495389000bd00be284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a5752a4a9c400bf00c0284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd761000322110000034aea5495389000c100c222110000034aea52acf09000c300c400a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c9284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a00013201d970752cf49fb39f7ea882f429ef6a8a5ce3eaf9ff4d35bfba6d93ffc9e2a7368180f9da67bd40c08ccea6759238e3e79b631d22aa1dc395bbcec337be6d4e84000f000c2000e100e222012000c700c822012000c900ca284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e22012000cb00cc28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c22012000cd00ce22012000cf00d0284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b22012000d100d228480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f04000922012000d300d4284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af000828480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000d500d622012000d700d828480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b85000528480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012000d900da02012000db00dc284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000300b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012000dd00de00b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c002015800df00e000afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd22012000e300e4284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000e500e62848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c22012000e700e822012000f900fa22012000e900ea284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000922012000eb00ec284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000ed00ee284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000ef00f02848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000622012000f100f228480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f70000522012000f300f428480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b4079019904000222012000f500f6284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c42000302014800f700f82848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e00020073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819328480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000fb00fc22012000fd00fe2848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ff010028480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000728480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f7017650006220120010101022848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012001030104220120010501062848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d00022201200107010800b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa9000b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e202848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f000201038020010d00010211011366ea62c6b62574b18990480a15bd04daf2d4d5c8e3413a8f62b0ff533b259b00078201150317cca5687735940043b9aca004010e010f01100247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610011401210103d0400111003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca004010150011301db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0112001343b9aca0021dcd6500200201610114012101064606000125020340400116011702037604011801190297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c1013201340397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb00040011a011b011c0397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004001270128012901035040011d0103404001210082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f00014080133011e011f0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f02052030240120013700a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f00014080122012301240101a001250082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110126013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac00000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001035040012a01035040012d008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f00014080133012b012c008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db202052030340130013103af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f00014080133012e012f008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb02053030340130013100a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc03af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408013301340135000120008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f19902053030240136013700a041297004c4b40000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e04a5134191")
+ .endCell();
+
+ String bocHexWithCrcAndIndex = c.toHex(true, true);
+
+ log.info("hex {}", bocHexWithCrcAndIndex);
+ assertThat(bocHexWithCrcAndIndex)
+ .isEqualTo(
+ "b5ee9c72c20201380001000025e3000000120066007500c0010f015d0176018701bf01f701fd020002050219022002460256027602ab02b802c802e8031d0347034f03550377037c0389039603a803ce03f4045a048004b804ca05300538058a05fc06030615063b064b065206640674067b06cf0723078307c607d207e407f4081a082908300837084908590868086f0876087c088208c508cb08d10914091d092f093f094f0975099b09aa09b109d709de0a040a2a0a3a0a4a0a590a600a670ac70b270b870bd90bff0c250c4b0c5b0c810c910cb70cc70cce0cf40cfb0d210d310d410d510d580d5f0da20dab0dee0df70e3a0e430e530e790e880eae0ed40ee30eea0ef10f170f1e0f2e0f3d0f4c0f530f5a0f610fb31005103c104c105b1081109010b610c510cc10f21118111f1126114c115c116b117a118911901197119e11c411d411e312091218123e12641273127a12a012a712cd12d412fa130a131913281337133e1345134c13721382139113b713dd13eb141114201427144d1454147a148114a714b714c614d414e314ea14f114f81508152e153d15631571159715bd15cc15d315f9161f1626164c1653166316721680168f1696169d16a416b416da1700170e173417421749176f1795179c17a317c917d917e717f51804185b186218691870189618a618f8191e19711997199e19c419cb19f11a171a1e1a2e1a801ad31ada1ae11ae81b3d1b631ba31be51bec1c121c191c741c9a1cc01d151d551d971d9e1da51dac1df01e161e3c1e621e881eb11ed71efd1f581f7e1fc21fc92024207f208620ac20df2112214e21a82203220a22302256229722d82332238c23b223d823df243f24422468248e24b424b924fc250a256225b325e3041011ef55aaffffff11000100020003000401a09bc7a98700000000040101485c0d0000000100ffffffff000000000000000062b2ca7f00001a5752b3ec0000001a5752b3ec042d722c2c0004ee1f01485c09014820d8c400000003000000000000002e00050211b8e48dfb4a0eebb004000600070a8a0443feeb6ff454dd7b749d28f509060c2cc668963d39733cf0e844a2880964938114c1372a89491186e2103aabb88851625b18674a78929f3c357ca78e98824227016e016e0008000904894a33f6fda87b6952196d2ab3a76db9754f0792826c8eb9650220c062ca9afc456d18d616915f7809f0e2a9af47f9b741c0d1567a8cc87eb371ae985206197a819b2896f2c0000a000b000c000d009800001a5752a4a9c401485c0c493505d505412a231566c8853321bb16a8d291b5c091b6b89f7fb0f4470293ca35028007ab3f46b45071071ce8368191ef3b54ec0db1ad04e1ad4b8e254c89e4022581f2cf4db6b621cfac0f967a6e06286bfd4008000e000e001d43b9aca00250775d8011954fc40008245b9023afe2ffffff1100ffffffff000000000000000001485c0c0000000162b2ca7c00001a5752a4a9c401485c0960000f001000110012245b9023afe2ffffff1100ffffffff000000000000000001485c0d0000000162b2ca7f00001a5752b3ec0401485c0960001300140015001601038020001700010201018200180317cca5687735940043b9aca0040019001a001b020120001c001d284801010190c062d880448c7c066d5e7f424d3c899b5b7618f97ecf7c54e38dd4c8b25a000122138207cb3d36dad8873eb0001e012b22330000000000000000ffffffffffffffff81f2cf4db6b621cfa828012b001f2455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a27d088a237e00200131002100220111000000000000000050002322138207cb3d37031435feb00024012b22330000000000000000ffffffffffffffff81f2cf4dc0c50d7fa828012b001f2455cc26aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac23224a2820ffffb7e00190131002500220247a00d9b55c39995181e04934d61a2baf0f5aa35a4e059bb4c55f309227aee336c95200610012c012d02034040002600270103d0400028003fb000000000400000000000000021dcd650010ee6b280087735940043b9aca00401015000290015be000003bcb355ab466ad00015bfffffffbcbd0efda563d023130103e59e9b6d6c439f58002a002b012b28480101173ea53338a2f89f176ad2d6129a90977e8c56e325d959bdf92b7171d9070911000428480101553f5abf307236fc3eae3b9829943a1b4f895241d07cd2f7fb7106f492a37a4f000222bf000193a937010004ee1f6000034aea52acf0880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be002c002d28480101b20e36a3b36a4cdee601106c642e90718b0a58daf200753dbb3189f956b494b60001006bb0400000000000000000a42e0680000d2ba95254e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc023130103e59e9b818a1aff58002e002b012b22bf000193a937010004ee1f6000034aea549538880000d29bdd9fc8200a4106c7d59f0086cde0d05cc99baaddf7a9c5b890aa805e8c96680523524fb4a5a99ff81257e3afd8721409a6a81f22735c0e33400aeb6e7f0a1a5185bb3a3c9deba278be002f003002037604003100320297bf955555555555555555555555555555555555555555555555555555555555555502aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad000000695d4acfb00c10033003401db500cc320a00a42e0680000d2ba95254e000000d2ba95254e0850d8a46888759f13cd17310cd46d6e9e821d494944c72f183259690def72a1a5a15278d7e6ad8df707446b0df93af44f8aca68c8a6c286121567c529e8dd7088800027779c00000000000000000a42e04b159653da0035020161012c012d2313010217dee532a659571800360037012b284801013c24d22fb5e19c4c445ed87fd2f21aab05a39914a685834b6a1d0cf004891430016b2213c3c0000695d4a559e12000380039220120003a003b2313010217dee546c430b718003c003d012b2213c3c0000695d4a92a71200038003e220120003f00400397beb33333333333333333333333333333333333333333333333333333333333333029999999999999999999999999999999999999999999999999999999999999999cf80000695d4acfb000400041004200430397be8517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf029a28be3defa8c3e2ad7a7c5b0fee190ac463d5bb46f71258036f9488322c6be7cf80000695d4acfb0004000440045004603af7555555555555555555555555555555555555555555555555555555555555555500001a5752b3ec03e61d8ae448b107bedb05342fdb82a5e63dc40bf82d3f4db9d66f6f11005abdfd00001a5752a4a9c362b2ca7f0001408012e00340047008272010f24a4cdf5d7c0f8497739ff731e5175cd3f10069c838b4445caf821c4cf4e6ca0ffac88c5927e1becceb3949e8aa3388a1cd3e5405413900cce63ed93f199001343b9aca0021dcd650020231301014dad03493b489b5800480049012b22130100ca31e1e96b10bbc8004a004b28480101258d602eaa21d621634dcf86692aeae308ff3cf888f3edafc6a5b21848d732f900182211480000d2ba94ab3c24004c004d220120004e004f22012000500051231301014dad035d591ffb5800520053012b22130100ca31e1e96b10bbc80054004b2211480000d2ba95254e24004c00552201200056004f2201200057005101035040005801034040012d0082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b7e1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d23701035040005901035040005a008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd75f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb0205303024005b01372313010069341ebbd1eac978005c005d012b22130100e478e48d695dd1e8005e005f2213010058b525488168d9080060006128480101256e458a2d80eecd799b387aa5e91b156bc583f9f095f0fcea7b2d73cb3d726e0026284801014b01ebcf5425735461aa8b83bae89e70fa21e95d2ee85e57b05dad26c1d6d5300016221162000034aea52acf090062006322012000640065284801014356834a429921990e0c978c594d3d7734b7cd96dd66c057aa786ccf4f5a258c000e22012000660067284801012a31c24fa32c257e4912fc641c19d5679a5359fb89020b7fe030e3b104be570f000e28480101afccd0b5d74a6fad14fcb8652b14eea3d3d7ad0226c0961aa9992a1f0c2997c1002322130100e478e4a1873531e8005e00682213010058b525488168d90800600069221162000034aea54953890062006a220120006b0065220120006c006703af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0173fbaacf95f228dbc76f4133f3d46592655ec11b5513922ce50a36dba9abf28100001a5752a4a9c262b2ca7f0001408012e006d006e03af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec01e9e3a299d1299d62fbb7c3d6a82c2ebb702db967b370dd959fc60bf87be1755500001a5752a4a9c362b2ca7f0001408012e006f007003af734517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf00001a5752b3ec0372f7b0548efa5c07fc58c3051d80c9f650039701e834559eabe556240894c83400001a5752b3ec0162b2ca7f0001408012e0071007200a041297004c4b40000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002848010199c07995a55880a2a97e2d1c235a7dfb6b24666e40158c97f7fafb18707d9e01002228480101a40b78c2e39cf3658d455ad29ca1f2bf10cdb87248a8d293e625f4ff821d3ffe0019284801016161938bf6cbbbea618b3c71572f00d9392090c9f15e70d1ef9080503b42229c002322130100cae245aca13c29a8007300742848010107983f5e2ef514d990c22499abec1ccb4fd222f7489b7febb2044fe24e39318d001a221301003e470bb61928028800750076284801019523e298bdc5f691343d880493b8a6451f3f941c985a7c4a167ba0e1cdb4599600132213c480000d2ba94ab3c240007700782201200079007a2848010134a3bc4b6c672bb70328222747df9434117f6ee5953dc9447b945d42862c585f000c220120007b007c28480101f8b1119a3146337e09b6a8bbd36f93c78f448ea18e0591af0a3726033c7b5345000c22130100cae245c0bf1389a8007d0074221301003e470bb619280288007e00762213c480000d2ba95254e2400077007f22012000800081220120007b00820082724a765bd03de7e557d03d203239641e4570953914b82a806fdbc2fa10f8c5e3b78d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31f020520302400830137008272f46adf2640fb8c30d7d053c9c4084f8daeda7399e261dd404d1578691fcb5bd7b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db2020520303400840085008272b43acc176be3014d5645fa082b16fe872be1c3b8428621bc03e49a5bc0cf7db25f4f3be7c22b3f846e0fc1aa8c5ccb4ed9a7e5acc35369f076448359df9b18eb0205303034008400852213010094b93dc1fd640ba80086008728480101b4d986be6da4a385ebc4d75e7b6864ddae73e6e6431f711cbb3208dfb35945750024221100e1caf7c460aa04680088008928480101d405a7172eafa75f0e67e1b0f52d000222f4399c5d7dda059af11c73faf135a300182848010137844b3a6262ee12ef028d6b8968b779c5be75d93a7dc1838aba9408a360ea42000e2211400000d2ba94ab3c24008a008b220120008c008d220120008e008f2848010136a19e11f370f7b9cf36d83e0cdb68ea6f02ebe02487e3a5ca264a2baa6cd0d8000c220120009000912213010094b93dd61b3b6ba800920093221100e1caf7c460aa0468008800942211400000d2ba95254e24008a00952201200096008d220120008e00972201200098009100a0431b9004c4b4000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a042665004c4b400000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069600000009600000004000600000000000519ae84f17b8f8b22026a975ff55f1ab19fde4a768744d2178dfa63bb533e107a409026bc221301007e0f065474a371880099009a221100f6aa376d88c09a28009b009c2848010189afd21725efab9748b8b6ef6dcfd892c9f647a939c73831d4f1dbc786b9ec690016221100e1c6b40db0b41708009d009e28480101ce05363b2c4d123e6af0a2c3edbe06e05e4b55117180062e69624e00f64ae2a7000c22110000034aea52acf090009f00a022012000a100a2284801016b54a1df1176e4608f655e63cf51ff3deec889dcf9229cceb100c32a12d3288e000928480101d2fc779057e6ebb9d8413f029999ad6426bdc42b841578ba4f1302565b3bb3b8000a22012000a300a422012000a500a6284801015fb934835d63076694fbd0ca2191f6219a2017bfee8370008d48729374463b93000b221301007e0f0668927ad188009900a7221100f6aa376d88c09a2800a8009c221100e1c6b40db0b4170800a9009e22110000034aea54953890009f00aa22012000ab00a222012000ac00a422012000ad00a6284801012234afc4f9aa54d36f371ab851ada0446bbab533a15161ca6f4afd77d69d89520012221301007e00c5c8df3ca98800ae00af221100f6a49bd9e38f392800b000b128480101c6100af2020b8ed627f48ec736f2cfa52e095b513479105a028f40e152c9586f0016221100e11e73378043a20800b200b3284801012b525231768abd4f2fc0464b8e5be011db5ebdb3a1ed6d61eebf186e8dc197ba001528480101aad2366c8dcad53c429dfbea0cd1c479cc6b989ef981314b1382fd58de7c8afd000b22110000034aea52acf09000b400b522012000b600b7284801015d23a19db6638756e655885d66767ab5ca9c7044b8d6263da018629630bda2a5000822012000b800b92848010166827a7a38f195b34597175fc019e4dc80b6f714f0b51a2369270417305747e1000922012000ba00bb28480101d98bd6122c9ac0cd3bb56dd7127ca09ede8c606fcb15de38baa4b47f7fe51f040009221301007e00c5dcfd14098800ae00bc221100f6a49bd9e38f392800bd00b1221100e11e73378043a20800b200be22110000034aea5495389000b400bf22012000c000b722012000c100b922012000c200bb2848010103f584b35917a807e8a2ec65376c8ed2c6ccecf273ba8cb55dbacfe29a84a6140013221301007e00c226bc22c34800c300c4221100ea59d8cb334c9c0800c500c6284801011e20584a9cf50091fb4dddfe4d2e98f8c879438cc843e24314604b44cb6f7858001228480101b81fe7658c95d0f97eabe671d2b147f2da908bd4813119d475886872068353200014220f00c021469bdc540800c700c8284801015af875e56b2c21860165b66c58883a203401027a269c372667df9eb27b476259000a2212cc00001a575295678400c900ca22012000cb00cc284801014e72d9d9406765832f323a591918a7b8cdb1acdbcbdeab3f2bcbc4c93fbc1f99000922012000cd00ce28480101cef4f4863fe525820f12b7c79bbc2276d0fdb7e300c55d70d809bfdef1e801f5000722012000cf00d0284801011bd2caf8f41ad27d29c9c0d34e01bc0457050b3e5cce1754ec06a5fef2e688af0008221301007e00c23ad9fa234800d100c4221100ea59d8cb334c9c0800d200c6220f00c021469bdc540800d300c82212cc00001a5752a4a9c400c900d422012000d500cc22012000cd00d622012000cf00d7221301007dfeec4e6f29f34800d800d928480101735d9d54218cf8454bd30b70a53ae0de4219178b78f457b844f50dc11b5719f00013221100ea59cff28ceadfc800da00db2848010141d3f8101f423d32b2cdb23d98d0f34f83db175e427605500093f4a31cd8df03000b2210680c02141293542200dc00dd284801018916fffc4697fa71347a36028c9c0ab1b54bf2c278f9171f7837101f990665f20011284801013eb4f392dec5652b5e530a0922b5533c816263d761c0775349d4265cd85bd76100032211400000d2ba94ab3c24012f013022012000de00df2848010138b4953e5411a45c37899ce1936780cec049051f53d3a16bad52de7c7609476e000628480101c76ad89ed6929dfcdcbaaa4f5720981c659c02b305514971803760369f701765000622012000e000e128480101d3073a3cbcbb4a650ca94a719590f8460e5f51d6081fcea01e7e51cfbc60a444000622012000e200e3221301007dfeec628d01534800e400d9221100ea59cff28ceadfc800da00e52210680c02141293542200dc00e622110000034aea5495389000e700e822012000e900df22012000e000ea22012000eb00e3221301007dfeec4db9634c6800ec00ed284801017cc50a2d61f5f6979db4641a9451edade1fb234111081a83333a2b03ce9dc373000a28480101e2bc337ece7f3af5171f3265f44c612fc2fcba87f4b4563dc7fdc3285dd6a44d0008220f00c108ba716ce98800ee00ef28480101a248b81f22333cc28f6b6744e4298aefcd9b6f2dc5d7c99e1da1b28c37f3aa0c0007220f00c021383dbc6da800f000f122012000f200f328480101a9cf62c6624684d83857a4381d9d525efe2e2d5bafd839d9893f80beeaa43f7000052848010138e8cca37bb83b168adc87a7037092d90c734af074cace4ae828e0cf82b67b30000422012000f400f522012000f600f728480101ab9eb8899afa5c8bb9368d94781cf3ebb2eac7fb017a2b6133f9bb7b0e5d7b850005221301007dfeec61d73aac6800ec00f8220f00c108ba716ce98800f900ef220f00c021383dbc6da800fa00f122110000034aea52acf090012f013000a9d00000695d4a92a710000034aea54953880290b818926a0baa0a8254462acd910a6643762d51a5236b81236d713eff61e88e0527946a05000f567e8d68a0e20e39d06d0323de76a9d81b635a09c35a971c4a9913c922012000fb00f322012000fc00f522012000f600fd2848010110cac8bd77fa246c2bc95d0269759b612312bbc0438ed5eb7dd53116e55e9020000b221350401f7fbb08ed8733f200fe00ff219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f8074f1d14ce894ceb17ddbe1eb5416175db816dcb3d9b86ecacfe305fc3df0baaa80000d2ba95254e1c00100284801018e634c5cb159b3914109244a95171c97fe56c7ad67ec709cce94bb067893af680007219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649cc3b15c891620f7db60a685fb7054bcc7b8817f05a7e9b73acdede2200b57bfa000034aea54953870101284801010143b3d2dd671b2559543155e003f847022e510b3a57afabbca05d4069c327ef000d2201200102010328480101d1a07de28968f21c0c3cfe0e69605731ae68b71969d27dd270f99b40790199040002220120010401052848010150d30f1a3fd6f709f0627934b2b31be081dc25bc52b51a353f850efa09ad224d000228480101664d4a2f536f0763f76857ceb94de20b4fad7e80b85675b3d02cf79a319b467e000122012001060107221350401f7fbb0df4fd0bf2010800ff219bbd62f8f7bea30f8ab5e9f16c3fb8642b118f56ed1bdc49600dbe5220c8b1af9e040c474f800b0df7369fde2be70ee4d2e84a552cab4b035685314de3d2e8e12b8d25aa27ae80000d2ba959f601c00109219dbceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa81804265fa43649c9d338c13843e706c68e2455ed70bbf93820f28a394eec0b616e855fce8e6cac000034aea567d807010a220120010b0103220120010c0105220120010d010721a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd8431e351e0e7f7559f2be451b78ede8267e7a8cb24cabd8236aa272459ca146db75357e502000034aea5495385010e2848010150725eee52e86432f846698a08ac153a67bc9ad9c160130af907c3bef05f29480007236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4a92a7110311d3e017f0010f011001112277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4a92a711804265fa436495d00112011322012001140115284801018d455e04c00fba1289866da39c0793758c8d6a4e41ca2dd5ec2c03c76df76c4200032201200116011700b1bd635fefc47229e53988915685933558fd7303875055c5949d871dc2688df796800000000000000000000000000000000000000000000000000000000c54be8f6000000000000007e0000000e610f41dc000000593a932aa90284801015dc67661a1c1ef1294e875961eea55bea7054c7101bc975ed0aa009be971719a0003284801010f0ee7d20301abe555b4a76a6ada745283de3664ecb09ba794fec4d44db79b68000321a1bcd9999999999999999999999999999999999999999999999999999999999998200fbfdd86b59e3de15e7c728be36b6cb9aa8d1663f3d4c1e962ab20459e6e56ae211a233bc1e24f52000034aea567d8050118236fcff34517c7bdf5187c55af4f8b61fdc321588c7ab768dee24b006df29106458d7cf21881f480000000000000695d4acfb0110311d3e017f0010f011001112277cff5555555555555555555555555555555555555555555555555555555555555555407aec10e79c0000000000000695d4acfb011804265fa436495d00112011322012001190115220120011a0117020120011b011c227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4a92a70e00fbfdd8431e351e16d0011d011e284801017269fb9feb45d719ebdbc3b0816b987bab06f43378dc84dc84d55727905482140002004811fd096c000000000000000000000000000000000000000000000000000000000000000028480101986c49971b96062e1fba4410e27249c8d73b0a9380f7ffd44640167e68b215e800032848010164a43970f2007a1da6d6fc81773cc095d1cc270e81359e471f3b03469abeb7b5000c214900000027cbb9d1062954439a83a91f27835fb9d2e3e798910356650c3c493c946234646840013128480101a54022f5edbf4beba0648deeb1ffc566c63567b51e34ccd918ab339bdedfec3300012848010122863015f2ff93c8dfe54f980440d8b3b2bd946770d126f32325fc9c8e37cb2e000200b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb28f0000000000000021800000014bff7ab78000001718cb2138a02848010160ce52c8bd8ed7f87a7643812f7690467a604fcff9ba1811d065a34a0202d78f0002227bcff333333333333333333333333333333333333333333333333333333333333333340756c14c3f00000000000000695d4acfb00e00fbfdd86b59e3de16d0011d011f0201480120012100b1bd24ee866df51003f6b534d22c17f58175a943d247f628a0d355a187e86e73bd18acb16cc00000000000002a80000001dd3de5878000001dde15bcd058acb29fc000000000000021c0000001814ffc698000001752c06e7e2000b1bd1148769c03366e79fc451b06179e791641db92df408fd46e6ffe7ad24d90a90000000000000000000000000000000000000000000000000000000018a8fe848000000000000014000000006740cdc84000000b659904b9a002012001220123284801016217f872c99fafcb870f2c11a362f59339be95095f70d00b9cff2f6dcd69d3dd000e2355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b0124012501262355ec05b6c5a0ba9cc563f4263b03448b2038580c84db168a6ea499c5ee5d19ddadc8351566240da1dbc38a3b0124012501270073de48c56594fe000000000290b818000004b380fb4ef8000090e500f4af24c56594fe00000000153ae540000004efd6476f22000098db0ac6ce1f00b0bc914560076a5a3e2f68770608073c7920cd095fd22f6624cdc5631150352c9400000000000000000000000000000000000000000000000000000000629df4ce000000000000004000000004a9d9195a0000002b5c8e819300b1bce1814fe876c4b4657ef4585f2f9b9158201e2fc77698c43e68104b88fe4ab2314e7cf70000000000000066800000039c368aef00000040a8c4d343b14e7b67800000000000003b000000040b2e294300000028134825e0c00201580128012928480101fb16d1ca45ecb8d4d1f6b1ac903c630cc06f78334bc9b84bf30585e9422cb887000b284801018f1bd34960aa509ff15ef8c648fdcb942bb7a6c14bda5d4988792ce1c7800bee00062179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d8313797763b95f20012a2179a062b1fa1362b37a13000080001d81a245901c2c06426d8b4537524ce2f72e8ceed6e41a8ab31206d0ede1c51dc00ebe70af3ef33d831379c7db16df20012a00afbc6d1a11a99e030e7005cac69de1a3cdeea9807743355fbf293f897e485ac868c54bf1b80000000000000124000000091627b10a000000bd5670281ec54bf2a8000000000000011400000006eaf842ee000000a8472576d100afbc6f013e1c5535e8ff36e8381a2acf51990fd66e35d30a40c32f50336512de48c56594fe00000000000001440000000ce66b410a000000d9c852602cc565938800000000000000d40000000de9bcb146000000935ab614cd28480101e9988188b13457c31092fcc241e6b801ab7dc39b30a0923557a193630fef257f000a28480101a5a7d24057d8643b2527709d986cda3846adcb3eddc32d28ec21f69e17dbaaef00010106460600013503af7333333333333333333333333333333333333333333333333333333333333333300001a5752b3ec0246660377de4bc319a5038b872892ad701fa6a7f2783ecefd07a68cb4fe32f8b700001a5752b3ec0162b2ca7f0001408013201330134000120284801016e527b5263548e810db4a6e4a1f87c5c20d1c7859c8a5e2113127c954400e7b900012848010192f515d5126f2a2fe83d0204780eb95ac49143dae652a6a618f650997621e09a000128480101b4ff459f14a389ff7d6ea967ec8d5329f3cff84a787a7c1fcb6e3d447b6175e500100101a001350082728d942e903175e0ffe9857660057e1e7e904397d1bd95e61a0dc318aaabb1b31fe1cb96b8a440f43d5cc8d5334f00711345b647d43e5837cf367741c70934d237020f0409283baec018110136013700ab69fe00000000000000000000000000000000000000000000000000000000000000013fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd283baec0000000034aea567d800c56594fe40009e42614c107ac000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000012d452da449e50b8cf7dd27861f146122afe1b546bb8b70fc8216f0c614139f8e046120c1e7");
+
+ String hash = Utils.bytesToHex(c.getHash());
+ log.info("hash {}", hash);
+ assertThat(hash)
+ .isEqualTo("bf76eed0ac2f54e30c93c36e587a6dacd4526f45dcbf01a476c149f1991cb78a"); // works
+ }
}
diff --git a/emulator/src/main/java/org/ton/java/emulator/tvm/TvmEmulator.java b/emulator/src/main/java/org/ton/java/emulator/tvm/TvmEmulator.java
index 1840be50..888b3ffc 100644
--- a/emulator/src/main/java/org/ton/java/emulator/tvm/TvmEmulator.java
+++ b/emulator/src/main/java/org/ton/java/emulator/tvm/TvmEmulator.java
@@ -25,7 +25,7 @@ public class TvmEmulator {
* If not specified then tries to find emulator in system folder, more info here
*/
- private String pathToEmulatorSharedLib;
+ public String pathToEmulatorSharedLib;
private final TvmEmulatorI tvmEmulatorI;
private final long tvmEmulator;
diff --git a/emulator/src/main/java/org/ton/java/emulator/tx/TxEmulator.java b/emulator/src/main/java/org/ton/java/emulator/tx/TxEmulator.java
index b73f0c1f..5c7d9816 100644
--- a/emulator/src/main/java/org/ton/java/emulator/tx/TxEmulator.java
+++ b/emulator/src/main/java/org/ton/java/emulator/tx/TxEmulator.java
@@ -25,7 +25,7 @@
@Builder
public class TxEmulator {
- private String pathToEmulatorSharedLib;
+ public String pathToEmulatorSharedLib;
private final TxEmulatorI txEmulatorI;
private final long txEmulator;
private TxEmulatorConfig configType;
diff --git a/fift/src/main/java/org/ton/java/fift/FiftRunner.java b/fift/src/main/java/org/ton/java/fift/FiftRunner.java
index 52001d6d..aa0ec5e7 100644
--- a/fift/src/main/java/org/ton/java/fift/FiftRunner.java
+++ b/fift/src/main/java/org/ton/java/fift/FiftRunner.java
@@ -16,9 +16,9 @@
public class FiftRunner {
String fiftAsmLibraryPath;
String fiftSmartcontLibraryPath;
- String fiftExecutablePath;
+ public String fiftExecutablePath;
- static String fiftExecutable = "";
+ public static String fiftExecutable = "";
public static class FiftRunnerBuilder {}
@@ -137,4 +137,16 @@ public String runStdIn(String workdir, String stdin) {
return null;
}
}
+
+ public String getLibsPath() {
+ if (Utils.getOS() == Utils.OS.WINDOWS) {
+ return fiftAsmLibraryPath + "@" + fiftSmartcontLibraryPath;
+ } else {
+ return fiftAsmLibraryPath + ":" + fiftSmartcontLibraryPath;
+ }
+ }
+
+ public String getFiftPath() {
+ return Utils.detectAbsolutePath("fift", false);
+ }
}
diff --git a/func/src/main/java/org/ton/java/func/FuncRunner.java b/func/src/main/java/org/ton/java/func/FuncRunner.java
index 7e7dd3f8..3f867014 100644
--- a/func/src/main/java/org/ton/java/func/FuncRunner.java
+++ b/func/src/main/java/org/ton/java/func/FuncRunner.java
@@ -11,9 +11,9 @@
@Slf4j
public class FuncRunner {
- String funcExecutablePath;
+ public String funcExecutablePath;
- static String funcExecutable = "";
+ public static String funcExecutable = "";
public static class FuncRunnerBuilder {}
@@ -63,4 +63,8 @@ public String run(String workdir, String... params) {
return "";
}
+
+ public String getFuncPath() {
+ return Utils.detectAbsolutePath("func", false);
+ }
}
diff --git a/pom.xml b/pom.xml
index 3ea29b3a..876b6827 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,7 @@