create-stylus-ide 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/Readme.MD +1515 -0
  2. package/cli.js +28 -0
  3. package/frontend/.vscode/settings.json +9 -0
  4. package/frontend/app/api/chat/route.ts +101 -0
  5. package/frontend/app/api/check-setup/route.ts +93 -0
  6. package/frontend/app/api/cleanup/route.ts +14 -0
  7. package/frontend/app/api/compile/route.ts +95 -0
  8. package/frontend/app/api/compile-stream/route.ts +98 -0
  9. package/frontend/app/api/complete/route.ts +86 -0
  10. package/frontend/app/api/deploy/route.ts +118 -0
  11. package/frontend/app/api/export-abi/route.ts +58 -0
  12. package/frontend/app/favicon.ico +0 -0
  13. package/frontend/app/globals.css +177 -0
  14. package/frontend/app/layout.tsx +29 -0
  15. package/frontend/app/ml/page.tsx +694 -0
  16. package/frontend/app/page.tsx +1132 -0
  17. package/frontend/app/providers.tsx +18 -0
  18. package/frontend/app/qlearning/page.tsx +188 -0
  19. package/frontend/app/raytracing/page.tsx +268 -0
  20. package/frontend/components/abi/ABIDialog.tsx +132 -0
  21. package/frontend/components/ai/AICompletionPopup.tsx +76 -0
  22. package/frontend/components/ai/ChatPanel.tsx +292 -0
  23. package/frontend/components/ai/QuickActions.tsx +128 -0
  24. package/frontend/components/blockchain/BlockchainContractBanner.tsx +64 -0
  25. package/frontend/components/blockchain/BlockchainLoadingDialog.tsx +188 -0
  26. package/frontend/components/deploy/DeployDialog.tsx +334 -0
  27. package/frontend/components/editor/FileTabs.tsx +181 -0
  28. package/frontend/components/editor/MonacoEditor.tsx +306 -0
  29. package/frontend/components/file-tree/ContextMenu.tsx +110 -0
  30. package/frontend/components/file-tree/DeleteConfirmDialog.tsx +61 -0
  31. package/frontend/components/file-tree/FileInputDialog.tsx +97 -0
  32. package/frontend/components/file-tree/FileNode.tsx +60 -0
  33. package/frontend/components/file-tree/FileTree.tsx +259 -0
  34. package/frontend/components/file-tree/FileTreeSkeleton.tsx +26 -0
  35. package/frontend/components/file-tree/FolderNode.tsx +105 -0
  36. package/frontend/components/github/GitHubLoadingDialog.tsx +201 -0
  37. package/frontend/components/github/GitHubMetadataBanner.tsx +61 -0
  38. package/frontend/components/github/LoadFromGitHubDialog.tsx +125 -0
  39. package/frontend/components/github/URLCopyButton.tsx +60 -0
  40. package/frontend/components/interact/ContractInteraction.tsx +323 -0
  41. package/frontend/components/interact/ContractPlaceholder.tsx +41 -0
  42. package/frontend/components/orbit/BenchmarkDialog.tsx +342 -0
  43. package/frontend/components/orbit/OrbitExplorer.tsx +273 -0
  44. package/frontend/components/project/ProjectActions.tsx +176 -0
  45. package/frontend/components/q-learning/ContractConfig.tsx +172 -0
  46. package/frontend/components/q-learning/MazeGrid.tsx +346 -0
  47. package/frontend/components/q-learning/PathAnimation.tsx +384 -0
  48. package/frontend/components/q-learning/QTableHeatmap.tsx +300 -0
  49. package/frontend/components/q-learning/TrainingForm.tsx +349 -0
  50. package/frontend/components/ray-tracing/ContractConfig.tsx +245 -0
  51. package/frontend/components/ray-tracing/MintingForm.tsx +280 -0
  52. package/frontend/components/ray-tracing/RenderCanvas.tsx +228 -0
  53. package/frontend/components/ray-tracing/RenderingPanel.tsx +259 -0
  54. package/frontend/components/ray-tracing/StyleControls.tsx +217 -0
  55. package/frontend/components/setup/SetupGuide.tsx +290 -0
  56. package/frontend/components/ui/KeyboardShortcutHint.tsx +74 -0
  57. package/frontend/components/ui/alert-dialog.tsx +157 -0
  58. package/frontend/components/ui/alert.tsx +66 -0
  59. package/frontend/components/ui/badge.tsx +46 -0
  60. package/frontend/components/ui/button.tsx +62 -0
  61. package/frontend/components/ui/card.tsx +92 -0
  62. package/frontend/components/ui/context-menu.tsx +252 -0
  63. package/frontend/components/ui/dialog.tsx +143 -0
  64. package/frontend/components/ui/dropdown-menu.tsx +257 -0
  65. package/frontend/components/ui/input.tsx +21 -0
  66. package/frontend/components/ui/label.tsx +24 -0
  67. package/frontend/components/ui/progress.tsx +31 -0
  68. package/frontend/components/ui/scroll-area.tsx +58 -0
  69. package/frontend/components/ui/select.tsx +190 -0
  70. package/frontend/components/ui/separator.tsx +28 -0
  71. package/frontend/components/ui/sheet.tsx +139 -0
  72. package/frontend/components/ui/skeleton.tsx +13 -0
  73. package/frontend/components/ui/slider.tsx +63 -0
  74. package/frontend/components/ui/sonner.tsx +40 -0
  75. package/frontend/components/ui/tabs.tsx +66 -0
  76. package/frontend/components/ui/textarea.tsx +18 -0
  77. package/frontend/components/wallet/ConnectButton.tsx +167 -0
  78. package/frontend/components/wallet/FaucetButton.tsx +256 -0
  79. package/frontend/components.json +22 -0
  80. package/frontend/eslint.config.mjs +18 -0
  81. package/frontend/hooks/useAICompletion.ts +75 -0
  82. package/frontend/hooks/useBlockchainLoader.ts +58 -0
  83. package/frontend/hooks/useChats.ts +137 -0
  84. package/frontend/hooks/useCompilation.ts +173 -0
  85. package/frontend/hooks/useFileTabs.ts +178 -0
  86. package/frontend/hooks/useGitHubLoader.ts +50 -0
  87. package/frontend/hooks/useKeyboardShortcuts.ts +47 -0
  88. package/frontend/hooks/usePanelState.ts +115 -0
  89. package/frontend/hooks/useProjectState.ts +276 -0
  90. package/frontend/hooks/useResponsive.ts +29 -0
  91. package/frontend/lib/abi-parser.ts +58 -0
  92. package/frontend/lib/blockchain-api.ts +374 -0
  93. package/frontend/lib/blockchain-explorers.ts +75 -0
  94. package/frontend/lib/blockchain-loader.ts +112 -0
  95. package/frontend/lib/cargo-template.ts +64 -0
  96. package/frontend/lib/compilation.ts +529 -0
  97. package/frontend/lib/constants.ts +31 -0
  98. package/frontend/lib/deployment.ts +176 -0
  99. package/frontend/lib/file-utils.ts +83 -0
  100. package/frontend/lib/github-api.ts +246 -0
  101. package/frontend/lib/github-loader.ts +369 -0
  102. package/frontend/lib/ml-contract-template.txt +900 -0
  103. package/frontend/lib/orbit-chains.ts +181 -0
  104. package/frontend/lib/output-formatter.ts +68 -0
  105. package/frontend/lib/project-manager.ts +632 -0
  106. package/frontend/lib/ray-tracing-abi.ts +206 -0
  107. package/frontend/lib/storage.ts +189 -0
  108. package/frontend/lib/templates.ts +1662 -0
  109. package/frontend/lib/url-parser.ts +188 -0
  110. package/frontend/lib/utils.ts +6 -0
  111. package/frontend/lib/wagmi-config.ts +24 -0
  112. package/frontend/next.config.ts +7 -0
  113. package/frontend/package-lock.json +16259 -0
  114. package/frontend/package.json +60 -0
  115. package/frontend/postcss.config.mjs +7 -0
  116. package/frontend/public/file.svg +1 -0
  117. package/frontend/public/globe.svg +1 -0
  118. package/frontend/public/ml-weights/.gitkeep +0 -0
  119. package/frontend/public/ml-weights/model.pkl +0 -0
  120. package/frontend/public/ml-weights/model_weights.json +27102 -0
  121. package/frontend/public/ml-weights/test_samples.json +7888 -0
  122. package/frontend/public/next.svg +1 -0
  123. package/frontend/public/vercel.svg +1 -0
  124. package/frontend/public/window.svg +1 -0
  125. package/frontend/scripts/check-env.js +52 -0
  126. package/frontend/scripts/setup.js +285 -0
  127. package/frontend/tailwind.config.ts +64 -0
  128. package/frontend/tsconfig.json +34 -0
  129. package/frontend/types/blockchain.ts +63 -0
  130. package/frontend/types/github.ts +54 -0
  131. package/frontend/types/project.ts +106 -0
  132. package/ml-training/README.md +56 -0
  133. package/ml-training/train_tiny_model.py +325 -0
  134. package/ml-training/update_template.py +59 -0
  135. package/package.json +30 -0
@@ -0,0 +1,900 @@
1
+ // REAL ML Inference - MNIST (Tiny Model)
2
+ #![cfg_attr(not(feature = "export-abi"), no_main)]
3
+ extern crate alloc;
4
+
5
+ use stylus_sdk::{alloy_primitives::U256, prelude::*, alloy_sol_types::sol};
6
+ use alloc::vec::Vec;
7
+
8
+ const INPUT_SIZE: usize = 784;
9
+ const HIDDEN_SIZE: usize = 10;
10
+ const OUTPUT_SIZE: usize = 10;
11
+ const SCALE: i64 = 10000;
12
+
13
+ // TRAINED WEIGHTS (Fixed-point scaled by 10000)
14
+ // Model accuracy: 92.65%
15
+
16
+ const WEIGHTS_INPUT_HIDDEN: [[i64; 10]; 784] = [
17
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
18
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
19
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
20
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
21
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
22
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
23
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
24
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
25
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
26
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
27
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
28
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
29
+ [-8, 12, -21, 0, -23, 0, 345, 83, -9, 0],
30
+ [77, -29, -31, 0, -39, 0, 909, 214, -75, 5],
31
+ [64, 0, 47, 0, 38, 0, 0, -48, -55, 0],
32
+ [1, 0, 1, 0, 0, 0, 0, -2, 0, 0],
33
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
34
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
35
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
36
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
37
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
38
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
39
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
40
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
41
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
42
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
43
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
44
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
45
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
46
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
47
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
48
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
49
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
50
+ [16, 0, -1, 0, -9, -14, 32, -3, 0, 0],
51
+ [5471, -364, -864, 0, -4197, -5826, 7328, 265, 0, 0],
52
+ [6770, -445, -1417, 0, -5658, -6472, 7264, 416, 39, 0],
53
+ [3760, -15, -110, 0, -2109, -1192, 5794, -471, 1488, 0],
54
+ [2247, -74, -52, 26, -1053, -656, 5299, -207, 531, 98],
55
+ [1924, -57, -137, 53, -1188, -827, 3898, 24, 164, 613],
56
+ [-191, 173, -1022, 91, -869, -1678, 4159, 3234, -193, 303],
57
+ [2351, 27, -3148, 73, -4438, -6291, 8957, 6104, 407, 56],
58
+ [769, -122, -2378, -158, -3027, -4955, 8009, 5786, 35, -686],
59
+ [6122, -1947, -5112, 5362, -7715, -10193, 11936, 1228, 5728, -1228],
60
+ [7779, -890, 8349, 4661, -12044, -1075, 12851, -7594, 12027, -80],
61
+ [8521, -3272, 13845, -460, -9778, 563, 13697, -12895, 10167, 9498],
62
+ [5787, 403, 11952, 0, -11245, 1764, 11654, -9457, 7903, 4596],
63
+ [734, -98, -1191, 0, -657, -1866, 4551, 3420, -434, -1],
64
+ [6693, -880, -2817, -132, -5936, -2204, 8441, 4848, 2593, 0],
65
+ [5525, -183, -1829, -464, -4522, -1988, 7378, 3896, 1202, 0],
66
+ [-110, 66, -164, -119, -114, -172, 395, 499, -72, 0],
67
+ [2907, -574, -63, 0, -1657, -2907, 4958, -221, -43, 1303],
68
+ [3593, -855, -4, 0, -2393, -3712, 4675, -653, 0, 1686],
69
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
70
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
71
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
72
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
73
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
74
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
75
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
76
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
77
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
78
+ [54, -2, -76, -198, -97, -46, 485, 264, -1, 0],
79
+ [4947, -434, -323, 286, -2847, -4958, 6946, 1275, 599, 2661],
80
+ [11407, 1319, 3473, 3302, -10649, -8074, 12103, -4005, 8367, 6337],
81
+ [11055, -8684, 5045, -5220, 1069, -7029, 13289, 1871, -5309, 7324],
82
+ [2475, -6032, 3161, -2191, 2464, -9881, 11505, 4938, -9672, -7806],
83
+ [2246, -9285, 7123, 5180, -2977, -6656, 7369, 4096, -896, -6711],
84
+ [4129, -10204, 10577, 5374, 107, -5184, 2048, 1354, 1990, -1705],
85
+ [3876, -610, 7103, 7849, -1091, -1105, -2992, -1704, 7006, -4622],
86
+ [12968, -3725, 1951, 6855, 1568, -12718, -1582, -3447, 3021, -2792],
87
+ [14148, -14342, 3615, -319, 251, -15642, 10108, -1031, -1031, 1597],
88
+ [7054, -2154, -6565, 6664, -3278, -11053, 3367, 1042, 5222, -2725],
89
+ [3653, -6453, -4012, 2880, 328, -3729, -28, -611, -2186, -3339],
90
+ [-2087, -1181, -382, -187, 4686, -1605, 8435, 5565, -13793, -1075],
91
+ [-2156, 7946, -9738, 6398, -9305, 3344, 8820, 4895, -5907, 4755],
92
+ [9026, 5277, -8177, 676, -7525, -321, 10609, 8918, 2705, -10514],
93
+ [9364, -2245, -3713, 461, -509, -2051, 2691, 3037, 540, -8499],
94
+ [3095, -18682, 5287, -2414, 6421, -6406, -174, 1479, -1325, -4543],
95
+ [139, -11857, -4785, -918, -377, -5464, 3331, 8442, 3708, 630],
96
+ [4088, -1714, -3223, -294, -4722, -7013, 9436, 4408, 162, 1481],
97
+ [157, 10, -2929, -8, -2796, -5584, 6787, 5818, 0, 0],
98
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
99
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
100
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
101
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
102
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
103
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
104
+ [494, -182, -26, 0, -199, -406, 1255, -1, 55, 0],
105
+ [-9, -1, 2, 0, -18, 11, 10, 6, 20, 0],
106
+ [4824, 5665, -2014, 4413, 311, 2420, -3342, -853, 1292, -7912],
107
+ [3530, 4067, 726, -637, 8711, 331, -3318, 2027, -2939, 569],
108
+ [1771, 4089, -4031, -3532, 8850, -3295, -3633, 10284, 3368, 2091],
109
+ [9329, -4032, 5750, 616, 8324, -9034, 1057, 2697, 3720, 4215],
110
+ [11250, -1782, 4315, 11405, 5527, -4856, 4798, -1317, -2722, -2631],
111
+ [5898, -934, 3519, 5426, -802, -4620, 8710, 157, -1826, -2176],
112
+ [3870, -5036, 9758, -704, -2629, -716, 6088, -524, 2880, -153],
113
+ [8222, 2698, 458, 5503, -3498, -3281, 3109, -3338, 6792, 285],
114
+ [10219, -56, 4297, 2186, -4657, -7323, 8221, -5425, 4904, -2032],
115
+ [2895, -491, 6755, 2287, -2698, -2458, 2222, -3067, 3694, -3466],
116
+ [2130, 1024, 3211, 5033, -3523, -1506, 1890, -1330, 3496, -2464],
117
+ [5244, -422, 4195, 5817, -1030, 672, -2443, -572, 1255, -1152],
118
+ [2884, -2113, 3600, 2669, -4872, -869, -449, 260, 4541, -2571],
119
+ [-4290, 1838, 3990, 91, 2545, -1923, 2104, -1253, -1596, -5272],
120
+ [2579, 5519, -4909, 35, 369, -43, 2321, -1073, -3528, -2972],
121
+ [5524, -237, 5205, 1788, 894, -2421, 2247, -1000, -1214, -6637],
122
+ [-1011, 5660, 7322, 1695, 8938, -3770, 1564, 1434, -8668, 2485],
123
+ [-1958, 7522, -7368, -3467, 7517, -2547, -595, 2658, -2034, -475],
124
+ [2, 5256, -6668, -6111, 4361, 2957, 3016, -1517, -943, 1190],
125
+ [10613, 941, -7267, 5916, 1761, 2817, 9286, -1924, -6064, -5967],
126
+ [5292, -10520, 4568, -5586, -2541, -8622, 7969, 9757, 3051, -609],
127
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
128
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
129
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
130
+ [28, -116, 62, 35, -6, -8, -155, 26, 210, 0],
131
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
132
+ [-2420, 3445, 4797, 7380, -2249, -434, -2606, 477, 6397, -23],
133
+ [3500, 2004, 4007, 10637, -8394, -4969, -3174, 2116, 11194, -2944],
134
+ [15243, -4660, 6779, 3692, -5302, -8319, -9488, 639, -2942, -833],
135
+ [10249, 1198, 2127, 709, -1671, -1997, -3945, -4523, -5280, -4092],
136
+ [-937, 4659, 8336, 2394, -1003, -630, 101, -191, 613, -5846],
137
+ [-1693, 629, 6989, 4966, -2804, -877, -1568, 592, 3704, -900],
138
+ [-1989, -23, 6036, 3131, -1926, -3085, -3191, 1559, 1422, 1918],
139
+ [2981, -1290, 5268, 5133, -1865, -4045, 1135, -3424, 3729, -151],
140
+ [52, 105, 4890, 1978, 850, -443, 2639, -3049, 3861, -1773],
141
+ [2363, 2377, 3374, 2242, 2726, 861, -2600, -1874, 2182, 5169],
142
+ [1189, 4207, -93, -675, -2819, 18, -2227, 1117, 4081, -622],
143
+ [3208, 921, 3582, -57, 211, -2851, 2145, -5656, -995, -1894],
144
+ [-481, 3581, 4099, 1000, -1851, 580, -1148, -4970, -2055, -2735],
145
+ [1266, 924, 1289, 1741, -1901, -4594, -4177, 760, 912, 114],
146
+ [772, -365, 2860, 1162, -4229, -2079, -2307, 286, 905, -721],
147
+ [-246, 2254, 1247, 2318, 428, 1937, -1427, -1847, -1511, -1309],
148
+ [2940, -121, 1466, 885, -3578, -2368, 820, 3251, -59, 477],
149
+ [1446, 297, -774, -85, 2310, -640, 251, 3038, -2716, 1419],
150
+ [406, 1154, 86, 2421, -3868, 350, -364, 4013, -2964, 77],
151
+ [-6729, 4712, 978, 3854, -2323, 3062, -3975, 4269, 3222, -3946],
152
+ [-361, 1388, -3855, -4896, 4709, -973, 2334, 7093, 845, -724],
153
+ [-12021, 5626, 4042, -2085, 8170, 5486, 2834, 2862, -9008, -1190],
154
+ [-8220, 1510, 11048, 11205, 3115, 3853, 9726, -2386, -11872, -9974],
155
+ [-2370, -1697, 3129, 161, -390, -2382, -4498, 4616, 2777, 2361],
156
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
157
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
158
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
159
+ [1661, -501, -1400, 1135, -100, -3546, 25, -4, 5450, 319],
160
+ [881, 451, 2041, 5594, -510, 2723, -790, -429, 7506, -2162],
161
+ [6448, -1592, -3551, 3983, -267, -10107, -455, 8303, -2079, -6115],
162
+ [5743, -8611, 1243, 1713, -3807, -5457, -12449, 8219, -1997, 269],
163
+ [1388, 602, 3883, 3197, -1213, -7506, -7951, 4013, 246, -1427],
164
+ [3280, -107, 2723, 4805, -3692, -322, 1265, -2815, -466, -1176],
165
+ [2335, -4641, 2690, -36, -1724, -974, 3531, -676, -2657, -1553],
166
+ [-2266, 543, -1363, -592, -665, 2608, -1374, 2917, 1039, 2422],
167
+ [1016, 119, 117, 927, 1548, 1795, 715, 1497, 25, -2037],
168
+ [-1829, 218, 4135, -421, 4543, 628, -897, 465, 2109, 378],
169
+ [-397, 1402, 4009, 754, 5020, 84, -2477, 513, 1136, 1217],
170
+ [-800, 1983, 3188, 2577, 845, 2591, 1950, -1683, 2548, 1154],
171
+ [1060, -1052, 2820, -350, 827, -1784, 2376, 755, 1005, 920],
172
+ [956, 1041, 976, 2127, -132, -2405, -1358, 1356, 2844, -1880],
173
+ [266, 1587, 3726, 992, 549, -1524, -730, -1809, -349, 821],
174
+ [-920, 1942, 3439, 853, 1220, -1288, -1100, -1498, -2133, -89],
175
+ [-1593, 1698, 981, 1459, -1723, -235, -226, -1318, -766, -2903],
176
+ [-1597, 1081, 1908, 1280, -2352, -1857, -170, -2467, 2069, -834],
177
+ [-3880, 1631, 3501, 1957, -964, -1193, 193, -939, -3375, 1704],
178
+ [2521, 1259, -97, -286, -1841, -2085, 3875, -472, -3657, 1485],
179
+ [381, 74, -74, 843, -3262, -870, -2214, 735, -4026, -1729],
180
+ [4997, -894, -1363, 533, 4722, -3931, -252, 632, -5016, -2632],
181
+ [-346, 2408, 228, -2735, 5078, -2687, 1997, 8583, -7303, -2912],
182
+ [-8921, 9706, 876, 655, 1236, 6531, 721, -2251, 151, 3915],
183
+ [-7687, 1772, 5420, -4902, 1442, -1962, -7502, 4371, 4869, 4657],
184
+ [-246, -43, 212, 2, -91, -221, -36, 171, 666, 1113],
185
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
186
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
187
+ [-496, 3144, -3555, 4884, -3998, 6369, -1161, 771, 350, -8065],
188
+ [492, 971, 6099, 7761, -3999, 5359, -3365, -3273, 10015, -3045],
189
+ [2404, 8233, -3152, 5101, -996, -4183, 3551, 924, -9629, -7004],
190
+ [4988, 475, 2590, -3855, -7252, -768, -3513, 3074, -10168, -1489],
191
+ [3789, -5589, 7802, -2439, -5144, -2908, -6026, 1933, 572, 892],
192
+ [723, -3694, 3958, 1739, -1106, 2293, 1746, 514, -3938, -3127],
193
+ [2821, -3864, 2217, 1689, -2253, 2362, -2297, 1892, 136, -905],
194
+ [3462, -961, -293, 1776, 3941, 1806, -299, 1473, -184, 928],
195
+ [1205, 188, 586, 1264, 3198, 3798, 2058, -660, 1039, 2413],
196
+ [804, -1188, 57, 1513, 2234, 2829, 1917, -1139, 2228, -680],
197
+ [-1895, 1964, 2530, -921, -1067, 3463, 2438, 1190, 2774, 1373],
198
+ [1000, 1585, 1433, 2494, 254, 2727, 1470, -159, 5115, -683],
199
+ [-1013, 1927, 878, 302, 3497, 3868, 2418, -517, 1962, 521],
200
+ [431, 1411, 2339, -855, 2903, 3476, 4046, -629, 2364, 76],
201
+ [-91, -142, 1276, 397, 2813, 2970, 2557, -519, 5788, 536],
202
+ [-2899, 435, 2754, -63, 4187, 2199, 2946, 147, 1429, 551],
203
+ [1663, -473, -2099, 1013, -244, 832, 653, -3043, 2081, 381],
204
+ [-2654, 616, 1681, -675, -1666, 1284, 898, 681, 163, 1784],
205
+ [-20, 1252, 417, 3100, 465, 923, -243, -1754, -889, -2304],
206
+ [-2796, -3177, 510, -28, -103, 164, -319, 1269, 2615, 1236],
207
+ [-333, -127, -585, -672, -3096, 3242, -2170, -228, 706, -1043],
208
+ [4294, 3580, -472, -2896, 1092, -708, -2844, 122, -8146, 785],
209
+ [6160, 3248, -764, -4076, 2594, -626, 5235, 1657, -5345, -1345],
210
+ [-2763, 9895, 4121, 5307, 3392, 5640, 3260, -1966, 1516, 2323],
211
+ [5910, 7460, -2541, -1328, -1766, 4639, 4903, -5058, 8235, -763],
212
+ [-1800, 4261, -737, -483, -684, -191, 318, -1343, 734, 1945],
213
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
214
+ [9279, -2862, 7700, 7876, -11700, 10234, -8238, -788, -3650, 4422],
215
+ [2675, -2276, -7593, -3006, -10450, 10381, 4554, 7795, 2672, -7357],
216
+ [8924, -214, 6306, 6122, -5909, 5589, -3459, -3351, 4382, 1372],
217
+ [8114, -2534, 6357, 4892, -8515, -2557, -6077, 3739, -1957, 1407],
218
+ [4050, -5355, 9100, 378, -2405, -165, -7661, 959, -3299, 3195],
219
+ [-632, 180, 2449, 1583, -406, 4002, -1396, -575, 1466, -4577],
220
+ [-2438, 195, 831, 476, -3774, 4796, -309, 5110, 789, -1531],
221
+ [1222, 1157, 4263, 603, 5903, 898, 1667, -15, -2698, 1068],
222
+ [-518, 1330, 3300, -774, -674, 4889, 455, 4492, 384, -719],
223
+ [817, 326, 460, -242, 850, 3542, 1917, 1617, -771, 397],
224
+ [-126, -706, -1299, 556, 2367, 4083, 2751, 1917, -1204, 311],
225
+ [-668, -963, -1887, 1894, 1086, 3670, 3427, -457, 2466, 1111],
226
+ [1501, -530, 1224, 39, 3584, 2880, 961, -747, 3099, 1772],
227
+ [2850, 845, -380, 1567, 3211, 4020, 2580, -135, 2497, -827],
228
+ [-2529, -840, 1609, 1450, 4872, 1794, 3663, -411, 5332, 1722],
229
+ [415, 2853, -500, 1488, 3245, 2233, 3376, 1477, 2768, 2143],
230
+ [984, -104, -1243, 742, 1803, 5796, 199, 2298, 1441, -1925],
231
+ [-1118, 995, -475, 873, -848, 4183, 2613, 934, 1465, 1686],
232
+ [215, 1663, -297, 394, -1362, 973, 1248, 725, -691, 1020],
233
+ [959, 1689, -3468, 5, 1453, 2901, 1090, -613, 319, -1793],
234
+ [1327, 1344, -1111, -2067, -2002, 717, 2452, 1020, -2244, 1146],
235
+ [1083, -271, 1274, -4105, -384, 1774, -1991, 1252, -480, 1475],
236
+ [-2442, 5870, -80, -5846, -73, 2547, -3411, -734, -1370, 2598],
237
+ [2736, 4198, 80, -2871, 445, 4657, -327, 3253, -2448, 944],
238
+ [5735, 3558, 7526, 10427, -998, -407, -553, 4667, -1115, -930],
239
+ [8488, 6654, -2453, -2887, -2712, 2707, 299, -1283, 10201, 55],
240
+ [-2805, 4304, 341, -147, -928, -1155, 1601, -2577, -3851, 994],
241
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
242
+ [1798, -7491, -2156, 1308, -5792, 9199, -1148, 5031, 1755, 738],
243
+ [7121, -1170, 2299, -7331, 2436, -2686, 6658, 8944, -7402, 2861],
244
+ [8184, 136, 7900, 1704, 3264, -4105, 2215, 2641, -5205, 5192],
245
+ [-124, -1822, 4051, 799, -1763, -3207, -5940, 7216, -1410, 2739],
246
+ [1753, -4444, 1534, 2049, -526, 3932, -1160, 1521, -3168, -1665],
247
+ [-625, 793, 4862, -357, 1243, 902, 3814, 663, -698, -298],
248
+ [1311, 286, 1975, -1399, 2907, 2201, -2549, 5471, -263, 5414],
249
+ [-61, 3347, 55, 653, 2329, 5999, 1502, 1175, 2348, 2856],
250
+ [1105, 1345, 1608, 339, 1712, 4542, 521, 3031, -2731, 390],
251
+ [1989, -640, 1190, 810, 2183, 1888, -44, 1104, 537, 1160],
252
+ [-271, 641, 2596, 1586, -39, 2742, 92, 1859, -1198, 676],
253
+ [-836, 693, 725, 2479, -3702, 2456, 329, 2373, 2033, 1669],
254
+ [-1189, 1266, 1621, 598, 2670, 314, 1872, 1153, 768, 1583],
255
+ [1714, -471, 620, 2055, 137, 1908, 3202, -14, 4495, -1070],
256
+ [2333, -2475, 970, 423, 1787, 2130, -476, -615, 4044, -811],
257
+ [-3249, 2939, 2280, -796, 1006, 4005, 1758, 516, 2821, 870],
258
+ [1680, 2219, 434, -940, 1199, 2194, -1542, -1971, 3225, -274],
259
+ [-1542, 2624, -54, -2312, -1800, 3037, -683, -716, 2175, 733],
260
+ [1489, 1128, -1182, -2499, 1319, 3097, -2488, -2333, 1006, 547],
261
+ [-1373, 1807, -805, -4427, -66, 3644, -2702, -1803, -956, 1179],
262
+ [-3605, 3741, 371, -4541, 1399, 1230, -2231, -2536, -1421, 351],
263
+ [730, 269, 640, -3518, -2133, 1579, -3564, -4344, -1969, 1203],
264
+ [-4981, 3241, 2219, -9453, 2145, 1460, -3338, -349, -8880, 3760],
265
+ [-7806, 8007, -1535, -1479, 2373, 8733, 1297, -964, -5399, -1559],
266
+ [4589, 10614, -1157, 5970, 4417, 2778, -6262, 2678, 495, 1182],
267
+ [7450, 7063, 136, 1544, -2955, -1329, -1872, 766, 2593, 2434],
268
+ [-386, 607, -143, 0, 175, -229, -52, 63, -661, 439],
269
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
270
+ [2020, -1756, -3725, -243, -2098, 4305, -1291, 2786, 2252, -1865],
271
+ [5115, 5404, 6211, 2543, 3756, -4425, 3232, 921, -7308, 155],
272
+ [765, -152, -657, -770, -2105, 4009, -2790, 5919, 1080, 2229],
273
+ [981, -168, 3362, 3759, -6575, 455, -6716, 4848, 5556, 7350],
274
+ [5388, -5434, 1100, 1508, 1604, 3446, 2621, 940, 1613, 5954],
275
+ [-3367, 3498, -1696, -1820, 3661, 4771, 1577, 2728, -327, 2214],
276
+ [651, 2394, -1127, 183, 590, 3639, 523, 3192, 1517, 3076],
277
+ [-224, 482, -1877, -24, 36, 4102, 102, 3716, 4854, 2169],
278
+ [671, 1189, -540, -303, 1704, 104, 1075, 2605, 846, 3748],
279
+ [-7, 159, -1733, -591, 2794, 4448, 1104, -541, 1248, 2101],
280
+ [-124, 1201, -3009, -1572, 3866, 2660, 2235, -106, -3147, 2662],
281
+ [618, -1474, -3657, -935, -1516, 4104, 3285, -1931, -903, 1964],
282
+ [-1202, 1282, -199, 52, -1326, 1354, -156, 133, 1343, 2670],
283
+ [-1760, -627, -608, 1754, -3015, 3518, 913, -2058, 4717, 1076],
284
+ [351, -2201, -330, 235, 513, -1642, -846, -3133, 4414, -1710],
285
+ [3230, -78, -379, -2209, -4071, 1972, -3548, -1569, 1508, -594],
286
+ [-1339, 703, -708, -2571, 381, 3284, -6946, 19, 1244, 55],
287
+ [1742, -396, 1120, -4820, -2254, 2495, -4966, -3752, 1899, -1719],
288
+ [-982, 1384, 1601, -3070, -656, -199, -5626, -626, 2223, -873],
289
+ [-425, 471, 1267, -637, -1668, 2579, -5766, -1759, 2999, -840],
290
+ [-88, 3342, -1330, -2628, -1220, 2018, -4077, -804, -1200, 1100],
291
+ [-2448, 2102, -1800, 864, -2932, 788, -5917, -1835, -1662, -1672],
292
+ [-486, 2367, 2830, -382, 619, 402, -5658, -3131, -3666, 1374],
293
+ [-7358, 5501, -928, 504, -2994, -1927, 440, 1538, -4849, 3190],
294
+ [-3126, 13036, -1922, 8238, -1696, 3802, -3701, -4880, -3182, 5574],
295
+ [5261, 2604, -3274, -5860, -8281, 10861, -1418, -3564, -3210, 1945],
296
+ [11179, -9043, -1578, 3649, -10066, 11755, -9937, 5457, 6195, -9986],
297
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
298
+ [1401, -1336, -2528, -1983, -1609, 2560, -589, 1712, 1440, -87],
299
+ [3408, 3824, 1777, 3698, -2171, 1893, 2363, 567, -477, -4173],
300
+ [3544, -235, 852, 6007, -2681, 6025, -10927, 743, 6660, -310],
301
+ [-707, 236, 4558, 3442, -4562, 38, -1951, 4342, -1425, 5817],
302
+ [2406, -4897, 1745, 2808, -9, 2767, 4188, -2450, 3755, 5285],
303
+ [794, -943, -1424, 487, 3247, 4576, 366, 2159, -257, 4656],
304
+ [-285, 3525, -1032, 1524, 4078, 4229, 2892, 623, -1014, 5],
305
+ [-160, 1992, -185, 2160, 3567, 2262, 1945, 1375, -2164, 2926],
306
+ [-1870, 1641, 49, 1415, 580, 2744, 4257, 744, -2997, 3892],
307
+ [-3256, 898, -3735, -3204, 2576, 1058, 1774, 1718, -3647, 6424],
308
+ [-5411, -1074, -3230, -41, 2407, 1495, 1113, 160, -3041, 3510],
309
+ [-5546, 2584, -4356, -404, -185, 1455, 302, 178, -3163, 1074],
310
+ [-2128, 1341, -4073, 47, -5462, 5782, 1599, 516, -1310, 1626],
311
+ [-237, 2597, -3442, 1667, -2701, 2035, -194, -2947, 2057, 495],
312
+ [4042, 109, -2773, -1653, -1233, 942, -5825, -1290, 2327, -1795],
313
+ [1557, -978, -2271, -534, -2382, 3976, -5241, -201, 3899, -951],
314
+ [297, -2103, 666, -1303, -3221, -477, -3177, -320, -19, -1766],
315
+ [431, -498, 2137, -56, -719, 1025, -2999, -953, 298, -2539],
316
+ [-2034, 1199, 113, -632, -1596, -822, -3926, 1486, 3598, 1652],
317
+ [1309, -1266, 2345, 719, -1614, -586, -1154, -3371, 1919, -795],
318
+ [-2759, 1215, -924, -1952, -3385, -84, -1282, -1258, 546, 1353],
319
+ [-3129, 496, 4071, -3449, -2895, -557, -2018, -3322, 4814, -1264],
320
+ [261, 4612, 1687, -1014, -3449, 5569, -2290, -4701, -3126, 85],
321
+ [-51, 5919, -144, 976, -2175, 5033, 4135, -2142, -10404, 997],
322
+ [1120, 9346, -5786, 4211, 540, 8935, 2377, -6098, -10483, -1447],
323
+ [-2965, 2964, 63, -9927, -13092, 10634, -4922, 2246, -411, 3769],
324
+ [7841, -6876, 408, 4270, -7838, 12526, -7612, 2293, 3430, -5084],
325
+ [0, -15, 0, 0, -1, 8, 0, 12, 0, 3],
326
+ [386, -1004, -639, -308, -501, 1274, -401, 530, 462, 72],
327
+ [4872, 2391, 2455, -7407, -2587, 503, -40, 6902, -2257, -6337],
328
+ [-175, -4049, 2785, 1582, -5292, 3667, -12646, 10388, -2580, -367],
329
+ [-5602, -844, -1213, 1516, -2555, 4728, -1315, 2539, -2592, 370],
330
+ [502, -891, 278, 638, 719, -2620, 4652, 523, 1275, 4519],
331
+ [111, -1392, -1625, 1355, 2167, 489, 4984, 529, -963, 5039],
332
+ [-3874, -2070, -1525, -585, 1596, 3555, 4303, 2274, -623, 4751],
333
+ [-5141, -1049, 1006, -771, 560, 1663, 3962, 1656, 13, 2336],
334
+ [-7374, -591, -2549, -1631, -670, 2020, 3016, 3236, -1750, 4455],
335
+ [-5562, -1091, -3399, 1111, -1892, 2314, -1730, 3536, -440, 4522],
336
+ [-5884, -1399, -794, 748, -75, -66, 913, -1, -3122, 1157],
337
+ [-4131, -2247, -1828, 2606, -667, -491, -1441, 2435, -3440, 561],
338
+ [-5421, 1741, -2610, 3182, -6557, 1771, 3291, 1807, 2016, -872],
339
+ [-498, 2539, -374, 2201, -1670, 234, -1399, 866, 4017, 318],
340
+ [-1273, 2885, -2488, -1048, 1571, 563, -2819, 2992, 2395, -570],
341
+ [1406, -1187, -3486, 2204, 869, -365, 492, 1817, 1228, 704],
342
+ [-4420, -2058, -281, 418, 1923, 1020, -539, -1113, 806, -601],
343
+ [-1745, -2466, 114, 772, -994, 2008, -183, 709, 2486, -943],
344
+ [-1444, -1574, 1635, 1336, 2288, 690, 1012, -443, 2869, 419],
345
+ [-880, -913, 655, 3100, 1119, -689, -234, -1062, 5235, 739],
346
+ [1264, -4718, -509, -211, -1756, -2027, 2534, 566, 4592, 313],
347
+ [-1463, -4723, 1700, -4803, -822, -3627, -1590, 2242, 7106, 1341],
348
+ [435, 3303, 1540, -16, -2264, 629, 3834, 256, 466, 5050],
349
+ [-4647, 7661, -940, 2692, -883, 3843, 9640, 1449, -12294, 7880],
350
+ [-315, 15453, -5628, 8659, 10013, 5534, -1085, -4365, -11250, 4250],
351
+ [-14152, 20681, -13317, -7149, -4507, 9344, -12766, 2631, 5626, -1611],
352
+ [-142, 493, 1575, 0, 16, 567, 48, -102, -319, 857],
353
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
354
+ [-6739, 1233, 2677, -1327, -3864, 1032, 5718, -3390, 4108, 7],
355
+ [996, -3532, 7257, -8883, -5914, -451, -968, 9102, -2560, 9995],
356
+ [-304, 502, 175, -14081, -2952, 5968, 8891, 5386, 437, 4504],
357
+ [-9120, -5551, -9295, -1879, 5065, 10244, -2328, -5016, 6692, -115],
358
+ [-4600, 3850, -888, -52, 856, -2126, 190, -845, 34, 6814],
359
+ [-8346, -386, -1281, 271, 1232, 618, 3833, 395, -428, 3571],
360
+ [-11070, -1117, -3325, 750, -260, 1507, 1885, 4127, 223, 1488],
361
+ [-5713, -4890, -546, -754, 2138, 35, 2093, 3967, -412, -1231],
362
+ [-6763, -2280, -2329, 975, 126, 679, 1144, 2891, -572, -3224],
363
+ [-5152, 632, 429, 4056, -2575, 2007, 792, -21, -2323, -7183],
364
+ [-3830, -3448, -368, -539, -3355, -570, 993, 3352, -1243, -5573],
365
+ [-4912, 875, 2788, 2869, -6087, -2001, -3409, 2793, -1312, -4175],
366
+ [-1484, 3868, 731, 4601, -3011, -3623, -1249, 4993, -451, -4202],
367
+ [-325, 4450, -754, 2871, 291, -1665, 21, 1338, 4629, 109],
368
+ [-476, 1182, -1058, 3134, 3374, -617, 275, 3511, 84, 256],
369
+ [-2046, -1648, -1539, 3287, 678, 712, -759, 4856, 493, -1138],
370
+ [-5530, -1390, 246, 3527, 1042, 844, 1995, -195, 2650, 349],
371
+ [-2023, -783, -1400, 3463, -2240, 2878, -160, 2507, 2664, 747],
372
+ [-4608, -664, 733, -832, 4192, 4023, -1909, 915, 292, 1756],
373
+ [-4796, 978, 1333, -1672, 2475, 3722, -241, 2312, 1981, 1210],
374
+ [-3367, -2456, 1552, 1013, 1218, -1017, 2871, 1585, 3333, -610],
375
+ [-6260, -458, -3233, 1283, -976, 97, 2024, 3694, 7998, 347],
376
+ [-3626, -2768, 1233, 819, -605, -4032, 6241, 4798, 5068, 3068],
377
+ [-7707, -3483, 8239, -10680, -4407, -7017, 4654, 11496, -2739, 3446],
378
+ [4275, 1324, 9833, 646, 8942, -2160, -6592, -4087, -5289, 5421],
379
+ [2122, 8171, 6098, 2639, -4235, 3280, -11128, -7389, 7191, 5175],
380
+ [6382, -8162, 8174, 0, 715, 6359, 7255, -9480, 8, 9202],
381
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
382
+ [-9625, 3920, 7168, -639, -7741, -3555, 8529, -4129, 6020, 223],
383
+ [-1922, -2230, 5003, -1701, -2235, -3628, -1464, 8079, -2883, 9947],
384
+ [1626, -479, 2960, -3023, 2876, 1649, -1079, -2322, 1669, 3394],
385
+ [-14072, 1236, -6800, -2427, 1325, 7782, -4309, -2581, 2484, -3713],
386
+ [-11983, 2793, -1079, 822, -4721, 506, -2446, 1615, 2362, 347],
387
+ [-12471, -1866, -2869, -82, -2020, -853, 2174, 3149, 538, 859],
388
+ [-7240, -1853, 1043, -840, 177, -1879, 969, 951, -956, -3506],
389
+ [-4717, 1348, -483, -551, 160, -1279, 465, -84, -782, -3098],
390
+ [-3260, -577, 3648, 730, -2960, -1168, 1183, 1940, -483, -3836],
391
+ [-2111, -1937, 2318, 1567, -136, -2374, 1525, -795, 265, -5452],
392
+ [-558, 1336, 632, 722, -103, -2477, -2524, -775, -1261, -5632],
393
+ [1671, 3202, 2668, 1216, 3033, -5048, -208, -409, -3560, -4045],
394
+ [993, 4254, 1640, 1626, 3352, -2509, 203, 81, 1970, 275],
395
+ [3287, 2495, -856, 1976, 1186, 809, -1402, 749, 4231, 993],
396
+ [-2131, 2274, 986, 1085, 3879, -3247, -1630, 3745, 2712, 2074],
397
+ [610, -208, 1242, 2513, 1180, 130, -2142, 2216, 1057, -948],
398
+ [924, -2266, -2468, 1276, 2404, -2343, -2074, 2719, 2168, 52],
399
+ [268, 1295, 1788, 1101, 1171, 1701, -1299, 1165, -174, -1925],
400
+ [-2249, 2790, 315, -459, 4443, 852, -1923, 3662, 2301, -9],
401
+ [645, 66, 148, -3638, 1440, 3392, 259, 2042, 683, 412],
402
+ [636, -1673, -611, -4668, 4057, -2789, 441, 3657, -558, -206],
403
+ [-4113, 1937, 1932, -5273, -543, -1149, -471, 1826, 2853, 689],
404
+ [1936, -5423, 5290, -1275, -901, -7100, 3713, 5313, -947, -1198],
405
+ [7540, -12057, 10102, -4425, -2218, -189, 1968, -1499, 3823, 3272],
406
+ [3967, -3107, 12957, -8900, 4376, 4805, -13715, -2708, -903, 4682],
407
+ [186, -474, 9701, -1414, 6955, -2614, -9282, -2694, -7085, -2087],
408
+ [7096, -8888, 8780, 0, 3453, 7175, 7946, -9466, 0, 10260],
409
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
410
+ [-1762, -1309, -1331, 961, 810, 2222, -1451, 3277, 417, -332],
411
+ [-2957, -3514, 2104, 6, -5988, 538, -4740, 10805, -7936, 2172],
412
+ [-2657, 2993, 5181, 10624, 4030, -3226, -8025, 1487, -8312, -3165],
413
+ [-8961, 2223, 1226, -391, 2171, -2063, -5168, -2083, -3640, -3677],
414
+ [-9345, -1666, -4944, -299, -5477, 805, -2119, 4127, -1226, -9053],
415
+ [-278, -3023, -369, -1041, -17, -1924, 785, -226, -38, -9822],
416
+ [943, -3463, 4469, 493, -234, -814, 629, -333, -3599, -12010],
417
+ [-510, 368, 60, -1050, -108, 250, -580, -825, 315, -9597],
418
+ [2377, 852, 2335, 2038, -613, -3778, 355, 783, -376, -8531],
419
+ [532, 474, 904, 430, 329, 375, 727, -130, -1662, -2850],
420
+ [58, -122, 2844, -2058, 2515, -717, 208, 5429, -316, -733],
421
+ [1383, 4839, 3851, -676, 2911, -630, 530, 1392, -1085, -1138],
422
+ [1566, 4918, 3206, -1918, 4561, -1047, -454, -1737, 2238, 1115],
423
+ [3296, 2631, 213, -644, 6633, -912, -2484, 2147, 1380, 95],
424
+ [-591, 4126, -105, 977, 5077, -1007, -934, 907, 3696, -1699],
425
+ [972, -955, -1342, -2070, 3366, -2057, -1957, 1903, 1019, -874],
426
+ [-1093, -69, -407, -1450, 5143, -1825, -3474, 1071, -2958, 447],
427
+ [-369, 950, 3254, 1464, 1133, 3136, -1487, 143, 1404, -1736],
428
+ [1364, -2729, 919, -2786, 3972, -1475, -310, 3955, 2208, -13],
429
+ [3721, -2127, 1788, -461, 2978, 1638, 1723, -405, 996, -1077],
430
+ [2568, 1177, 3395, 1448, 1127, 1331, 298, -867, 1190, -1939],
431
+ [-1140, 1480, -967, -279, 1473, 4076, -647, -1060, -1228, -3668],
432
+ [1338, -4593, -728, -3632, -5629, 3181, 3831, 4393, -793, 1686],
433
+ [8956, 1680, 2782, 4037, -5627, -3169, 6887, -663, -3516, -312],
434
+ [1908, -3524, 5776, -6542, 2384, 4978, 4483, 1780, -8842, -6894],
435
+ [-5211, 2755, -1114, 3469, 1904, 4634, -1809, 3326, -8258, -1298],
436
+ [6388, -6925, 7010, 0, 123, 5102, 5801, -8745, 0, 9169],
437
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
438
+ [-372, 1046, -215, 2368, -276, 814, -2367, 625, 1712, -1996],
439
+ [-3266, 6101, 9977, 5764, -6691, -7347, -3616, 10858, -9855, -1036],
440
+ [186, -2857, -3186, 6708, 6930, 545, -3366, -115, -2077, -9730],
441
+ [-931, 2006, 3672, 724, -1834, -3837, -2836, -3559, 1701, -10495],
442
+ [4682, -4605, 2570, -8749, -3439, -2167, 2007, -4982, -123, -9594],
443
+ [6310, 1194, 297, -6564, 1157, 1455, -1166, -3739, -5437, -11872],
444
+ [4035, -2426, 4053, -3308, 61, 24, -633, -733, 1315, -10240],
445
+ [1691, -755, 387, -4275, 1516, -2725, 1116, -197, 226, -2564],
446
+ [2306, -789, 1737, 114, 2329, -2576, -1305, -740, -4347, -543],
447
+ [1048, -395, 2050, -1800, 1476, 1474, 3747, 1128, -1890, -333],
448
+ [4885, 1669, 2461, 2612, 5687, -1416, 1095, 1440, 1319, 1691],
449
+ [3451, 5817, 2802, 1314, 3504, -1897, 2926, 3627, 894, -102],
450
+ [4688, 2984, 1907, 1833, 1732, -1951, 265, 2293, 2549, 2256],
451
+ [2877, 4519, -260, 3199, 1356, -2226, -677, 2348, 1863, 2078],
452
+ [165, 697, -225, -508, 1744, 367, -3284, 1812, 1295, -893],
453
+ [439, 1052, -292, -365, 3164, -2802, -3485, -585, -136, -2049],
454
+ [-1103, -3315, -1194, -1843, 3107, 594, -2893, 2497, -535, -101],
455
+ [-4060, -920, 960, -2183, -193, 4354, 1432, 737, 1777, -1183],
456
+ [17, -2089, 3577, 1115, 1980, -757, -1682, 3256, -1155, -3556],
457
+ [-1499, -1000, -903, 1587, -782, 4186, 3005, 1686, 426, -5457],
458
+ [-1594, 30, 182, 1416, 338, 3141, 1628, 984, 112, -3181],
459
+ [-2574, -700, 270, -32, -1339, 1607, -1358, 4069, 896, -776],
460
+ [1401, 2792, 9, 1963, -2875, 987, 1614, 4167, -1223, -1323],
461
+ [4655, 10602, 7867, 9479, -3554, 4797, 2990, -4425, 2266, -21],
462
+ [5113, -3591, 7616, 5665, 11348, -3189, 2468, 463, -17167, -6442],
463
+ [-1182, 2786, 6570, 1938, 15151, 474, -11090, 162, -7460, -757],
464
+ [6529, -6815, 6303, 0, 3866, -2766, 2061, -5992, -90, 8027],
465
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
466
+ [4852, 2858, 4215, 5019, -4697, 1613, -973, -1123, -1155, -808],
467
+ [5713, -2891, 4651, 1947, -6154, 6446, -574, -6965, 10877, -2820],
468
+ [8491, -2983, 916, -753, 5184, 8178, 6075, -9501, 2168, -7143],
469
+ [2703, -159, -1397, -1638, -821, 333, 548, -4529, 3006, -15375],
470
+ [3315, -1528, 2612, -9180, 1487, -2006, -4994, -2097, -3304, -7388],
471
+ [3953, -985, 1316, -8534, 4294, -1134, -1858, -1563, -3705, -6821],
472
+ [1290, -3741, 4213, -6980, 2978, -3383, -3402, 2549, 990, -1495],
473
+ [-1032, -917, 1228, -7248, 43, -522, -1102, 3176, -428, -1226],
474
+ [-683, -222, -132, -7272, 1638, -170, -1257, -302, 1192, 209],
475
+ [1951, -1667, 2025, -1870, 5850, 162, -466, -634, 1400, 1002],
476
+ [2394, 1392, 371, -1284, 6952, -3238, 1600, 2946, 2407, -2347],
477
+ [1908, 3410, 1907, 556, 6173, 2331, -755, 1707, 3337, 464],
478
+ [3374, 3476, 2065, 1610, 5625, -2602, -2149, 1015, -1764, 3330],
479
+ [2222, 2111, -714, 686, 2550, -1845, -586, 1989, -1383, 2225],
480
+ [-2820, -2213, 533, -2542, 807, -452, -1391, 3270, -2796, -333],
481
+ [-162, -2563, 829, -1973, 1277, -1209, -1780, 1380, 973, 1994],
482
+ [-824, -2472, 2931, -1566, 2809, 1043, -1184, 780, -2675, -180],
483
+ [1861, -1971, 1169, 477, -1035, 2013, 1232, -8, -491, -2217],
484
+ [3946, -1744, 4215, 2852, -2895, 1284, 104, 1152, -2753, -1678],
485
+ [903, -1554, -77, 2276, 1172, 2634, -8, -294, -2699, -2267],
486
+ [1613, -1187, 836, 1691, 1109, 255, 417, 1784, -3130, 1093],
487
+ [3408, -4003, 2500, 3519, 923, 1463, 2, -2419, -1453, -2228],
488
+ [-2524, -3236, 6787, 1817, 227, -3539, -348, 1372, 319, 931],
489
+ [2072, 3950, 9047, 11345, 3378, 710, 1873, -5752, -1083, -523],
490
+ [11651, -11085, 12984, -734, 9568, -1667, 9049, -7106, -12518, -4730],
491
+ [3720, -1715, 9300, -2849, 12879, 3385, -4227, -5604, -9542, 6867],
492
+ [563, -273, 955, 0, 528, 2216, -2404, -1960, -243, -239],
493
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
494
+ [1974, 356, -1678, 629, -725, 69, -141, 330, 594, -418],
495
+ [6804, -6327, 8099, -2731, 98, 1851, 4387, -7080, 9973, -5355],
496
+ [-1683, 1693, 1009, 1597, 5888, 6468, 1724, -3780, 2130, -1604],
497
+ [-3739, 1188, 2924, -4735, -1097, 3552, -4320, 1308, -2213, -4867],
498
+ [205, -2881, -875, -4812, 1769, -125, -3755, -1834, -413, -835],
499
+ [1672, -166, -685, -4783, 1735, 442, -558, -6079, -3108, -3187],
500
+ [351, -265, -330, -5392, 1155, -3268, -1829, -911, -422, -331],
501
+ [1898, 1886, 34, -5083, -655, -356, -1294, 646, 646, 1],
502
+ [1945, 641, 2550, -10917, 1037, -538, 1125, 1307, 762, 1231],
503
+ [1030, 1717, 2761, -12264, 1969, -185, 2998, -40, 517, 2145],
504
+ [1635, 1423, 1306, -11038, 1566, -410, 1884, 2806, 387, 1931],
505
+ [2431, 2162, 1541, -8836, 1789, -305, -578, -807, 2221, 2410],
506
+ [1187, -96, -606, -6927, 4956, -2499, -1440, -908, 1296, 2961],
507
+ [191, -2182, -1592, -3978, 1995, -4633, -2212, 3473, 95, 2537],
508
+ [-578, -3313, -973, -3110, 2575, 217, -2336, 1303, -427, -925],
509
+ [598, -1041, -413, -898, 1808, 286, -205, 459, -231, 316],
510
+ [-1398, -53, 4626, -191, 564, 3070, 1301, 182, -242, -578],
511
+ [491, 441, 1337, -709, 3496, 2486, -483, 1324, -3508, -2554],
512
+ [2434, -2044, 2587, 1833, -484, -707, -465, 1525, -1490, -906],
513
+ [2357, -3352, 1663, -1121, 847, -1189, 1554, 496, -1410, -1687],
514
+ [-2239, 631, 5191, 879, -3389, 695, -922, 753, -4124, -3165],
515
+ [5, -2881, 5919, 1931, -2382, -1444, 1058, 172, -1468, -2567],
516
+ [-1070, 547, 132, 2515, -1679, 747, 1483, 301, -2411, -3781],
517
+ [1006, 436, -2499, -2253, -2455, 2112, 2702, -626, 3478, 849],
518
+ [14065, -13408, 4080, -3464, 2238, 2974, 15055, -7214, -6570, -1384],
519
+ [4335, -6991, 799, -2055, -1249, 7150, -1694, -1857, 544, 10500],
520
+ [1532, 1247, 6518, 44, 4600, -3911, 2895, -6304, -4089, 7208],
521
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
522
+ [533, -617, 221, 306, -168, -91, -926, 201, 1255, -20],
523
+ [-419, -4597, 1498, -2760, 2915, -2566, 146, 3527, 6694, 3247],
524
+ [-3431, 5723, 624, 10925, 5253, 4121, -5231, 2716, -385, -177],
525
+ [291, -1102, 4548, -561, -3760, 3388, 374, -1611, -1967, -5557],
526
+ [1050, 1342, -275, 448, -1564, -149, -4084, -2729, -727, 765],
527
+ [-678, 1943, 2222, -169, -1335, -2358, -1208, -5451, -1859, 143],
528
+ [213, -1771, -115, -3286, 1546, -5618, 459, -837, -673, 896],
529
+ [818, -356, -756, -2186, 880, -1311, -233, -355, 895, 253],
530
+ [243, 1154, 777, -5278, 1235, -1193, 144, -200, 1505, 1255],
531
+ [459, 109, 1642, -5931, 1533, -114, 4368, -477, 2914, 1394],
532
+ [572, 1857, 581, -10797, 30, 781, -530, -939, 2661, 496],
533
+ [2679, -1126, -242, -13838, 1014, -3856, -787, 3028, -1763, 1998],
534
+ [2873, 1359, -682, -7883, 2947, -3613, -1760, 780, -1259, 1098],
535
+ [2079, 2106, -3046, -1487, 3303, -918, -263, 499, -3594, 350],
536
+ [962, 3091, 85, 1575, 798, 2918, -843, -320, -1987, -337],
537
+ [190, -521, 2998, 1005, 6261, 1186, 1747, 88, -1977, -1771],
538
+ [1749, -1562, 564, 1946, 3119, 2150, 446, 2009, -136, -2473],
539
+ [2510, -763, 378, 394, 683, 1587, -256, 1221, 867, -139],
540
+ [-245, -453, 2271, 1907, 1538, -652, -725, 1379, -763, -1930],
541
+ [262, 147, 255, 2670, -1073, 1457, -1533, 1846, -195, -2174],
542
+ [1108, -1986, 2086, 1614, -4984, 2053, -1965, 83, -2184, -1338],
543
+ [583, -1928, 4598, 4954, -1507, -853, -1101, -3222, -804, 1836],
544
+ [-824, 1825, 233, 5587, 782, -4139, -196, -2585, -1700, 670],
545
+ [1187, -5115, 1836, -2998, 4476, -4396, 1346, -5950, -244, 2384],
546
+ [15210, -8242, 7780, 2205, 423, -1093, 15996, -7538, -6318, -77],
547
+ [12765, -15216, -3267, 401, -8148, 8667, -1464, -428, 9022, 6595],
548
+ [785, 2003, 610, 1213, 1424, -4687, 2008, -2760, -416, 3982],
549
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
550
+ [1137, -2439, 2019, 437, -537, 1065, -2908, 538, 2846, -57],
551
+ [-5187, 2523, -7667, -9119, 2112, 5465, 6677, 4233, -7224, 4001],
552
+ [341, 3003, 8746, 13482, -1919, -542, -5106, 1382, -1322, 3428],
553
+ [-778, -2939, 6456, 3257, 567, -4096, 876, -1525, -3895, 3659],
554
+ [-3323, 1185, 5423, 3081, 515, -4541, -4214, -1294, 337, -1694],
555
+ [2110, 961, 991, 2033, -2437, 1107, 1109, -1692, -3266, -2901],
556
+ [-6, -791, 3133, 2836, 181, -456, 165, -3917, -1636, 634],
557
+ [-1065, 994, -430, -428, -1433, 2684, -216, -2959, 1538, 1381],
558
+ [-651, -1092, -478, 74, -1825, -2890, -364, 1033, 554, 2394],
559
+ [769, 459, 842, 4132, 333, -1705, 2675, -2562, -1069, 2038],
560
+ [3458, -435, -425, -574, 1419, -3590, 1784, -193, -3188, -30],
561
+ [1692, -1701, 503, -809, -395, -1258, 2526, -147, -17, 402],
562
+ [3043, 2073, -1513, 226, 1320, -1075, -465, -505, -214, 4076],
563
+ [2473, -129, -654, -1011, 3498, 543, 1172, 1070, -1402, -1786],
564
+ [5757, 130, 1519, -809, 1771, -1273, 2853, 738, -1278, 2038],
565
+ [1976, 398, 410, 2559, 4367, -272, 1127, 2564, 87, -1604],
566
+ [3710, 845, 2181, 580, -417, 1520, 1788, 1216, 1766, 2315],
567
+ [3158, 2734, 353, 2625, -1589, 177, 378, -2022, 1408, 1361],
568
+ [-2133, 1232, 776, 777, 2312, 1324, 2039, -290, 1089, 1132],
569
+ [44, 2601, 464, 1099, -2131, -259, 1745, -1219, 812, 522],
570
+ [2162, -3725, 3224, 2110, -3273, -2711, 1251, -541, 9, -410],
571
+ [1058, 1164, 3856, 3410, -2010, -4994, 4006, -6317, -1992, 453],
572
+ [-2573, 3652, 2188, -95, 392, -3854, -435, -1865, 2888, 4467],
573
+ [-1422, 1638, -7008, 328, 271, 5142, 6810, -2563, 2681, -4301],
574
+ [11181, -5995, 5251, 5489, 5582, 875, 535, -2114, -6393, 6810],
575
+ [6737, -8183, 8687, 1284, 6904, -8020, -3260, -5162, -3230, 7609],
576
+ [290, 1148, -2873, 924, -424, -1120, 73, 1077, 916, -525],
577
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
578
+ [-365, -594, 2005, 164, 122, 1758, -711, -583, -442, -191],
579
+ [-5600, 3288, -4717, -8988, 10271, -715, 7973, 3830, -9614, 3671],
580
+ [4464, -996, 7354, 6844, -1086, -4435, -2465, 184, -2355, 1118],
581
+ [692, 920, 3944, 8063, 3419, -498, -3122, -2770, -4842, 1660],
582
+ [-3740, -1879, 7888, 1830, 216, 2711, 651, -3209, -934, -1562],
583
+ [304, -1878, 2141, 3583, 792, -131, -428, -871, 1855, 703],
584
+ [374, 802, 2423, 1860, -651, -3585, 2740, -703, 352, 2972],
585
+ [1673, 1635, 3424, 3398, -3557, 1688, 2594, -3375, -585, 2348],
586
+ [1012, 618, 509, 1589, -898, -994, 3097, -1181, -1400, 823],
587
+ [-1091, -1460, 466, 1383, -3512, -1718, 5055, 414, 2385, 3648],
588
+ [1534, -1556, -429, 4497, 402, -2653, 1986, -1534, 836, -435],
589
+ [801, -907, 1266, 182, -3996, -393, 3884, 1700, -749, 581],
590
+ [1968, 1069, 612, 2121, -2599, 3325, 5915, 169, 2275, 2732],
591
+ [2910, -1469, 3385, 1505, 2414, 505, 2397, 3747, 876, 18],
592
+ [2012, 962, 3207, -1024, -320, -236, 2602, 3822, -87, 1170],
593
+ [3299, 2912, 593, 1713, 3789, -1271, -1299, 840, -856, -1665],
594
+ [532, 3203, 1193, -580, 835, -1785, 1469, 1815, -793, 1594],
595
+ [3143, 2307, -2162, 488, 1498, -2433, 2273, 66, 1152, -1289],
596
+ [1205, 1696, 131, 981, 3318, 2152, -951, 421, 2305, 1874],
597
+ [419, 265, 3357, 1324, 1734, 1110, 1206, -1198, -190, 2911],
598
+ [-602, 693, 1472, 1663, 196, -5872, 373, 1299, 1427, 519],
599
+ [607, 3458, 225, 2776, -1917, -1533, 4238, -3832, -377, -2315],
600
+ [-3033, 3395, 3514, 396, 1447, 5589, 183, -3535, 2630, 4671],
601
+ [5354, 206, -11609, 2895, 3845, 3592, 3503, -3919, 3754, -200],
602
+ [10151, -10127, -3093, 3984, 11320, -8344, -3695, -8733, 471, 8582],
603
+ [1471, -4121, -482, 755, -133, -6759, 5061, 2497, -3708, -636],
604
+ [0, 257, -244, 22, 25, 367, 317, -454, 0, -373],
605
+ [899, 323, -1831, 0, -206, -1076, 230, 360, 530, -100],
606
+ [786, -2541, 2816, 1336, -119, 571, -3140, 44, 3263, 1809],
607
+ [2540, -290, 4445, -1260, -1964, 7818, -7730, 1168, 5647, -4092],
608
+ [11487, -89, -650, 3030, -1092, -7781, -2063, 240, 7770, 1131],
609
+ [1073, 1694, -296, 5100, 1949, -280, 2525, -4803, 970, -1271],
610
+ [-1502, 926, -4534, 1326, -824, 1692, 2077, 356, -2137, -3778],
611
+ [-1285, -320, -1606, 2914, -1097, -352, 387, -3361, 4116, 1768],
612
+ [-1586, 2413, -1000, 3191, -1873, -2040, 4528, -1823, 1621, 2187],
613
+ [1510, 2312, -984, 4005, -103, -2013, 3518, 1097, -2017, 773],
614
+ [251, -211, 1079, 2452, -423, -1380, 2729, 1720, -1232, 1781],
615
+ [1669, -1091, -272, 3683, 226, -1534, 4635, -33, 817, 1900],
616
+ [607, 464, 3165, 2889, -3812, 371, 5931, 1046, -3690, 931],
617
+ [166, -1453, 1933, 3973, -685, -681, 5772, 1819, 968, -703],
618
+ [1377, 2347, 3048, 2942, 630, 932, 2870, 2325, -256, 1775],
619
+ [1492, 3264, -933, 2170, -23, -399, 3338, 2074, -126, -427],
620
+ [-104, 2181, 943, 2096, -410, 524, 2396, 3029, 359, 2598],
621
+ [3209, -319, 563, 705, 2265, -1250, 1240, -236, 256, 605],
622
+ [3187, 2391, 2053, 2555, 2678, -3676, 1392, 860, -2004, 2766],
623
+ [2930, -1127, 67, 408, 2153, -4153, 1775, 324, 86, 393],
624
+ [3914, -320, -1055, -51, 2217, -2038, 207, -1976, -921, 357],
625
+ [476, 3776, -1384, 1381, 176, -4397, 1210, -755, -634, 814],
626
+ [-1639, 1954, -400, -1104, -1443, 1419, 839, -2425, -2964, 2938],
627
+ [64, 288, 5097, 3819, 1209, -2797, 131, -1971, -1253, 1776],
628
+ [-3080, 3583, 4528, -1319, 2903, 4373, -1121, -2212, -882, 4488],
629
+ [5320, -2770, -6764, -6008, 7414, -2861, 4240, -9709, 5087, 6668],
630
+ [13289, -7388, -4218, 4826, -5534, -11457, -4531, 1574, 4176, 15485],
631
+ [9181, 2127, 9519, 2265, -10534, -1040, 11868, 3651, -5352, -4817],
632
+ [0, 0, 0, -1, 0, 0, 1, 0, 0, 0],
633
+ [873, 313, -1778, 0, -199, -1044, 222, 349, 514, -96],
634
+ [175, 13, -112, 36, -12, 4, -73, -55, 64, -72],
635
+ [5971, -5337, 7624, 1529, 1780, 3998, -3150, -3860, 2946, 566],
636
+ [7329, -1439, -343, 4492, 3229, -11081, -3886, 337, 13624, 2690],
637
+ [3668, 1943, -2577, 1823, 912, -4479, 2024, -61, 2627, 1378],
638
+ [3004, 340, -3375, 191, -8219, -2693, 4345, 3290, 3859, 3207],
639
+ [1693, 1385, 499, 2577, -5049, 1715, 3073, -4610, 1641, 4172],
640
+ [2198, -311, -397, -242, -993, 664, 2985, -1791, 2407, 4494],
641
+ [956, -2568, -524, 323, 1474, -574, 657, -129, 2214, 679],
642
+ [1543, -1265, 2068, 248, 74, 1144, 751, -3045, 1107, 1382],
643
+ [-153, -1553, 444, 1555, 747, -262, 2627, 1886, 432, 615],
644
+ [462, 1245, 1639, 684, 2521, 473, 1102, 127, -2251, -399],
645
+ [92, -1376, 3109, 730, 1953, 1641, 3642, 996, 305, 1446],
646
+ [-1202, 428, 3252, -1739, 2518, 337, 4462, 2615, -276, 151],
647
+ [1131, 1875, -1276, 2301, 1026, 1507, 4361, -181, 2043, 2320],
648
+ [2477, 1018, 2748, 1117, -2797, 1236, 2492, 1701, 1384, -869],
649
+ [323, 1851, 2303, -1995, -1861, 759, 1697, 990, 244, 711],
650
+ [723, 2123, 852, -527, -910, -1726, -1708, 1064, -1166, 3193],
651
+ [1973, 3081, 2801, 505, -485, -2712, 648, -3793, -2068, 312],
652
+ [2543, 3656, 340, -2115, -2384, -2701, -1807, -198, -1765, 1299],
653
+ [25, 1438, -2590, -318, -760, -1475, 913, -2332, -1366, 2557],
654
+ [2589, -1521, -1649, 3341, -1392, -4330, -2282, 3188, -204, 2414],
655
+ [600, 2057, 4507, 1509, 1662, -1643, 953, -28, -2542, 2223],
656
+ [-7306, 10415, -2593, 2429, 4164, 4624, -2618, -666, -2034, -2630],
657
+ [-1023, 2078, -10276, -10767, 8831, -5631, -2825, -1835, 9827, 2320],
658
+ [10297, -3858, -4430, -7631, 1346, -5221, 3117, -2796, 5772, 7428],
659
+ [5387, 3696, 6838, 4075, -10521, -4584, 11690, 5048, -3374, -6362],
660
+ [0, -1, 0, -3, 0, 0, 2, 0, 1, -1],
661
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
662
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
663
+ [7436, 8764, 8330, 9247, -7538, 4924, -8683, -3622, 2605, -3031],
664
+ [-6093, 4346, 12424, 12005, 8958, 7264, -7039, -6908, -1388, -5103],
665
+ [-666, -62, 1184, 4743, -3534, 5342, -919, -2517, 477, 2455],
666
+ [1036, 4560, -1976, 3761, -4605, -128, 3228, -3396, 80, -163],
667
+ [4659, 1406, -161, -805, -6264, 1774, 4036, -1913, -1902, 3811],
668
+ [-269, -2499, -380, -434, 1400, 1552, 583, 2612, 3125, -64],
669
+ [-3338, 2380, 255, 640, 3204, 1959, 2220, 170, -1802, 2867],
670
+ [3565, 839, -62, -220, -4480, 1562, 1841, 2782, 1067, 143],
671
+ [-260, 3048, 2152, 359, -2480, 2556, 1471, 382, -1788, -1623],
672
+ [1765, -224, 1101, 1641, -2665, 1632, 742, -551, 1145, 2354],
673
+ [724, 997, -1191, 777, -1752, -713, 2587, 1471, 894, 1968],
674
+ [-799, 4446, 2426, 603, -1697, 1157, 959, 2084, 1411, 1192],
675
+ [612, 3793, 3243, -1357, -128, 1536, -62, 263, 321, 969],
676
+ [564, 1893, 1963, 1833, 874, -1272, 2299, -930, 857, 503],
677
+ [-81, 2363, -1363, -428, -462, -221, 2019, 413, 1314, 1401],
678
+ [-119, 1765, -2551, -118, -1343, -2510, -1830, -775, 1307, -52],
679
+ [94, 1307, 3732, 3242, 1573, -4538, -2975, -815, -881, -680],
680
+ [190, 991, 260, -469, 379, -3784, -517, 362, -1134, 2416],
681
+ [1073, 1599, -207, 1589, 2527, -1850, 2447, 877, -4388, 611],
682
+ [606, -274, 2318, 3157, 4032, -3529, 1991, -1315, 1495, 2809],
683
+ [2262, -560, 7234, -1072, 4728, -787, 10271, -7279, -1199, 2360],
684
+ [-5126, 5088, -834, -6588, 5479, -878, 4132, -1049, -825, 3616],
685
+ [-4808, -1361, -9799, -14342, 12910, -1140, -6603, -4966, 10370, -2704],
686
+ [3495, -5794, -133, -7480, 5346, 2777, 9333, -9229, 4369, 2120],
687
+ [7580, 8297, 8998, 9752, -1098, -2190, -7983, -9068, 933, 310],
688
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
689
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
690
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
691
+ [7166, -3597, -4845, -5207, -6761, 7426, -3180, 5382, 957, 800],
692
+ [-3613, 9201, 6273, 8682, -7068, 14214, -11739, -7019, -805, -12740],
693
+ [-1388, -6778, 1744, -144, -4721, 15055, -3035, -12171, 6701, -1181],
694
+ [1356, -2196, -3970, 1008, -3163, 7739, -4188, -5982, 9083, -11236],
695
+ [7181, 549, 1771, 6431, -1219, 3376, -6606, 1341, -972, -2130],
696
+ [1783, -1322, -956, 4047, 2503, -1556, -6253, 4146, -3068, 473],
697
+ [-1061, 1269, -298, 2695, 2203, 4709, -1582, 1052, -1286, -336],
698
+ [3125, 3077, 2974, 2478, 1243, -55, -1487, 3310, -754, -1431],
699
+ [-634, 3921, 1614, 1244, 1538, 1412, 346, 61, 1863, -1145],
700
+ [2662, 1275, 2117, 1572, 2784, 1638, -2131, 1471, -429, 1135],
701
+ [28, 2718, 3216, -1461, 1245, 489, -372, 2594, -1611, -510],
702
+ [1190, 4506, 3954, 1167, 81, 2473, -1822, -822, 30, 174],
703
+ [2121, 2136, -139, -2522, -139, 2719, -1613, 167, -1464, 1637],
704
+ [268, 2077, 1798, -802, 695, 1982, -994, -568, 317, 1460],
705
+ [423, 4678, 4302, 866, 1072, 626, -1031, 2218, -651, 188],
706
+ [1923, 1996, 837, -1987, -1800, 3929, -327, -2518, 1921, 2834],
707
+ [-3723, 2105, 1078, -3006, 712, -2645, 2192, -1121, -2002, 2155],
708
+ [-3115, 2332, -3913, -6177, 3960, -1294, -907, -2740, -360, 4852],
709
+ [-2393, 1036, -417, -7235, 5602, 2955, -320, -804, -3892, 337],
710
+ [-1569, -3764, 7720, 483, 9193, 3798, 3176, -5693, 167, 1148],
711
+ [-4294, 2808, 181, 861, 13038, 6647, 2297, -7295, 1884, -2811],
712
+ [-7558, -2728, -5328, -894, 14834, -4123, -5909, 1284, -501, -4857],
713
+ [8805, -13106, 6767, -7971, 8878, -3635, 6239, -8192, -4753, 10902],
714
+ [11428, -13079, -5498, 5281, -2347, -12832, -7868, 6811, 3239, -466],
715
+ [7776, -5410, -5045, 5960, -4020, -8990, -2494, 2686, 5980, 5428],
716
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
717
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
718
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
719
+ [-35, 81, 64, 134, 27, -53, 0, -77, -4, 0],
720
+ [8936, -9785, -8093, 1032, -6876, 10305, -2281, -363, -1782, 5178],
721
+ [-3554, -6330, -8135, -6540, 1926, 11308, -6457, -10058, -2844, -6042],
722
+ [-2949, -2961, -6854, 1268, -660, 12319, -7513, -11351, 8103, -8725],
723
+ [3470, 990, 5915, 4964, -65, -1850, -13366, -4796, 556, -408],
724
+ [-1298, -3599, 4511, 6795, 1454, 4885, -11655, -2527, 3307, -3376],
725
+ [2664, 2420, -236, 5198, 1362, 4568, -2219, -4224, 7366, -1859],
726
+ [3539, 5043, 692, 1020, 732, 3987, 606, -2503, 1495, -2526],
727
+ [-303, 929, 3249, 2193, 4415, 3348, -84, 603, -86, -1762],
728
+ [-12, 3882, 198, 302, 2612, 4679, 3942, 718, 582, -571],
729
+ [1271, 2816, -2010, 6312, 48, 4882, -4400, 263, 3133, 860],
730
+ [1164, 3467, 2344, 2483, 344, 5194, -2269, -368, 1869, 2593],
731
+ [-3979, 79, -6, -3046, 5097, 4531, -4203, -2070, 2556, 4291],
732
+ [-4323, 1925, 4201, -3013, 2267, 4668, -2346, -2999, -2837, 3715],
733
+ [-77, 594, -51, -2822, 3547, 6541, -2595, -3801, -907, 2490],
734
+ [-2757, 762, -1871, -3696, 1823, 3795, 2312, -1531, -2679, 4190],
735
+ [-8646, -1698, 1723, -3379, 147, 4382, 3456, -3495, -888, 582],
736
+ [-9314, 2558, 3346, -1434, -3719, 8946, -1985, -6117, 2157, 1663],
737
+ [-5478, -3266, -3420, -4141, 4963, 3900, -5557, -5769, 6316, 3604],
738
+ [1959, 2228, -4704, -4141, 3327, 2335, -6870, 187, 1385, -3986],
739
+ [4652, 7247, -4745, 3665, 2025, 6003, -4967, -2481, -823, -3963],
740
+ [5199, -7254, -1675, 1042, 3695, -2684, -8362, 8933, -6963, -10366],
741
+ [-3760, -5605, -6931, -563, 7508, 1611, 1922, 780, 1489, -1325],
742
+ [1201, -546, 231, 0, 29, 31, 30, -540, -75, 185],
743
+ [1360, -752, 357, 0, 34, 36, 39, -695, -107, 245],
744
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
745
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
746
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
747
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
748
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
749
+ [4161, -7777, -5906, -4, -913, 4967, 0, 628, 2480, -2188],
750
+ [6418, 2799, -5432, -1520, -7396, 3268, -1236, -4704, -4626, 998],
751
+ [9607, -5232, -13623, -1238, 6423, -540, -6979, -4228, 14507, 3642],
752
+ [-2409, -6432, -17966, 5002, 8305, -1409, -3429, -2888, 16331, -494],
753
+ [1054, -5761, -7139, -3092, -80, 1228, 1023, 3498, 7273, 2015],
754
+ [1661, -2335, -11037, -879, 1300, 1671, 6873, -766, 7843, 3430],
755
+ [5320, -5092, -5107, -916, 1640, 7411, 4197, -1555, 3960, 734],
756
+ [2824, 4170, -599, 4512, -864, 5203, 7745, -5450, 2884, 3443],
757
+ [-2866, 1927, 724, -4009, 3472, 3957, 4699, -2878, 3737, 637],
758
+ [-3982, 858, 899, -2938, 3427, 6301, -1007, -2019, 2425, -2706],
759
+ [-495, 5240, -1707, 408, 1176, 7594, -838, -8197, 3913, 1907],
760
+ [-3196, 1909, -5994, -2321, -5607, 15120, -2995, -5003, -1446, -8183],
761
+ [-1645, 2450, -1724, 4616, -2458, 10137, 5731, -6570, 6828, -8712],
762
+ [3088, -912, -1356, 1022, 459, 7730, -3705, -5574, 12600, -6623],
763
+ [263, -1269, -2421, 3226, -199, 4994, -5346, -1075, 5402, -8845],
764
+ [1253, -2556, -2626, 2045, -5551, 15248, -3220, -10928, 6474, 2961],
765
+ [-8710, 1810, -7660, 2507, 4691, 8234, -283, -12850, 6662, 1492],
766
+ [-8735, 6533, -4932, 3119, 4307, 3108, -219, -10500, -809, -318],
767
+ [-3225, 6172, -7042, 4124, -63, 9101, -1201, -6587, 2574, 3533],
768
+ [-3103, 3407, -1299, 2300, 1707, 555, 7053, -6297, 10418, 5086],
769
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
770
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
771
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
772
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
773
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
774
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
775
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
776
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
777
+ [0, -731, 0, 0, -797, 1362, 0, 1662, 336, -844],
778
+ [5, -1969, 0, 0, -2221, 2865, 0, 3544, 887, -1770],
779
+ [2, -1705, 0, -1, -1864, 2899, 0, 3445, 626, -1589],
780
+ [0, -495, 0, -86, -232, 1202, -4, 1589, -367, 232],
781
+ [64, -1134, 13, -46, -1043, 1515, -18, 1802, -362, 516],
782
+ [298, -3685, 8, -3764, -4709, 3699, -1336, 4260, -1135, 2866],
783
+ [3413, -1738, -3042, 1245, -319, 1543, 738, 767, 3350, 1730],
784
+ [4737, -3257, -5370, 2379, 305, 2983, 325, 2234, 5234, 345],
785
+ [6813, -5302, -5067, -274, -3908, 4782, -2471, 4599, 1838, 5663],
786
+ [10188, -7299, -6511, 4224, -2165, 6249, -3838, 6455, 3306, 1038],
787
+ [9897, -1565, -10170, 9465, 6943, -610, -1145, -5403, 13048, 150],
788
+ [3053, -9695, -8804, -2535, -1258, 9017, -2496, 429, 7120, 3479],
789
+ [459, -2790, -2903, -3624, -2006, 2885, -907, 3329, 3814, 5162],
790
+ [-1007, -6255, -6358, -5954, -3658, 6431, 3495, 2045, 5924, 3609],
791
+ [-3083, -1584, -9515, -408, 4602, 831, 4224, -3250, 10995, 238],
792
+ [-376, -9167, -7836, -5777, -495, 8151, 2417, 3534, 9042, 6564],
793
+ [-8, -5704, -2253, -6705, 2944, -240, -1984, 8577, 7580, -3052],
794
+ [-10, -2749, -1772, 837, -232, 2159, -6701, 8120, 8952, -7215],
795
+ [0, -2910, -109, 135, -7818, 7750, -7834, 9079, 1998, 552],
796
+ [0, 0, -3, 0, -1023, 824, -807, 1315, 395, 16],
797
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
798
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
799
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
800
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
801
+ ];
802
+
803
+ const BIAS_HIDDEN: [i64; 10] = [4773, 2824, -4344, -4927, 3184, 4626, 2104, 1415, -3598, -4509];
804
+
805
+ const WEIGHTS_HIDDEN_OUTPUT: [[i64; 10]; 10] = [
806
+ [-7465, 6358, 5685, 1314, -10939, -2086, 1767, 5792, -11130, -19890],
807
+ [-3647, 3153, -9541, -885, -3205, 9316, -6656, -12764, 4136, -3869],
808
+ [8094, -17062, 7097, 4201, 2158, -1787, 1684, -5214, 5651, -6372],
809
+ [-21001, 7849, -2791, 9971, -6035, 6213, -12545, -11817, -6192, 2980],
810
+ [-10294, -3402, 1747, -824, 5246, 350, -1828, -4369, -1353, 9327],
811
+ [3919, -12222, -1305, 3377, -5007, 5088, -15637, 10581, -4121, 1889],
812
+ [6293, -3729, -2107, -10343, -16876, 2566, 10088, -9506, -3632, -4341],
813
+ [-3440, 3025, -8671, -4611, 9871, -7776, 7272, 6708, 1834, -2907],
814
+ [5135, 6764, -2669, 1889, -8574, -15154, -4500, 2256, 686, 6443],
815
+ [-8071, 3542, 13572, 1127, -14238, -8034, -8387, 635, 6263, -12029],
816
+ ];
817
+
818
+ const BIAS_OUTPUT: [i64; 10] = [5588, -1084, 1426, -10944, 9942, 4437, -1623, 7130, -9714, -5449];
819
+
820
+ sol_storage! {
821
+ #[entrypoint]
822
+ pub struct MNISTClassifier {
823
+ bool initialized;
824
+ }
825
+ }
826
+
827
+ #[public]
828
+ impl MNISTClassifier {
829
+ // Predict digit from 28x28 grayscale image (784 pixels, 0-255)
830
+ pub fn predict(&self, pixels: Vec<u8>) -> U256 {
831
+ if pixels.len() != INPUT_SIZE {
832
+ return U256::from(999); // Error code
833
+ }
834
+
835
+ // Normalize pixels to fixed-point (0-10000 range)
836
+ let mut input: Vec<i64> = pixels.iter()
837
+ .map(|&p| ((p as i64) * SCALE) / 255)
838
+ .collect();
839
+
840
+ // Layer 1: Input -> Hidden (ReLU)
841
+ let mut hidden = Vec::with_capacity(HIDDEN_SIZE);
842
+ for i in 0..HIDDEN_SIZE {
843
+ let mut sum = BIAS_HIDDEN[i];
844
+
845
+ // Dot product with input
846
+ for j in 0..INPUT_SIZE {
847
+ let weight = WEIGHTS_INPUT_HIDDEN[j][i];
848
+ sum += (input[j] * weight) / SCALE;
849
+ }
850
+
851
+ hidden.push(relu(sum));
852
+ }
853
+
854
+ // Layer 2: Hidden -> Output
855
+ let mut output = Vec::with_capacity(OUTPUT_SIZE);
856
+ for i in 0..OUTPUT_SIZE {
857
+ let mut sum = BIAS_OUTPUT[i];
858
+
859
+ // Dot product with hidden layer
860
+ for j in 0..HIDDEN_SIZE {
861
+ let weight = WEIGHTS_HIDDEN_OUTPUT[j][i];
862
+ sum += (hidden[j] * weight) / SCALE;
863
+ }
864
+
865
+ output.push(sum);
866
+ }
867
+
868
+ // Return argmax (predicted digit)
869
+ let mut max_idx = 0;
870
+ let mut max_val = output[0];
871
+
872
+ for i in 1..OUTPUT_SIZE {
873
+ if output[i] > max_val {
874
+ max_val = output[i];
875
+ max_idx = i;
876
+ }
877
+ }
878
+
879
+ U256::from(max_idx)
880
+ }
881
+
882
+ // Get model info
883
+ pub fn get_model_info(&self) -> (U256, U256, U256) {
884
+ (
885
+ U256::from(INPUT_SIZE),
886
+ U256::from(HIDDEN_SIZE),
887
+ U256::from(OUTPUT_SIZE)
888
+ )
889
+ }
890
+
891
+ // Always ready (weights are embedded)
892
+ pub fn is_ready(&self) -> bool {
893
+ true
894
+ }
895
+ }
896
+
897
+ // ReLU activation
898
+ fn relu(x: i64) -> i64 {
899
+ if x > 0 { x } else { 0 }
900
+ }