@cetusprotocol/aggregator-sdk 1.2.0 → 1.3.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.
package/docs/REFACTOR.md DELETED
@@ -1,24 +0,0 @@
1
- aggregator V3 SDK 对接新版本合约: #架构
2
- sui move 合约加 ts sdk
3
-
4
- # 主要合约构造逻辑改变:
5
-
6
- 1. 在一笔交易中需要首先调用 aggregator_v3 router new_swap_context,构造一个交易上下文,该上下文主要用于存储所有 coin balance,以及设置 overlay_fee 和 overlay_fee_recipient(合约中的 fee 和 fee_recipient).
7
- 2. 对于以中间代币为 input coin(from 是 A,target 是 B,其他任何代币都是中间代币)的单个 path(指在一个池子中),都必须判断这个路径是不是这个中间代币,并且是最后一次 在这个完整的路径中作为 input coin 出现了,如果是的话,将 amount in 改成一个 MAX_AMOUNT_IN(u64 最大值)。
8
- 3. 将 amount in 改成一个 MAX_AMOUNT_IN 的原因是合约在执行 swaptx 的时候,所有的 swap 方法会先执行 take_balance,当 amount_in 大于 swap context 中中间代币的余额时,就会将所有的余额都转出来用于交易,如果 amount_in 小于 swap context 中的中间代币的余额时,只会用多少取多少。为了保证最终 swap context 中不会再存在中间代币,所以必须要有第 2 步的操作。
9
- 4. aggregator clientv3 在初始化的时候设置对应的 overlay fee rate, overlay fee receiver,用于在创建 swap context 的时候设置,合约的 FEE_DENOMINATOR 为 1000000, 所以当 sdk 输入的 fee 放入 movecall 中需要乘 1000000, sdk 中设置的 MAX_FEE_RATE 为 0.1,不得超过,超过需要报错。
10
- 5. 原有的每个 movecall 的 published_at 是使用默认+find_router 返回的 packages map 的方式,新版本的每个 dex 的 swap movecall published_at 现在都记录在 path 中,直接从 path 中取。aggregator router 中的 movecall(如 swap context 的 new 与 confirm)需要从 packages 中实时获取最新的,如果没有再使用默认的。
11
- 6. find router 返回的结果需要重构,需要合并一个 router data 中所有相同的池子的 swap,将其 amount in 合并,最终将二维的 path 转换成一个一维的 path, 举个例子:
12
- 6.1. P1(X,A) -> P2(A,Y)
13
- 6.2. P3(X,B) -> P4(B, A) -> P2(A,Y)
14
- 6.3. P5(X,C) -> P6(C, A) -> P2(A,Y)
15
-
16
- SWAP SORT
17
- 6.1. P1(X,A)
18
- 6.2. P3(X,B) -> P4(B, A)
19
- 6.3. P5(X,C) -> P6(C, A)
20
- 6.4. P2(A,Y) 此时P2的amount in应该为三条路径的总和
21
-
22
- 这里的原则就是这个池子的 amount in 必须已经交易完了才能进行这个池子的交易,否则会缺失 amount in coin。
23
-
24
- 7. 对于每个 dex 都需要添加 find router 已经 swap(router swap + fast router swap)的单元测试。
@@ -1,208 +0,0 @@
1
- # 拓扑排序解决路由合并问题
2
-
3
- ## 问题描述
4
-
5
- 在多路径路由系统中,需要将多条路由合并为一个全局序列,同时保持原有的顺序约束关系:
6
-
7
- > 对于不同 multi path 中的相同的池子,需要保证合并之后,所有原先在一条 multi hop 中的位于该 pool 前面的 pool,都还需要在这个 pool 前面
8
-
9
- ## 问题建模
10
-
11
- ### 输入示例
12
-
13
- ```
14
- Route1: [A, B, C, D]
15
- Route2: [X, B, Y, D, Z]
16
- Route3: [M, C, N]
17
- ```
18
-
19
- ### 约束关系提取
20
-
21
- 从路由中提取顺序约束:
22
-
23
- - Route1: A→B, B→C, C→D
24
- - Route2: X→B, B→Y, Y→D, D→Z
25
- - Route3: M→C, C→N
26
-
27
- ### 依赖图构建
28
-
29
- ```
30
- A ─→ B ─→ C ─→ D ─→ Z
31
- ↑ ↑ ↑
32
- X M Y
33
- │ ↑
34
- └─→ N B
35
- ```
36
-
37
- ## 拓扑排序算法
38
-
39
- ### Kahn 算法实现
40
-
41
- ```rust
42
- use std::collections::{HashMap, HashSet, VecDeque};
43
-
44
- fn merge_routes_topological(routes: Vec<Vec<Pool>>) -> Vec<Pool> {
45
- let mut graph: HashMap<Pool, HashSet<Pool>> = HashMap::new();
46
- let mut in_degree: HashMap<Pool, usize> = HashMap::new();
47
-
48
- // 1. 构建有向图
49
- for route in routes {
50
- for window in route.windows(2) {
51
- let from = &window[0];
52
- let to = &window[1];
53
-
54
- graph.entry(from.clone()).or_default().insert(to.clone());
55
- *in_degree.entry(to.clone()).or_default() += 1;
56
- in_degree.entry(from.clone()).or_default();
57
- }
58
- }
59
-
60
- // 2. 找入度为0的顶点
61
- let mut queue: VecDeque<Pool> = in_degree.iter()
62
- .filter(|(_, &degree)| degree == 0)
63
- .map(|(pool, _)| pool.clone())
64
- .collect();
65
-
66
- let mut result = vec![];
67
-
68
- // 3. 拓扑排序主循环
69
- while let Some(pool) = queue.pop_front() {
70
- result.push(pool.clone());
71
-
72
- if let Some(neighbors) = graph.get(&pool) {
73
- for neighbor in neighbors {
74
- if let Some(degree) = in_degree.get_mut(neighbor) {
75
- *degree -= 1;
76
- if *degree == 0 {
77
- queue.push_back(neighbor.clone());
78
- }
79
- }
80
- }
81
- }
82
- }
83
-
84
- result
85
- }
86
- ```
87
-
88
- ### 算法步骤
89
-
90
- 1. **构建有向图**:根据路由中相邻池子的顺序关系建立边
91
- 2. **计算入度**:统计每个池子有多少前驱
92
- 3. **初始化队列**:将入度为 0 的池子加入队列
93
- 4. **循环处理**:
94
- - 从队列取出一个池子加入结果
95
- - 移除该池子的所有出边
96
- - 更新邻接池子的入度
97
- - 将新的入度为 0 的池子加入队列
98
-
99
- ## 算法验证
100
-
101
- ### 执行过程示例
102
-
103
- ```
104
- 初始入度: A:0, X:0, M:0, B:2, Y:1, C:2, N:1, D:2, Z:1
105
-
106
- 步骤1: 处理A,X,M (入度为0)
107
- 结果: [A, X, M]
108
- 更新后: B:0, C:1, Y:1, N:1, D:2, Z:1
109
-
110
- 步骤2: 处理B
111
- 结果: [A, X, M, B]
112
- 更新后: C:0, Y:0, N:1, D:2, Z:1
113
-
114
- 步骤3: 处理C,Y
115
- 结果: [A, X, M, B, C, Y]
116
- 更新后: N:0, D:0, Z:1
117
-
118
- 步骤4: 处理N,D
119
- 结果: [A, X, M, B, C, Y, N, D]
120
- 更新后: Z:0
121
-
122
- 步骤5: 处理Z
123
- 最终结果: [A, X, M, B, C, Y, N, D, Z]
124
- ```
125
-
126
- ### 约束验证
127
-
128
- 检查最终序列是否满足原始路由的约束:
129
-
130
- - **Route1 [A,B,C,D]**: A<B<C<D ✓
131
- - **Route2 [X,B,Y,D,Z]**: X<B<Y<D<Z ✓
132
- - **Route3 [M,C,N]**: M<C<N ✓
133
-
134
- ## 为什么选择拓扑排序
135
-
136
- ### 问题特征匹配
137
-
138
- 1. **有向无环图(DAG)**
139
-
140
- - 路由是有向的(前后顺序明确)
141
- - 无环的(同一路径不会回到起点)
142
-
143
- 2. **线性排序需求**
144
-
145
- - 需要将所有池子排成单一序列
146
- - 满足所有前后约束关系
147
-
148
- 3. **约束保持**
149
- - 如果 A 在某路径中位于 B 前面,合并后 A 仍需在 B 前面
150
- - 传递性约束自动满足
151
-
152
- ### 算法优势
153
-
154
- - **正确性保证**:数学上证明能保持所有约束
155
- - **效率高**:时间复杂度 O(V+E),空间复杂度 O(V+E)
156
- - **环检测**:自动检测冲突的约束关系
157
- - **通用性**:适用于各种规模的路由合并
158
-
159
- ## 与原始方案对比
160
-
161
- ### 原始伪代码问题
162
-
163
- ```rust
164
- // 原始方案的问题
165
- for route in routes {
166
- for pool in route {
167
- if res_pools.contains(pool) {
168
- // 问题1: 只考虑局部约束,忽略全局依赖
169
- // 问题2: 插入位置计算错误
170
- // 问题3: 无法处理复杂的多重依赖
171
- }
172
- }
173
- }
174
- ```
175
-
176
- ### 拓扑排序优势
177
-
178
- - **全局视角**:考虑所有约束关系
179
- - **约束传递**:自动处理间接依赖
180
- - **多重依赖**:正确处理一个池子的多个前驱
181
- - **冲突检测**:能发现不可满足的约束
182
-
183
- ## 使用建议
184
-
185
- ### 适用场景
186
-
187
- - 任务调度系统
188
- - 编译依赖管理
189
- - 课程安排
190
- - 工作流排序
191
- - 路由路径合并
192
-
193
- ### 注意事项
194
-
195
- - 确保输入图无环
196
- - 结果可能不唯一(可通过优先级调整)
197
- - 大规模数据建议优化内存使用
198
-
199
- ## 总结
200
-
201
- 拓扑排序是解决路由合并问题的最佳方案,它能够:
202
-
203
- 1. **保证正确性**:数学证明的约束保持
204
- 2. **处理复杂性**:自动处理多重依赖和传递关系
205
- 3. **高效执行**:线性时间复杂度
206
- 4. **易于维护**:代码清晰,逻辑简单
207
-
208
- 通过将路由合并问题转换为拓扑排序,我们获得了一个既正确又高效的解决方案。
@@ -1,85 +0,0 @@
1
- #!/bin/bash
2
-
3
- # 复制 aggregator-sdk 文件到 sui/aggregator 目录的脚本
4
- # 作者: Auto Generated Script
5
- # 日期: $(date)
6
-
7
- set -e # 遇到错误时退出
8
-
9
- # 定义源目录和目标目录
10
- SOURCE_DIR="/home/ccbond/github/cetus/aggregator-sdk"
11
- TARGET_DIR="/home/ccbond/github/sui/aggregator"
12
-
13
- # 颜色定义
14
- RED='\033[0;31m'
15
- GREEN='\033[0;32m'
16
- YELLOW='\033[1;33m'
17
- NC='\033[0m' # No Color
18
-
19
- # 打印带颜色的消息
20
- print_message() {
21
- local color=$1
22
- local message=$2
23
- echo -e "${color}${message}${NC}"
24
- }
25
-
26
- # 检查源目录是否存在
27
- if [ ! -d "$SOURCE_DIR" ]; then
28
- print_message $RED "错误: 源目录 $SOURCE_DIR 不存在!"
29
- exit 1
30
- fi
31
-
32
- # 创建目标目录(如果不存在)
33
- if [ ! -d "$TARGET_DIR" ]; then
34
- print_message $YELLOW "目标目录 $TARGET_DIR 不存在,正在创建..."
35
- mkdir -p "$TARGET_DIR"
36
- fi
37
-
38
- print_message $GREEN "开始复制文件..."
39
- print_message $YELLOW "源目录: $SOURCE_DIR"
40
- print_message $YELLOW "目标目录: $TARGET_DIR"
41
- echo
42
-
43
- # 复制 src 目录
44
- if [ -d "$SOURCE_DIR/src" ]; then
45
- print_message $GREEN "复制 src 目录..."
46
- cp -r "$SOURCE_DIR/src" "$TARGET_DIR/"
47
- else
48
- print_message $RED "警告: src 目录不存在于源路径中"
49
- fi
50
-
51
- # 复制 package.json
52
- if [ -f "$SOURCE_DIR/package.json" ]; then
53
- print_message $GREEN "复制 package.json..."
54
- cp "$SOURCE_DIR/package.json" "$TARGET_DIR/"
55
- else
56
- print_message $RED "警告: package.json 不存在于源路径中"
57
- fi
58
-
59
- # 复制 README.md (假设是 README.md)
60
- if [ -f "$SOURCE_DIR/README.md" ]; then
61
- print_message $GREEN "复制 README.md..."
62
- cp "$SOURCE_DIR/README.md" "$TARGET_DIR/"
63
- elif [ -f "$SOURCE_DIR/README" ]; then
64
- print_message $GREEN "复制 README..."
65
- cp "$SOURCE_DIR/README" "$TARGET_DIR/"
66
- else
67
- print_message $RED "警告: README 或 README.md 不存在于源路径中"
68
- fi
69
-
70
- # 复制 tests 目录
71
- if [ -d "$SOURCE_DIR/tests" ]; then
72
- print_message $GREEN "复制 tests 目录..."
73
- cp -r "$SOURCE_DIR/tests" "$TARGET_DIR/"
74
- else
75
- print_message $RED "警告: tests 目录不存在于源路径中"
76
- fi
77
-
78
- echo
79
- print_message $GREEN "复制完成!"
80
- print_message $YELLOW "复制的文件和目录位于: $TARGET_DIR"
81
-
82
- # 显示目标目录内容
83
- echo
84
- print_message $YELLOW "目标目录内容:"
85
- ls -la "$TARGET_DIR"
package/test.json DELETED
@@ -1,267 +0,0 @@
1
- [
2
- "0xb8d7d9e66a60c239e7a60110efcf8de6c705580ed924d0dde141f4a0e2c90105",
3
- "0x871d8a227114f375170f149f7e9d45be822dd003eba225e83c05ac80828596bc",
4
- "0xb8a67c149fd1bc7f9aca1541c61e51ba13bdded64c273c278e50850ae3bff073",
5
- "0xe01243f37f712ef87e556afb9b1d03d0fae13f96d324ec912daffc339dfdcbd2",
6
- "0x7df346f8ef98ad20869ff6d2fc7c43c00403a524987509091b39ce61dde00957",
7
- "0x72f5c6eef73d77de271886219a2543e7c29a33de19a6c69c5cf1899f729c3f17",
8
- "0x2e041f3fd93646dcc877f783c1f2b7fa62d30271bdef1f21ef002cebf857bded",
9
- "0x3b13ac70030d587624e407bbe791160b459c48f1049e04269eb8ee731f5442b4",
10
- "0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d",
11
- "0xdcd762ad374686fa890fc4f3b9bbfe2a244e713d7bffbfbd1b9221cb290da2ed",
12
- "0xe4ff047ec4e6cb5dec195c4c71bc435223bf0273f1473ab6a10cf6ad132bdda1",
13
- "0x4c50ba9d1e60d229800293a4222851c9c3f797aa5ba8a8d32cc67ec7e79fec60",
14
- "0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535",
15
- "0x43d4c9adc1d669ef85d557cf1d430f311dc4eb043a8e7b78e972c1f96ec2cd60",
16
- "0x9e59de50d9e5979fc03ac5bcacdb581c823dbd27d63a036131e17b391f2fac88",
17
- "0xa528b26eae41bcfca488a9feaa3dca614b2a1d9b9b5c78c256918ced051d4c50",
18
- "0x0fea99ed9c65068638963a81587c3b8cafb71dc38c545319f008f7e9feb2b5f8",
19
- "0xd6918afa64d432b84b48088d165b0dda0b7459463a7d66365f7ff890cae22d2d",
20
- "0x40a372f9ee1989d76ceb8e50941b04468f8551d091fb8a5d7211522e42e60aaf",
21
- "0xb785e6eed355c1f8367c06d2b0cb9303ab167f8359a129bb003891ee54c6fce0",
22
- "0xbec7ef988a9cf880b1e3d80260ad1e972e680f0f340fc87fd6f014d32b83e526",
23
- "0x1341467c5aca847aff459e07d6a777a6fbf7aa7b71ffd66cc2f4bdfda162add4",
24
- "0xadaa4568dd61da3630c40d2d146db69e639946d22599ea4315d3d3ea01991f1a",
25
- "0x2fc6ee9183d0f1ca0d2dded02c416be6f4671bb82db55c26ce12b536812a4b8e",
26
- "0xf26ad51dc0cf90a4c66ad82a24f66ecf9852547310d123147ed94d72f6c24865",
27
- "0x7079378d20cb521acc9a77c0d69da0e4b65cc07b2a1666868c95444939c3929e",
28
- "0x763f63cbada3a932c46972c6c6dcf1abd8a9a73331908a1d7ef24c2232d85520",
29
- "0xde265ef8645c680c71b33805de77ce5261a20c58397d83b3915bdbb3a7209d7e",
30
- "0x9c3a06e2ca93d0a3b9bd35e6de2466f8382bc2a643c875a0aac9eb7db411ce48",
31
- "0x2d79ad383127b41352030895b5c5e5228b54b2e26c9caddb71d04b928c6a4b33",
32
- "0xaa020ad81e1621d98d4fb82c4acb80dc064722f24ef828ab633bef50fc28268b",
33
- "0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630",
34
- "0x68d16416770f9b73b0b1b45e118f6ea3a2910f548f942fe335824fd515cdff08",
35
- "0xa72776082624b0f5da55e385107fc0176114bfea5b281b880acae505a9bd1f1a",
36
- "0x75b2698fc23040ab88d2018ccac4365aa1fab79f1f0c623882b68ce9b1403c50",
37
- "0x1efc96c99c9d91ac0f54f0ca78d2d9a6ba11377d29354c0a192c86f0495ddec7",
38
- "0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703",
39
- "0xf45b01f23e9951e37733b76c8cc7d22dcd23141aa246a86e17595a7aca610e1d",
40
- "0x871cbd82b0f2301598930b14fb53e5a199f3d17de109a3554289c0248f48bd85",
41
- "0xe83486bbbe7fcec540e98b4bccaf38897ac95b11d82d2e9e03ca1c27cc15d731",
42
- "0x488411c4bc8646aaa865b5e778392d1498ba47dfdc625b6ffc70a68f52d9ff20",
43
- "0x3353c6ae880e383a7136b444d0af23eda0ca5ebc0d3a6dc48947f5870c5565ff",
44
- "0x040dc6a93bd4f26ea9507c70f19eb1a060fd5cb9c3718db372f4ae711ffbbb29",
45
- "0xf81d070f24bd2518a28193fc081774654cd8ad145559fa1fa0d7471cb3eecb27",
46
- "0x6bd72983b0b5a77774af8c77567bb593b418ae3cd750a5926814fcd236409aaa",
47
- "0x3e9332d5afc7549bfad40ea05692d06b0bd8b74d7e0b49f88fe22de921ae11c3",
48
- "0x4af78a3e9e2d6cabca5da79c1e6bff4899566a421321fc3b5a619664017a60d6",
49
- "0x2f47d887c4ca1640c48946676dc3ccb40025cdb0aa52f21d6b043568a7c39ffe",
50
- "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20",
51
- "0x7852612f5bf73613021f17353985fc186b3b224139c6a2576239132ba5a33b66",
52
- "0x3ec8401520022aac67935188eb1f82c13cbbc949ab04692e5b62445d89b61c9f",
53
- "0x59cf0d333464ad29443d92bfd2ddfd1f794c5830141a5ee4a815d1ef3395bf6c",
54
- "0xea2e0020f3a6f0e2ac39264c8a1bf25f98c38ecdf2dc5880470400ba7cd0a236",
55
- "0xea648440bd640d3530e8a5f02c0b56da82c2efe851156c39974b901bbb0eeab1",
56
- "0xbcf18ddb425dfc3207d57b83e8d105ef11b502a1b6072a8026e3716ac535b035",
57
- "0xc905c9263609d6ea700ff6267978107336beab3df377d58a1c53f6e25b7630ee",
58
- "0x5c5e87f0adf458b77cc48e17a7b81a0e7bc2e9c6c609b67c0851ef059a866f3a",
59
- "0xe0c526aa27d1729931d0051a318d795ad0299998898e4287d9da1bf095b49658",
60
- "0xa6275fa7e6b2bf96b841db41924d87d43f90e6992ce3593dca8180d99f20df58",
61
- "0x1de5cc16141c21923bfca33db9bb6c604de5760e4498e75ecdfcf80d62fb5818",
62
- "0xb0bec995132ba1db983152892735f704b6bad4e509456c95eb9f0a52d19eb96b",
63
- "0x8ebad96550ab6ccba7d0380731e0cc4676caa060f76d3e085d33438f64615d9c",
64
- "0x13c529a112d2597dad0e07af108534090686aa376af63a799ab1b656bb443cfd",
65
- "0x8443178757a844213bbc8d38ee5935eda3367764c8d88de7f558aef747787478",
66
- "0x71a6226843a7fda7c7443dbbe6406bc4735204d55018c9accd2387f39430b9d6",
67
- "0xfa4d7cfc50afb9813f2e29824dc2c8ffc8bccf384c5b9773cde6134b88f62ebb",
68
- "0xb89d930966681b5a6d6b37e0be5891f93c98cd33aeca94253cce960e3c3457d1",
69
- "0xe79efa7b95f6920dfc46ab38d0fae7419113d19e40e84b41abf8ddf3fd287ae1",
70
- "0x6cd91ac6eab109dbefbad9693760f929d963c01b9ddba21d3584ca9de36402b5",
71
- "0x2c2bbe5623c66e9ddf39185d3ab5528493c904b89c415df991aeed73c2427aa9",
72
- "0xe9053840c6b58ac21e045d1bb266ce892f96c9aec6c3761840c9704bd5c51764",
73
- "0x06bd46d0204b7faba458dc2342e08fc5008993d5bef84e0f1d87fa3e1728b319",
74
- "0xc27600a77c1c33702540fee64a529328a7cb7a6b91e94732c3e8f7abe04ebbe7",
75
- "0xefb30c2780bb10ffd4cf860049248dcc4b204927ca63c4c2e4d0ae5666a280d5",
76
- "0xaa0657731ad4f99c6694dab2f9159d1bbfafaa7f1f889ebd2622c3c74e7037d4",
77
- "0x8b5fb2d256e083f71eca9e8b6f2e7f092f16f3ce54cb11ed17c817168ab726a4",
78
- "0x960d673274597d9ac471044d4a94740dacd9e5039217397ea44cd9f994ff55de",
79
- "0x98636fafb720e06b908f1837f9573539cd949576dfa540b0bc518c15da571330",
80
- "0x6bd95ea11d8f932311d1b4e032de66dc61d3938cbb490216db4d2093c72be868",
81
- "0x629c772bd3069ff72741ae74e1466f558387d24fb4295c84340e6d4d394b9bd1",
82
- "0x3f5871a18c0deeae9f740708ef8162e5f173bd93feae63897666738444e318f0",
83
- "0xa1aed8a0df6c9c65e3bdda376a27762cc3ed66ef5f2bac4fb3604e01050bef3f",
84
- "0x127b7cf262607a0bc6e1035bed13883d342b0a0c04ce60fc51b5ffbdd03a6983",
85
- "0x313b7c579b95e8021bd2ab1d071ec18615c2f3e2f8da1f9f9e0f6d676b8bea66",
86
- "0x8804e54e0e19a1fb2694102ae79dc42aafe36a669cd8ea659fce557ad93e7160",
87
- "0xfc6a11998f1acf1dd55acb58acd7716564049cfd5fd95e754b0b4fe9444f4c9d",
88
- "0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720",
89
- "0x0fb4ad0e4c2c2b0a45d3f7bc5585cc9cea8486a63e4ef5cb768ddd9414fbb97a",
90
- "0x8be4b4c75f609b77af241996088f941c54232e21f30dca62bf1e880cb7bf8bed",
91
- "0x7d44018fbc32f456b6d0122206041a2cc159bdde32911b4be94a4e5840890764",
92
- "0xa8593858a7dfb15abd4c995ed7f2ab2ffc4f18a6d953e982361bd0c7fa595463",
93
- "0x96ec660396e8845f06c134fc3121ad4932fe31b2dc303a71a6b15bc25027b84d",
94
- "0xa0c8805dcf3914555bbc309a8b0ee1dcf144c3ed2a26995d20d7a1ea55656353",
95
- "0x7e610a7466f0b7dbf8cda4ba0fa0a652b87c53a1d1d0578ce808bc2cfd139fb6",
96
- "0x3d72450bd834bd243dc9f09f5dd2fcb00e4405fd43f753214a1d557f2c3982b8",
97
- "0x2718b966172ae57e794758973c51bb107ac9916ac614e91f74cc99341bd177f0",
98
- "0x84fc1515fd3d2395b2d67b301dc2b60040e31af7e295f8731c84bd528733252f",
99
- "0xa467d2dee561bca8e7b3f5f1622f0fa1cb672befae69a0d1b6dced941c858c4e",
100
- "0xaa72bd551b25715b8f9d72f226fa02526bdf2e085a86faec7184230c5209bb6e",
101
- "0x8e2dc135dfb0bdcc42639e3eef55deb75799b3a1397c1afa27836ef41d7e6db8",
102
- "0xb4b2b5b1ebbe992827e686bbd2ebca51711fa6b5d8e6013422c33d490d328ba0",
103
- "0x867434151a1f641e86832f068cb75a36d2a09cdb6ced5a840baec2ae940daed6",
104
- "0x3487e99bda85bd17360e2c32af208df69551e0673f920e8906404c32e9a47fa0",
105
- "0x2f63cf847e12234f62a41a9526cd6ad6a8dea9d59f968be5c5c671284fd17534",
106
- "0x679b43a27741c65ea074048289968cfbb8457b4117a726cd044d153c42d7601d",
107
- "0x94bcc20da0a5ebaf9c6459fd93006d41df526435c0a5fa3197be3bb1f04371f5",
108
- "0x305edd2e13764c72d1b236f4b8a057ca24687ef9c2d3747c74470593f99c3987",
109
- "0xff573a42da9d286598c5d367100729463f458f353d18d19535df682a5763fc48",
110
- "0x7249180ebceeaa0700c4f4851507e8c357930bb06f3dba041b8816c39d88e625",
111
- "0xd48c14d90da5c64b4850671f8055b08d829cb62f786c617e342884207143d9c1",
112
- "0x20739112ab4d916d05639f13765d952795d53b965d206dfaed92fff7729e29af",
113
- "0x74463cbb0dc6787c3103a4ad799700564dda7b0e063e90a9a83536cdc72ed384",
114
- "0x40ceeed02e2e82d4f58e88b9524b33c362e00e17368037f4a47c3cf4c5f1df94",
115
- "0x433e4829d774433d5a2ba84e86e18683d0ad6ae57373942766c7dac2c574a649",
116
- "0xcc4f0a4f6b5ce21a9a6c5261a2264b11eab8da463f5e00d53c427b348536f804",
117
- "0x6aa304c66d16979e9b527460ff5a470cfbc08e1ecd388c2ac977fd061e96da88",
118
- "0x78883f163d1b4404b87033f16e5c3df9c798c3989e13c83b40879c6f711c0f12",
119
- "0xf60b75ace6bf73ddec04cc06aa73fceed01c448a9b36a14830f359ffeb230c61",
120
- "0x96658d5d747f38a25dfe30893610bef2dafe9e86d655dfe5abdf54a4d2f3b625",
121
- "0x14e0310184fed27ee638d0dc219b931a7251eb0b9d8a9fd81fd1addad1977c78",
122
- "0xddfa7f4eb426dfeb7669919cb0d3078e8a8fe0966041b39bcb707453cd6a4d01",
123
- "0xe2bb58e489a71b78c9db08c694dac43f589b287290aa739a5c9ba1816cfa19c0",
124
- "0x0f402fd55d9c481816edcc99c28857a149386f9f9d823cca0279144516d6603f",
125
- "0x012aba065a9a1508ec8a128d809a2422473b609fb8b8b6919713002a5aba8b50",
126
- "0xe808b91c57ce205b2774391a2adf5fdd8f797e2e725dee606c241f8aaa010058",
127
- "0xc684af5e9d2f33fea17ced9fbf6a271f62e43daedcfdc5b998a9988ca4572e6a",
128
- "0x0bb40f4a0c74231e353cad444f95169eadeb76fe803f656140ebd360f5029095",
129
- "0xaa57c66ba6ee8f2219376659f727f2b13d49ead66435aa99f57bb008a64a8042",
130
- "0x005eda99b1c87bbdcdc8dcf715f9dd1a7a3e8d8c86233b5875f84f362ee31602",
131
- "0x4edb54baafdf02a2219b6c327c9acacd79280b9c98cdc1b2b23230de906fa421",
132
- "0x64ff55162588d22e453efa19b334805f19aeb6448c6193b792b4bbe002dc8004",
133
- "0xfd4ee717a486aeb0151deea95fc6eeac5d4505c4581804698f8468ecb79bec7e",
134
- "0x332777e0d433f261307b907a92b3fc64841d24373a7518d85dda102def2e0a66",
135
- "0x549a983b3b98ca4e77f17b42f62033c185a947c9c0827c68f0262f63fe189a7b",
136
- "0x39a5f5bae62b3876fdd16cda76eebcd334e9da6f69b549ac2f48c384770136ee",
137
- "0x9ac28369289dca759311bf4dbf82fe1b9a567b591d840536154d25023e57ace2",
138
- "0xa063edd0ac9df821c82041e558d3ecfd3987d6e3904b460f17f39ee16643d7e5",
139
- "0x986219cc07c5db62524c9db22cf318c6676e071750d76ce6667372a719063bb1",
140
- "0xf9107158e4945d6bbc321c7471e0b7c9854c2d3a1b04aaff6acaa50b8ea203d2",
141
- "0x3d257271b793f24e79ff7018529dc6c511679232ee2753b3636734aef563516e",
142
- "0x6c40c71d281704ee29cf1b9fada2c10ce4f2d7d374c283c79ae8d78ca6290762",
143
- "0xb2b55c12c12e6d870bacb894b2966679ac93fab01940e0db3fe95824c0d8e764",
144
- "0x7c9a2994b44da6ceb1ab15afbe353e02d43b2239e1c02beed7188fc9b456a246",
145
- "0xeb5ffdadac3cd44d0aaf8c5c9d75d083ddbe93e1c9ebf151cdad334aafe1516c",
146
- "0x7cc275604cba6857b1a9a043ac2a9c26f229d3053b5b6e70d3147a8486fded51",
147
- "0xc1f0f2389568b45c3f2ba83667dc24e1d580dc17cacf045c296e310e58e7cd46",
148
- "0xdf74c23ff4516486c8a740c3208485883665a3f386455b37ef5715b3094d5ed8",
149
- "0x62b08ffc066e372d72ed3a57b67cc95489a9159ea7947579b14db686355ad148",
150
- "0xfffdd8a3120d708c30c6e227e38580c89d06359998e8ceed41128322410d6082",
151
- "0x808794fdea283989a3e6aa07b0d4a85b25881d04c0f16daadf3b8fcc30ef65df",
152
- "0x300a0a681065c0df62a804ed7029ed16b77442237d91aafaf282dc7e19e02842",
153
- "0x4dd9caaf3775ece7a89355db76e3b1ca92481f69f791007119a33c8dc7da7886",
154
- "0xb00ee12b3ba0ee2b7cfa14dfff92493990e656308edd611ccaba85d98fc948b8",
155
- "0xfb630c8b176d7973a22833bb70705b5958399d6958f7af066fc58bc7aa7e0ffd",
156
- "0x70311e41a7d62cea8b8730301b3e4e1218701efbdaf2e80fa7f3ea0fa279be87",
157
- "0xcbf70d4b8a4c7fb1487000f3ebd61dd31f20764ca058f5d9a48528dd4e4052be",
158
- "0x881bd6abac111854a32d766530c86cdba0bc3bfdc7cbb7c129862468bcba9b5c",
159
- "0xce46effd43452c2e03d25995ab5edccf7039b96cf6e9d63a53d4d57d0a2672cb",
160
- "0x25af557e5b608047c25b8fea6a15037bab0f75fe4a1235e48f63ca054ed2a0c6",
161
- "0xf1744f0fb28e2ad0f2cff63535de4249ff03b4ba6bf12d84bf2bf23f0b5fe8d8",
162
- "0x5b0b24c27ccf6d0e98f3a8704d2e577de83fa574d3a9060eb8945eeb82b3e2df",
163
- "0x0e3452726371a7e93daa67afb850524f032c04e084df9485a87b7a2f72370b5e",
164
- "0x6130b20b7c5323f27d12a37d9a08c2efc0c029daa4e9d87017a87b78fdd73751",
165
- "0x1a4850b5b44fe3b43082462dc075f353451c265bf05b6d285eb9f5b041274e94",
166
- "0x4813e8358eb276a55b681253ad2818c407edf26f4b6d8d39e355c3803229c46b",
167
- "0x01506619fd093590d6ed47ef6ff292be70974239cf45e10e550c9b0eb125b186",
168
- "0x09bd43d6ae5f2d3c13350602136415d95554427e39f83f64f08e32539a6688d4",
169
- "0x31fcc51d1042093780d8fd22f13a8ae9823bd661083b04fd392dd9d860f4c23a",
170
- "0xa03214d9e9cdf8844019fcc621f6d2cab84f2f5c5546c779b58803d237934d1c",
171
- "0x1e142b25b10035c40af0624d455dd4d959938c18af89a28b004f3da583478bc7",
172
- "0x6923952b667c4c9364ecbdc5fe59dc55e645eb5f654f215745ff9da548dd5cff",
173
- "0x5f3a79707c2721014c5757f5b9cb03e0ab171517104b831b00e1c3ec7f2aebfe",
174
- "0xb9190f66b171ce62c29614f90235d7127c6183215cb89bcd843097496c5bbb29",
175
- "0x20f7502420ca46cf1f91786777edb997fd6731f5d1f725bb6ac763729b08b1b0",
176
- "0x10eb193f780e5d0ed288cb7a0b29cf8132bcdf5fe1f04f924a26cb3bddbedfe7",
177
- "0x3ff1aa1fcd2a8227812ed5cb2032ded27840f6ac27008eff4525369ba33e08a9",
178
- "0xdf0a039f0d87b0be07ffdf4230bed60017c3d4d939d92d4d085e17d26acb34a7",
179
- "0x5fc8de3d91652c61771b34e4aa7dce9d8fd8d837e06b465ef2df9b1d7741aa8b",
180
- "0x7a82db9825a3a0456192940f42a0042b565ca8a75fc6bfeee3ce315199d532c9",
181
- "0xae74d149e064bdd2ca0fb3f9dc32157d8653457875618eb6e75054a3949e9043",
182
- "0xba201202145373c9da4a9f1c8c10eff1e8f7aebeb9d668500726c462c49d6c0b",
183
- "0xe305e85b1c9cd9361059585bcb11ee4410dd2f154e028f38a83ff5abb03f1f3b",
184
- "0x9773de9af68e07dc46e5a058ce09f4d4a1f21af90bb035f848ce98f4ea9aa4e3",
185
- "0x5f755af8da348ef9f00ad339a26e24491b99ebef7cb5431ba76432245db33db5",
186
- "0x2f432f20dc9d174b2e9492525af3015eab012dbed0df6518c33784d93cab5a08",
187
- "0xb66478cf78eda91ff6b084fd934968087991b370bb89493eb6f24403c56c2003",
188
- "0x77ec5b840d9a465dfaae8bb415682c0faeaa707247af4eec8c5ce8ee6e1314e6",
189
- "0x711dffb09ddbb285f1671311f6bf2b927ff4b58cbafc5a3a1035f846e7935186",
190
- "0x0618ff963db90b5800d8aff18bd77e6606c2272e5381d045f890a4ca2520f716",
191
- "0xc05f3806a27fdc71d3bfde825ef23d459e254b6ca511a57f8ce501466a6bdb27",
192
- "0xea18d910c4f7e5c850f1e730dfda8228d710962e50cc31ef28d211c54108e02a",
193
- "0x27a14e0e3c5c616a9443b8a1a861c341c08a7cbbd472600f773d06c03ff1cba9",
194
- "0x2ba92cbb0d1478983356d8f4aefe42f1f856178fe03d8271adc59d44b65235f3",
195
- "0xe49ee5d89e63603a61b4d489ce2c9a555090a9560c7a884a74da8795699ae7a2",
196
- "0xbe59b69aa1ad4c36eeda019fe968df9ae7d6f72ac1b5117cefb95de1b12d97f9",
197
- "0x696249f56a0b1fc64ac5762cbb9f31b71a4ce01c607151b0392df3f657df92ce",
198
- "0x8666262f9e00fac4a1afee7ef589a82380def3b84269e03b6a2ff990c9cfb058",
199
- "0xebf3e4f099c57cd547491027c98076d61967d7f1a3cfa748531d71fbb7d59173",
200
- "0x16fd3857f9c726d8f77da35f07e8b23635826f84a3dedcc15914d1277ceb9e31",
201
- "0xde7eebd43c36d86a0ec5ae30d0329554faa8142c682b07d49b016d2d4330e85f",
202
- "0xdb36a73be4abfad79dc57e986f59294cd33f3c43bdf7cf265376f624be60cb18",
203
- "0x438374f7670df21b52f9789b482f84c362619ba5572a601453a963315607b89a",
204
- "0x89364552f4f159aa2e6c6859d81703852317534ad99046f3dc0ba5c4e893196b",
205
- "0x84de0897551f94b39473b1770d7eca2d8426666ad30b0ee57c828bff07eab9c5",
206
- "0x1e88ea876090e70b997987f466de2026a2c4df1a5bda0fbc10f7404e2d11d41d",
207
- "0x41d3769b75861e80daea5919a3989bbcbdc76c6390cee18f1c39b5e60cb034c9",
208
- "0x88dff9588e60fcb6770c8ce15e6ac888f60a1c4b6206a3933d0ec3b96bdf3f8e",
209
- "0x8049d009116269ac04ee14206b7afd8b64b5801279f85401ee4b39779f809134",
210
- "0x1d40b7c0d734e27784ffe9975ac690a8bb80c1bdb1192b660a74c9534be71ad7",
211
- "0x64efb764360d781860bbb9f2cca98f7882336bb14b8d16f031c764eba02dd00f",
212
- "0x899df39337a3e2beac292c13c1db008bc71e1cf48fa3da00975b7420da2246ea",
213
- "0x5695d2e9b43f562a0b586e36a15a4203c3fa1993874d7e2a7253bc3a3aeaad71",
214
- "0x89ab1144947f681cc439b4ff069841621e031c93b12b4dd794a59b486de56653",
215
- "0x81310e6c4c8726179312c185af0d504eb2cf86a2d1af78a3d362a1b497021c71",
216
- "0x022a24897f57530401cf8f91fca1e07969ea1f513df4dcaa4886d91546f45e24",
217
- "0x806b868c87197bb4caa6f076a2661331156f6bed2b5510749803265adb7f6e0c",
218
- "0xd8642c113cfac11073219b0edae99c87e87b8a1141877f31dfd5bf60cfea7c1f",
219
- "0x3f25071773d3393370d65321cd7b4836ba1ee55eb9fdbd514ea71b7d935c5ce5",
220
- "0xc17e7110b0d331deddfeee45c969dd8abe96ddf1aaf201834e1aa27da0978e00",
221
- "0x7bd1c6dfbcd75301d574a226b1e05316cfc647f88082e3b94c57ed736a74916c",
222
- "0x6a8e33474c5bff5925de3575e14565d9c848241266aaf9703d5cb5c431152add",
223
- "0xa8bea2beb79f070e36ede281100f46f98654b998c22012cb592ca6b4e16b2fdd",
224
- "0xece004cb5e023bfa633ea5af72a60c40b24c76b9a30658dc0bb208aaa8fc20bc",
225
- "0x73cab69f2ebd6f6e00b05ffdd3c2e59c74922e51daf34f37b462007262998b97",
226
- "0xa5748192065e06913100a1f67bd8cf94f8b3a3bcf4d5169ceba5b50ec64b62f1",
227
- "0x3f8f868fd8e9fc6255f573f88183c845417b064d67725c5b4224dfc6410f5404",
228
- "0x744eb8f8ef80f26586894f147ff35c3cd3515f9d0ed5ed894425d43248dcf166",
229
- "0xc210af547d6fb65af99ae4622f04a5b11f27d741be1d3740a460d3b02115f7ca",
230
- "0x007253cec36ada57676dee0716eb0f65bab66bd94fff6b835e7b33ba325aa9bb",
231
- "0xc7e6ce902165cf3c132b4560e50721695674bb9b50d1da973ce23d1ae59986a2",
232
- "0x531ca8db28611d1a4fca8306d6f97658034341513872f40ecefa90a52ab889b4",
233
- "0x8b8608c1998ccd52e422fc7d1441cb6ab7098b8add8588b030ddc013f5ce153a",
234
- "0x3d8606a40afb3cb662f7a6f6656507d7047345030db11cb7388d66c0725e1285",
235
- "0x48187bdd4421d4e548bd2bb3140b0266e040bef35d83c4cfa5a0911ac000fc05",
236
- "0xd22b04ec838c86ecfb929892496cf6d7e8e95e7b99bd387f799a09070a89e4a6",
237
- "0x293dba0f38a7ba695a53b651dc4adc30cf66c7c549885b1f48690948a2c213e0",
238
- "0x63a61baa127f118955fd348d9f2423fbf5f568a0224d4c87b7729a90e692916b",
239
- "0xbc50ba1c99c26c38104db839e601680fae3572071605d042e2dc662d1f8f6cdf",
240
- "0xdd099077af49a2fb66332be51c4d02134569c764706a2aa9a327e2afa90ea422",
241
- "0xd02c7f130a59ebb9feece7da9778320527c8a2de071a51a1e732ba56b4ce53b0",
242
- "0x86637058013e0be85c12e22748e9cc3ea86904ff52931e64376f0020cf0e7456",
243
- "0x474ce7b61b0ae75cad36aa9c59aa5ca8485c00b98fd1890db33b40ef2a5ba604",
244
- "0xe869743b94dbe17d0bbc03d4ffeeffd728843c32b70906de3eb21587a62f76ef",
245
- "0xa2c7bc1b2b92064031c6ce9cfc4e2fa083c39ccb3f833b12785e41375383abf8",
246
- "0x97133f21b76234274ef5f7590fe48d083881c5c459bdc76c73f785f262c23388",
247
- "0xbda183c33f0055f865f642f3d848e378729893d31a6615add99d25bc21394d62",
248
- "0x829a8582573ecddaa514ae6f90d498fb384c592faae528235936685ac9d3cdf4",
249
- "0x8e648ee8cc227e8678cdb0b9925e97af0b79e5b367b0e8a709706db7e752e5cf",
250
- "0x78cd9a603e23e55a61ba1c79abf384da0f9304621495425a6f37a3aee77dbefe",
251
- "0x4968268448a49e3ff2298ad72df31ef75d121d07d47b2ab142f36ee354693284",
252
- "0xf76905d623507c256ce49b2667c18e25a733a04161af9eeec7acbaa65c045e06",
253
- "0xa0ab3f9f41f2b9de59773d54b2527175fcc0d1c52e80c7fbd75b550f6e7079ca",
254
- "0x5da1180b2b6c465530d6bb8f6ef97f1bf4679860c3b3b4771a9a3fb69b22dbc6",
255
- "0x4bd8968392cf0690ccc6b6a7c2ad1ab7a1f7dbb1c16a32d7e54e1533eed9b708",
256
- "0x04d7dc303d0c7c381ba468da0b42ac57499aec62dd221e52496f7e2350009ee2",
257
- "0x7e31fed11e94f3892cca5660f350cead76026ffeb251a53f16fd1ac0c2e355e8",
258
- "0xdc32ad84f57302aad801b5bf7eac8a76860e5c71070b78a43a70423f80521159",
259
- "0xaa048d2dfb6e663b2a55b1e4fcc84f2fff0d5d5a8ae9db1be185f6f0692a002d",
260
- "0x063df8874bc0edf22e65f308f352452b1b48317d4c03a84d3a4acb4a1da1b659",
261
- "0x075a472bdbb478df8d6a8ed51128712d3c7db67667cda94028865f129315ae28",
262
- "0xd45ae05afe00a595c9f1ad105e445a89de922d3dd77abd776d619dae6451c1da",
263
- "0x73e93d2a6e975dc1a2c4474c43f3f64f566e5d1687f417b760a06e9654209ec4",
264
- "0x3616012600e87547d4aaa974b39e24650a5071405652fcee6ceb1280b615d6c1",
265
- "0x75fe1d6ee1d1b8d1cb7a9622e4cd54e7271413201fecec8303a81312dbefc013",
266
- "0xe509754924bc1db0840d5cd25b65ff980494b6e6648dc57f4174cfdab38f98fb"
267
- ]